:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#17243d;font-synthesis:none;text-rendering:optimizelegibility;--navy:#173968;--blue:#2463a9;--blue-dark:#164a82;--blue-soft:#eaf3fc;--ink:#17243d;--muted:#56657a;--line:#cbd6e4;--surface:#fff;--surface-alt:#f5f8fc;--success:#17633b;--success-bg:#e8f6ee;--warning:#795207;--warning-bg:#fff5d6;--danger:#a52a35;--danger-bg:#fff0f1;--focus:#b35c00;--shadow:0 8px 28px #18375e17;background:#f5f8fc;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth;min-width:320px}body{background:var(--surface-alt);min-width:320px;min-height:100vh;margin:0;line-height:1.55}button,input,select,textarea{font:inherit}button,select,input[type=checkbox],input[type=radio]{touch-action:manipulation}a{color:var(--blue-dark);text-underline-offset:.18em}a:hover{color:#0b3765}h1,h2,h3{color:var(--navy);line-height:1.18}h1{letter-spacing:-.035em;margin:.2rem 0 1rem;font-size:clamp(2rem,5vw,3.25rem)}h2{font-size:clamp(1.4rem,3vw,2rem)}p{max-width:72ch}:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.skip-link{z-index:100;background:#fff;border-radius:.45rem;padding:.7rem 1rem;font-weight:700;position:fixed;top:.5rem;left:.5rem;transform:translateY(-150%)}.skip-link:focus{transform:none}.app-frame{flex-direction:column;min-height:100vh;display:flex}.site-header{background:var(--surface);border-bottom:1px solid var(--line);box-shadow:0 2px 12px #18375e0d}.header-inner{justify-content:space-between;align-items:center;gap:1rem;max-width:1200px;min-height:4.25rem;margin:auto;padding:.6rem clamp(1rem,4vw,2rem);display:flex}.brand{color:var(--navy);align-items:center;gap:.65rem;font-size:1.08rem;font-weight:800;text-decoration:none;display:inline-flex}.brand-mark{background:var(--blue);color:#fff;border-radius:.55rem;place-items:center;width:2.2rem;height:2.2rem;font-size:1.4rem;display:grid}.primary-nav{gap:.25rem;display:flex}.primary-nav a{color:var(--ink);border-radius:.45rem;padding:.55rem .75rem;font-weight:650;text-decoration:none}.primary-nav a:hover,.primary-nav a.active{background:var(--blue-soft);color:var(--blue-dark)}.activity-nav{scrollbar-width:thin;max-width:1200px;margin:auto;padding:.1rem clamp(1rem,4vw,2rem) .7rem;overflow-x:auto}.activity-nav ol{gap:.4rem;width:max-content;margin:0;padding:0;list-style:none;display:flex}.activity-nav a{border:1px solid var(--line);min-height:2.35rem;color:var(--muted);background:#fff;border-radius:999px;align-items:center;gap:.4rem;padding:.35rem .65rem;text-decoration:none;display:flex}.activity-nav a:hover,.activity-nav a.active{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-dark)}.activity-nav a.active{font-weight:700}.activity-nav-label{white-space:nowrap;max-width:0;transition:max-width .2s;overflow:hidden}.activity-nav a:hover .activity-nav-label,.activity-nav a:focus-visible .activity-nav-label,.activity-nav a.active .activity-nav-label{max-width:15rem}.main-content{flex:1;width:min(1200px,100%);margin:0 auto;padding:clamp(1.25rem,4vw,3rem) clamp(1rem,4vw,2rem)}.site-footer{border-top:1px solid var(--line);color:var(--muted);text-align:center;background:#fff;margin-top:auto;padding:1rem}.site-footer p{margin:auto}.page,.activity-page,.progress-page{animation:.22s ease-out page-in}@keyframes page-in{0%{opacity:0;transform:translateY(5px)}}.eyebrow{color:var(--blue-dark);letter-spacing:.09em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:800}.hero,.page-heading,.intro-card,.card,.score-summary,.device-session{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow);border-radius:1rem;padding:clamp(1.25rem,4vw,2.2rem)}.hero{background:linear-gradient(130deg,#fff 35%,#eaf4ff);margin-bottom:2rem}.hero>p:not(.eyebrow){color:var(--muted);font-size:1.08rem}.student-welcome{border-top:1px solid var(--line);padding-top:1rem;color:var(--ink)!important}.section-heading,.activity-heading{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.activity-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,270px),1fr));gap:1rem;padding:0;list-style:none;display:grid}.activity-card{border:1px solid var(--line);background:#fff;border-radius:.85rem;gap:1rem;min-height:10rem;padding:1.25rem;display:flex;box-shadow:0 4px 14px #18375e0d}.activity-card:hover{border-color:#92afd1;transform:translateY(-1px)}.activity-number{background:var(--blue-soft);width:2.2rem;height:2.2rem;color:var(--blue-dark);border-radius:50%;flex:none;place-items:center;font-weight:800;display:grid}.activity-card h3{margin:.25rem 0}.activity-card p{color:var(--muted)}.status-badge,.status,.state-label{white-space:nowrap;border-radius:999px;align-items:center;gap:.38rem;width:fit-content;padding:.28rem .65rem;font-size:.82rem;font-weight:750;display:inline-flex}.status-not-started,.status--not-started{color:#46566c;background:#eef1f5}.status-in-progress,.status--in-progress{color:var(--warning);background:var(--warning-bg)}.status-completed,.status--completed{color:var(--success);background:var(--success-bg)}.status-symbol{font-size:1.05em}.intro-card{box-shadow:none;background:var(--blue-soft);border-color:#bfd6ed;margin-bottom:1.25rem}.intro-card>:first-child{margin-top:0}.intro-card>:last-child{margin-bottom:0}.activity-workspace{gap:1.25rem;display:grid}.cluster-hunt-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start;gap:1rem;display:grid}.cluster-hunt-grid .panel{min-width:0;height:100%}.strategy-card{transition:opacity .16s,box-shadow .16s,background-color .16s}.strategy-card--active{border-inline:2px solid var(--strategy-color);border-bottom:2px solid var(--strategy-color);background:color-mix(in srgb, var(--strategy-color) 8%, white);box-shadow:0 0 0 3px color-mix(in srgb, var(--strategy-color) 22%, transparent), var(--shadow)}.strategy-card--subdued{opacity:.62;box-shadow:none}.strategy-card__current{background:var(--strategy-color);color:#fff;vertical-align:middle;border-radius:999px;margin-inline-start:.4rem;padding:.18rem .45rem;font-size:.68rem;line-height:1.2;display:inline-block}.cluster-hunt-grid .hash-grid{grid-template-columns:repeat(auto-fit,minmax(2.25rem,1fr));gap:.3rem;display:grid}.cluster-hunt-grid .hash-grid-cell{border:1px solid var(--line);text-align:center;overflow-wrap:anywhere;border-radius:.35rem;min-width:0;padding:.3rem .15rem}.cluster-hunt-grid .hash-grid-cell small{display:block}.cluster-hunt-grid .hash-grid-cell.cluster-slot-occupied{color:#000;background:green;font-weight:700}.activity-footer-actions{border-top:1px solid var(--line);flex-wrap:wrap;gap:.75rem;margin-top:2rem;padding-top:1.25rem;display:flex}button,.button{border:1px solid var(--blue);background:var(--blue);color:#fff;cursor:pointer;border-radius:.55rem;justify-content:center;align-items:center;gap:.4rem;min-height:2.75rem;padding:.55rem .95rem;font-weight:700;text-decoration:none;display:inline-flex}button:hover,.button:hover{background:var(--blue-dark);color:#fff}button:disabled{opacity:.55;cursor:not-allowed}.button-secondary,.button.secondary{border-color:var(--blue);color:var(--blue-dark);background:#fff}.button-quiet{color:var(--blue-dark);background:0 0;border-color:#0000}.button-secondary:hover,.button.secondary:hover,.button-quiet:hover{background:var(--blue-soft);color:var(--blue-dark)}label{margin:.8rem 0 .3rem;font-weight:700;display:block}label:has(>input:is([type=radio],[type=checkbox])){grid-template-columns:1.25rem minmax(0,1fr);align-items:start;column-gap:.5rem;display:grid}label>input:is([type=radio],[type=checkbox]){width:1.125rem;height:1.125rem;min-height:0;margin:.25rem 0 0;padding:0}input,select,textarea{width:100%;max-width:35rem;min-height:2.75rem;color:var(--ink);background:#fff;border:1px solid #9aabc0;border-radius:.5rem;padding:.55rem .7rem}textarea{resize:vertical;min-height:8rem}.coding-task{border:1px solid #b9d1ea;border-left:4px solid var(--blue);background:var(--blue-soft);border-radius:.75rem;gap:.9rem;padding:1rem 1.15rem;line-height:1.5;display:flex}.coding-task strong{color:var(--blue-dark);flex:none}.coding-task code{font-weight:800}.coding-workspace{grid-template-columns:minmax(0,1.35fr) minmax(310px,.65fr);align-items:start;gap:1rem;display:grid}.code-panel,.test-panel{border:1px solid var(--line);min-width:0;box-shadow:var(--shadow);background:#fff;border-radius:1rem;overflow:hidden}.code-panel__toolbar,.code-panel__actions,.test-panel__title{justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.code-panel__toolbar{color:#eef5ff;background:#18243a;font-size:.85rem;font-weight:700}.code-panel__toolbar>div{align-items:center;gap:.55rem;display:flex}.code-panel__dot{background:#75d5a3;border-radius:50%;width:.65rem;height:.65rem;box-shadow:0 0 0 4px #75d5a326}.code-toolbar-button{color:#eef5ff;background:0 0;border-color:#94a7c2;min-height:2.25rem;padding:.35rem .65rem}.code-toolbar-button:hover{background:#2b3b56}.coding-editor{resize:vertical;color:#e8efff;tab-size:4;background:#0f1727;border:0;border-radius:0;outline:none;width:100%;max-width:none;min-height:510px;padding:1.1rem;font:14px/1.62 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:block}.coding-editor:focus{border:0;box-shadow:inset 0 0 0 3px #e4a64e}.code-panel__help{border-top:1px solid var(--line);max-width:none;color:var(--muted);margin:0;padding:.7rem 1rem;font-size:.78rem}.code-panel__actions{border-top:1px solid var(--line)}.code-panel__actions>span{color:var(--muted);font-size:.82rem}.test-panel{min-height:320px}.test-panel__title{border-bottom:1px solid var(--line);justify-content:flex-start}.test-panel__title h2{margin:0;font-size:1rem}.test-panel__empty{text-align:center;color:var(--muted);justify-items:center;gap:.5rem;padding:4rem 2rem;display:grid}.test-panel__empty p{margin:0}.test-panel__content .feedback{margin:1rem}.compiler-errors,.test-results{margin:0;padding:.25rem 1rem 1rem;list-style:none}.compiler-errors li{background:var(--danger-bg);color:var(--danger);border-radius:.5rem;margin:.5rem 0;padding:.7rem;font:.82rem/1.45 ui-monospace,monospace}.test-results li{border-bottom:1px solid #e7edf4;gap:.65rem;padding:.8rem 0;display:flex}.test-results li:last-child{border:0}.test-results li>svg{flex:none;margin-top:.12rem}.test-results li.passed>svg{color:var(--success);fill:var(--success-bg)}.test-results li.failed>svg{color:var(--danger);fill:var(--danger-bg)}.test-results strong,.test-results span{display:block}.test-results strong{font-size:.87rem}.test-results span{color:var(--muted);margin-top:.2rem;font-size:.78rem;line-height:1.4}.coding-disclaimer{color:var(--muted);margin:0;font-size:.82rem}input:focus,select:focus,textarea:focus{border-color:var(--blue)}.feedback{border:1px solid;border-radius:.75rem;grid-template-columns:auto 1fr;gap:.8rem;padding:1rem 1.1rem;display:grid}.feedback h2{margin:0 0 .25rem;font-size:1rem}.feedback p{margin:.25rem 0}.feedback-icon{border:2px solid;border-radius:50%;place-items:center;width:1.65rem;height:1.65rem;font-weight:900;display:grid}.feedback-success{color:var(--success);background:var(--success-bg);border-color:#8fc6a7}.feedback-error{color:var(--danger);background:var(--danger-bg);border-color:#e0a4aa}.feedback-info{color:var(--navy);background:var(--blue-soft);border-color:#a5c5e5}.feedback-warning{color:var(--warning);background:var(--warning-bg);border-color:#dec36f}.feedback div{color:var(--ink)}.hash-table-wrap{border:1px solid var(--line);background:#fff;border-radius:.75rem;max-width:100%;overflow-x:auto}.hash-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.hash-table caption{text-align:left;color:var(--navy);padding:.8rem;font-weight:800}.hash-table th,.hash-table td{border-top:1px solid var(--line);text-align:left;vertical-align:middle;padding:.65rem .8rem}.hash-table thead th{color:var(--navy);text-transform:uppercase;letter-spacing:.04em;background:#edf3f9;font-size:.82rem}.hash-table tbody th{width:5rem;font-family:ui-monospace,SFMono-Regular,Consolas,monospace}.hash-table td small{color:var(--muted);margin-top:.2rem;display:block}.slot-button{width:100%;min-width:4rem;min-height:2.6rem;color:var(--ink);background:#fff;border-color:#9eb2ca}.slot-button:hover{background:var(--blue-soft);color:var(--ink)}.state-marker{border:2px solid;border-radius:50%;width:.62rem;height:.62rem}.slot-current{box-shadow:inset 4px 0 var(--blue);background:#e9f3fd}.slot-visited{background:#fff8dc;box-shadow:inset 4px 0 #aa7900}.slot-collision{box-shadow:inset 4px 0 var(--danger);background:#fff0f1}.slot-tombstone{background:#f3effa;box-shadow:inset 4px 0 #6c4c92}.slot-selected .slot-button{outline:3px solid var(--blue);outline-offset:-3px}.progress-page{gap:1.25rem;display:grid}.score-summary__value{color:var(--navy);margin:.25rem 0;font-size:clamp(1.8rem,5vw,2.8rem);font-weight:850}.progress-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,285px),1fr));gap:.8rem;padding:0;list-style-position:inside;display:grid}.progress-list>li{border:1px solid var(--line);background:#fff;border-radius:.75rem;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1rem;display:flex}.progress-list h3{margin:0;display:inline}.progress-list p{color:var(--muted);margin:.4rem 0}.name-gate{background:linear-gradient(145deg,#edf6ff,#f9fbfd);place-items:center;min-height:100vh;padding:1rem;display:grid}.name-gate__card{width:min(36rem,100%)}.name-gate form{gap:.65rem;display:grid}.notice{border-left:4px solid var(--blue);background:var(--blue-soft);padding:.7rem .9rem}.returning-students{border-top:1px solid var(--line);margin-top:1.5rem;padding-top:1rem}.returning-students ul{gap:.5rem;padding:0;list-style:none;display:grid}@media (width<=620px){.header-inner,.activity-heading,.section-heading{flex-direction:column;align-items:stretch}.header-inner{min-height:auto}.primary-nav{width:100%}.primary-nav a{text-align:center;flex:1}.activity-nav-label{display:none}.progress-list>li{flex-direction:column}.progress-list button{width:100%}.hash-table th,.hash-table td{padding:.55rem}}@media (width<=900px){.cluster-hunt-grid,.coding-workspace{grid-template-columns:1fr}.coding-editor{min-height:430px}}@media (width<=550px){.coding-task{flex-direction:column;gap:.25rem}.code-panel__toolbar,.code-panel__actions{flex-direction:column;align-items:stretch}.code-toolbar-button,.code-panel__actions button{width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}@media (prefers-contrast:more){:root{--line:#6c7888}button,.button,input,select,textarea{border-width:2px}}
