:root { --navy:#03132f; --blue:#2a86d8; --sky:#9ed4ff; --gold:#e4bf72; --ink:#edf6ff; --muted:#b9d5ec; --line:rgba(110,194,255,.46); --stage-vw:1vw; --stage-vh:1vh; }
* { box-sizing:border-box; }
html, body { width:100%; height:100%; margin:0; overflow:hidden; }
body { background:#020b1d; color:var(--ink); font-family:"Segoe UI",Arial,sans-serif; }
.tv-fixed-viewport { position:fixed; inset:0; overflow:hidden; background:#020b1d; }
.tv-fixed-stage { position:absolute; inset:0; transform-origin:top left; }
.screen { position:relative; width:100%; height:100%; padding:clamp(12px,calc(1.25 * var(--stage-vw)),28px); }
.screen::before { content:""; position:absolute; inset:0; background:linear-gradient(118deg,transparent 0 39%,rgba(57,157,255,.15) 39% 40%,transparent 40%),linear-gradient(61deg,transparent 0 68%,rgba(228,191,114,.12) 68% 69%,transparent 69%),radial-gradient(circle at 76% 12%,rgba(35,129,218,.28),transparent 27%),#020b1d; }
.hidden { display:none !important; }
.alert-ribbon { position:absolute; z-index:10; inset:0 0 auto; display:flex; align-items:center; gap:18px; min-height:78px; padding:14px 30px; color:#fff; background:#981e23; }
.alert-icon { display:grid; place-items:center; width:40px; height:40px; border:2px solid currentColor; border-radius:50%; font-weight:900; }
.alert-body { display:grid; gap:3px; }.alert-kicker { font-size:13px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }.alert-text { font-size:22px; font-weight:800; }
.yarkon-shell { position:relative; z-index:1; display:grid; grid-template-rows:clamp(118px,calc(14 * var(--stage-vh)),166px) minmax(0,1fr); gap:clamp(10px,calc(1 * var(--stage-vh)),16px); width:100%; height:100%; padding:clamp(18px,calc(2 * var(--stage-vh)),34px) clamp(22px,calc(1.7 * var(--stage-vw)),42px); overflow:hidden; border:1px solid var(--line); border-radius:8px; background:rgba(3,19,47,.94); }
.topbar { display:flex; align-items:stretch; gap:clamp(18px,calc(1.5 * var(--stage-vw)),32px); min-width:0; overflow:hidden; }
.brand { display:flex; align-items:center; flex:0 1 54%; gap:clamp(12px,calc(1.2 * var(--stage-vw)),24px); min-width:0; }.brand-logo { width:clamp(54px,calc(4.5 * var(--stage-vw)),88px); height:clamp(54px,calc(4.5 * var(--stage-vw)),88px); object-fit:contain; }.brand-divider { width:1px; height:72%; background:rgba(228,191,114,.55); }.brand-text { min-width:0; }.brand h1 { margin:0; overflow:hidden; color:#fff; font-family:Georgia,"Times New Roman",serif; font-size:clamp(30px,calc(2.8 * var(--stage-vw)),58px); font-weight:500; text-overflow:ellipsis; white-space:nowrap; }.rabbi-name { margin:.35em 0 0; color:var(--gold); font-size:clamp(10px,calc(.75 * var(--stage-vw)),15px); font-weight:900; letter-spacing:.12em; text-transform:uppercase; }.rabbi-message { margin:.25em 0 0; overflow:hidden; color:var(--muted); font-size:clamp(10px,calc(.76 * var(--stage-vw)),15px); text-overflow:ellipsis; white-space:nowrap; }
.top-meta { flex:1 1 46%; display:grid; grid-template-columns:auto minmax(0,1fr); grid-template-rows:auto auto minmax(0,1fr); align-items:center; gap:3px 14px; min-width:0; padding:8px 14px; overflow:hidden; border:1px solid rgba(228,191,114,.42); border-radius:8px; background:rgba(4,31,72,.78); }.clock { display:flex; align-items:baseline; gap:.15em; font-family:Georgia,"Times New Roman",serif; font-size:clamp(34px,calc(3 * var(--stage-vw)),60px); white-space:nowrap; }.clock small { font-family:"Segoe UI",Arial,sans-serif; font-size:.38em; font-weight:800; }.clock-seconds { display:none !important; }.meta-date { display:flex; justify-content:flex-end; gap:12px; min-width:0; overflow:hidden; color:var(--muted); font-size:clamp(11px,calc(.85 * var(--stage-vw)),17px); font-weight:800; text-align:right; }.hebrew-date { color:#fff; font-family:Georgia,"Times New Roman",serif; }.shabbat-times { grid-column:1 / -1; display:flex; gap:.3em .7em; align-items:baseline; min-width:0; overflow:hidden; color:var(--gold); font-size:clamp(9px,calc(.68 * var(--stage-vw)),13px); font-weight:900; letter-spacing:.07em; text-transform:uppercase; white-space:nowrap; }.shabbat-times strong { color:#fff; font-size:1.25em; letter-spacing:0; text-transform:none; }.clock-status { grid-column:1 / -1; color:#ffda8d; font-weight:800; }
.main-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,2.08fr); grid-template-rows:minmax(0,29fr) minmax(0,50fr) minmax(0,21fr); gap:clamp(10px,calc(1 * var(--stage-vh)),16px); min-width:0; min-height:0; }
.panel,.weather-panel,.parasha-card,.photo-panel { min-width:0; min-height:0; overflow:hidden; border:1px solid var(--line); border-radius:8px; background:linear-gradient(135deg,rgba(9,44,99,.94),rgba(3,19,51,.96)); box-shadow:inset 0 0 20px rgba(50,150,255,.08); }.panel h3 { display:flex; align-items:center; gap:8px; height:clamp(36px,calc(3.8 * var(--stage-vh)),49px); margin:0 16px; border-bottom:1px solid rgba(228,191,114,.35); color:var(--gold); font-size:clamp(12px,calc(.9 * var(--stage-vw)),19px); letter-spacing:.1em; text-transform:uppercase; white-space:nowrap; }.icon { color:var(--gold); }
.parasha-card { grid-column:1 / 3; grid-row:1; display:grid; grid-template-rows:auto auto minmax(0,1fr); align-content:start; padding:clamp(12px,calc(1.3 * var(--stage-vh)),22px); text-align:center; }.parasha-title-row { display:flex; flex-wrap:wrap; justify-content:center; align-items:baseline; gap:8px 18px; }.parasha-card h2 { margin:0; color:#fff; font-family:Georgia,"Times New Roman",serif; font-size:clamp(28px,calc(2.4 * var(--stage-vw)),50px); font-weight:500; }.parasha-hebrew { color:var(--sky); font-family:Georgia,"Times New Roman",serif; font-size:clamp(24px,calc(2.15 * var(--stage-vw)),46px); }.parasha-summary-heading { margin-top:.45em; color:var(--gold); font-size:clamp(10px,calc(.72 * var(--stage-vw)),15px); font-weight:900; text-transform:uppercase; }.parasha-card p { min-height:0; margin:.3em 0 0; overflow:hidden; color:var(--muted); font-size:clamp(11px,calc(.82 * var(--stage-vw)),17px); line-height:1.25; }
.calendar-upcoming-panel { grid-column:2; grid-row:3; }.calendar-upcoming-body { display:grid; grid-auto-rows:minmax(0,1fr); height:calc(100% - clamp(36px,calc(3.8 * var(--stage-vh)),49px)); padding:6px 12px; overflow:hidden; }.calendar-upcoming-item { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.8fr); align-items:center; gap:3px 8px; min-width:0; min-height:0; padding:2px 5px; border-bottom:1px dotted rgba(158,212,255,.24); }.calendar-upcoming-item span { overflow:hidden; color:var(--gold); font-size:clamp(9px,calc(.64 * var(--stage-vw)),13px); font-weight:900; text-overflow:ellipsis; text-transform:uppercase; white-space:nowrap; }.calendar-upcoming-item strong { overflow:hidden; color:#fff; font-size:clamp(11px,calc(.8 * var(--stage-vw)),17px); text-overflow:ellipsis; white-space:nowrap; }.calendar-upcoming-item small { grid-column:2; overflow:hidden; color:var(--muted); font-size:clamp(9px,calc(.62 * var(--stage-vw)),13px); text-overflow:ellipsis; white-space:nowrap; }.calendar-upcoming-item.grouped-fast { grid-template-columns:minmax(0,1fr) auto; grid-template-rows:auto auto; }.calendar-upcoming-item.grouped-fast > span { grid-column:1 / -1; }.calendar-upcoming-item.grouped-fast .fast-time-range { grid-column:2; color:var(--sky); font-weight:900; direction:ltr; }
.prayer-panel { grid-column:1; grid-row:2; }.zmanim-panel { grid-column:2; grid-row:2; }.row-list { display:grid; grid-auto-flow:row; grid-auto-rows:minmax(0,1fr); align-content:stretch; height:calc(100% - clamp(36px,calc(3.8 * var(--stage-vh)),49px)); padding:7px 12px; overflow:hidden; }.row { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px; min-width:0; min-height:0; padding:0 5px; border-bottom:1px dotted rgba(158,212,255,.24); color:#eaf5ff; font-size:clamp(11px,calc(.78 * var(--stage-vw)),16px); }.row:nth-child(n+6) { border-left:1px solid rgba(228,191,114,.28); }.row span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.row strong { color:var(--sky); white-space:nowrap; }
.weather-panel { grid-column:1; grid-row:3; display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; padding:12px 16px; background:linear-gradient(110deg,#0750a4,#06244f); }.weather-copy { display:grid; align-content:center; min-width:0; }.weather-place,.weather-sub { color:var(--gold); font-size:clamp(9px,calc(.65 * var(--stage-vw)),13px); font-weight:900; letter-spacing:.1em; text-transform:uppercase; }.weather-now { display:flex; align-items:center; gap:8px; }.weather-icon svg { width:clamp(28px,calc(2 * var(--stage-vw)),42px); height:clamp(28px,calc(2 * var(--stage-vw)),42px); }.weather-now strong { overflow:hidden; color:#fff; font-family:Georgia,"Times New Roman",serif; font-size:clamp(20px,calc(1.8 * var(--stage-vw)),35px); font-weight:500; white-space:nowrap; }.weather-days { display:flex; gap:8px; overflow:hidden; color:var(--muted); font-size:clamp(9px,calc(.65 * var(--stage-vw)),12px); font-weight:800; white-space:nowrap; }.weather-day-icon svg { width:1.25em; height:1.25em; vertical-align:middle; }.donation-qr { display:grid; align-content:center; justify-items:center; gap:5px; color:var(--gold); font-size:10px; font-weight:900; text-transform:uppercase; }.donation-qr img { width:clamp(54px,calc(4 * var(--stage-vw)),84px); height:clamp(54px,calc(4 * var(--stage-vw)),84px); border:3px solid #fff; background:#fff; }
.upcoming-body { display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); align-items:center; gap:10px; height:100%; padding:7px 12px; overflow:hidden; }.today-calendar-event,.event-item { min-width:0; padding-left:8px; border-left:2px solid rgba(228,191,114,.55); }.today-calendar-event span { display:block; color:var(--gold); font-size:clamp(9px,calc(.62 * var(--stage-vw)),13px); font-weight:900; text-transform:uppercase; }.today-calendar-event strong,.event-item strong { display:block; overflow:hidden; color:#fff; font-size:clamp(11px,calc(.78 * var(--stage-vw)),16px); text-overflow:ellipsis; white-space:nowrap; }.today-calendar-event small,.event-item em { display:block; overflow:hidden; color:var(--muted); font-size:clamp(9px,calc(.62 * var(--stage-vw)),13px); font-style:normal; text-overflow:ellipsis; white-space:nowrap; }
.upcoming-panel { grid-column:1 / 4; grid-row:4; }.upcoming-panel h3 { display:none; }.event-item:nth-child(n+5) { display:none; }
.photo-panel { grid-column:3; grid-row:1 / 4; position:relative; display:grid; place-items:center; background:#061a3d; }.photo-panel img { display:block; width:100%; height:100%; object-fit:contain; object-position:center; }.photo-panel::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(90deg,rgba(3,19,47,.2),transparent 24%,rgba(3,19,47,.05)); }
.operation-footer { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)) minmax(180px,1.55fr) repeat(3,minmax(0,1fr)); align-items:center; gap:10px; margin:0; padding:7px 12px; overflow:hidden; color:#fff; background:#020a1b; font-size:clamp(8px,calc(.52 * var(--stage-vw)),11px); }.operation-item { display:grid; grid-template-rows:auto auto auto; align-content:center; min-width:0; line-height:1.15; }.operation-item span { color:var(--gold); font-weight:900; text-transform:uppercase; }.operation-item strong,.operation-item small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }.operation-item small { color:var(--muted); }.connection-item { padding-left:4px; }
.profile-small .brand h1 { font-size:clamp(29px,calc(3.6 * var(--stage-vw)),47px); }.profile-small .top-meta { gap:2px 8px; padding:7px 9px; }.profile-small .calendar-upcoming-item small { display:none; }.profile-small .calendar-upcoming-item .fast-time-range { display:block; }.profile-small .upcoming-body { grid-template-columns:repeat(3,minmax(0,1fr)); }
.profile-small .prayer-panel .row-list,.profile-small .zmanim-panel .row-list { display:block; position:relative; }
.profile-small .row-list .row { height:38px; min-height:38px; }
.profile-small .row-list .row:nth-child(n+6) { border-left:0; }
.profile-small .calendar-upcoming-body { display:block; position:relative; }
.profile-small .calendar-upcoming-item { height:22px; min-height:22px; }
.motion-scroll-track { display:block; will-change:transform; transform:translate3d(0,0,0); }
.motion-scroll-track.is-vertical { transform:translate3d(0,0,0); }
.motion-scroll-set { display:block; }
.motion-scroll-set.clone { pointer-events:none; }
.motion-scroll-track.is-vertical .motion-scroll-set.clone { margin-top:28px; }

/* Today belongs with the date; future calendar items use the lower middle panel. */
.today-calendar { grid-column:1 / -1; display:flex; gap:5px 12px; min-width:0; overflow:hidden; border-top:1px solid rgba(228,191,114,.25); padding-top:4px; }
.today-calendar > div { min-width:0; padding-left:7px; border-left:2px solid rgba(228,191,114,.55); }
.today-calendar span { display:block; color:var(--gold); font-size:clamp(7px,calc(.5 * var(--stage-vw)),10px); font-weight:900; text-transform:uppercase; }
.today-calendar strong,.today-calendar small { display:block; overflow:hidden; max-width:clamp(85px,calc(8 * var(--stage-vw)),160px); color:#fff; font-size:clamp(8px,calc(.58 * var(--stage-vw)),12px); text-overflow:ellipsis; white-space:nowrap; }
.today-calendar small { color:var(--muted); }
.profile-small .meta-date { gap:7px; }
.profile-small .shabbat-times { gap:.2em .5em; }
.profile-small .today-calendar { gap:3px 7px; padding-top:3px; }

/* The operation ribbon is the only footer. Without it, content uses the full height. */
.yarkon-shell.debug-enabled { grid-template-rows:clamp(118px,calc(14 * var(--stage-vh)),166px) minmax(0,1fr) clamp(46px,calc(5 * var(--stage-vh)),64px); padding-bottom:0; }
.main-grid.has-shul-events { grid-template-rows:minmax(0,27fr) minmax(0,46fr) minmax(0,18fr) minmax(0,9fr); }
.event-item strong { font-size:clamp(12px,calc(.86 * var(--stage-vw)),18px); }
.profile-small .main-grid { grid-template-rows:minmax(0,31fr) minmax(0,47fr) minmax(0,22fr); }
.profile-small .main-grid.has-shul-events { grid-template-rows:minmax(0,25fr) minmax(0,42fr) minmax(0,18fr) minmax(0,15fr); }

/* Lists remain one column until their row count needs the second column. */
.prayer-panel .row-list.two-columns { grid-template-rows:repeat(5,minmax(0,1fr)); grid-auto-flow:column; grid-auto-rows:auto; }
.zmanim-panel .row-list.two-columns { grid-template-rows:repeat(10,minmax(0,1fr)); grid-auto-flow:column; grid-auto-rows:auto; }
.signage-credit { align-self:center; min-width:0; color:#fff; font-size:clamp(8px,calc(.55 * var(--stage-vw)),12px); font-weight:700; text-align:center; white-space:nowrap; }
.signage-credit strong { display:block; color:var(--gold); letter-spacing:.08em; }
