:root{color-scheme:light dark;--fg: #1a1a1a;--bg: #ffffff;--muted: #6b7280;--good: #15803d;--warn: #b45309;--bad: #b91c1c;--line: #e5e7eb}@media(prefers-color-scheme:dark){:root{--fg: #e8e8e8;--bg: #111214;--muted: #9ca3af;--good: #4ade80;--warn: #fbbf24;--bad: #f87171;--line: #2a2d31}}*{box-sizing:border-box}body{margin:0;font:15px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;color:var(--fg);background:var(--bg)}.boot{max-width:32rem;margin:4rem auto;padding:0 1.5rem}.boot h1{margin:0 0 .25rem;font-size:1.375rem;font-weight:600}.phase{margin:0 0 2rem;color:var(--muted);font-size:.875rem}dl{display:grid;grid-template-columns:10rem 1fr;gap:.75rem 1rem;margin:0}dt{color:var(--muted);font-size:.875rem}dd{margin:0;font-variant-numeric:tabular-nums}.good{color:var(--good)}.warn{color:var(--warn)}.bad{color:var(--bad)}.card{max-width:26rem;margin:6rem auto;padding:0 1.5rem}.card h1{margin:0 0 .25rem;font-size:1.375rem;font-weight:600}.muted{color:var(--muted)}.small{font-size:.8125rem}.centered{text-align:center;margin-top:6rem}button{font:inherit;padding:.5rem .9rem;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--fg);cursor:pointer}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{width:100%;margin:1.5rem 0 .75rem;padding:.625rem;background:var(--fg);color:var(--bg);border-color:var(--fg);font-weight:500}.alert{margin:1.25rem 0 0;padding:.75rem .9rem;border:1px solid var(--bad);border-radius:6px;font-size:.875rem}.alert strong{display:block;color:var(--bad)}.alert p{margin:.25rem 0 0;color:var(--muted)}.dev{margin-top:2.5rem;padding-top:1.25rem;border-top:1px dashed var(--line);display:grid;gap:.5rem}.dev-label{margin:0;font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--warn)}.dev input,.dev select{font:inherit;padding:.5rem;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--fg)}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.875em}.shell{max-width:46rem;margin:0 auto;padding:2rem 1.5rem 4rem}.topbar{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem;border-bottom:1px solid var(--line);margin-bottom:1.5rem}.topbar h1{margin:0;font-size:1.25rem;font-weight:600}.back{display:inline-block;margin-bottom:.35rem;font-size:.8125rem;color:var(--muted);text-decoration:none}.who{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.toolbar{display:flex;align-items:center;gap:.75rem;margin-bottom:1.25rem}button.inline{width:auto;margin:0}button.link{border:none;padding:0;color:var(--muted);text-decoration:underline;font-size:.8125rem}button.link:hover:not(:disabled){color:var(--fg)}.panel{display:grid;gap:.75rem;padding:1rem;margin:1rem 0 1.5rem;border:1px solid var(--line);border-radius:8px}.panel label{display:grid;gap:.3rem;font-size:.8125rem;color:var(--muted)}.panel input,.panel textarea{font:inherit;padding:.5rem;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--fg);resize:vertical}.list{list-style:none;margin:0;padding:0;display:grid;gap:1rem}.list>li{padding-bottom:1rem;border-bottom:1px solid var(--line)}.list>li:last-child{border-bottom:none}.list a{color:inherit;text-decoration:none;display:flex;align-items:center;gap:.5rem}.list a:hover .list-title{text-decoration:underline}.list-title{font-weight:500}.list p{margin:.25rem 0 0}.row{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.badge{font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;padding:.1rem .4rem;border-radius:4px;border:1px solid var(--line);color:var(--muted)}.badge.published,.badge.active{color:var(--good);border-color:var(--good)}.badge.draft{color:var(--warn);border-color:var(--warn)}.badge.expired{color:var(--bad);border-color:var(--bad)}.badge.started,.badge.submitted{margin-left:.5rem;color:var(--good);border-color:var(--good)}.countdown{font-size:2rem;font-weight:600;font-variant-numeric:tabular-nums;margin-bottom:1rem}.files{list-style:none;margin:.5rem 0 0;padding:0;display:grid;gap:.25rem}.ide{display:flex;flex-direction:column;height:100vh;padding:.75rem 1rem .5rem}.ide-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-shrink:0}.ide-head h1{margin:0;font-size:1.0625rem;font-weight:600}.ide-head-right{display:flex;align-items:center;gap:.75rem}.ide-head .countdown{font-size:1.5rem;margin:0}.brief{margin:.5rem 0 0;font-size:.875rem;color:var(--muted);flex-shrink:0}.notice{margin:.5rem 0 0;padding:.5rem .75rem;border:1px solid var(--warn);border-radius:6px;font-size:.875rem;color:var(--warn);flex-shrink:0}.panes{display:grid;grid-template-columns:1fr 1fr;gap:.75rem;flex:1;min-height:0;margin-top:.75rem}.editor,.preview{display:flex;flex-direction:column;min-height:0;border:1px solid var(--line);border-radius:8px;overflow:hidden}.pane-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:0 .5rem;height:2.25rem;flex-shrink:0;border-bottom:1px solid var(--line);font-size:.8125rem;color:var(--muted)}.pane-actions{display:flex;gap:.75rem;align-items:center}.tabs{padding:0;gap:0}.tab{border:none;border-right:1px solid var(--line);border-radius:0;height:100%;padding:0 .85rem;font-size:.8125rem;color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.tab.active{color:var(--fg);background:color-mix(in srgb,var(--fg) 7%,transparent)}.editor>div:last-child{flex:1;min-height:0}.preview-frame{flex:1;width:100%;border:none;background:#fff}.preview.maximized{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;border:none;border-radius:0;background:var(--bg)}.pane-head .countdown{font-size:.875rem;font-weight:600;margin:0}.err-dot{display:inline-block;margin-left:.35rem;padding:0 .3rem;border-radius:999px;background:var(--bad);color:#fff;font-size:.6875rem}.console{flex-shrink:0;max-height:11rem;overflow-y:auto;border-top:1px solid var(--line);padding:.4rem .6rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem}.console-line{padding:.15rem 0;border-bottom:1px solid color-mix(in srgb,var(--line) 50%,transparent);white-space:pre-wrap;word-break:break-word}.console-line.error{color:var(--bad)}.console-line.warn{color:var(--warn)}.footnote{flex-shrink:0;margin:.4rem 0 0}@media(max-width:900px){.panes{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}.sync{font-size:.75rem;padding:.15rem .5rem;border-radius:999px;border:1px solid var(--line);color:var(--muted);white-space:nowrap}.sync.online{color:var(--good);border-color:var(--good)}.sync.offline{color:var(--warn);border-color:var(--warn)}.confirm{border-color:var(--warn)}.confirm p,.confirm .toolbar{margin:0}.shell.wide{max-width:76rem}.replay .panes{height:30rem;margin-top:.75rem}.replay-controls{display:flex;align-items:center;gap:.75rem;margin-top:.5rem}.scrubber{flex:1;accent-color:var(--fg)}.tabular{font-variant-numeric:tabular-nums;white-space:nowrap}.markers{position:relative;height:1.25rem;margin:.35rem 0 0;border-bottom:1px solid var(--line)}.marker{position:absolute;top:0;width:.5rem;height:.9rem;padding:0;border:none;border-radius:2px;transform:translate(-50%);cursor:pointer}.marker.paste{background:var(--bad)}.marker.idle{background:var(--warn)}.marker.blur{background:var(--muted)}.marker.submit{background:var(--good)}.grade{display:grid;gap:.5rem;min-width:16rem}.grade label{display:grid;gap:.25rem;font-size:.75rem;color:var(--muted)}.grade input,.grade textarea{font:inherit;padding:.4rem;border:1px solid var(--line);border-radius:6px;background:transparent;color:var(--fg)}.final-code details{border:1px solid var(--line);border-radius:8px;padding:.6rem .9rem;margin-bottom:.75rem}.final-code summary{cursor:pointer}.final-code pre{overflow-x:auto;font-size:.8125rem;background:color-mix(in srgb,var(--fg) 5%,transparent);padding:.75rem;border-radius:6px}.panes.with-tree{grid-template-columns:12rem 1fr 1fr}.filetree{display:flex;flex-direction:column;min-height:0;border:1px solid var(--line);border-radius:8px;overflow:hidden}.filetree-list{flex:1;overflow-y:auto;padding:.25rem 0}.filetree-dir{margin:.4rem 0 .15rem;padding:0 .6rem;font-size:.6875rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.filetree-item{display:flex;align-items:center;justify-content:space-between;gap:.25rem;padding:0 .4rem 0 .6rem}.filetree-item.active{background:color-mix(in srgb,var(--fg) 8%,transparent)}.filetree-open{flex:1;border:none;padding:.25rem 0;text-align:left;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.filetree-actions{display:none;gap:.3rem}.filetree-item:hover .filetree-actions{display:flex}.filetree-new{padding:.4rem .5rem;border-bottom:1px solid var(--line)}.filetree-new input{width:100%;font:inherit;font-size:.75rem;padding:.3rem;border:1px solid var(--line);border-radius:4px;background:transparent;color:var(--fg)}.filetree-count{margin:0;padding:.35rem .6rem;border-top:1px solid var(--line)}.pane-head .path{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--fg)}@media(max-width:1100px){.panes.with-tree{grid-template-columns:10rem 1fr}.panes.with-tree .preview{grid-column:1 / -1}}.starter-panes{height:26rem;margin-bottom:1.5rem}.filetree-kind{display:inline-block;margin-right:.3rem;padding:0 .25rem;border-radius:3px;background:color-mix(in srgb,var(--muted) 25%,transparent);font-size:.625rem;text-transform:uppercase;letter-spacing:.03em}.imageview-body{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;padding:1rem;overflow:auto;background:repeating-conic-gradient(#8882 0% 25%,transparent 0% 50%) 50% / 16px 16px}.imageview-body img{max-width:100%;max-height:70%;object-fit:contain}.imageview-body p{margin:0;background:var(--bg);padding:.2rem .4rem;border-radius:4px}
