:root { --bg:#07121a; --surface:rgba(18,33,41,.8); --line:rgba(169,255,222,.22); --mint:#7cf0c1; --text:#f2fbf7; --muted:#abc0bd; }
* { box-sizing:border-box } body { margin:0; min-height:100vh; background:radial-gradient(circle at 18% 12%,#164b4c 0,#0c2030 28%,#07121a 70%); color:var(--text); font-family:ui-rounded, -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif } button,input,select { font:inherit } button { color:inherit; cursor:pointer } button:disabled { cursor:not-allowed;opacity:.55 } button:focus-visible,input:focus-visible,select:focus-visible { outline:3px solid var(--mint); outline-offset:3px }.setup { min-height:100vh; display:grid; place-items:center; padding:24px }.setup-card { max-width:760px; padding:44px; border:1px solid var(--line); border-radius:28px; background:var(--surface); box-shadow:0 22px 70px #0008 }.mark { display:block;width:48px;height:48px;flex:0 0 48px;object-fit:contain;border-radius:12px }.setup h1 { font-size:clamp(2rem,5vw,4rem);margin:16px 0 8px }.setup p { color:var(--muted);line-height:1.5 }.buttons,.toolbar { display:flex; flex-wrap:wrap; gap:10px }.buttons { margin-top:20px }.setup-options,.modal-actions { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:28px }.option-card { text-align:left;padding:18px;border-radius:14px;border:1px solid var(--line);background:#10242a;display:grid;gap:5px }.option-card b { font-size:1.1rem }.option-card span { color:var(--muted);line-height:1.4 }.primary,.secondary { padding:13px 18px;border-radius:12px;border:1px solid var(--line);background:var(--mint);color:#052119;font-weight:750 }.secondary,.option-card.secondary { background:transparent;color:var(--text) }.option-card.primary { background:var(--mint);color:#052119 }.option-card.primary span { color:#164535 }.option-card.disabled { background:#0b171b }.notice { color:#ffd88b;margin-top:16px }
.dashboard { min-height:100vh; display:grid; grid-template-columns:minmax(0,1.8fr) minmax(330px,.9fr); gap:clamp(18px,2.5vw,42px); padding:clamp(18px,3vw,48px);--mint:var(--accent) }.left { min-height:0; display:flex;flex-direction:column }.header { display:flex;justify-content:space-between;gap:20px;align-items:flex-start }.identity { display:flex;gap:12px;align-items:center }.identity strong { font-size:clamp(1.05rem,2vw,1.6rem) }.identity small,.meta,.sub { display:block;color:var(--muted);margin-top:3px }.clock { font-size:clamp(2.4rem,6.2vw,7.4rem);font-weight:800;line-height:.9;text-align:right;letter-spacing:-.06em }.toolbar { justify-content:flex-end;margin-top:12px }.toolbar button { background:#10242a;border:1px solid var(--line);border-radius:9px;padding:8px 10px;color:var(--text) }.status { flex:1; display:grid;place-items:center; padding:20px 0 }.status-card { width:min(760px,100%); text-align:center; padding:clamp(20px,3vw,45px); border:1px solid var(--line); border-radius:34px; background:linear-gradient(145deg,rgba(25,58,63,.82),rgba(8,18,25,.78)); box-shadow:0 22px 70px #0007 }.ring { width:clamp(190px,30vw,430px);aspect-ratio:1;margin:auto;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--mint) calc(var(--progress)*1%),rgba(255,255,255,.09) 0);position:relative }.ring:before { content:"";position:absolute;inset:11px;border-radius:inherit;background:#0b1b22 }.ring > div { z-index:1 }.countdown { font-size:clamp(3.4rem,8vw,9rem);font-weight:800;letter-spacing:-.07em }.state-label { font-size:clamp(1rem,2.2vw,1.8rem);font-weight:700;color:var(--mint);margin-top:14px }.event-title { font-size:clamp(2rem,5vw,5.8rem);line-height:1.02;font-weight:800;margin:10px 0;overflow-wrap:anywhere }.details { font-size:clamp(1rem,2vw,1.7rem);color:var(--muted) }.next-card { width:min(700px,100%);margin:auto;padding:18px 23px;border:1px solid var(--line);border-radius:18px;background:var(--surface) }.next-card b { font-size:clamp(1.35rem,2.4vw,2.2rem) }.next-label { font-size:.78rem;letter-spacing:.12em;color:var(--mint);font-weight:800 }.size-compact .event-title{font-size:clamp(1.6rem,4vw,4.5rem)}.size-large .event-title{font-size:clamp(2.3rem,5.8vw,6.4rem)}.size-large .row strong{font-size:clamp(1.1rem,2vw,1.8rem)}
.schedule { min-height:0;background:rgba(6,16,22,.65);border:1px solid var(--line);border-radius:25px;padding:clamp(15px,2vw,28px);display:flex;flex-direction:column;height:calc(100dvh - clamp(36px,6vw,96px));overflow:hidden;container-type:inline-size;container-name:schedule-panel }.schedule h2 { flex:0 0 auto;margin:0 0 14px;font-size:clamp(1.1rem,2vw,1.7rem);letter-spacing:.08em }.rows { overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;display:flex;flex-direction:column;flex:1 1 0;min-height:0;gap:12px;padding-right:4px;--card-max:120px }.row { display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"badge activity trailing";align-items:center;gap:10px;padding:14px;flex:1 0 0;min-height:min-content;max-height:var(--card-max);border-radius:13px;color:var(--text);border:1px solid var(--line);background:rgba(18,33,41,.65) }.row.current { color:var(--text);background:color-mix(in srgb,var(--mint) 18%,#0c2026);border-color:color-mix(in srgb,var(--mint) 80%,transparent);box-shadow:inset 3px 0 0 var(--mint) }.row.complete { opacity:.78;background:rgba(12,25,31,.7) }.badge { grid-area:badge;min-width:47px;max-width:9ch;overflow-wrap:anywhere;padding:10px 9px;border-radius:10px;font-size:1.3rem;line-height:1.15;text-align:center;background:color-mix(in srgb,var(--mint) 10%,transparent);border:1px solid color-mix(in srgb,var(--mint) 20%,transparent);color:var(--mint);font-weight:800 }.row strong{font-size:clamp(1.05rem,1.5vw,1.45rem);line-height:1.2;overflow-wrap:anywhere}.row small{display:block;color:var(--muted);font-size:.82em;line-height:1.35}.row time{font-size:.9rem;font-weight:600;color:var(--muted);white-space:nowrap}.now{font-size:.7rem;color:var(--mint);font-weight:800;letter-spacing:.08em}
#modal-root{position:fixed;inset:0;z-index:10;display:grid;place-items:center;padding:20px}.modal-backdrop{position:absolute;inset:0;background:#000a;backdrop-filter:blur(5px)}.modal{position:relative;z-index:1;width:min(1050px,100%);max-height:calc(100vh - 40px);overflow:auto;border:1px solid var(--line);border-radius:22px;background:#0c1b20;box-shadow:0 25px 90px #000;padding:28px}.modal-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.modal h2,.modal h3{margin:0}.modal-head p,.help{color:var(--muted);line-height:1.4}.icon-button{border:0;background:transparent;font-size:2rem;line-height:1}.editor-section{margin:26px 0;padding-top:22px;border-top:1px solid #ffffff18}.form-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.modal label{display:grid;gap:6px;color:var(--muted);font-weight:650}.modal input,.modal select{width:100%;padding:10px 11px;border:1px solid #ffffff28;border-radius:9px;background:#071217;color:var(--text)}.period-head,.period-row{display:grid;grid-template-columns:minmax(130px,1fr) minmax(155px,.8fr) minmax(155px,.8fr) minmax(125px,.8fr) auto auto auto;gap:8px;align-items:center}.period-head{color:var(--muted);font-size:.85rem;margin:10px 0 6px}.period-row{margin:7px 0}.small-button{padding:8px;border-radius:8px;border:1px solid var(--line);background:#163138}.destructive{color:#ffaaa4;border-color:#8a403d}.day-tabs{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.day-tab,.date-chip{padding:8px 11px;border-radius:999px;border:1px solid var(--line);background:#10242a}.day-tab.active{background:var(--mint);color:#052119}.assignment-head,.assignment-row{display:grid;grid-template-columns:minmax(120px,.6fr) minmax(220px,1fr) minmax(120px,.45fr);gap:10px;align-items:center}.assignment-head{font-size:.85rem;color:var(--muted);margin:8px 0}.assignment-row{margin:8px 0}.date-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.check{margin:14px 0;display:flex!important;align-items:center;grid-template-columns:auto 1fr}.check input{width:auto!important}.modal-footer{display:flex;justify-content:flex-end;gap:12px;border-top:1px solid #ffffff18;padding-top:20px;margin-top:26px}.form-error{color:#ffaaa4;min-height:1.2em}
@media(max-width:850px){.dashboard{grid-template-columns:1fr}.clock{text-align:left}.header{flex-direction:column}.toolbar{justify-content:flex-start}.schedule{height:48vh;height:48dvh;max-height:48dvh}.status{padding:16px 0}.next-card{margin-top:8px}.setup-options,.modal-actions,.form-grid{grid-template-columns:1fr}.period-head{display:none}.period-row{grid-template-columns:1fr 1fr}.period-row input:first-child,.period-row select{grid-column:span 2}.assignment-head{display:none}.assignment-row{grid-template-columns:1fr}.assignment-row span{font-weight:700}}

@media (max-width:520px){.setup-card{padding:28px 22px}.modal{padding:20px 16px}.modal-footer{flex-direction:column-reverse}.modal-footer button{width:100%}.toolbar button{flex:1 1 140px}.clock{font-size:clamp(2.5rem,14vw,4.5rem)}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

.managed-lunch { margin:16px 0;max-width:440px }

.row.no-label { grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"activity trailing" }

.completion-check { display:block;width:clamp(90px,13vw,180px);height:auto;margin:auto;color:var(--mint);filter:drop-shadow(0 0 12px color-mix(in srgb,var(--mint) 35%,transparent)) }
.ring.is-complete { background:color-mix(in srgb,var(--mint) 35%,transparent) }
.ring.is-complete .state-label { font-size:clamp(.8rem,1.4vw,1.1rem);letter-spacing:.14em }
.row-trailing { grid-area:trailing;display:flex;align-items:center;justify-content:flex-end;gap:8px }
.row-check { width:18px;height:18px;flex:0 0 18px;color:var(--mint);opacity:.8 }
@media(max-width:520px){.row{gap:8px;padding:10px}.badge{font-size:1.05rem;min-width:32px;padding:8px}.row-trailing{gap:4px}.row time{font-size:.85rem}.row-check{width:15px;height:15px;flex-basis:15px}}

.source-note { font-size:.85rem;margin-top:-4px }
.setup-heading { font-size:.9rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:26px 0 10px }
.snapshot-dates { flex:0 0 auto;display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px }
.snapshot-dates button,.snapshot-dates input { min-width:0;max-width:100%;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#10242a;color:var(--text);font:inherit;font-size:.8rem }
.portable-edit-row { display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1fr) minmax(0,.5fr);gap:12px;align-items:center;margin:14px 0 }
.portable-edit-row > * { min-width:0;overflow-wrap:anywhere }
@media(max-width:650px){.portable-edit-row{grid-template-columns:minmax(0,1fr)}}
.schedule-actions { position:relative }
.schedule-menu { position:absolute;top:calc(100% + 8px);right:0;z-index:5;min-width:240px;padding:6px;border:1px solid var(--line);border-radius:12px;background:#0c1b20;box-shadow:0 10px 30px #0008 }
.schedule-menu[hidden] { display:none }
.toolbar .schedule-menu button { display:block;width:100%;text-align:left;border:0;background:transparent;padding:11px 12px }
.toolbar .schedule-menu button:hover,.toolbar .schedule-menu button:focus-visible { background:#163138 }
.toolbar .schedule-menu .destructive { color:#ffaaa4 }
.schedule-menu hr { border:0;border-top:1px solid var(--line);margin:5px }
.sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0 }
.modal.managed-modal { display:flex;flex-direction:column;overflow:hidden;padding-bottom:0 }
.managed-modal .modal-head { flex:0 0 auto }
.managed-modal .modal-head p { margin:8px 0 16px;font-size:.9rem }
.managed-editor { display:flex;flex-direction:column;min-height:0;overflow:hidden }
.managed-editor-top { flex:0 0 auto }
.managed-days { display:flex;gap:6px;overflow-x:auto;max-width:100%;padding:12px 2px }
.managed-days button { flex:0 0 auto }
.managed-classes { overflow-y:auto;min-height:0;padding-right:5px }
.managed-columns,.managed-modal .managed-assignment { display:grid;grid-template-columns:minmax(95px,.45fr) minmax(0,1.5fr) minmax(90px,.45fr);gap:12px }
.managed-columns { font-size:.8rem;color:var(--muted);padding:0 5px 8px 0 }
.managed-columns small { font-size:.85em }
.managed-modal .managed-assignment { margin:0 0 10px;padding:10px;border:1px solid #ffffff18;border-radius:10px;align-items:center }
.managed-source { display:flex;flex-direction:column;align-items:flex-start;gap:4px }
.managed-source .managed-badge { min-width:38px;max-width:10ch;padding:7px 9px;border-radius:9px;background:#163138;color:var(--mint);text-align:center;overflow-wrap:anywhere }
.managed-modal .managed-source small { margin:0;font-size:.75rem }
.managed-field-caption { position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%) }
.managed-modal .managed-lunch { grid-column:2 / -1;display:flex;align-items:center;gap:10px;margin:0;max-width:none;font-size:.8rem }
.managed-modal .managed-lunch select { width:auto;min-width:130px;padding:7px 10px }
.managed-footer { flex:0 0 auto;margin:0;padding:12px 0 16px;background:#0c1b20 }
.managed-editor .form-error { margin:4px 0;flex:0 0 auto;font-size:.85rem }
@media(max-width:850px){.managed-columns,.managed-modal .managed-assignment{grid-template-columns:90px minmax(0,1fr) 100px;gap:8px}}
@media(max-width:520px){
  .schedule-menu { right:auto;left:0;min-width:230px;max-width:calc(100vw - 48px) }
  .managed-columns { display:none }
  .managed-modal .managed-assignment { grid-template-columns:minmax(0,1fr);gap:8px }
  .managed-modal .managed-source { flex-direction:row;align-items:center;margin:0 }
  .managed-field-caption { position:static;width:auto;height:auto;clip-path:none;font-size:.8rem }
  .managed-modal .managed-lunch { grid-column:auto }
  .managed-modal .managed-footer { flex-direction:row }
  .managed-modal .managed-footer button { width:auto;flex:1 }
}
.setup-heading + .setup-options { margin-top:0 }
.countdown { font-variant-numeric:tabular-nums }
.countdown.has-hours { font-size:clamp(2rem,5.6vw,6.2rem);letter-spacing:-.04em }
.managed-assignment { display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1fr) minmax(0,.5fr);gap:14px;align-items:center;margin:16px 0 }
.managed-source { min-width:0;overflow-wrap:anywhere }
.managed-source strong { display:block;color:var(--text);font-size:1.05rem }
.managed-source small { display:block;color:var(--muted);font-size:.8rem;margin-top:4px }
.managed-assignment label { min-width:0;font-size:.9rem }
.field-note { color:var(--muted);font-size:.8em;font-weight:400 }
@media(max-width:850px){.managed-assignment{grid-template-columns:1fr;gap:10px}.managed-source{margin-bottom:2px}}

.period-row input[type="time"] { min-width:155px;padding-inline:8px }
.period-row > input,.period-row > select { min-width:0 }
@media(max-width:1000px){.period-head{display:none}.period-row{grid-template-columns:repeat(2,minmax(0,1fr))}.period-row input:first-child,.period-row select{grid-column:span 2}}
@media(max-width:520px){.period-row{grid-template-columns:minmax(0,1fr)}.period-row input:first-child,.period-row select{grid-column:auto}.period-row input[type="time"]{min-width:0;width:100%}}

.rows.balanced { --card-max:100px;gap:10px }
.rows.balanced .row { padding:12px }
.rows.busy { gap:8px }
.rows.busy .row { flex:0 0 auto;max-height:none;padding:10px 12px }
.rows.busy .row strong { font-size:clamp(1rem,1.3vw,1.25rem) }
.row-activity { grid-area:activity;min-width:0 }
.row-activity strong { display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden }
.row-state { display:block;min-height:.8rem;line-height:.8rem;margin-top:3px }
.row-completion { display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex:0 0 18px }
@container schedule-panel (max-width:430px){
  .row { grid-template-columns:auto minmax(0,1fr);grid-template-areas:"badge activity" ". trailing";row-gap:6px }
  .row.no-label { grid-template-columns:minmax(0,1fr);grid-template-areas:"activity" "trailing" }
  .row-trailing { justify-self:end }
}
@media(max-width:850px){.rows .row{flex:0 0 auto;max-height:none;padding:12px}.rows{gap:9px}}
@media(max-width:520px){
  .rows .row { grid-template-columns:auto minmax(0,1fr);grid-template-areas:"badge activity" ". trailing";padding:10px;row-gap:6px }
  .rows .row.no-label { grid-template-columns:minmax(0,1fr);grid-template-areas:"activity" "trailing" }
  .row-trailing { justify-self:end }
}
