:root{--ink: #121816;--ink-soft: #3d4741;--muted: #6b756f;--paper: #f4f1ea;--paper-2: #ebe6db;--surface: #fffcf7;--line: #ddd5c6;--forest: #0c3b2e;--forest-mid: #146049;--mint: #d7efe4;--gold: #f0a202;--gold-soft: #f8e6b8;--sky: #1f5f7a;--sky-soft: #d5e8f0;--danger: #9b2c2c;--danger-soft: #f5d6d6;--shadow: 0 1px 0 rgba(18, 24, 22, .04), 0 18px 40px rgba(18, 24, 22, .06);--radius: 1rem;--radius-sm: .625rem;--font: "Sora", system-ui, sans-serif;--display: "Literata", Georgia, serif;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body,#root{min-height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background-color:var(--paper);background-image:linear-gradient(180deg,rgba(12,59,46,.06),transparent 28%),radial-gradient(ellipse 80% 50% at 100% -10%,rgba(240,162,2,.16),transparent 55%),repeating-linear-gradient(-12deg,transparent,transparent 11px,rgba(18,24,22,.015) 11px,rgba(18,24,22,.015) 12px);background-attachment:fixed;line-height:1.45;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}:focus-visible{outline:2px solid var(--forest-mid);outline-offset:2px}.skip-link{position:absolute;left:-999px;top:0;background:var(--forest);color:#fff;padding:var(--space-2) var(--space-3);z-index:100}.skip-link:focus{left:var(--space-3);top:var(--space-3)}.app-shell{max-width:1120px;margin:0 auto;padding:var(--space-5) var(--space-4) var(--space-7)}.topbar{display:grid;gap:var(--space-3);margin-bottom:var(--space-5);animation:nav-in .5s ease both}@keyframes nav-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.topbar-main{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:.65rem .75rem .65rem 1rem;background:#fffcf7eb;border:1px solid var(--line);border-radius:1.25rem;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);flex-wrap:wrap}.topbar-meta{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.period-chip-link:hover{text-decoration:underline;text-underline-offset:3px}.profile-layout{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4);animation:rise .45s ease both}.profile-span{grid-column:1 / -1}.period-chip{margin:0;font-size:.82rem;font-weight:600;color:var(--forest-mid)}.period-switcher{padding:var(--space-3);background:var(--surface);border:1px solid var(--line);border-radius:1rem;box-shadow:var(--shadow)}.period-label{display:block;margin-bottom:var(--space-2);font-size:.72rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.period-controls{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.period-controls select{flex:1 1 180px;min-width:0}.period-form{display:grid;gap:var(--space-3);margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px dashed var(--line)}.menu-toggle{display:none;border:1px solid var(--line);background:var(--paper-2);color:var(--ink);border-radius:999px;padding:.55rem .9rem;font-weight:700;cursor:pointer}.brand{display:inline-flex;align-items:center;gap:.7rem;font-family:var(--display);font-weight:700;font-size:1.4rem;letter-spacing:-.03em;color:var(--forest)}.brand-mark{width:2rem;height:2rem;border-radius:.55rem;background:var(--forest);position:relative;overflow:hidden;flex-shrink:0}.brand-mark:before{content:"S";position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#e8f5ef;font-family:var(--display);font-weight:800;font-size:1.05rem}.brand-mark:after{content:"";position:absolute;top:.28rem;right:.28rem;width:.35rem;height:.35rem;border-radius:999px;background:var(--gold)}.nav-links{position:relative;display:flex;flex-wrap:wrap;gap:.2rem;margin-left:auto}.nav-pill{position:absolute;top:0;left:0;height:2.5rem;width:var(--pill-width, 0);transform:translate(var(--pill-left, 0));border-radius:999px;background:var(--forest);pointer-events:none;transition:transform .62s cubic-bezier(.33,1,.32,1),width .62s cubic-bezier(.33,1,.32,1),opacity .35s ease;z-index:0}.nav-links a{position:relative;z-index:1;padding:.55rem .9rem;border-radius:999px;color:var(--muted);font-weight:600;font-size:.92rem;transition:color .22s ease,background .22s ease;min-height:2.5rem;display:inline-flex;align-items:center;background:transparent}.nav-links a:hover{color:var(--ink);background:var(--paper-2)}.nav-links a.active,.nav-links a.active:hover{background:transparent;color:#f4faf7}.view-root{position:relative;min-height:40vh}.view-stack{position:relative}.view-pane{position:absolute;top:0;left:0;width:100%;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(4px);transition:opacity .5s cubic-bezier(.33,1,.32,1),transform .5s cubic-bezier(.33,1,.32,1),visibility .5s;z-index:0}.view-pane.is-active{position:relative;opacity:1;visibility:visible;pointer-events:auto;transform:none;z-index:1}@media(prefers-reduced-motion:reduce){.view-pane{transition:none;transform:none}}.side-pick{border:0;background:transparent;padding:0;text-align:left;cursor:pointer;flex:1;color:inherit;min-width:0}.period-hero-meta{margin-top:var(--space-2)!important;font-size:.95rem!important;opacity:.9}.schedule-scroll{width:100%;overflow-x:auto;padding-bottom:var(--space-2);-webkit-overflow-scrolling:touch}.day-short{display:none}.page-header{margin-bottom:var(--space-5);animation:rise .45s ease both}@keyframes rise{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.eyebrow{margin:0 0 var(--space-2);font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--forest-mid)}.page-header h1{margin:0;font-family:var(--display);font-weight:700;font-size:clamp(1.65rem,3vw,2.15rem);letter-spacing:-.04em;line-height:1.05;color:var(--ink)}.hero-brand{margin:0;font-family:var(--display);font-weight:800;font-size:clamp(1.9rem,4vw,2.6rem);letter-spacing:-.04em;line-height:1.05;color:var(--ink)}.lede{margin:var(--space-3) 0 0;max-width:34rem;color:var(--ink-soft);font-size:1.05rem;line-height:1.55}.hero-panel{display:grid;grid-template-columns:1.2fr .8fr;gap:var(--space-4);align-items:center;margin-bottom:var(--space-4);padding:var(--space-4) var(--space-5);border-radius:1.5rem;background:linear-gradient(145deg,#0c3b2e,#146049 55%,#0f4a39);color:#f4faf7;box-shadow:var(--shadow);overflow:hidden;position:relative;animation:rise .5s ease both}.hero-panel:after{content:"";position:absolute;width:18rem;height:18rem;right:-4rem;bottom:-6rem;border-radius:50%;background:#f0a2022e;pointer-events:none}.hero-panel .eyebrow{color:var(--gold)}.hero-panel h1{color:#fff;max-width:12ch}.hero-panel .lede{color:#f4faf7d1}.hero-stats{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);position:relative;z-index:1}.stat-pill{padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:#ffffff14;border:1px solid rgba(255,255,255,.12);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.stat-pill strong{display:block;font-family:var(--display);font-size:1.6rem;letter-spacing:-.03em}.stat-pill span{color:#f4faf7b8;font-size:.88rem}.hero-actions{position:relative;z-index:1;margin-top:var(--space-4)}.hero-panel .btn{background:#f4faf7;color:var(--forest)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4);animation:rise .55s ease both}.panel{background:var(--surface);border:1px solid var(--line);border-radius:1rem;padding:var(--space-3) var(--space-4);box-shadow:var(--shadow)}.panel-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4);padding-bottom:var(--space-3);border-bottom:1px solid var(--line)}.panel h2,.panel-head h2{margin:0;font-family:var(--display);font-size:1.2rem;font-weight:700;letter-spacing:-.03em}.list{display:flex;flex-direction:column;gap:0}.row{display:flex;justify-content:space-between;gap:var(--space-3);align-items:flex-start;padding:var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--paper);margin-bottom:var(--space-2)}.row strong{display:block;margin-bottom:var(--space-1);font-weight:700;letter-spacing:-.01em}.meta{color:var(--muted);font-size:.9rem;line-height:1.4}.chip-row{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;margin-top:var(--space-2)}.badge{display:inline-flex;align-items:center;padding:.22rem .6rem;border-radius:999px;font-size:.72rem;font-weight:700;letter-spacing:.01em;white-space:nowrap;background:var(--paper-2);color:var(--ink-soft)}.badge.tone-ok,.badge.normal{background:var(--mint);color:var(--forest)}.badge.tone-info,.badge.persistent{background:var(--sky-soft);color:var(--sky)}.badge.tone-warn,.badge.warn{background:var(--gold-soft);color:#7a5200}.badge.tone-neutral,.badge.type{background:var(--paper-2);color:var(--ink-soft)}.form-stack{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px dashed var(--line)}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-3)}.field label{display:block;margin-bottom:var(--space-2);font-size:.75rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}input,select,textarea{width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);padding:.7rem .8rem;background:#fff;color:var(--ink);transition:border-color .15s ease,box-shadow .15s ease}input:focus,select:focus,textarea:focus{outline:none;border-color:#7fb59f;box-shadow:0 0 0 3px #14604924}textarea{min-height:110px;resize:vertical}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:0;border-radius:var(--radius-sm);padding:.7rem 1.05rem;background:var(--forest);color:#f4faf7;cursor:pointer;font-weight:700;transition:transform .15s ease,background .15s ease,opacity .15s ease}.btn:hover{background:var(--forest-mid);transform:translateY(-1px)}.btn.ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--line)}.btn.ghost:hover{background:var(--paper-2);color:var(--ink)}.btn.danger{background:var(--danger)}.btn.sm{padding:.4rem .7rem;font-size:.82rem}.link-more{display:inline-flex;margin-top:var(--space-4);font-weight:700;color:var(--forest-mid)}.link-more:hover{text-decoration:underline;text-underline-offset:3px}.split{display:grid;grid-template-columns:300px 1fr;gap:var(--space-4);animation:rise .45s ease both}.side-list{display:flex;flex-direction:column;gap:var(--space-2)}.side-item{border:1px solid transparent;background:transparent;border-radius:.9rem;padding:var(--space-3);transition:background .15s ease,border-color .15s ease}.side-item.active,.side-item:hover{background:var(--mint);border-color:#b5dccb}.side-item-top{display:flex;justify-content:space-between;gap:var(--space-2);align-items:flex-start}.schedule-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--space-3);animation:rise .45s ease both}.day-col{min-height:16rem;background:var(--surface);border:1px solid var(--line);border-radius:1rem;padding:var(--space-3);box-shadow:var(--shadow)}.day-col h3{margin:0 0 var(--space-3);font-family:var(--display);font-size:.95rem;letter-spacing:-.02em}.day-col .count{color:var(--muted);font-size:.75rem;font-weight:600;font-family:var(--font)}.slot{background:var(--mint);border-left:3px solid var(--forest);border-radius:.75rem;padding:.65rem;margin-bottom:var(--space-2);font-size:.86rem}.slot .actions{margin-top:var(--space-2)}.empty-state{padding:var(--space-5) var(--space-3);text-align:center;color:var(--muted)}.empty-state-title{margin:0 0 var(--space-2);font-family:var(--display);font-size:1.1rem;color:var(--ink)}.empty-state-desc{margin:0 0 var(--space-4);max-width:28rem;margin-left:auto;margin-right:auto}.empty{color:var(--muted);font-size:.95rem;padding:var(--space-2) 0}.error{color:var(--danger);margin:0 0 var(--space-4);font-weight:600;padding:var(--space-3);background:var(--danger-soft);border-radius:var(--radius-sm)}.loading-line{height:.85rem;border-radius:999px;background:linear-gradient(90deg,var(--paper-2),#f7f3ea,var(--paper-2));background-size:200% 100%;animation:shimmer 1.2s linear infinite;margin-bottom:var(--space-3)}@keyframes shimmer{to{background-position:-200% 0}}@media(max-width:980px){.hero-panel,.split,.profile-layout{grid-template-columns:1fr}.schedule-grid{grid-template-columns:repeat(7,minmax(9.5rem,1fr));width:max-content;min-width:100%}.day-full{display:none}.day-short{display:inline}}@media(max-width:720px){.menu-toggle{display:inline-flex;margin-left:auto}.nav-links{display:none;width:100%;flex-direction:column;margin-left:0;padding-top:var(--space-2)}.nav-links.is-open{display:flex}.nav-pill{display:none}.nav-links a{width:100%;justify-content:flex-start}.nav-links a.active{background:var(--forest);color:#f4faf7}.grid-2{grid-template-columns:1fr}.app-shell{padding:var(--space-4) var(--space-3) var(--space-6)}.hero-panel{padding:var(--space-5) var(--space-4)}.hero-panel h1,.hero-brand{font-size:clamp(1.9rem,9vw,2.5rem)}.row{flex-direction:column;align-items:stretch}.chip-row{width:100%}.btn,.btn.sm,.menu-toggle{min-height:2.75rem}.period-controls{flex-direction:column;align-items:stretch}.period-controls select,.period-controls .btn{width:100%}}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-4);flex-wrap:wrap}.page-header-actions{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.row-actions{display:flex;flex-wrap:wrap;gap:.35rem;justify-content:flex-end}.btn.accent{background:var(--gold);color:var(--ink)}.btn.accent:hover{filter:brightness(.96)}.dash-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:var(--space-3);margin-bottom:var(--space-4)}.meter{height:.55rem;border-radius:999px;background:var(--paper-2);overflow:hidden;margin:.55rem 0 .35rem}.meter-fill{display:block;height:100%;background:var(--forest-mid);border-radius:inherit}.meter-fill.gold{background:var(--gold)}.dash-kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2);margin-top:var(--space-3)}.dash-kpi{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.55rem .7rem}.dash-kpi strong{display:block;font-family:var(--display);font-size:1.25rem;letter-spacing:-.03em}.course-meter{width:100%;text-align:left;border:1px solid transparent;background:transparent;padding:.35rem .2rem;cursor:pointer;color:inherit;border-radius:var(--radius-sm)}.course-meter.is-on{background:var(--mint);border-color:var(--line)}.course-meter-top{display:flex;justify-content:space-between;gap:.5rem;font-size:.85rem}@media(max-width:800px){.dash-grid,.dash-kpis{grid-template-columns:1fr}}.course-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-2);margin-bottom:var(--space-4)}.course-card{text-align:left;border:1px solid var(--line);background:var(--surface);border-radius:var(--radius);padding:.7rem .8rem .75rem;cursor:pointer;box-shadow:var(--shadow);min-height:5.4rem;display:flex;flex-direction:column;gap:.2rem;color:inherit;transition:border-color .28s ease,box-shadow .28s ease,background .28s ease,transform .28s ease}.course-card.active{border-color:var(--forest-mid);box-shadow:inset 0 0 0 1px var(--forest-mid)}.course-card-bar{height:.28rem;width:2.2rem;border-radius:999px;margin-bottom:.25rem}.course-card strong{font-size:.95rem;letter-spacing:-.02em;line-height:1.2}.course-card .meta{font-size:.78rem}.swatch-row{display:flex;gap:.4rem;flex-wrap:wrap}.swatch-btn{width:1.7rem;height:1.7rem;border-radius:999px;border:2px solid transparent;cursor:pointer;padding:0}.swatch-btn.is-on{border-color:var(--ink)}@media(max-width:900px){.course-board{grid-template-columns:1fr 1fr}}@media(max-width:640px){.course-board{grid-template-columns:1fr}}.color-swatch{width:.85rem;height:.85rem;border-radius:999px;display:inline-block;border:1px solid rgba(18,24,22,.12);vertical-align:middle;margin-right:.4rem}.modal-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:end center;padding:var(--space-4)}.modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;border:0;background:#12181673;cursor:pointer}.modal-panel{position:relative;width:min(520px,100%);max-height:min(88vh,720px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:var(--space-5);z-index:1}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4)}.modal-head h2{margin:0;font-family:var(--display);font-size:1.25rem}@media(max-width:720px){.row-actions{justify-content:flex-start}.page-header-actions,.page-header-actions .btn{width:100%}.modal-root{padding:0;place-items:end stretch}.modal-panel{width:100%;max-height:92vh;border-radius:1rem 1rem 0 0}}.filter-scroll{display:flex;gap:.4rem;overflow-x:auto;padding-bottom:.35rem;margin-bottom:var(--space-4)}.filter-chip{flex:0 0 auto;border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);border-radius:999px;padding:.45rem .8rem;min-height:2.5rem;cursor:pointer;font-weight:600}.filter-chip.is-on{background:var(--forest);border-color:var(--forest);color:#f4faf7}.notes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,16.5rem),1fr));gap:var(--space-3)}.note-card{display:flex;flex-direction:column;gap:.45rem;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-3);box-shadow:var(--shadow);min-width:0}.note-card h2{margin:0;font-family:var(--display);font-size:1.15rem;line-height:1.2}.note-card p{margin:0;color:var(--ink-soft);font-size:.92rem;white-space:pre-wrap}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(4.5rem,1fr));gap:.4rem}.photo-grid img,.photo-placeholder{width:100%;aspect-ratio:1;object-fit:cover;border-radius:.45rem;background:var(--paper-2);display:block}.photo-tile{display:flex;flex-direction:column;gap:.25rem;min-width:0}.photo-hit{border:0;padding:0;background:transparent;cursor:zoom-in;display:block;width:100%}.lightbox-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:90;display:grid;place-items:center;padding:var(--space-4)}.lightbox-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;border:0;background:#121816b8;cursor:pointer}.lightbox-panel{position:relative;z-index:1;max-width:min(920px,100%);max-height:90vh;background:var(--surface);border-radius:var(--radius);padding:var(--space-3);box-shadow:var(--shadow)}.lightbox-panel img{display:block;max-width:100%;max-height:calc(90vh - 3.5rem);object-fit:contain;border-radius:var(--radius-sm)}.lightbox-close{margin-bottom:var(--space-2)}.search-field{margin-bottom:var(--space-3)}.search-field input{width:100%;min-height:44px;padding:.55rem .85rem;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface)}.day-col.is-today{border-color:var(--forest-mid);box-shadow:inset 0 0 0 1px var(--forest-mid);background:color-mix(in srgb,var(--mint) 55%,var(--surface))}.day-col.is-today h3{color:var(--forest)}.schedule-toolbar{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:var(--space-3)}.item-highlight{outline:2px solid var(--gold);outline-offset:1px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.schedule-grid.is-today-view{grid-template-columns:minmax(0,1fr);max-width:28rem}.photo-open{border:0;padding:0;background:transparent;cursor:zoom-in;display:block;width:100%}.photo-open img{display:block;width:100%;height:100%;object-fit:cover}.collapse-body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .4s cubic-bezier(.33,1,.32,1)}.collapse-body.is-open{grid-template-rows:1fr}.collapse-body>*{min-height:0;overflow:hidden}@media(prefers-reduced-motion:reduce){.collapse-body{transition:none}}
