:root{--bg:#f7f9fc;--surface:#fff;--border:#dce3ef;--text:#1e2a5a;--muted:#4a5578;--primary:#2563eb;--primary-dark:#1d4ed8;--sky:#7dd3fc;--sky-soft:#e0f2fe;--coral:#f97362;--amber:#f59e0b;--error:#b42318;color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,Segoe UI,Roboto,sans-serif;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}a{color:var(--primary)}code{background:var(--sky-soft);border-radius:4px;padding:.1em .35em;font-size:.95em}:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.topbar{background:var(--surface);border-bottom:4px solid var(--sky);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1.25rem;display:flex}.brand{align-items:center;gap:.6rem;font-size:1.2rem;font-weight:700;display:flex}.brand-mark{background:conic-gradient(var(--coral) 0 33%, var(--amber) 0 66%, var(--sky) 0);border-radius:50%;width:1.4rem;height:1.4rem}.who{color:var(--muted);align-items:center;gap:.75rem;font-size:.95rem;display:flex}.page{max-width:48rem;margin:2rem auto;padding:0 1rem}.card{background:var(--surface);border:1px solid var(--border);border-top:4px solid var(--coral);border-radius:12px;padding:1.5rem;box-shadow:0 1px 3px #1e2a5a0f}.card.narrow{max-width:26rem;margin:0 auto}.card h1{margin:0 0 1rem;font-size:1.5rem}form{gap:.6rem;display:grid}label{font-weight:600}input{font:inherit;color:var(--text);background:var(--surface);border:1px solid #8a94b0;border-radius:8px;padding:.6rem .75rem}.btn{font:inherit;background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:.6rem 1rem;font-weight:600}.btn:hover{background:var(--primary-dark)}.btn:disabled{opacity:.7;cursor:wait}.btn-quiet{color:var(--primary-dark);border:1px solid var(--border);background:0 0;padding:.35rem .75rem}.btn-quiet:hover{background:var(--sky-soft)}.muted{color:var(--muted)}.error{color:var(--error);font-weight:600}.class-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.class-list li{border:1px solid var(--border);border-left:4px solid var(--amber);border-radius:8px;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.class-id{color:var(--primary-dark);min-width:5rem;font-weight:700}.grow{flex:1}.small{font-size:.875rem}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.section-title{margin:0 0 .75rem;font-size:1.1rem}select{font:inherit;color:var(--text);background:var(--surface);border:1px solid #8a94b0;border-radius:8px;padding:.55rem .6rem}.dev-card{border-top-color:var(--amber);border-style:dashed;margin-top:1.5rem}.dev-card h2{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 .75rem;font-size:1rem}.page:has(.card.wide){max-width:72rem}.test-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.test-list li{border:1px solid var(--border);border-left:4px solid var(--sky);border-radius:10px;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.25rem;display:flex}.test-title{font-size:1.1rem;font-weight:700}.test-result{align-items:center;gap:.75rem;display:flex}.mastery{align-items:center;gap:.4rem;font-weight:700;display:inline-flex}.mastery-got{color:#15803d}.mastery-almost{color:#b45309}.mastery-notyet{color:#c2410c}.mastery-large{gap:.6rem;font-size:2rem}.tk-concealed .tt-main{visibility:hidden}.tt-center{background:var(--bg);place-items:center;min-height:100vh;padding:1.5rem;display:grid}.gate{width:100%;max-width:36rem}.gate-list{gap:.5rem;margin:1rem 0 1.5rem;padding-left:1.2rem;display:grid}.gate-actions{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1.25rem;display:flex}.btn-big{padding:.8rem 1.4rem;font-size:1.1rem}.gate.paused{text-align:center;border-top-color:var(--sky)}.pause-icon{color:var(--primary);margin-bottom:.25rem}.tt{background:var(--bg);flex-direction:column;display:flex;position:fixed;inset:0}.tt-main{flex-direction:column;flex:1;align-items:center;padding:1.5rem 1.5rem 1.25rem;display:flex;overflow-y:auto}.tt-question{width:100%;max-width:54rem;margin-block:auto}.tt-prompt{margin:0 0 1.25rem;font-size:1.65rem;font-weight:650;line-height:1.4}.tt-prompt:focus{outline:none}.tt-prompt:focus-visible{outline:3px solid var(--primary);outline-offset:4px;border-radius:4px}.tt-img{border:1px solid var(--border);background:var(--surface);border-radius:10px;max-width:100%;max-height:32vh;margin:0 0 1rem;display:block}.img-frame{max-width:100%;display:block;overflow:hidden}.img-frame img{object-fit:contain;width:100%;height:100%;display:block}.img-frame.img-loading{background:var(--sky-soft)}.img-frame.img-loading img{opacity:0}.tt-img.img-frame:not(.sized){width:min(100%,32rem);height:32vh}.choice-img.img-frame:not(.sized){width:min(100%,16rem);height:10rem}.card-img.img-frame:not(.sized){width:10rem;height:6rem}.ed-thumb.img-frame:not(.sized){width:6rem;height:4rem}.picture-field.compact .ed-thumb.img-frame:not(.sized){width:3.5rem;height:2.5rem}.img-missing{color:var(--muted);background:var(--surface);padding:1rem}.choices{border:none;gap:.6rem;margin:0;padding:0;display:grid}.tt-hint{color:var(--muted);margin-bottom:.4rem;padding:0;font-size:.95rem}.choice{background:var(--surface);border:2px solid var(--border);cursor:pointer;border-radius:10px;align-items:center;gap:.9rem;min-height:3rem;padding:.75rem 1.1rem;font-size:1.15rem;display:flex}.choice:hover{border-color:#93b4f5}.choice:has(input:checked){border-color:var(--primary);background:#eff4ff}.choice:has(input:focus-visible){outline:3px solid var(--primary);outline-offset:2px}.choice input{width:1.3rem;height:1.3rem;accent-color:var(--primary);flex:none;margin:0}.part{flex-direction:column;gap:.4rem;display:flex}.choice-img{border-radius:6px;max-width:16rem;max-height:10rem}.panel-title{margin:0 0 .6rem;font-size:.95rem;font-weight:700}.tt-matching,.tt-categorization{max-width:64rem}.match{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:1.25rem;display:grid}.match-rows{gap:.6rem;display:grid}.match-row{background:var(--surface);border:2px solid var(--border);border-radius:10px;grid-template-columns:minmax(0,1fr) minmax(12rem,1.3fr);align-items:center;gap:.9rem;padding:.65rem .9rem;display:grid}.match-row.matched{border-color:var(--primary);background:#eff4ff}.match-item{font-size:1.15rem;font-weight:600}.match-row select{width:100%;font-size:1rem}.match-row select:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.match-choices{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:.9rem 1rem}.match-choices ol{gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.match-choices li{align-items:flex-start;gap:.6rem;font-size:1.05rem;display:flex}.letter{background:var(--sky-soft);width:1.7rem;height:1.7rem;color:var(--primary-dark);border-radius:50%;flex:none;place-items:center;font-size:.9rem;font-weight:700;display:grid}.sort{-webkit-user-select:none;user-select:none;gap:.9rem;display:grid}.sort .tt-hint{margin:0}.sort-tray,.sort-group{background:var(--surface);border:2px dashed var(--border);border-radius:10px;padding:.75rem .9rem}.sort-tray{background:#f2f5fb;border-style:solid}.sort-groups{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.9rem;display:grid}.sort-group{min-height:8rem}.sort-group .panel-title{border-bottom:3px solid var(--amber);padding-bottom:.35rem}.can-drop{cursor:pointer;border-color:#93b4f5}.sort-cards{flex-wrap:wrap;gap:.5rem;display:flex}.card-tile{font:inherit;color:var(--text);text-align:left;background:var(--surface);cursor:grab;border:2px solid #8a94b0;border-radius:8px;align-items:center;gap:.35rem;max-width:100%;padding:.55rem .8rem;font-size:1.05rem;display:inline-flex}.card-tile:hover{border-color:var(--primary)}.card-tile[aria-pressed=true]{border-color:var(--primary-dark);background:#eff4ff;transform:translateY(-1px);box-shadow:0 0 0 3px #bfd3fb}.card-tile[aria-pressed=true]:before{content:"✓";color:var(--primary-dark);font-weight:700}.card-img{border-radius:4px;max-width:10rem;max-height:6rem;display:block}.move-here{width:100%;font:inherit;color:var(--primary-dark);background:var(--sky-soft);border:2px dashed var(--primary);cursor:pointer;border-radius:8px;margin-top:.6rem;padding:.45rem;font-weight:600}.move-here:hover{background:#cdebfd}@media (width<=760px){.match,.match-row{grid-template-columns:1fr}}.tt-bar{background:var(--surface);border-top:1px solid var(--border);flex:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;height:3.25rem;padding:0 1rem;font-size:.95rem;display:grid}.tt-save{color:var(--muted)}.save-error{color:var(--error)}.tt-nav{align-items:center;gap:.5rem;display:flex}.tt-submit{justify-self:end}.btn-nav{color:var(--primary-dark);background:0 0;padding:.4rem .8rem}.btn-nav:hover{background:var(--sky-soft)}.btn-nav:disabled{color:#6b7594;cursor:default;opacity:1;background:0 0}.jump{position:relative}.jump-toggle{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;padding:.35rem .6rem}.jump-toggle:hover,.jump-toggle[aria-expanded=true]{border-color:var(--border);color:var(--text)}.jump-menu{background:var(--surface);border:1px solid var(--border);border-radius:10px;width:max-content;max-width:min(24rem,90vw);padding:.75rem;position:absolute;bottom:calc(100% + .6rem);left:50%;transform:translate(-50%);box-shadow:0 8px 24px #1e2a5a26}.jump-legend{color:var(--muted);margin:0 0 .5rem;font-size:.85rem}.jump-grid{grid-template-columns:repeat(5,2.75rem);gap:.4rem;display:grid}.jump-item{font:inherit;cursor:pointer;background:var(--surface);height:2.5rem;color:var(--text);border:1px solid #8a94b0;border-radius:8px;position:relative}.jump-item.done{border-color:var(--primary);background:#eff4ff}.jump-item[aria-current=true]{border-width:2px;border-color:var(--primary-dark);font-weight:700}.jump-check,.jump-dot{color:var(--primary-dark);font-size:.7rem}.jump-check{position:absolute;top:1px;right:4px}.confirm{width:calc(100% - 2rem);max-width:30rem;color:var(--text);border:none;border-top:4px solid var(--coral);border-radius:12px;padding:1.5rem;box-shadow:0 12px 40px #1e2a5a40}.confirm::backdrop{background:#1e2a5a59}.confirm h2{margin:0 0 .75rem}.confirm-warn strong{color:#9a3412}.confirm-actions{justify-content:flex-end;gap:.75rem;margin-top:1.25rem;display:flex}.result{text-align:center;width:100%;max-width:30rem}.result h1:focus{outline:none}.result-mastery{margin:1.25rem 0}.by-target{margin-bottom:1.25rem}.by-target .parts td{text-align:center;font-weight:700}.by-target thead th{text-align:center}.by-target thead th:first-child{text-align:left}.by-target thead .mastery{text-transform:none;letter-spacing:0;font-size:.95rem}.mini-targets{gap:.15rem;margin:0;padding:0;list-style:none;display:grid}.mini-targets .mastery{font-size:.9rem}.target-code{min-width:2.5rem;color:var(--muted);font-weight:700;display:inline-block}.target-results{text-align:left;gap:.5rem;margin:1rem 0 1.25rem;padding:0;list-style:none;display:grid}.target-results li{border:1px solid var(--border);border-radius:8px;grid-template-columns:1fr auto auto;align-items:center;gap:.75rem;padding:.6rem .8rem;display:grid}.result-stats{justify-content:center;gap:2.5rem;margin:0 0 1.5rem;display:flex}.result-stats dt{color:var(--muted);font-size:.9rem}.result-stats dd{margin:0;font-size:1.4rem;font-weight:700}.back{margin-bottom:1rem}.roster-counts{flex-wrap:wrap;gap:.5rem 1.25rem;margin:0 0 1rem;display:flex}.status{white-space:nowrap;align-items:center;gap:.35rem;font-weight:600;display:inline-flex}.status-not_started{color:var(--muted)}.status-in_progress{color:var(--primary-dark)}.status-paused,.status-needs_scoring{color:#9a3412}.status-submitted{color:#15803d}.table-wrap{position:relative;overflow-x:auto}.roster{border-collapse:collapse;width:100%}.roster th,.roster td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:.75rem}.roster thead th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.85rem}.roster tbody th{font-weight:600}.row-paused{background:#fff7ed}.row-flagged{background:#fef2f2}.status-flag{color:var(--error)}.live-note,.flag-note{margin-top:.15rem;font-size:.85rem;font-weight:600}.live-offline,.flag-note{color:var(--error)}.live-idle{color:#9a3412}.live-hidden{color:var(--muted)}.live-dot{color:#166534;white-space:nowrap;font-size:.8rem;font-weight:600}.live-dot:before{content:"";vertical-align:.05rem;background:#16a34a;border-radius:50%;width:.5rem;height:.5rem;margin-right:.3rem;display:inline-block}.now-tag{font-weight:400}.exits{margin:0;padding-left:1.2rem;font-size:.9rem}.roster-result{flex-direction:column;gap:.2rem;display:flex}.actions{white-space:nowrap;text-align:right}.actions .btn+.btn{margin-left:.5rem}.small-btn{font-size:.85rem}.teacher-nav{gap:.25rem;margin-left:1.5rem;margin-right:auto;display:flex}.teacher-nav a{color:var(--primary-dark);border-radius:8px;padding:.4rem .8rem;font-weight:600;text-decoration:none}.teacher-nav a:hover{background:var(--sky-soft)}.teacher-nav a[aria-current=page]{background:var(--sky-soft);box-shadow:inset 0 -3px 0 var(--primary)}.title-row{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.title-row h1{margin:0}.filters{flex-wrap:wrap;gap:1rem;margin-bottom:1rem;display:flex}.filters label{gap:.25rem;font-size:.9rem;font-weight:600;display:grid}.clamp{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.class-list li .btn+.btn{margin-left:.25rem}.notice{border:1px solid #f5c08a;border-left:4px solid var(--amber);color:var(--text);background:#fff7ed;border-radius:8px;padding:.7rem .9rem}.ok-text{color:#166534;font-weight:600}.editor-grid{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}.editor-form{gap:1rem;display:grid}.ed-section{border:1px solid var(--border);border-radius:10px;gap:.6rem;margin:0;padding:.9rem 1rem;display:grid}.ed-two{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}.ed-three{grid-template-columns:minmax(0,2fr) minmax(0,1fr) minmax(0,1.5fr);margin-bottom:1rem}.ed-section>label,.ed-two>div,.ed-two>label,.ed-three>label{align-content:start;gap:.3rem;display:grid}.ed-label{padding:0;font-weight:700}.editor select,.editor input:not([type=checkbox]):not([type=radio]),.ed-three select,.ed-three input{min-width:0;max-width:100%}.ed-two select,.ed-three select,.ed-three input{width:100%}.ed-static{margin:.3rem 0 0}.editor textarea{font:inherit;color:var(--text);resize:vertical;background:var(--surface);border:1px solid #8a94b0;border-radius:8px;padding:.6rem .75rem}.ed-section>.btn,.builder-panel>.ed-inline{justify-self:start}.ed-times{margin-bottom:1rem}.ed-title-class{grid-template-columns:minmax(0,2fr) minmax(0,1fr);margin-bottom:1rem}.ed-title-class>label{align-content:start;gap:.3rem;display:grid}.ed-title-class input,.ed-title-class select{width:100%}@media (width<=900px){.ed-title-class{grid-template-columns:1fr}}.target-summary{background:#f2f5fb;border-radius:8px;padding:.6rem .8rem}.target-summary p{margin:.1rem 0 .4rem}.target-summary ul{gap:.2rem;margin:0;padding-left:1.1rem;display:grid}.ed-rows{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.ed-row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.ed-row .ed-text{flex:12rem;min-width:0}.ed-row-answer select{flex:0 13rem}.ed-correct{white-space:nowrap;align-items:center;gap:.3rem;font-size:.9rem;font-weight:600;display:inline-flex}.ed-correct input,.ed-check input,.ed-radios input{width:1.1rem;height:1.1rem;accent-color:var(--primary)}.ed-tools{flex-wrap:wrap;align-items:center;gap:.35rem;display:inline-flex}.ed-check,.ed-section>label.ed-check{align-items:center;gap:.5rem;display:flex}.ed-section>label.ed-inline{align-items:center;display:inline-flex}.ed-radios{gap:.4rem;display:grid}.ed-inline{align-items:center;gap:.5rem;font-weight:600;display:inline-flex}.ed-points{width:5rem}.picture-field{flex-wrap:wrap;align-items:center;gap:.4rem;display:inline-flex}.picture-field.has-picture:not(.compact){display:flex}.file-btn{position:relative}.file-btn:focus-within{outline:3px solid var(--primary);outline-offset:2px}.ed-thumb{border:1px solid var(--border);border-radius:4px;max-width:6rem;max-height:4rem}.picture-field.compact .ed-thumb{max-width:3.5rem;max-height:2.5rem}.ed-alt{flex:12rem;min-width:10rem;font-size:.9rem}.ed-problems{background:#f2f5fb;border-radius:10px;padding:.7rem 1rem}.ed-problems ul{margin:.3rem 0 0;padding-left:1.2rem}.ed-problems p{margin:0}.ed-problems.shown{background:#fff7ed;border:1px solid #f5c08a}.ed-problems:focus{outline:3px solid var(--primary);outline-offset:2px}.ed-actions{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1rem;display:flex}.editor-preview{position:sticky;top:1rem}.preview-frame{background:var(--bg);border:1px solid var(--border);border-radius:10px;max-height:calc(100vh - 8rem);padding:1.25rem;overflow:auto}.preview-frame .tt-question{margin:0}.preview-frame .tt-prompt{font-size:1.3rem}.preview-frame .match{grid-template-columns:1fr}.builder-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:1.25rem;display:grid}.builder-panel{border:1px solid var(--border);border-radius:10px;gap:.6rem;padding:.9rem 1rem;display:grid}.builder-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.builder-list li{border:1px solid var(--border);background:var(--surface);border-radius:8px;align-items:center;gap:.6rem;padding:.55rem .7rem;display:flex}.builder-num{background:var(--sky-soft);width:1.8rem;height:1.8rem;color:var(--primary-dark);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.builder-text{flex:1;gap:.15rem;min-width:0;display:grid}.builder-tools{flex:none;gap:.25rem;display:inline-flex}.stat-row{flex-wrap:wrap;gap:.75rem;margin:.5rem 0 1.25rem;display:flex}.stat{border:1px solid var(--border);border-top:3px solid var(--sky);border-radius:10px;justify-items:start;gap:.15rem;min-width:8rem;padding:.7rem .9rem;display:grid}.stat-num{font-size:1.5rem;font-weight:700}.stat-label{color:var(--muted);font-size:.9rem}.view-switch{border:1px solid var(--border);border-radius:10px;margin-bottom:1rem;padding:.2rem;display:inline-flex}.view-switch button{font:inherit;color:var(--primary-dark);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:.45rem 1rem;font-weight:600}.view-switch button[aria-selected=true]{background:var(--primary);color:#fff}.view-switch button:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.q-results{gap:1rem;display:grid}.q-result{border:1px solid var(--border);border-left:4px solid var(--sky);border-radius:10px;padding:.9rem 1rem}.q-result.low{border-left-color:var(--coral)}.q-result-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1rem;display:flex}.q-result-head .panel-title{margin:0}.q-avg{align-items:center;gap:.5rem;display:inline-flex}.q-result-prompt{margin:.4rem 0;font-size:1.05rem}.reteach{color:#9a3412;margin:.3rem 0;font-weight:600}.bar{vertical-align:middle;background:#e3e8f2;border-radius:99px;width:8rem;height:.6rem;display:inline-block;overflow:hidden}.bar>span{background:var(--primary);border-radius:99px;height:100%;display:block}.bar-small{width:5rem;height:.5rem;margin-right:.5rem}.parts{border-collapse:collapse;width:100%;margin-top:.4rem;font-size:.95rem}.parts th,.parts td{text-align:left;border-bottom:1px solid var(--border);vertical-align:middle;padding:.4rem .5rem}.parts thead th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem}.parts tbody th{font-weight:500}.parts tr.is-correct{background:#f0fdf4}.parts-count{white-space:nowrap}.correct-tag{color:#166534;margin-right:.3rem;font-weight:700}.legend{flex-wrap:wrap;gap:.4rem 1.2rem;display:flex}.grid .grid-q{text-align:center;width:3rem}.mark{font-weight:700}.mark-full{color:#166534}.mark-partial{color:#b45309}.mark-none{color:#b42318}.mark-blank,.mark-waiting{color:var(--muted)}.grid td .mark{font-size:1.15rem}.link-btn{font:inherit;color:var(--primary-dark);cursor:pointer;text-align:left;background:0 0;border:none;padding:0;font-weight:600}.link-btn:hover{text-decoration:underline}.detail-row>td{background:#f7f9fc}.student-detail .answers{gap:.6rem;margin:0;padding:0;list-style:none;display:grid}.answer-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.7rem .9rem}.answer-head{flex-wrap:wrap;align-items:baseline;gap:.3rem .6rem;display:flex}.answer-points{white-space:nowrap;margin-left:auto}.answer-cols{grid-template-columns:1fr 1fr;gap:1rem;margin-top:.4rem;display:grid}.answer-cols p{margin:0 0 .2rem}.answer-cols ul{margin:0;padding-left:1.1rem}@media (width<=900px){.answer-cols,.editor-grid,.builder-grid,.ed-two,.ed-three{grid-template-columns:1fr}.editor-preview{position:static}}.sort-tray.drag-over,.sort-group.drag-over{border-style:solid;border-color:var(--primary);background:#eff4ff;box-shadow:0 0 0 3px #bfd3fb}.drop-here{color:#fff;background:var(--primary);vertical-align:middle;border-radius:99px;margin-left:.5rem;padding:.1rem .55rem;font-size:.8rem;font-weight:700}.answer-key{border-color:var(--amber);border-width:2px}.answer-key .sort-tray{background:#fff7ed}.preview-banner{color:var(--text);background:#eef2f8;border:1px dashed #8a94b0;border-radius:8px;margin:0 0 .6rem;padding:.55rem .75rem;font-size:.9rem}.editor-preview .preview-frame{background:repeating-linear-gradient(135deg,#f7f9fc 0 14px,#f0f3f9 14px 28px)}.tag-field{grid-column:1/-1;gap:.3rem;display:grid}.ed-meta{grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,2fr)}.ed-meta>label,.ed-meta>div{align-content:start;gap:.3rem;display:grid}.ed-meta select{width:100%}.ed-meta .tag-field{grid-column:2/-1}@media (width<=900px){.ed-meta{grid-template-columns:1fr}.ed-meta .tag-field{grid-column:auto}}.nowrap{white-space:nowrap}.also-grid{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.6rem 1rem;display:grid}.also-grid label{gap:.25rem;font-weight:600;display:grid}.also-grid select{width:100%;min-width:0}.tag-box{background:var(--surface);border:1px solid #8a94b0;border-radius:8px;flex-wrap:wrap;align-items:center;gap:.35rem;padding:.35rem .5rem;display:flex}.tag-box:focus-within{outline:3px solid var(--primary);outline-offset:2px}.tag-box input{border:none;outline:none;flex:1;min-width:8rem;padding:.25rem}.tag{background:var(--sky-soft);color:var(--primary-dark);border-radius:99px;align-items:center;gap:.25rem;padding:.15rem .55rem;font-size:.85rem;font-weight:600;display:inline-flex}.tag button{font:inherit;color:var(--primary-dark);cursor:pointer;background:0 0;border:none;padding:0 .1rem;font-size:1rem;line-height:1}.tag button:focus-visible{outline:2px solid var(--primary);border-radius:4px}.tag-list{flex-wrap:wrap;gap:.3rem;margin-top:.25rem;display:flex}.gate.waiting{text-align:center;border-top-color:var(--sky)}.gate.waiting .gate-list{text-align:left}.gate.waiting .gate-actions{justify-content:center}.countdown-label{color:var(--muted);margin:.5rem 0 0;font-weight:600}.countdown{font-variant-numeric:tabular-nums;color:var(--primary-dark);margin:.2rem 0 .8rem;font-size:4rem;font-weight:800;line-height:1.1}.period-switch{flex-wrap:wrap}.view-switch button[aria-pressed=true]{background:var(--primary);color:#fff}.period-times{flex-wrap:wrap;gap:.5rem 1rem;margin:0 0 1rem;padding:0;list-style:none;display:flex}.period-times li{border:1px solid var(--border);background:var(--surface);border-radius:8px;flex-wrap:wrap;align-items:center;gap:.5rem;padding:.45rem .75rem;display:inline-flex}.countdown-small{font-variant-numeric:tabular-nums;color:var(--primary-dark);font-weight:700}.status-ready{color:#166534}.row-ready{background:#f0fdf4}.confirm-body p{margin:0 0 .5rem}.times{border-collapse:collapse;width:auto}.times th,.times td{text-align:left;padding:.3rem .6rem .3rem 0}.times thead th{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.8rem}.times tbody th{white-space:nowrap;font-weight:600}.numeric-row{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.numeric-row input{font:inherit;background:var(--surface);width:14rem;max-width:100%;color:var(--text);border:2px solid #8a94b0;border-radius:10px;padding:.6rem .75rem;font-size:1.15rem}.numeric-row input:focus-visible{outline:3px solid var(--primary);outline-offset:2px;border-color:var(--primary)}.numeric-unit{font-size:1.15rem;font-weight:600}.numeric-warn{color:#9a3412;margin:.25rem 0 0;font-weight:600}.blank-text{white-space:pre-wrap;font-size:1.1rem;line-height:2.6}.blank-select,.blank-input{font:inherit;background:var(--surface);color:var(--text);vertical-align:baseline;border:2px solid #8a94b0;border-radius:8px;margin:0 .2rem;padding:.35rem .5rem;font-size:1rem;line-height:1.3}.blank-input{width:11rem;max-width:100%}.blank-select:focus-visible,.blank-input:focus-visible{outline:3px solid var(--primary);outline-offset:2px;border-color:var(--primary)}.num-grid{grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.75rem 1rem;margin:.5rem 0;display:grid}.num-grid label,.num-grid>div{flex-direction:column;gap:.25rem;display:flex}.num-grid .ed-inline{align-items:center;gap:.4rem;display:flex}.blank-edit{border:1px solid var(--border);border-left:4px solid var(--amber);border-radius:8px;margin:.6rem 0;padding:.6rem .8rem}.blank-edit-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.blank-edit textarea{box-sizing:border-box;width:100%}.order-list{flex-direction:column;gap:.5rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.order-row{background:var(--surface);border:2px solid var(--border);cursor:grab;border-radius:10px;align-items:center;gap:.6rem;padding:.55rem .75rem;display:flex}.order-row .part{flex:1}.order-row.dragging{opacity:.5}.order-row.drag-over{border-color:var(--primary);box-shadow:0 -3px 0 var(--primary)}.order-num{background:var(--sky-soft);width:1.8rem;height:1.8rem;color:var(--primary-dark);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.order-grip{color:var(--muted);letter-spacing:-.2em}.order-buttons{gap:.25rem;display:flex}.order-buttons .btn:disabled{opacity:.35;cursor:default}.spot-pic{max-width:100%;position:relative}.spot-pic .img-frame{width:100%}.spot-img.img-frame:not(.sized) img{height:auto}.spot-layer{position:absolute;inset:0}.spot-pic.clickable .spot-layer{cursor:crosshair}.spot-focus{display:block}.spot-focus .spot-pic{border-radius:4px}.spot-focus:focus-visible{outline:none}.spot-focus:focus-visible .spot-pic{outline:3px solid var(--primary);outline-offset:3px}.spot-marker{pointer-events:none;width:1.6rem;height:1.6rem;box-shadow:0 0 0 2px var(--primary-dark), 0 2px 6px #1e2a5a66;background:#2563eb8c;border:3px solid #fff;border-radius:50%;position:absolute;transform:translate(-50%,-50%)}.spot-pin{background:var(--primary-dark);color:#fff;border:2px solid #fff;border-radius:999px;place-items:center;min-width:1.7rem;height:1.7rem;padding:0 .3rem;font-size:.95rem;font-weight:700;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 1px 4px #1e2a5a73}.spot-pin.done{background:#15803d}.spot-pin.static{margin-right:.35rem;display:inline-grid;position:static;transform:none}.label-rows{flex-direction:column;gap:.5rem;max-width:36rem;margin-top:.75rem;display:flex}.spot-area{background:#15803d2e;border:3px solid #15803d;border-radius:4px;position:absolute}.spot-area.drawing{border-style:dashed}.spot-area-num{color:#fff;background:#15803d;border-radius:4px;padding:0 .3rem;font-size:.8rem;font-weight:700;position:absolute;top:2px;left:4px}.short-answer textarea{box-sizing:border-box;width:100%;font:inherit;background:var(--surface);color:var(--text);border:2px solid #8a94b0;border-radius:10px;padding:.7rem .8rem;font-size:1.05rem;line-height:1.5;display:block}.short-answer textarea:focus-visible{outline:3px solid var(--primary);outline-offset:2px;border-color:var(--primary)}.feedback-list{text-align:left;margin:1rem 0}.feedback-list ul{flex-direction:column;gap:.6rem;margin:0;padding:0;list-style:none;display:flex}.feedback-list li{border:1px solid var(--border);border-left:4px solid var(--amber);border-radius:8px;padding:.6rem .8rem}.feedback-list p{margin:.15rem 0}.feedback-prompt{font-weight:600}.feedback-text{white-space:pre-wrap}.draw-layer{cursor:crosshair;touch-action:none;position:absolute;inset:0}.editor .spot-pic{margin:.5rem 0}.click-map{margin:.5rem 0 .75rem}.click-map .spot-pic{max-width:min(100%,32rem)}.click-dot{background:#c2410c;border:2px solid #fff;border-radius:50%;width:.8rem;height:.8rem;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #1e2a5a80}.click-dot.in{background:#15803d}.click-key{vertical-align:middle;background:#c2410c;border-radius:50%;width:.7rem;height:.7rem;margin:0 .25rem 0 .4rem;display:inline-block}.click-key.in{background:#15803d}.score-view{flex-direction:column;gap:1.25rem;display:flex}.score-q{border-top:3px solid var(--sky);padding-top:.75rem}.rubric{white-space:pre-wrap;background:#fff7ed;border:1px solid #fdba74;border-radius:8px;margin:.5rem 0;padding:.5rem .8rem}.rubric p{margin:.15rem 0}.score-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.score-card{border:1px solid var(--border);border-left:4px solid var(--amber);background:var(--surface);border-radius:8px;padding:.7rem .9rem}.score-card.done{border-left-color:#15803d}.score-name{margin:0 0 .35rem}.score-answer{white-space:pre-wrap;margin:0 0 .6rem;line-height:1.5}.score-controls{flex-direction:column;gap:.35rem;display:flex}.score-controls .ed-inline{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.quick-scores{gap:.25rem;display:inline-flex}.quick-scores .btn[aria-pressed=true]{background:var(--primary);color:#fff}.score-comment{flex-direction:column;gap:.2rem;display:flex}.score-comment textarea{font:inherit;border:1px solid #8a94b0;border-radius:8px;padding:.4rem .6rem}.saved-note{color:#14532d;background:#f0fdf4;border:1px solid #86efac;border-radius:8px;margin:0 0 .75rem;padding:.5rem .8rem}.roster tr.just-saved>*{background:#f0fdf4}.roster tr.just-saved>th:first-child{box-shadow:inset 4px 0 #15803d}.tt-bar{position:relative}.tt-submit{justify-content:flex-end;align-items:center;gap:.75rem;display:flex}.tt-timer{font-variant-numeric:tabular-nums;color:var(--text);background:var(--sky-soft);border-radius:999px;padding:.2rem .6rem;font-weight:700}.tt-timer.low{color:#92400e;background:#fef3c7}.tt-timer.last-minute{color:#991b1b;background:#fee2e2}.time-note{background:var(--text);color:#fff;white-space:nowrap;border-radius:999px;margin:0 0 .5rem;padding:.35rem .9rem;font-weight:600;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.time-left{font-variant-numeric:tabular-nums;font-size:.9rem;font-weight:600}.time-left.low{color:#92400e}.time-left.last-minute{color:#991b1b}.time-badge{color:#4c1d95;background:#ede9fe;border-radius:999px;margin-top:.2rem;padding:0 .45rem;font-size:.8rem;font-weight:600;display:inline-block}.makeup-times{flex-wrap:wrap;gap:.75rem;margin:.5rem 0;display:flex}.makeup-times label{flex-direction:column;gap:.2rem;font-weight:600;display:flex}.makeup-times input{font:inherit;border:1px solid #8a94b0;border-radius:8px;padding:.4rem .5rem}.roster tr.has-accommodation>*{background:#f5f3ff}.with-shared{align-items:start;gap:1.5rem;width:100%;max-width:76rem;margin-block:auto;display:grid}.with-shared .tt-question{margin-block:0}@media (width>=900px){.with-shared{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr)}.with-shared .shared-info{max-height:calc(100vh - 8rem);position:sticky;top:0;overflow-y:auto}}.shared-info{background:var(--surface);border:1px solid var(--border);border-left:5px solid var(--sky);border-radius:10px;padding:1rem 1.25rem}.shared-for{color:var(--primary-dark);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .2rem;font-size:.85rem;font-weight:700}.shared-title{margin:0 0 .6rem;font-size:1.2rem}.shared-body p{white-space:pre-wrap;margin:0 0 .7rem;line-height:1.55}.shared-info .tt-img{margin:.5rem 0}.data-table{border-collapse:collapse;font-variant-numeric:tabular-nums;margin:.5rem 0}.data-table th,.data-table td{text-align:left;border:1px solid #a8b3cf;padding:.35rem .75rem}.data-table thead th{background:var(--sky-soft);color:var(--text)}.uses-shared{color:#075985;font-weight:600;display:block}.builder-list li.in-set{box-shadow:inset 4px 0 0 var(--sky)}.shared-q-list{margin:0;padding-left:1.2rem}.wide-input{box-sizing:border-box;width:100%}.data-table.editing td{padding:.15rem}.data-table.editing input{font:inherit;border:1px solid #a8b3cf;border-radius:4px;width:8rem;padding:.3rem .4rem}.data-table.editing tr.head-row input{background:var(--sky-soft);font-weight:700}.data-table.editing .table-tool{text-align:center;border:none}.title-actions{flex-wrap:wrap;gap:.5rem;display:flex}.roster tbody.bank-set{border-top:2px solid var(--sky)}.roster tr.set-head>*{background:#f0f9ff}.set-label{text-transform:uppercase;letter-spacing:.04em;color:#fff;vertical-align:middle;background:#075985;border-radius:999px;margin-right:.35rem;padding:0 .45rem;font-size:.75rem;font-weight:700;display:inline-block}.roster tr.set-member>th:first-child{box-shadow:inset 4px 0 0 var(--sky);padding-left:1.75rem}.recipe-lines{flex-direction:column;gap:.6rem;margin:.5rem 0;padding:0;list-style:none;display:flex}.recipe-line{border:1px solid var(--border);border-left:4px solid var(--sky);background:var(--surface);border-radius:8px;flex-wrap:wrap;align-items:flex-end;gap:.75rem;padding:.6rem .8rem;display:flex}.recipe-line label{flex-direction:column;gap:.2rem;font-size:.9rem;font-weight:600;display:flex}.recipe-have{color:#166534;flex:14rem;align-self:center;font-size:.85rem}.recipe-have.short{color:#991b1b;font-weight:600}.retake-note{color:#4c1d95;font-size:.85rem;font-weight:600}.reassess{text-align:left;border:1px solid var(--border);border-left:4px solid var(--amber);background:var(--surface);border-radius:10px;margin:.75rem 0;padding:.8rem 1rem}.reassess p{margin:.3rem 0}.reassess-offer{margin:.75rem 0}.reassess-done{color:#166534;font-weight:600}.reassess-note{color:#92400e;margin-top:.2rem;font-size:.85rem;font-weight:600}.slot-group{flex-wrap:wrap;gap:.4rem;margin:.6rem 0;display:flex}.slot-btn{font:inherit;border:2px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;padding:.4rem .7rem}.slot-btn:hover{border-color:var(--primary)}.slot-btn[aria-pressed=true]{border-color:var(--primary);background:#eff4ff;font-weight:700}.slot-btn:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.block-form{flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-top:.75rem;display:flex}.block-form label{flex-direction:column;gap:.2rem;font-size:.9rem;font-weight:600;display:flex}.block-form input{font:inherit;border:1px solid #8a94b0;border-radius:8px;padding:.45rem .5rem}.test-list .link-btn{margin-top:.25rem}.part-label{width:100%;max-width:54rem;color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:0 0 .4rem;font-size:.85rem;overflow:hidden}.part-label strong{color:var(--primary-dark)}.part-done{text-align:center;width:100%;max-width:36rem;margin-block:auto}.part-done h1{margin:.2rem 0}.part-done h1:focus{outline:none}.part-done-check{color:#15803d;margin:0;font-size:2.5rem;line-height:1}.part-next{margin:1.25rem 0 .75rem}.waiting-dots{justify-content:center;gap:.5rem;margin:.75rem 0;display:flex}.waiting-dots span{background:var(--primary);border-radius:50%;width:.7rem;height:.7rem;animation:1.4s ease-in-out infinite tk-pulse}.waiting-dots span:nth-child(2){animation-delay:.2s}.waiting-dots span:nth-child(3){animation-delay:.4s}@keyframes tk-pulse{0%,80%,to{opacity:.25}40%{opacity:1}}@media (prefers-reduced-motion:reduce){.waiting-dots span{opacity:.6;animation:none}}.list-heading{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:1rem 0 .4rem;font-size:.85rem}.profile{position:relative}.profile-btn{font:inherit;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:.35rem .6rem}.profile-btn:hover,.profile-btn[aria-expanded=true]{border-color:var(--border);background:var(--surface)}.profile-btn:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.profile-menu{z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:10px;min-width:10rem;margin:0;padding:.3rem;list-style:none;position:absolute;top:calc(100% + .3rem);right:0;box-shadow:0 8px 24px #1e2a5a26}.profile-menu button{text-align:left;width:100%;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:.5rem .7rem;display:block}.profile-menu button:hover,.profile-menu button:focus-visible{background:#eff4ff;outline:none}.step-label{align-items:center;gap:.5rem;margin:1rem 0 .4rem;font-size:1rem;display:flex}.step-num{background:var(--primary);color:#fff;border-radius:50%;place-items:center;width:1.5rem;height:1.5rem;font-size:.85rem;display:inline-grid}.week{margin:.4rem 0 .6rem}.week-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .3rem;font-size:.8rem;font-weight:700}.day-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:.4rem;max-width:34rem;display:grid}.day-btn,.time-btn{font:inherit;border:2px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:10px;flex-direction:column;align-items:center;gap:.05rem;padding:.45rem .3rem;display:flex}.day-btn:hover,.time-btn:hover{border-color:var(--primary)}.day-btn[aria-pressed=true],.time-btn[aria-pressed=true]{border-color:var(--primary);background:#eff4ff;box-shadow:0 0 0 2px #bfd3fb}.day-btn:focus-visible,.time-btn:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.day-name{text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700}.day-date{font-weight:700}.day-count{color:var(--muted);font-size:.75rem}.time-grid{grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.4rem;max-width:34rem;display:grid}.time-btn{align-items:flex-start;padding:.5rem .7rem}.time-name{font-weight:700}.time-range{color:var(--muted);font-size:.85rem}.reassess-confirm{flex-wrap:wrap;align-items:center;gap:.75rem;margin-top:1rem;display:flex}@media (width<=520px){.day-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.schedule-table td{vertical-align:middle}.schedule-table .name-input{font:inherit;border:1px solid #8a94b0;border-radius:8px;width:8rem;padding:.4rem .5rem}.schedule-table .center{text-align:center}.schedule-table tr.closed-row td{color:var(--muted)}.schedule-table tr.closed-row input[type=time]{opacity:.7}fieldset.ed-section{min-width:0}.level-list{flex-direction:column;gap:.35rem;margin:.4rem 0;padding:0;list-style:none;display:flex}.rounded-note{color:#6d28d9;font-size:.75rem}
