.cs-result-msg{white-space:pre-line}.cs-preview-banner{background:#fff6d6;border:2px solid #ffd166;border-radius:12px;padding:10px 12px;margin:0 0 10px;font-weight:600}.cs-boss-pill,.cs-draft-pill{display:inline-block;border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:700}.cs-boss-pill{background:linear-gradient(90deg,#ffd166,#ff9f43);color:#4a2a00}.cs-draft-pill{background:#eee;color:#555}.challenge-card.cs-boss-card{border-color:#ffb347;box-shadow:0 0 0 2px #ffe3a8 inset}.cs-level-title{font-size:1rem;margin:12px 0 6px;color:var(--muted, #55707a)}.cs-hero-chips{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:8px}.cs-streak{display:inline-flex;align-items:center;gap:4px;border-radius:999px;padding:6px 12px;background:#f1f4f5;font-weight:700;min-height:36px}.cs-streak.on{background:#fff0e0;color:#8a3b00}.cs-streak-warn{font-weight:400;font-size:.85rem}.cs-set-banner{background:#eef8fa;border-radius:12px;padding:10px 14px}.cs-weekly{display:flex;align-items:center;gap:16px;margin:16px 0;border:2px solid #C9E4E9;flex-wrap:wrap}.cs-weekly.boss{border-color:#ffb347;background:linear-gradient(90deg,#fff9ec,#fff)}.cs-weekly-icon{font-size:2.2rem}.cs-weekly-body{flex:1 1 220px;min-width:0}.cs-weekly-kicker{margin:0;font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;font-weight:700;color:#0097b2}.cs-weekly-title{margin:2px 0 4px;font-size:1.25rem}.cs-weekly-done{color:#2d8a3e}.cs-weekly-go{min-height:44px}.cs-weekly.compact{margin:12px 0 0;padding:12px 14px}.cs-weekly.compact .cs-weekly-title{font-size:1.05rem}.cs-social-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin:16px 0}.cs-board h2{margin-top:0;font-size:1.15rem}.cs-board-list,.cs-battle{list-style:none;padding:0;margin:8px 0}.cs-board-list li,.cs-battle li{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:10px}.cs-board-list li.me,.cs-battle li.me{background:#eef8fa;font-weight:700}.cs-rank{width:2.5em;color:#0097b2;font-weight:700}.cs-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cs-pts{white-space:nowrap}.cs-bar{flex:1;height:10px;background:#eef2f3;border-radius:6px;overflow:hidden}.cs-bar span{display:block;height:100%;background:linear-gradient(90deg,#0097b2,#7ed957)}.cs-battle .cs-name{flex:0 1 40%}.cs-import-note{background:#eaf9e6;border-radius:12px;padding:8px 12px;display:flex;gap:8px;align-items:center;justify-content:space-between}.cs-builder .tabs{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 16px}.cs-builder .tabs button[aria-selected=true]{background:#0097b2;color:#fff}.cs-table{width:100%;border-collapse:collapse}.cs-table th,.cs-table td{text-align:left;padding:8px;border-bottom:1px solid #e3eef0;vertical-align:top}.cs-table-wrap{overflow-x:auto}.cs-row-actions{display:flex;flex-wrap:wrap;gap:6px}.cs-form{display:grid;gap:14px}.cs-form label.field{display:grid;gap:4px;font-weight:600}.cs-form input[type=text],.cs-form input[type=number],.cs-form input[type=datetime-local],.cs-form select,.cs-form textarea{font:inherit;padding:10px;border:2px solid #C9E4E9;border-radius:10px;width:100%;box-sizing:border-box;min-height:44px;font-weight:400}.cs-form textarea{min-height:90px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.92rem}.cs-form textarea.prose{font-family:inherit;font-size:1rem}.cs-grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.cs-check-row{border:2px solid #e3eef0;border-radius:12px;padding:12px;display:grid;gap:8px}.cs-check-row header{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:space-between}.cs-check-row .sentence{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.cs-check-row .sentence input,.cs-check-row .sentence textarea,.cs-check-row .sentence select{flex:1 1 160px;width:auto}.cs-inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.cs-inline input[type=checkbox]{width:22px;height:22px}.cs-md-preview{border:2px dashed #C9E4E9;border-radius:12px;padding:10px 14px;background:#fbfeff}.cs-status{display:inline-block;border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:700;background:#eee}.cs-status.sent{background:#e2f7df;color:#1f6b2c}.cs-status.pending,.cs-status.retry{background:#fff3d1;color:#7a5300}.cs-status.failed{background:#ffe1e1;color:#8a1d1d}.cs-error{color:#a32020;font-weight:600;white-space:pre-line}.cs-code-chip{font-family:ui-monospace,monospace;background:#f1f4f5;padding:2px 6px;border-radius:6px;user-select:all}@media(max-width:600px){.cs-table thead{display:none}.cs-table tr{display:block;border-bottom:1px solid #e3eef0;padding:6px 0}.cs-table td{display:block;border:0;padding:4px 8px}}.tt-notices{position:fixed;right:16px;bottom:16px;z-index:55;display:flex;flex-direction:column;gap:8px;max-width:min(440px,calc(100vw - 32px))}.tt-notice{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:12px 14px;border-radius:var(--radius);background:var(--surface);border:2px solid var(--blue);box-shadow:0 10px 30px #003c4b38}.tt-notice-fb{border-color:var(--green-dark)}.tt-notice-show{border-color:#b26a00}.tt-notice-icon{font-size:1.4rem}.tt-notice-text{flex:1 1 200px}.tt-notice-actions{display:flex;gap:6px}.tt-modal-back{position:fixed;inset:0;z-index:70;background:#0a283273;display:grid;place-items:center;padding:16px}.tt-modal{background:var(--surface);border-radius:18px;padding:24px;width:min(480px,100%);text-align:center;box-shadow:0 20px 60px #00323c59}.tt-modal h2{margin:0 0 8px}.tt-modal-emoji{font-size:2.6rem;margin:0}.tt-modal-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:16px}.tt-freeze{position:fixed;inset:0;z-index:80;display:grid;place-items:center;padding:16px;background:#005f70d1;backdrop-filter:blur(3px)}.tt-freeze-card{background:var(--grad);color:#fff;border-radius:24px;padding:28px 32px;max-width:640px;text-align:center;box-shadow:0 20px 60px #0000004d}.tt-freeze-emoji{font-size:3.4rem;margin:0}.tt-freeze-msg{font-size:clamp(1.6rem,4vw,2.6rem);font-weight:900;margin:8px 0;text-shadow:0 2px 6px rgba(0,0,0,.2)}.tt-freeze-sub{margin:0;font-weight:700}.tt-strip{display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px;position:relative}.tt-strip-spacer{flex:1}.tt-help-btn{background:#fff3c4;border-color:#f0c75e}.tt-help-form{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.tt-help-form input,.tt-input{min-height:38px;padding:6px 10px;border:2px solid var(--line);border-radius:var(--radius-sm);font:inherit;min-width:0}.tt-help-form input{width:min(280px,60vw)}.tt-hand{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:4px 6px 4px 12px;border-radius:999px;background:#fff3c4;border:2px solid #f0c75e;font-weight:700}.tt-hand-coming{background:#e3f6d8;border-color:var(--green-dark)}.tt-hand-resolved{background:#e3f6d8;border-color:#b5dfa1}.tt-has-new{border-color:var(--green-dark);background:#e3f6d8}.tt-drawer{position:fixed;top:calc(var(--header-h) + 8px);right:8px;bottom:8px;width:min(400px,calc(100vw - 16px));z-index:50;display:flex}.tt-feedback{display:flex;flex-direction:column;gap:8px;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);padding:12px;box-shadow:var(--shadow);width:100%;max-height:100%;margin-top:8px}.tt-drawer .tt-feedback{margin:0;box-shadow:0 10px 40px #003c4b40}.tt-feedback-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.tt-feedback-list{overflow:auto;display:flex;flex-direction:column;gap:8px;min-height:60px;max-height:360px}.tt-drawer .tt-feedback-list{max-height:none;flex:1}.tt-comment{padding:8px 10px;border-radius:var(--radius-sm);background:#eef7f9;border-left:4px solid var(--blue)}.tt-comment.from-student{background:#f1f9ec;border-left-color:var(--green-dark)}.tt-comment.unread{box-shadow:0 0 0 2px #f0c75e}.tt-comment header{font-size:.92rem}.tt-comment-body{margin:4px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}.tt-comment-line{margin:4px 0 0;display:flex;gap:6px;align-items:center;flex-wrap:wrap}.tt-comment-line code{font-family:var(--mono);font-size:.85rem;background:#fff;padding:1px 6px;border-radius:6px}.tt-new{margin-left:6px;font-size:.75rem;font-weight:800;background:#f0c75e;border-radius:999px;padding:1px 8px}.tt-feedback-form textarea{width:100%;font:inherit;padding:8px;border:2px solid var(--line);border-radius:var(--radius-sm);resize:vertical}.tt-feedback-send{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:6px}.tt-line-input input{width:70px;min-height:38px;padding:4px 6px;border:2px solid var(--line);border-radius:var(--radius-sm);font:inherit}.tt-error{color:var(--danger);font-weight:700;margin:4px 0}.tt-dash-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px}.tt-dash-head h1{margin-bottom:4px}.tt-dash-actions{display:flex;flex-wrap:wrap;gap:8px}.tt-section{margin-top:20px}.tt-freeze-ctl{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;padding:12px 14px}.tt-freeze-ctl.on{background:#e6f6fa;border-color:var(--blue)}.tt-freeze-ctl-title{font-weight:900}.tt-freeze-ctl .tt-input{flex:1 1 200px}.tt-freeze-ctl-status{flex:1 1 200px;font-weight:700}.tt-students-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.tt-filters{display:flex;flex-wrap:wrap;gap:6px}.tt-chip{min-height:40px;padding:4px 14px;border-radius:999px;border:2px solid var(--line);background:var(--surface);font:inherit;font-weight:700;cursor:pointer}.tt-chip.active{background:var(--blue-ink);border-color:var(--blue-ink);color:#fff}.tt-chip-n{display:inline-block;min-width:22px;margin-left:4px;padding:0 6px;border-radius:999px;background:#00000014;font-size:.85rem}.tt-grid{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px}.tt-card{padding:0;overflow:hidden}.tt-card.has-help{border-color:#f0c75e;box-shadow:0 0 0 2px #f0c75e}.tt-card.has-error{border-left:5px solid var(--danger)}.tt-card-btn{display:flex;flex-direction:column;gap:4px;width:100%;min-height:120px;padding:12px;background:none;border:none;text-align:left;font:inherit;color:inherit;cursor:pointer}.tt-card-btn:hover{background:#f4fafb}.tt-card-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.tt-card-name{font-weight:900;font-size:1.05rem}.tt-dot{width:12px;height:12px;border-radius:50%;background:#b9c6ca;flex:none}.tt-dot.online{background:#2f9d12}.tt-dot.idle{background:#e0a800}.tt-card-where{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.tt-where{font-size:.8rem;font-weight:800;background:var(--accent);padding:1px 8px;border-radius:999px}.tt-proj{font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.tt-card-error{display:block;color:var(--danger);font-family:var(--mono);font-size:.85rem;overflow-wrap:anywhere;background:#fdecec;border-radius:6px;padding:2px 6px}.tt-pill{font-size:.8rem;font-weight:800;border-radius:999px;padding:1px 8px;background:#fff3c4}.tt-pill.coming,.tt-pill.reply{background:#e3f6d8}.tt-help-queue,.tt-starters,.tt-projects,.tt-who{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}.tt-help-item{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;padding:10px 12px;border-left:5px solid #f0c75e}.tt-help-item.coming{border-left-color:var(--green-dark)}.tt-help-note{font-style:italic;overflow-wrap:anywhere}.tt-help-actions{margin-left:auto;display:flex;flex-wrap:wrap;gap:6px;align-items:center}.tt-linklike{background:none;border:none;padding:0;font:inherit;color:var(--blue-ink);text-decoration:underline;cursor:pointer;min-height:32px}.tt-notjoined{margin-top:10px}.tt-starter{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 12px}.tt-starter-actions{margin-left:auto;display:flex;flex-wrap:wrap;gap:6px}.tt-who{width:100%;gap:2px}.tt-panel-back{position:fixed;inset:0;z-index:50;background:#0a28324d;display:flex;justify-content:flex-end}.tt-panel{width:min(640px,100vw);height:100%;overflow:auto;background:var(--bg);padding:16px;box-shadow:-10px 0 40px #00323c40;display:flex;flex-direction:column;gap:10px}.tt-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.tt-panel-head h2{margin:0}.tt-sub{font-size:1rem;margin:10px 0 4px}.tt-project{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-sm)}.tt-project-title{font-weight:800}.tt-project-actions{margin-left:auto;display:flex;flex-wrap:wrap;gap:4px}.tt-hide-name{margin:6px 0}.tt-code{margin:0;font-family:var(--mono);font-size:.9rem;line-height:1.5;background:var(--editor-bg);border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px 0;overflow:auto;white-space:pre}.tt-code code{display:block;background:none;padding:0;border:none;font:inherit;color:inherit}.tt-live-code{max-height:340px}.tt-code-line{display:block;padding-right:12px}.tt-ln{display:inline-block;width:3.2em;padding-right:.8em;text-align:right;color:#7a8b91;user-select:none}.tt-code-line.add{background:#dff5d3}.tt-code-line.del{background:#fde3e3;color:#8a2020;text-decoration:line-through}.tt-output{margin:0;max-height:200px;overflow:auto;background:#10252b;color:#e6f4f1;border-radius:var(--radius-sm);padding:8px 10px;font-family:var(--mono);font-size:.85rem;white-space:pre-wrap;overflow-wrap:anywhere}.tt-starter-dialog{width:min(640px,calc(100vw - 32px))}.tt-starter-dialog .tt-input{width:100%;margin-bottom:8px}.tt-seg{display:flex;flex-wrap:wrap;gap:6px 16px;margin:8px 0}.tt-seg label{display:inline-flex;align-items:center;gap:6px;min-height:40px;font-weight:700}.tt-code-input{width:100%;font-family:var(--mono);font-size:.9rem;padding:8px;border:2px solid var(--line);border-radius:var(--radius-sm);margin-bottom:8px}.tt-dialog-actions{gap:8px}.tt-present{flex:1;display:flex;flex-direction:column;min-height:0;padding:8px 12px 12px;gap:8px}.tt-present-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}.tt-present-title{margin:0;flex:1;font-size:1.6rem}.tt-present-by{font-weight:600;color:var(--muted)}.tt-present-split{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:10px}.tt-present-code,.tt-present-out{min-height:0;display:flex;flex-direction:column;gap:6px}.tt-present-code .tt-code{flex:1}.tt-present-out .preview-frame{flex:1;min-height:300px;width:100%;border:1px solid var(--line);border-radius:var(--radius-sm);background:#fff}.tt-present-wait{text-align:center;padding-top:60px}.tt-replay-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px}.tt-replay-controls input[type=range]{flex:1 1 200px;accent-color:var(--blue-ink);min-height:32px}.tt-replay-pos{font-weight:800;min-width:60px;text-align:right}.tt-replay-meta{margin:10px 0 6px}.tt-add-n{color:#2f7d12;font-weight:800}.tt-del-n{color:var(--danger);font-weight:800}.tt-replay .tt-code{max-height:60vh}@media(max-width:760px){.tt-present-split{grid-template-columns:1fr}.tt-help-actions,.tt-starter-actions,.tt-project-actions{margin-left:0}}.tt-more-tools{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}:root{--blue: #0097b2;--blue-dark: #00768b;--blue-ink: #005f70;--green: #7ed957;--green-dark: #3f9a1c;--accent: #c9e4e9;--grad: linear-gradient(135deg, #0097b2 0%, #7ed957 100%);--bg: #f4fafb;--surface: #ffffff;--ink: #15262b;--muted: #50636a;--line: #d5e5e9;--danger: #c62828;--warn-bg: #fff6dd;--warn-line: #f0c75e;--editor-bg: #ffffff;--editor-gutter: #f1f7f8;--radius: 14px;--radius-sm: 10px;--shadow: 0 2px 10px rgba(0, 60, 75, .08);--mono: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;--font: "Nunito", "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif;--header-h: 60px;--focus: 0 0 0 3px #fff, 0 0 0 6px #005f70;color-scheme:light}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:var(--font);font-size:16px;line-height:1.5;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:var(--blue-ink)}h1,h2,h3{line-height:1.2;margin:0 0 .5em}h1{font-size:clamp(1.6rem,3vw,2.2rem)}code,kbd,pre{font-family:var(--mono)}code{background:#e9f4f6;padding:.05em .35em;border-radius:6px;font-size:.92em}kbd{display:inline-block;border:1px solid #b9cdd2;border-bottom-width:3px;border-radius:6px;padding:0 .45em;background:#fff;font-size:.9em}:focus-visible{outline:none;box-shadow:var(--focus);border-radius:6px}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:8px;top:-60px;z-index:100;background:#fff;padding:8px 14px;border-radius:8px;font-weight:700}.skip-link:focus{top:8px}.muted{color:var(--muted)}.small{font-size:.9rem}.tiny{font-size:.78rem}.hidden{display:none!important}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:12px;min-height:var(--header-h);padding:8px 16px;background:var(--grad);color:#fff;box-shadow:0 2px 8px #003c4b2e}.brand{display:flex;align-items:center;gap:10px;color:#fff;text-decoration:none;font-size:1.2rem;white-space:nowrap;text-shadow:0 1px 2px rgba(0,50,60,.35)}.brand svg{border-radius:12px;box-shadow:0 0 0 2px #ffffffb3;flex:none}.brand-text strong{font-weight:800}.beta-pill{font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;background:#003c4b59;border-radius:999px;padding:2px 8px;text-shadow:none}.nav{display:flex;gap:2px;margin-left:auto;flex-wrap:wrap;background:#fffffff0;border-radius:999px;padding:4px;box-shadow:0 1px 4px #003c4b26}.nav-link{color:var(--ink);text-decoration:none;font-weight:800;padding:6px 12px;border-radius:999px;min-height:40px;display:inline-flex;align-items:center}.nav-link:hover{background:#e3f2f5}.nav-link.active{background:var(--blue-ink);color:#fff}.xp-chip{display:inline-flex;align-items:center;gap:6px;background:#fff;color:var(--blue-ink);font-weight:800;border-radius:999px;padding:6px 12px;text-decoration:none;white-space:nowrap;min-height:40px}.xp-chip span{color:#e0a100}.menu-btn{display:none;margin-left:auto;background:#fff3;color:#fff;border:2px solid rgba(255,255,255,.7);border-radius:999px;font:inherit;font-weight:700;padding:6px 14px;min-height:44px;cursor:pointer}.main{flex:1;display:flex;flex-direction:column;min-width:0}.main:focus{outline:none}.footer{padding:18px 16px 24px;text-align:center;color:var(--muted);font-size:.9rem}.page{width:100%;max-width:1180px;margin:0 auto;padding:24px 16px 40px}.page.narrow{max-width:820px}.page.center{text-align:center;padding-top:60px}.page-loading{padding:40px;text-align:center;color:var(--muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 18px;border-radius:999px;border:2px solid transparent;font:inherit;font-weight:800;cursor:pointer;text-decoration:none;white-space:nowrap;transition:transform .08s ease,background-color .15s ease;background:#e7f1f3;color:var(--ink)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-small{min-height:38px;padding:4px 12px;font-size:.92rem}.btn-big{min-height:54px;font-size:1.1rem;padding:10px 26px}.btn-primary{background:var(--blue-ink);color:#fff}.btn-primary:hover{background:#004c5a}.btn-run{background:#2f7d12;color:#fff;font-size:1.05rem;min-width:104px}.btn-run:hover{background:#26670e}.btn-stop{background:var(--danger);color:#fff;font-size:1.05rem;min-width:104px}.btn-check{background:var(--blue-ink);color:#fff;font-size:1.05rem;min-width:120px}.btn-ghost{background:#fff;border-color:var(--line);color:var(--blue-ink)}.btn-ghost:hover{background:#eef7f9}.btn-danger-ghost{background:#fff;border-color:#f0c9c9;color:var(--danger)}.btn-danger-ghost:hover{background:#fff1f1}.btn-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:12px 0}.select,.project-name-input,input[type=text],.share-row input,.console-input input{font:inherit;min-height:40px;border:2px solid var(--line);border-radius:var(--radius-sm);padding:4px 10px;background:#fff;color:var(--ink)}.select{font-weight:700;cursor:pointer}.toggle{display:inline-flex;align-items:center;gap:6px;font-weight:700;font-size:.92rem;cursor:pointer;min-height:40px}.toggle input{width:20px;height:20px;accent-color:var(--blue)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px}.hero{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;margin-bottom:24px}.hero h1{font-size:clamp(1.7rem,4vw,2.5rem);background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;color:var(--blue-ink)}@supports (-webkit-background-clip: text){.hero h1{color:transparent;background-image:linear-gradient(135deg,#006f83,#3b8f1a)}}.hero p{font-size:1.1rem;margin:0}.hero-xp{display:flex;gap:16px;align-items:center;max-width:420px}.hero-xp p{margin:0}.hero-xp-level{font-size:1rem!important}.hero-xp-num{font-size:1.6rem!important;font-weight:800;color:var(--blue-ink)}.progress{height:10px;background:#e2eef1;border-radius:999px;overflow:hidden;margin:6px 0}.progress span{display:block;height:100%;background:var(--grad);border-radius:999px}.level-badge{position:relative;flex:none}.level-badge svg{display:block;filter:drop-shadow(0 3px 6px rgba(0,80,90,.25))}.level-badge-num{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff;font-weight:900;font-size:1.8rem;line-height:1;text-shadow:0 1px 3px rgba(0,50,60,.6)}.level-badge-num .tiny{font-size:.6rem;letter-spacing:.08em}.section-title{font-size:1.35rem;margin:8px 0 12px}.section-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px}.device-note{background:var(--accent);color:#12424c;border-radius:999px;padding:4px 12px;font-size:.9rem;font-weight:700;margin:0}aside .device-note{border-radius:var(--radius-sm);padding:8px 12px}.ws-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}.ws-card{display:flex;flex-direction:column;gap:6px;padding:18px;border-radius:18px;background:#fff;border:2px solid var(--line);text-decoration:none;color:var(--ink);box-shadow:var(--shadow);transition:transform .12s ease,box-shadow .12s ease,border-color .12s;min-height:210px}.ws-card:hover{transform:translateY(-3px);box-shadow:0 8px 20px #00505a26;border-color:var(--blue)}.ws-icon{font-size:2.2rem;width:58px;height:58px;display:grid;place-items:center;border-radius:16px;background:var(--accent)}.ws-scratch .ws-icon{background:#ffe8c7}.ws-python .ws-icon{background:#dff3d3}.ws-web .ws-icon{background:#d6eef3}.ws-challenges .ws-icon{background:#fff1bf}.ws-title{font-size:1.35rem;font-weight:900}.ws-levels{font-size:.82rem;font-weight:800;color:var(--blue-ink);text-transform:uppercase;letter-spacing:.03em}.ws-text{color:var(--muted);flex:1}.ws-go{font-weight:800;color:var(--blue-ink)}.project-list{list-style:none;padding:0;margin:12px 0 0;display:grid;gap:10px}.project-row{display:flex;align-items:center;gap:10px;padding:8px 10px;flex-wrap:wrap}.project-open{flex:1;min-width:200px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:none;border:none;font:inherit;text-align:left;cursor:pointer;padding:8px;border-radius:10px;color:var(--ink);min-height:44px}.project-open:hover{background:#f0f8fa}.project-name{font-weight:800;font-size:1.05rem;overflow-wrap:anywhere}.project-actions{display:flex;gap:6px;flex-wrap:wrap}.kind-pill,.xp-pill,.done-pill{display:inline-block;font-size:.78rem;font-weight:800;border-radius:999px;padding:2px 10px;white-space:nowrap}.kind-python{background:#dff3d3;color:#24600c}.kind-web{background:#d6eef3;color:#0a5463}.xp-pill{background:#fff1bf;color:#6b4d00}.done-pill{background:#2f7d12;color:#fff}.empty p{margin:0}.app-workspace{height:100vh;height:100dvh;min-height:0}.app-workspace .main{min-height:0;overflow:hidden}.workspace{flex:1;display:flex;flex-direction:column;min-height:0;padding:8px 12px 12px;gap:8px}.project-bar,.toolbar{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.project-bar-left,.project-bar-right,.toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.toolbar{justify-content:flex-start}.project-name-input{font-weight:800;width:200px;max-width:40vw}.save-state{font-size:.85rem;font-weight:700;color:var(--muted);white-space:nowrap}.save-saved:before{content:"✓ ";color:#2f7d12}.save-error{color:var(--danger)}.font-size{display:inline-flex;gap:4px}.menu-wrap{position:relative}.menu{position:absolute;right:0;top:calc(100% + 6px);z-index:30;background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:0 10px 30px #00323c2e;padding:6px;min-width:210px;display:flex;flex-direction:column}.menu-item{background:none;border:none;font:inherit;font-weight:700;text-align:left;padding:10px 12px;border-radius:8px;cursor:pointer;color:var(--ink);min-height:44px}.menu-item:hover,.menu-item:focus-visible{background:#eef7f9}.menu-item.danger{color:var(--danger)}.share-banner{margin:0;background:var(--accent);border-radius:var(--radius-sm);padding:8px 12px;font-weight:700}.split{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:10px}.pane{min-height:0;min-width:0;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.output-pane{background:transparent;border:none;box-shadow:none;overflow:visible}.code-editor{flex:1;min-height:0;overflow:hidden}.code-editor .cm-editor{height:100%}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 10px;border-bottom:1px solid var(--line);background:#f6fbfc;min-height:46px}.panel-title{font-size:.95rem;margin:0;text-transform:uppercase;letter-spacing:.05em;color:var(--blue-ink)}.py-panels,.py-output,.web-output{flex:1;min-height:0;display:flex;flex-direction:column;gap:10px}.turtle-panel,.preview-frame-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);display:flex;flex-direction:column}.turtle-panel{flex:1.3 1 0;min-height:160px}.turtle-wrap{position:relative;flex:1;min-height:0;aspect-ratio:auto;display:grid;place-items:center;background:repeating-conic-gradient(#f4f8f9 0% 25%,#fff 0% 50%) 50% / 20px 20px}.turtle-layer{position:absolute;height:100%;max-width:100%;aspect-ratio:1 / 1;object-fit:contain;left:50%;top:50%;transform:translate(-50%,-50%)}.turtle-layer:first-child{box-shadow:0 0 0 1px var(--line)}.console{flex:1 1 0;min-height:140px;display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.console-body{flex:1;min-height:0;overflow:auto;padding:10px 12px;font-family:var(--mono);font-size:.95rem;background:#fbfdfd}.console-empty{color:var(--muted);font-family:var(--font);margin:0}.log{margin:0;white-space:pre-wrap;word-break:break-word;font-family:var(--mono)}.log-err{color:#8a1c1c}.log-error{color:#8a1c1c;background:#fdecec;border-left:4px solid var(--danger);padding:6px 10px;margin:6px 0 4px;border-radius:6px;font-family:var(--font);font-weight:700}.log-warn{color:#6b4d00;background:var(--warn-bg);padding:2px 8px;border-radius:6px;margin:2px 0}.log-info{color:var(--muted);font-style:italic}.log-input{color:var(--blue-ink);font-weight:800}.log-success{color:#2f7d12;font-weight:800;margin-top:4px}.line-chip{font:inherit;font-size:.82rem;font-weight:800;background:var(--danger);color:#fff;border:none;border-radius:999px;padding:2px 10px;margin-right:8px;cursor:pointer;min-height:28px}.console-input{margin-top:8px;padding:10px;border-radius:var(--radius-sm);background:#eaf6f8;border:2px solid var(--blue);font-family:var(--font)}.console-prompt{display:block;font-weight:800;margin-bottom:6px;white-space:pre-wrap}.console-input-row{display:flex;gap:8px}.console-input input{flex:1;min-width:0;font-family:var(--mono)}.status-banner{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius-sm);background:var(--accent);font-weight:700;font-size:.95rem}.status-banner p{margin:0;flex:1}.status-banner.error{background:var(--warn-bg);border:2px solid var(--warn-line);flex-wrap:wrap}.spinner{width:18px;height:18px;border:3px solid rgba(0,95,112,.25);border-top-color:var(--blue-ink);border-radius:50%;animation:spin .8s linear infinite;flex:none}@keyframes spin{to{transform:rotate(360deg)}}.web-tabs{flex:1;min-height:0;display:flex;flex-direction:column}.tabs{display:flex;gap:4px;padding:6px 6px 0;background:#f6fbfc;border-bottom:1px solid var(--line)}.tab{font:inherit;font-weight:900;border:1px solid transparent;border-bottom:none;background:transparent;padding:8px 18px;border-radius:10px 10px 0 0;cursor:pointer;color:var(--muted);min-height:42px;min-width:72px}.tab.active{background:#fff;border-color:var(--line);color:var(--ink);margin-bottom:-1px}.tab-html.active{box-shadow:inset 0 3px #e44d26}.tab-css.active{box-shadow:inset 0 3px #2965f1}.tab-js.active{box-shadow:inset 0 3px #c9a400}.tab-panel{flex:1;min-height:0;display:flex;flex-direction:column}.tab-panel[hidden]{display:none}.preview-frame-wrap{flex:1.6 1 0;min-height:180px}.preview-frame{flex:1;width:100%;border:none;background:#fff}.scratch-intro{display:grid;grid-template-columns:1.4fr 1fr;gap:24px;align-items:start;margin-bottom:20px}.lead{font-size:1.15rem}.tips h2{font-size:1.2rem}.tips ol{padding-left:1.3em}.tips li{margin-bottom:6px}.scratch-embed{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-bottom:20px}.scratch-embed .muted{padding:0 12px}.scratch-frame{width:100%;height:min(78vh,760px);border:none;display:block}.idea-list li{margin-bottom:6px}.hero-small{margin-bottom:16px}.challenge-grid{list-style:none;padding:0;margin:0 0 24px;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.challenge-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;row-gap:4px;align-items:center;padding:14px;border-radius:var(--radius);background:#fff;border:2px solid var(--line);text-decoration:none;color:var(--ink);box-shadow:var(--shadow);min-height:84px}.challenge-card:hover{border-color:var(--blue)}.challenge-card.done{border-color:#9fd987;background:#f6fdf2}.challenge-num{grid-row:span 2;width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:var(--grad);color:#fff;font-weight:900;font-size:1.2rem;text-shadow:0 1px 2px rgba(0,50,60,.5)}.challenge-title{font-weight:900;font-size:1.08rem}.challenge-meta{display:flex;gap:6px;flex-wrap:wrap;margin:0}.levels-list{padding-left:1.3em;margin:0 0 8px}.levels-list li.current{color:var(--blue-ink)}.levels-list li.current:after{content:"  ← you are here";font-weight:800}.challenge-layout{flex:1;min-height:0;display:grid;grid-template-columns:300px minmax(0,1fr);gap:10px;padding:8px 12px 12px}.challenge-side{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);min-height:0}.crumbs{margin:0 0 8px;font-weight:700}.challenge-h1{font-size:1.5rem}.instructions pre,.hint{background:#eef7f9;border-radius:8px;padding:8px 10px;white-space:pre-wrap;margin:8px 0}.hint{font-family:var(--font);background:#fff8dc;border-left:4px solid #e0a100}.hint strong{font-family:var(--font)}.hints-title{font-size:1rem;margin:16px 0 6px}.result{border-radius:var(--radius-sm);padding:10px 12px;margin:8px 0;font-weight:600}.result.pass{background:#e7f8de;border:2px solid #79c454}.result.fail{background:var(--warn-bg);border:2px solid var(--warn-line)}.next-btn{margin-top:16px;white-space:normal;text-align:center}.challenge-work{min-height:0;min-width:0;display:flex;flex-direction:column;gap:8px}.celebration{position:fixed;inset:0;z-index:50;display:grid;place-items:center;background:#0a283259;cursor:pointer}.confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none}.confetti span{position:absolute;top:-20px;animation-name:fall;animation-timing-function:cubic-bezier(.3,.6,.6,1);animation-fill-mode:forwards}@keyframes fall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(720deg);opacity:.9}}.celebrate-card{position:relative;background:#fff;border-radius:22px;padding:24px 32px;text-align:center;max-width:min(420px,calc(100vw - 32px));box-shadow:0 20px 60px #00323c59;animation:pop .45s cubic-bezier(.2,1.4,.4,1)}.celebrate-card p{margin:6px 0}.celebrate-emoji{font-size:3rem;line-height:1;color:#e0a100}.celebrate-title{font-size:1.5rem;font-weight:900}.celebrate-xp{font-size:2.2rem;font-weight:900;color:#2f7d12}.celebrate-xp.small{font-size:1.1rem}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@media(prefers-reduced-motion:reduce){.confetti{display:none}.celebrate-card{animation:none}.ws-card,.btn{transition:none}}.dialog{border:none;border-radius:18px;padding:22px;width:min(560px,calc(100vw - 32px));box-shadow:0 20px 60px #00323c59}.dialog::backdrop{background:#0a283266}.field-label{font-weight:800;display:block;margin-bottom:4px}.share-row{display:flex;gap:8px}.share-row input{flex:1;min-width:0;font-family:var(--mono);font-size:.85rem}.warn-box{background:var(--warn-bg);border:2px solid var(--warn-line);border-radius:var(--radius-sm);padding:8px 12px}.dialog-actions{display:flex;justify-content:flex-end;margin-top:14px}.toasts{position:fixed;bottom:16px;left:50%;transform:translate(-50%);z-index:60;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;width:max-content;max-width:calc(100vw - 32px)}.toast{background:#15262b;color:#fff;padding:10px 18px;border-radius:999px;font-weight:700;box-shadow:0 6px 18px #00000040}.toast-success{background:#24600c}.toast-error{background:#8a1c1c}.about section{margin-bottom:16px}.shortcuts td{padding:6px 12px 6px 0;vertical-align:top}.coming-list li{margin-bottom:4px}@media(max-width:1240px){.beta-pill{display:none}}@media(max-width:1100px){.ws-grid{grid-template-columns:repeat(2,1fr)}.challenge-layout{grid-template-columns:280px minmax(0,1fr)}.challenge-layout .split{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) minmax(0,1fr)}.challenge-layout .py-panels,.challenge-layout .web-output{flex-direction:row}.challenge-layout .py-panels>*,.challenge-layout .web-output>*{flex:1 1 0;min-width:0}}@media(max-width:960px){.scratch-intro{grid-template-columns:1fr}}@media(max-width:760px){.hero{grid-template-columns:1fr}.hero-xp{max-width:none}.ws-card{min-height:0}.app-workspace{height:auto}.app-workspace .main{overflow:visible}.split,.challenge-layout .split{display:flex;flex-direction:column}.editor-pane{height:55vh;min-height:280px;flex:none}.output-pane{min-height:0}.turtle-panel{flex:none}.turtle-wrap{height:min(90vw,420px);flex:none}.console{flex:none;height:40vh;min-height:220px}.preview-frame-wrap{flex:none;height:60vh}.challenge-layout{display:flex;flex-direction:column}.challenge-layout .py-panels,.challenge-layout .web-output{flex-direction:column}.challenge-side{overflow:visible}.project-name-input{width:100%;max-width:none;flex:1 1 100%}.project-bar-right{width:100%}}@media(max-width:480px){.btn-row .btn{white-space:normal;text-align:center}.ws-grid{grid-template-columns:1fr}.brand-text{font-size:1rem}.topbar{padding:8px 10px;gap:8px}.menu-btn-text{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.brand{gap:8px}.brand svg{width:34px;height:34px}.menu-btn,.xp-chip{padding:6px 10px}.project-actions{width:100%}.project-actions .btn{flex:1}}.account{position:relative;flex:none}.account-chip{display:inline-flex;align-items:center;gap:8px;min-height:40px;max-width:280px;padding:4px 10px 4px 4px;border:0;border-radius:999px;background:#fff;color:var(--ink);font:inherit;font-weight:800;cursor:pointer}.account-chip:focus-visible{box-shadow:var(--focus);outline:none}.account-chip.guest{background:#ffffffd9;color:var(--blue-ink);padding-right:12px}.account-avatar{width:32px;height:32px;flex:none;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--blue-ink);color:#fff;font-weight:800}.account-chip.guest .account-avatar{background:var(--accent);color:var(--blue-ink)}.account-text{display:flex;flex-direction:column;min-width:0;line-height:1.15;text-align:left}.account-name,.account-class{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-class{font-size:.75rem;font-weight:700;color:var(--muted);max-width:130px}.role-badge{flex:none;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:3px 8px;background:var(--accent);color:#12424c}.role-badge.role-instructor,.role-badge.role-admin{background:#fff1c7;color:#6a4b00}.account-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:30;width:min(320px,calc(100vw - 20px));background:#fff;color:var(--ink);border-radius:var(--radius);box-shadow:0 10px 30px #00323c40;padding:12px}.account-menu p{margin:0 0 8px}.account-menu .menu-item{display:block;width:100%;text-align:left;text-decoration:none}.account-note{background:#e4f7d8;color:#24520f}.import-banner{margin:12px 0;padding:14px 16px;border:2px solid var(--green)}.import-banner p{margin:0 0 10px}.import-actions{display:flex;flex-wrap:wrap;gap:8px}.import-actions .btn{white-space:normal}.admin-form{display:flex;flex-direction:column;gap:12px;padding:16px;margin-top:12px}.admin-form label{display:flex;flex-direction:column;gap:4px;font-weight:700}.admin-form input{font:inherit;padding:10px;border:2px solid var(--line);border-radius:var(--radius-sm);min-height:44px}.admin-urls{display:grid;grid-template-columns:minmax(0,1fr);gap:2px;margin:0}.admin-urls dt{font-weight:800;margin-top:8px}.admin-urls dd{margin:0;overflow-wrap:anywhere}.admin>section+section{margin-top:24px}.admin .card,.facilitator .card{padding:14px 16px}@media(max-width:1240px){.account-class{max-width:90px}}@media(max-width:1100px)and (min-width:769px){.account-class,.account-chip.guest .account-name{display:none}}@media(max-width:640px){.account-class,.account-chip.guest .account-name{display:none}}@media(max-width:480px){.account-text,.role-badge{display:none}.account-chip,.account-chip.guest{padding:4px}}@font-face{font-family:Atkinson Hyperlegible;src:url(/fonts/atkinson-hyperlegible-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Atkinson Hyperlegible;src:url(/fonts/atkinson-hyperlegible-700.woff2) format("woff2");font-weight:700 900;font-display:swap}@font-face{font-family:Atkinson Hyperlegible Mono;src:url(/fonts/atkinson-hyperlegible-mono-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Atkinson Hyperlegible Mono;src:url(/fonts/atkinson-hyperlegible-mono-700.woff2) format("woff2");font-weight:700 900;font-display:swap}@font-face{font-family:OpenDyslexic;src:url(/fonts/opendyslexic-400.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:OpenDyslexic;src:url(/fonts/opendyslexic-700.woff2) format("woff2");font-weight:700 900;font-display:swap}:root[data-text-size=large]{font-size:112.5%}:root[data-text-size=large] body{font-size:18px}:root[data-text-size=xlarge]{font-size:125%}:root[data-text-size=xlarge] body{font-size:20px}:root[data-font=readable]{--font: "Atkinson Hyperlegible", "Nunito", system-ui, sans-serif;--mono: "Atkinson Hyperlegible Mono", ui-monospace, Menlo, Consolas, monospace}:root[data-font=dyslexic]{--font: "OpenDyslexic", "Atkinson Hyperlegible", system-ui, sans-serif;--mono: "Atkinson Hyperlegible Mono", ui-monospace, Menlo, Consolas, monospace}:root[data-font=dyslexic] body{line-height:1.7;word-spacing:.08em}:root[data-line-spacing=roomy] .cm-editor .cm-scroller{line-height:1.9!important}:root[data-line-spacing=extra] .cm-editor .cm-scroller{line-height:2.3!important}:root[data-contrast=high]{--ink: #000;--muted: #1b2a2e;--line: #2b3a3e;--bg: #fff;--surface: #fff;--blue-ink: #00313a;--accent: #d9f3f8;--editor-gutter: #eef3f4;--focus: 0 0 0 3px #fff, 0 0 0 7px #000;--shadow: none}:root[data-contrast=high] .topbar{background:#00313a}:root[data-contrast=high] .nav{background:#fff;border:2px solid #000}:root[data-contrast=high] a{text-decoration:underline}:root[data-contrast=high] .nav-link,:root[data-contrast=high] .brand,:root[data-contrast=high] .btn,:root[data-contrast=high] .xp-chip{text-decoration:none}:root[data-contrast=high] .btn-ghost,:root[data-contrast=high] .card,:root[data-contrast=high] .select,:root[data-contrast=high] input[type=text],:root[data-contrast=high] .textarea{border-color:#000}:root[data-contrast=high] .btn-run{background:#1d5208}:root[data-contrast=high] .hero h1{background:none;color:#00313a;-webkit-text-fill-color:currentColor}:root[data-contrast=high] .log-err,:root[data-contrast=high] .log-error{color:#8b0000}:root[data-reduce-motion=on] .confetti{display:none!important}:root[data-reduce-motion=on] *,:root[data-reduce-motion=on] *:before,:root[data-reduce-motion=on] *:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition:none!important;scroll-behavior:auto!important}.settings-btn{flex:none;width:44px;height:44px;border-radius:50%;border:2px solid rgba(255,255,255,.85);background:#fffffff2;color:var(--blue-ink);font-size:1.35rem;line-height:1;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.settings-btn:hover{background:#fff}.settings-dialog{width:min(600px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto}.settings-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.settings-head h2{margin:0}.settings-saved{margin:4px 0 8px}.settings-section{margin:18px 0 6px;font-size:1.15rem;border-top:2px solid var(--line);padding-top:12px}.settings-group{border:none;padding:0;margin:10px 0}.settings-group legend,.settings-label{font-weight:800;display:block;margin-bottom:4px}.settings-choices{display:flex;flex-wrap:wrap;gap:8px}.settings-choice{display:inline-flex;flex-direction:column;align-items:flex-start;min-height:44px;justify-content:center;padding:6px 14px;border:2px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;font-weight:700;position:relative}.settings-choice input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}.settings-choice.checked{border-color:var(--blue-ink);background:var(--accent)}.settings-choice:focus-within{box-shadow:var(--focus)}.settings-hint{font-size:.75rem;font-weight:600;color:var(--muted)}.settings-toggles{display:flex;flex-direction:column;gap:4px}.settings-toggles .toggle{font-size:1rem}.settings-foot{margin-top:16px;text-align:right}.read-aloud{position:relative;display:inline-flex;vertical-align:middle}.read-aloud-btn{min-width:44px;min-height:40px;padding:4px 10px}.read-aloud-btn.is-reading{background:#fff3c4;border-color:#e0a100;color:#5a3b00}.read-aloud-problem{position:absolute;z-index:25;top:calc(100% + 6px);left:0;width:min(320px,80vw);background:var(--warn-bg);border:2px solid var(--warn-line);border-radius:var(--radius-sm);padding:8px 30px 8px 10px;font-size:.88rem;font-weight:600;color:var(--ink);box-shadow:0 6px 20px #00323c33;white-space:normal}.read-aloud-close{position:absolute;top:2px;right:4px;border:none;background:none;font-size:1.3rem;cursor:pointer;min-width:28px;min-height:28px}::highlight(eai-read-sentence){background-color:#fff3b0}::highlight(eai-read-word){background-color:#ffd166;color:#000}.eai-reading{outline:3px solid #ffd166;outline-offset:4px;border-radius:6px}.read-row{margin:4px 0}.read-error-bar{display:flex;align-items:center;gap:8px;padding:4px 8px;background:#fff1f1;border-bottom:1px solid #f0c9c9}.hints-title .read-aloud,.result .read-aloud{margin-left:6px}.turtle-wrap:focus-visible{outline:3px solid var(--blue);outline-offset:-3px;box-shadow:none}.kit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,330px),1fr));gap:16px;margin-top:16px}.kit-card{display:flex;flex-direction:column;gap:6px}.kit-card p{margin:0}.kit-head{display:flex;gap:12px;align-items:center}.kit-emoji{font-size:2.4rem;width:64px;height:64px;flex:none;border-radius:16px;background:var(--accent);display:inline-flex;align-items:center;justify-content:center}.kit-title{margin:0;font-size:1.25rem}.kit-details summary{cursor:pointer;font-weight:800;color:var(--blue-ink);min-height:44px;display:flex;align-items:center}.kit-guide-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.kit-guide h3{font-size:1.05rem;margin:8px 0 4px}.kit-steps,.kit-next{padding-left:1.3em;margin:0}.kit-steps li,.kit-next li{margin:4px 0}.asset-section{margin:16px 0}.asset-tabs{flex-wrap:wrap;border-radius:10px 10px 0 0}.asset-grid{list-style:none;padding:0;margin:12px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.asset-card{border:1px solid var(--line);border-radius:var(--radius-sm);padding:8px;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;background:var(--surface);min-width:0}.asset-thumb{width:96px;height:72px;object-fit:contain;background:repeating-conic-gradient(#f4f8f9 0% 25%,#fff 0% 50%) 50% / 12px 12px;border-radius:8px}.asset-sound{border:2px solid var(--line);font:inherit;font-weight:800;cursor:pointer;color:var(--blue-ink)}.asset-audio{width:100%;max-width:180px;height:40px}.asset-name{font-weight:800;overflow-wrap:anywhere}.asset-url{overflow-wrap:anywhere;background:none;color:var(--muted)}.asset-status{font-weight:700;color:var(--muted)}.asset-status.status-approved{color:#2f7d12}.asset-status.status-rejected,.asset-note{color:var(--danger)}.asset-actions{display:flex;flex-wrap:wrap;gap:4px;justify-content:center}.asset-actions .select{max-width:100%;font-size:.85rem}.upload-form{display:flex;flex-direction:column;align-items:flex-start;gap:6px;max-width:520px}.upload-form input[type=text]{width:100%}.upload-form input[type=file]{font:inherit;max-width:100%}.insert-dialog{width:min(760px,calc(100vw - 24px));max-height:calc(100vh - 24px);overflow:auto}.showcase-section{margin:18px 0}.showcase-grid{list-style:none;padding:0;margin:10px 0;display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,260px),1fr));gap:12px}.showcase-grid.one-col{grid-template-columns:minmax(0,1fr)}.showcase-card{display:flex;flex-direction:column;gap:4px;padding:14px}.showcase-link{display:flex;gap:8px;align-items:center;font-weight:900;font-size:1.1rem;text-decoration:none;color:var(--blue-ink);min-height:44px}.showcase-link:hover .showcase-title{text-decoration:underline}.showcase-icon{font-size:1.5rem}.showcase-desc{margin:0;overflow-wrap:anywhere}.showcase-status{align-self:flex-start;font-size:.8rem;font-weight:800;border-radius:999px;padding:2px 10px;background:var(--accent);color:#12424c}.showcase-status.status-approved{background:#e4f7d8;color:#24520f}.showcase-status.status-rejected{background:#fff1c7;color:#6a4b00}.showcase-note{background:#fff6dd;border-left:4px solid var(--warn-line);padding:6px 10px;border-radius:6px;margin:4px 0}.reaction-summary{display:flex;gap:10px;flex-wrap:wrap;font-size:.95rem}.showcase-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start}.showcase-form{display:flex;flex-direction:column;gap:6px}.showcase-form h2{margin:0}.showcase-form input[type=text],.showcase-form .select,.textarea{width:100%}.textarea{font:inherit;border:2px solid var(--line);border-radius:var(--radius-sm);padding:6px 10px;background:#fff;color:var(--ink);resize:vertical}.reactions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.reaction{font:inherit;font-size:1.15rem;min-height:44px;min-width:64px;border-radius:999px;border:2px solid var(--line);background:#fff;cursor:pointer;padding:4px 12px}.reaction.mine{border-color:var(--blue-ink);background:var(--accent)}.reaction-n{font-size:.95rem;font-weight:800}.moderator-bar{margin:12px 0;border:2px solid #f0c75e;display:flex;flex-direction:column;gap:6px;align-items:flex-start}.moderator-bar p{margin:0}.moderator-bar .select{max-width:100%}.showcase-run{margin:12px 0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff}.showcase-output{height:min(70vh,560px);display:flex;flex-direction:column}.showcase-output>*{flex:1;min-height:0}.showcase-code pre{background:#f6fbfc;border:1px solid var(--line);border-radius:var(--radius-sm);padding:10px;overflow:auto;max-height:320px;font-size:.9rem}.showcase-code summary{cursor:pointer;font-weight:800;min-height:44px;display:flex;align-items:center}@media(max-width:760px){.showcase-columns{grid-template-columns:minmax(0,1fr)}.showcase-output{height:auto}.showcase-output>*{min-height:360px}}@media(max-width:480px){.topbar{gap:6px;padding-left:10px;padding-right:10px}.topbar .beta-pill{display:none}.topbar .brand{font-size:1rem;gap:6px}.topbar .brand svg{width:32px;height:32px}.settings-btn{width:40px;height:40px;font-size:1.2rem}}@media(max-width:420px){.topbar{gap:5px}.topbar .brand-text{font-size:.9rem}.topbar .xp-chip{padding:6px 8px}.settings-btn{width:38px;height:38px}}.page-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.page-title-row h1{margin:0}.asset-card .asset-actions{width:100%}.asset-actions .select{width:100%;min-width:0}.asset-grid.review-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}.topbar{flex-wrap:nowrap}.topbar>*{flex-shrink:0}.topbar .nav{flex:none;flex-wrap:nowrap;white-space:nowrap;margin-left:auto}.topbar .nav-link{padding:6px 11px;font-size:.97rem}.topbar.lvl-1 .nav-link{padding:6px 9px}.topbar.lvl-1 .brand-text,.topbar.lvl-2 .brand-text,.topbar.lvl-4 .brand-text,.topbar.lvl-1 .beta-pill,.topbar.lvl-2 .beta-pill,.topbar.compact .beta-pill{display:none}.topbar.lvl-2{gap:8px}.topbar.lvl-2 .nav{gap:0}.topbar.lvl-2 .nav-link{padding:6px 7px;font-size:.93rem}.topbar.lvl-2 .nav .nav-home,.topbar.lvl-2 .account-text,.topbar.lvl-2 .role-badge{display:none}.topbar.lvl-2 .account-chip{padding:4px}.topbar.compact .menu-btn{display:inline-flex;align-items:center;gap:6px;margin-left:auto}.xp-chip .xp-unit{color:inherit}.nav-menu{position:relative;display:inline-flex}.nav-menu-btn{border:0;background:none;font:inherit;font-weight:800;cursor:pointer;color:var(--ink);gap:4px}.nav-menu-btn:focus-visible,.nav-link:focus-visible,.nav-menu-item:focus-visible{outline:none;box-shadow:var(--focus)}.nav-menu-btn.active{background:var(--blue-ink);color:#fff}.nav-caret{font-size:.8em}.nav-dropdown{position:absolute;top:calc(100% + 10px);right:0;z-index:40;min-width:230px;list-style:none;margin:0;padding:6px;background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);box-shadow:0 10px 30px #00323c40;white-space:normal}.nav-menu-item{display:flex;align-items:center;min-height:44px;padding:8px 12px;border-radius:8px;color:var(--ink);text-decoration:none;font-weight:700}.nav-menu-item:hover{background:#eef7f9}.nav-menu-item.active{background:var(--blue-ink);color:#fff}.nav-panel{position:absolute;top:100%;left:0;right:0;z-index:40;background:#fff;color:var(--ink);padding:8px 12px 14px;border-radius:0 0 14px 14px;box-shadow:0 10px 20px #00323c40;max-height:calc(100vh - var(--header-h));overflow-y:auto}.nav-panel-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:4px}.nav-panel .nav-link{display:flex;border-radius:10px;min-height:48px}.nav-panel-head{margin:12px 4px 4px;font-size:.8rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}:root[data-contrast=high] .nav-dropdown,:root[data-contrast=high] .nav-panel{border:2px solid #000}
