@font-face{font-family:"PT Sans";src:url(assets/ptsans-regular.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"PT Sans";src:url(assets/ptsans-bold.woff2) format("woff2");font-weight:700;font-display:swap}
:root{--nav:#fff;--ink:#0f3551;--muted:#526777;--ground:#f7f8fa;--line:#d6dce2;--accent:#2876d0;--teal:var(--accent);--blue:#dfeaf5;--mint:#dceee7;--peach:#f4e6d8;--purple:#eae5f5;--radius:5px;--week:44px;--shadow:0 8px 24px #0f35511a;font-family:"PT Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;color:var(--ink);background:var(--ground);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.5}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.4}button,input,select,textarea{border:1px solid var(--line);border-radius:4px;background:white}button{padding:9px 13px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700}button:hover:not(:disabled){background:#eaf0f1}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #2876d0;outline-offset:3px}input,select,textarea{padding:9px 10px;min-width:0;color:var(--ink);caret-color:var(--teal)}textarea{resize:vertical;min-height:72px}input::placeholder,textarea::placeholder{color:#64757c}h1,h2,h3,p{margin:0}h1{font-size:30px;letter-spacing:-.025em;line-height:1.25}h2{font-size:19px;line-height:1.35}h3{font-size:15px}a{color:var(--teal);text-underline-offset:3px}svg{width:18px;height:18px;flex-shrink:0;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}::selection{background:#dcecff}*{scrollbar-width:thin;scrollbar-color:#acbfc6 transparent}.shell{display:grid;grid-template-columns:208px minmax(0,1fr);min-height:100vh}.rail{background:var(--nav);color:#fff;padding:30px 18px 20px;display:flex;flex-direction:column;gap:30px;position:sticky;top:0;height:100vh}.brand{display:flex;gap:11px;align-items:center;font-size:24px;font-weight:700;letter-spacing:-.03em;padding:0 10px}.brand svg{width:29px;height:29px;color:#9cd6c5}.rail-sub{color:#bed0d7;font-size:12px;margin:4px 10px 0}.rail-label{font-size:12px;color:#b8cdd5;margin:0 12px 10px}.subject{padding:12px;background:#2a4c5a;border-radius:4px;display:flex;align-items:center;gap:10px;font-weight:700}.rail nav{display:grid;gap:5px}.rail button{background:transparent;border-color:transparent;color:#d2e0e4;justify-content:flex-start;font-weight:400;padding:11px 14px}.rail button.active{background:#e6f0ed;color:#173c43;font-weight:700}.rail button:hover{background:#335362;color:white}.rail button.active:hover{background:#d6e8e1;color:#173c43}.grade-number{font-variant-numeric:tabular-nums;width:22px}.rail-bottom{margin-top:auto;border-top:1px solid #46606c;padding:18px 10px 0;color:#c2d2d9;font-size:12px}.rail-bottom strong{display:block;color:white;font-size:13px;margin-bottom:5px}.main{min-width:0}.topbar{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 30px;gap:16px}.breadcrumb{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:10px}.top-actions{display:flex;align-items:center;gap:12px}.save-state{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.save-state svg{color:var(--teal);width:15px}.badge{font-size:11px;border:1px solid #ccd9e8;color:#365d80;padding:3px 7px;border-radius:4px;white-space:nowrap;background:#f4f7fb}.workspace{padding:28px 30px 40px}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:24px}.subtitle{margin-top:7px;color:var(--muted)}.primary{background:var(--teal);border-color:var(--teal);color:white}.primary:hover:not(:disabled){background:#1f60ab}.head-actions{display:flex;gap:8px;align-items:center}.tabs{display:flex;gap:25px;border-bottom:1px solid var(--line);margin-bottom:24px}.tabs button{border:0;border-bottom:3px solid transparent;border-radius:0;background:transparent;padding:0 1px 13px;font-weight:400;color:var(--muted)}.tabs button.active{color:var(--teal);border-bottom-color:var(--teal);font-weight:700}.view-head{display:flex;justify-content:space-between;gap:14px;align-items:center;margin-bottom:16px}.view-head h2{font-size:18px}.view-head small{color:var(--muted);display:block;margin-top:4px}.work-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;align-items:start}.plan-area{min-width:0}.legend{display:flex;gap:13px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:18px 0}.legend span{display:flex;align-items:center;gap:5px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:var(--teal)}.semester{border:1px solid var(--line);border-radius:var(--radius);background:white;overflow:hidden;margin-bottom:16px}.semester-head{padding:16px 18px;display:flex;justify-content:space-between;align-items:center;gap:10px}.semester-title{display:flex;align-items:center;gap:10px}.semester-title .number{font-size:12px;background:#eff3f5;color:#46616e;padding:3px 7px;border-radius:4px}.semester-tools{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted)}.semester-tools input{width:53px;padding:5px 7px;font-weight:700}.timeline-scroll{overflow-x:auto;overscroll-behavior-x:contain}.timeline{position:relative;width:calc(var(--slots)*var(--week));min-height:216px}.week-head{display:flex;height:35px;border-block:1px solid #e6eced;background:#fbfcfc;color:#6d7e86}.week{width:var(--week);flex-shrink:0;font-size:10px;padding-top:8px;text-align:center;border-right:1px solid #e9eeee;font-variant-numeric:tabular-nums}.week.holiday-head{background:#edf1f2;font-size:9px}.week.over{background:#fff0e7;color:#934516}.grid-column{position:absolute;top:35px;bottom:0;width:var(--week);border-right:1px solid #edf1f2;pointer-events:none}.holiday-column{background:#f1f4f4;display:flex;align-items:flex-end;justify-content:center;padding-bottom:10px;color:#697c84;font-size:10px}.holiday-column span{writing-mode:vertical-rl;transform:rotate(180deg)}.over-column{background:#fff8f3}.unit{position:absolute;top:57px;height:127px;border-radius:5px;padding:15px 14px;cursor:grab;overflow:hidden;border:1px solid transparent;display:flex;flex-direction:column;align-items:stretch;text-align:left;font-weight:400;justify-content:flex-start;gap:0;touch-action:pan-y}.unit:hover:not(:disabled){filter:brightness(.975);background:var(--unit-bg)}.unit.selected{outline:2px solid var(--teal);outline-offset:2px}.unit.dragging{opacity:.45}.unit.drop-target{outline:3px dashed var(--teal);outline-offset:2px}.unit-title{font-weight:700;font-size:14px;line-height:1.3;display:block;overflow:hidden;max-height:38px;overflow-wrap:anywhere}.unit-top{display:flex;align-items:center;gap:7px;font-size:10px;margin-bottom:9px;white-space:nowrap}.unit-top svg{width:12px;height:12px}.unit-meta{font-size:11px;margin-top:auto;display:flex;gap:6px;flex-wrap:wrap;line-height:1.4}.unit-code{font-size:10px;opacity:.9}.unit .resize{position:absolute;right:0;top:0;height:100%;width:12px;cursor:ew-resize;touch-action:none;display:flex;align-items:center;justify-content:center;background:#ffffff35}.resize::after{content:'';width:3px;height:24px;border-inline:1px solid currentColor;opacity:.45}.unit.continuation{padding-inline:8px}.unit.narrow{padding:10px 6px}.unit.narrow .unit-title{font-size:11px}.unit.narrow .unit-top,.unit.narrow .unit-code{display:none}.semester-footer{padding:12px 18px;border-top:1px solid #e8eeee;display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--muted);font-size:12px}.text-button{border:0;padding:0;background:transparent;color:var(--teal);font-size:12px}.warning{color:#8e421b;background:#fff2e7;padding:10px 16px;font-size:12px;border-top:1px solid #ecd9cb}.hint{display:flex;align-items:flex-start;gap:9px;color:var(--muted);font-size:12px;line-height:1.6;margin-top:18px;max-width:75ch}.hint svg{width:16px;height:16px;margin-top:2px}.detail{background:white;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;position:sticky;top:18px}.detail-top{padding:18px 19px 15px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.detail-top h2{font-size:16px}.detail-body{padding:18px 19px;max-height:calc(100vh - 155px);overflow-y:auto}.field{display:grid;gap:6px;margin-bottom:15px}.field>span,.field>label{font-size:12px;font-weight:700;color:#4e6672}.field input,.field textarea,.field select{width:100%}.row{display:flex;gap:10px;align-items:end}.row>*{flex:1;min-width:0}.duration{display:flex;align-items:center;gap:9px;margin-bottom:17px}.duration button{padding:6px}.duration input{width:56px;text-align:center;padding:7px 4px}.duration strong{margin-left:auto;font-size:18px}.duration small{font-size:11px;color:var(--muted);display:block;font-weight:400}.section-title{display:flex;align-items:center;justify-content:space-between;margin:22px 0 10px}.section-title h3{font-size:13px}.chip{display:inline-flex;align-items:center;gap:5px;font-size:10px;padding:3px 6px;border-radius:4px;background:#edf4fc;color:#1f60ab}.assigned-list{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:10px}.assigned-list button{font-size:11px;padding:4px 6px;font-weight:400;background:#edf4fc;color:#1f60ab;border-color:#c8d9ed}.assigned-list svg{width:12px;height:12px}.search-wrap{position:relative}.search-wrap input{width:100%;padding-left:34px}.search-wrap svg{position:absolute;left:10px;top:11px;color:#6d818a;width:16px}.competency-options{max-height:220px;overflow-y:auto;margin-top:9px}.competency-option{display:flex;gap:8px;padding:9px 0;border-bottom:1px solid #eef1f2;font-size:12px;cursor:pointer;align-items:flex-start}.competency-option input{accent-color:var(--teal);margin-top:4px;flex-shrink:0}.competency-option strong{font-size:10px;color:var(--teal);display:block;margin-bottom:2px}.source-note{font-size:10px;color:var(--muted);margin-top:10px}.tags{display:flex;gap:6px;flex-wrap:wrap}.tags button{font-size:11px;font-weight:400;padding:5px 7px}.tags button.on{background:#e6effa;border-color:#89afd9;color:#1f60ab}.detail-actions{display:flex;gap:6px;margin-top:20px;flex-wrap:wrap}.detail-actions button{font-size:11px;padding:6px 9px}.danger{color:#9a3e35}.details-extra{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}summary{cursor:pointer;font-size:12px;font-weight:700;margin-bottom:12px}.empty-detail{padding:28px 20px;color:var(--muted);line-height:1.7}.empty-detail svg{width:30px;height:30px;color:var(--teal);margin-bottom:12px}.empty-detail h3{color:var(--ink);margin-bottom:8px}.coverage-teaser{padding:20px 0;border-top:1px solid var(--line);margin-top:24px;display:flex;gap:16px;align-items:center;justify-content:space-between}.coverage-teaser p{font-size:12px;color:var(--muted);margin-top:3px}.coverage-teaser strong{font-size:14px}.coverage-teaser button{white-space:nowrap}.overview-table{background:#fff;border:1px solid var(--line);border-radius:5px;overflow:hidden}.overview-heading,.overview-row{display:grid;grid-template-columns:110px 1fr 1fr;gap:20px;padding:18px 20px}.overview-heading{background:#e9eff1;font-weight:700;font-size:12px}.overview-row{border-top:1px solid var(--line);align-items:center}.overview-grade{display:grid;gap:3px}.overview-grade button{padding:0;border:0;justify-content:flex-start;color:var(--teal);background:none}.overview-grade small{font-size:10px;color:var(--muted)}.mini-track{display:flex;gap:3px;height:39px;margin-bottom:6px}.mini-unit{border:0;border-radius:4px;padding:5px;overflow:hidden;min-width:0;display:block;text-align:left;font-size:10px;white-space:nowrap;text-overflow:ellipsis;font-weight:400}.mini-caption{font-size:11px;color:var(--muted)}.coverage-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:16px 0}.coverage-toolbar .search-wrap{flex:1;min-width:220px}.coverage-list{background:white;border:1px solid var(--line);border-radius:5px;overflow:hidden}.coverage-group{background:#eaf0f1;padding:12px 18px;font-size:13px}.coverage-row{display:grid;grid-template-columns:55px minmax(0,1fr) 140px;gap:16px;align-items:start;padding:14px 18px;border-bottom:1px solid #e8eeee;font-size:13px}.coverage-row>strong{font-size:12px;color:var(--teal)}.coverage-row small{display:block;color:var(--muted);font-size:11px;margin-top:4px}.coverage-status{font-size:11px;justify-self:end;color:var(--teal);background:#edf4fc;padding:4px 7px;border-radius:4px}.coverage-status.missing{background:#f3f0e9;color:#75603e}.empty{padding:32px;color:var(--muted);text-align:center}.learning-fields{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:25px}.learning-field{padding-top:14px;border-top:2px solid #b3c7ce}.learning-field p{font-size:12px;margin:8px 0;color:var(--muted)}.learning-field ul{padding-left:17px;font-size:12px;line-height:1.8}.footer-note{font-size:11px;color:var(--muted);margin-top:22px}.loading{padding:40px}#toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%) translateY(20px);background:#163746;color:white;border-radius:4px;padding:12px 20px;box-shadow:var(--shadow);font-size:13px;opacity:0;pointer-events:none;transition:opacity .15s,transform .2s;z-index:100;max-width:90vw}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.icon-button{padding:7px}.mobile-only{display:none}.resizing{cursor:ew-resize!important;user-select:none}.resizing .unit{transition:none}.drag-tip{font-size:11px;color:var(--teal);background:#edf4fc;padding:5px 8px;border-radius:4px}.semester select{font-size:11px;padding:5px}
@media(min-width:1650px){.work-grid{grid-template-columns:minmax(0,1fr) 350px}.workspace{padding:34px 40px}.timeline{min-width:100%}.unit{height:140px}.timeline{min-height:230px}}
@media(max-width:1200px){.shell{grid-template-columns:174px minmax(0,1fr)}.rail{padding:26px 12px}.workspace{padding:24px 20px}.work-grid{grid-template-columns:minmax(0,1fr) 290px;gap:16px}.topbar{padding:0 20px}.brand{font-size:21px}.semester-head{flex-wrap:wrap;gap:8px}.head-actions button{font-size:12px}.detail-body{padding:16px}.top-actions .save-state{display:none}h1{font-size:26px}}
@media(max-width:950px){.shell{grid-template-columns:150px minmax(0,1fr)}.work-grid{grid-template-columns:minmax(0,1fr)}.detail{position:static}.detail-body{max-height:none;display:block}.page-head{flex-wrap:wrap}.detail:not(.is-empty){scroll-margin-top:12px}.rail{padding-inline:10px}.brand{padding:0;font-size:20px;gap:5px}.rail-sub{margin-left:0}.semester-head{flex-wrap:nowrap}.overview-heading,.overview-row{grid-template-columns:85px 1fr 1fr;gap:10px;padding-inline:12px}.coverage-row{grid-template-columns:45px minmax(0,1fr) 95px;gap:10px}}
@media(max-width:600px){.shell{display:block}.rail{height:auto;position:static;padding:16px;gap:15px;display:block}.brand{font-size:23px}.rail-sub,.rail-label,.subject,.rail-bottom{display:none}.rail nav{display:flex;gap:5px;margin-top:14px;justify-content:space-between}.rail nav button{padding:7px 10px;font-size:12px;display:block;text-align:center}.grade-number{width:auto}.grade-word{display:none}.rail nav button::before{content:'Jg. ';font-size:10px}.topbar{height:53px;padding:0 16px}.breadcrumb{font-size:11px}.breadcrumb svg{width:12px}.top-actions{gap:6px}.top-actions button{padding:6px}.top-actions button span{display:none}.workspace{padding:22px 16px 30px}.page-head{gap:15px;margin-bottom:24px}h1{font-size:26px}.subtitle{font-size:12px}.tabs{gap:22px;margin-bottom:22px}.tabs button{font-size:12px;gap:5px}.tabs svg{width:15px}.view-head{align-items:flex-start}.view-head h2{font-size:16px}.view-head small{font-size:11px}.drag-tip{display:none}.semester-head{padding:14px 12px;flex-wrap:wrap}.semester-footer{padding:12px;font-size:11px}.legend{gap:8px 12px;font-size:10px}.coverage-teaser{align-items:flex-start}.coverage-teaser button{font-size:11px;padding:7px}.overview-heading,.overview-row{grid-template-columns:60px minmax(0,1fr) minmax(0,1fr);gap:8px;padding:14px 10px}.overview-heading{font-size:10px}.overview-grade button{font-size:12px}.overview-grade small{font-size:9px}.mini-caption{font-size:9px}.mini-unit{font-size:9px}.coverage-row{grid-template-columns:40px minmax(0,1fr);padding:12px;gap:8px}.coverage-status{grid-column:2;justify-self:start}.learning-fields{grid-template-columns:1fr}.footer-note{line-height:1.7}.mobile-only{display:inline}.head-actions{width:100%}.head-actions .primary{flex:1}.coverage-toolbar select{max-width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

.unit.narrow .unit-title{display:none}.unit.narrow .unit-meta{font-size:11px;text-align:center;justify-content:center;margin-top:auto;margin-bottom:auto}.unit.narrow .unit-meta span{line-height:1.8}.unit.narrow::before{content:"";width:10px;height:2px;background:currentColor;opacity:.5;margin:6px auto}

.week-head,.holiday-column{color:var(--muted)}

/* Persistent app navigation and independently collapsible side panels. */
:root{--header-height:120px}.app-header{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid var(--line)}.app-header .topbar{height:68px;border-bottom:1px solid #edf1f2}.viewbar{height:52px;padding:0 30px;display:flex;align-items:center;justify-content:space-between;gap:16px}.viewbar .tabs{height:52px;margin:0;border:0;align-items:stretch}.viewbar .tabs button{padding:0 2px;align-items:center}.panel-toggle{padding:8px;border-color:transparent;color:var(--muted);flex-shrink:0}.panel-toggle.is-open{background:#edf4fc;color:var(--teal)}.panel-toggle span{font-size:12px}.subject-switch select{border-color:transparent;background:#f4f7f7;font-weight:700;max-width:190px}.shell{min-height:calc(100vh - var(--header-height))}.rail{top:var(--header-height);height:calc(100vh - var(--header-height));overflow-y:auto}.shell.left-collapsed{grid-template-columns:0 minmax(0,1fr)}.rail[hidden]{display:none}.work-grid.right-collapsed{grid-template-columns:minmax(0,1fr)}.detail{top:calc(var(--header-height) + 18px)}.detail-body{max-height:calc(100vh - var(--header-height) - 100px)}.detail{scroll-margin-top:calc(var(--header-height) + 16px)}.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}.e-requirement{background:#e7e1f2;color:#503d69;border-radius:2px;padding:0 1px}.competency-meta{display:block;color:var(--muted);font-size:10px;margin-top:5px}.coverage-row{grid-template-columns:75px minmax(0,1fr) 140px}.coverage-toolbar{scroll-margin-top:calc(var(--header-height) + 10px)}
@media(max-width:1200px){.viewbar{padding:0 20px}}
@media(max-width:950px){.detail{position:static;scroll-margin-top:calc(var(--header-height) + 12px)!important}.detail-body{max-height:none}.coverage-row{grid-template-columns:65px minmax(0,1fr) 95px}}
@media(max-width:600px){:root{--header-height:108px}.app-header .topbar{height:56px;padding:0 12px}.viewbar{height:52px;padding:0 12px;gap:4px}.viewbar .tabs{gap:14px}.viewbar .tabs button{font-size:11px;gap:4px}.viewbar .panel-toggle span{display:none}.viewbar .panel-toggle{padding:7px}.breadcrumb-label,.breadcrumb>svg{display:none}.breadcrumb{gap:6px}.subject-switch select{max-width:145px;padding:7px 5px;font-size:12px}.top-actions .badge{display:none}.shell.left-collapsed{display:block}.rail{position:static;height:auto;padding:16px;overflow:visible}.rail nav{margin-top:12px}.rail .brand{font-size:20px}.coverage-row{grid-template-columns:62px minmax(0,1fr)}.coverage-status{grid-column:2}.coverage-toolbar select{font-size:12px}.workspace{padding-top:24px}}

.shell.left-collapsed>.main{grid-column:2}
@media(max-width:380px){.viewbar .tabs{gap:12px}.viewbar .tabs svg{display:none}.viewbar .tabs button{font-size:11px}}

/* NBC reference: PT Sans, blue actions, white surfaces and restrained corners.
   Learning-field colors are semantic and remain distinct from the UI accent. */
h1,h2,h3{color:var(--ink);letter-spacing:normal}h1{font-weight:400}h1,h2{text-wrap:balance}
button{transition:background-color .15s ease,color .15s ease,border-color .15s ease}
button:hover:not(:disabled){background:#edf4fc;border-color:#9db9d8}
.primary:hover:not(:disabled){background:#1f60ab;border-color:#1f60ab}
button:active:not(:disabled){filter:brightness(.96)}
.rail{color:var(--ink);border-right:1px solid var(--line)}
.brand{letter-spacing:normal}.brand svg{color:var(--accent)}
.rail-sub,.rail-label,.rail-bottom{color:var(--muted)}
.rail-bottom{border-top-color:var(--line)}.rail-bottom strong{color:var(--ink)}
.subject{background:#f0f4f9;color:var(--ink);border:1px solid #dde5ee}
.rail button{color:var(--ink)}
.rail button:hover{background:#edf4fc;color:#1f60ab}
.rail button.active{background:var(--accent);color:white}
.rail button.active:hover{background:#1f60ab;color:white}
.app-header{box-shadow:0 2px 5px #0f355110}
.subject-switch select{background:#f3f6fa;border-color:var(--line)}
.panel-toggle.is-open{background:#edf4fc;color:#1f60ab}
.tabs button.active{color:#1f60ab}
.badge{font-weight:400}
.overview-heading,.coverage-group{background:#eef3f9}
.semester-title .number{background:#eef3f9;color:#365d80}
.field>span,.field>label{color:var(--ink)}
.text-button,.competency-option strong,.overview-grade button,.coverage-row>strong,.coverage-status,.drag-tip{color:#1f60ab}
#toast{background:#0f3551}
*{scrollbar-color:#aebdca transparent}
@media(prefers-reduced-motion:reduce){button{transition:none}}
