@font-face{font-family:Outfit;src:url(assets/fonts/outfit-regular.ttf)}@font-face{font-family:Outfit;src:url(assets/fonts/outfit-bold.ttf);font-weight:700}
:root{--paper:#f8f6f1;--ink:#161919;--green:#112726;--dim:#465350;--red:#ba2029;--rule:#d6d9d1;font:16px Outfit,system-ui,sans-serif;color:var(--ink);background:var(--paper)}
*{box-sizing:border-box}body{margin:0}.wrap{width:min(1440px,100%);margin:auto;padding-inline:clamp(20px,5vw,78px)}header{background:white}.mast{display:flex;align-items:center;justify-content:space-between;height:68px}.mast img{width:116px}.mast span{font-size:15px;color:var(--dim)}
.banner{color:white;background-color:#101e1d;background-image:linear-gradient(90deg,var(--green) 25%,rgba(17,39,38,.96) 43%,rgba(17,39,38,.2) 77%),url(assets/day-1-hero.jpg);background-position:center,right 43%;background-size:auto, max(60%,650px) auto;background-repeat:no-repeat}.banner .wrap{padding-block:30px 34px}.banner h1{font-size:clamp(39px,4.5vw,64px);letter-spacing:-.04em;line-height:1;margin:0}.banner p{margin:12px 0 0;color:#eef2ee;font-size:17px}
main.wrap{display:grid;grid-template-columns:clamp(215px,20vw,268px) minmax(0,1fr);gap:clamp(26px,4vw,65px);padding-block:32px 35px}aside{border-right:1px solid var(--rule);padding-right:24px}aside h2{margin:3px 0 18px;font-size:21px}aside label{font-size:14px;color:var(--dim);display:block;margin-bottom:5px}button,select,input{font:inherit}button,select{cursor:pointer}select{width:100%;background:#fff;color:var(--ink);border:1px solid #b4b9b2;border-radius:5px;padding:9px 5px;font-size:15px}
nav{display:grid;gap:4px;margin:16px 0}.lesson,.practice{border:0;background:none;text-align:left;padding:10px 8px;width:100%;color:var(--ink);border-radius:4px;display:flex;align-items:center;gap:9px}.lesson small{color:var(--dim);font-variant-numeric:tabular-nums;font-size:13px}.lesson[aria-current=true],.practice[aria-current=true]{color:var(--red);background:#f2e5df;font-weight:bold}.lesson[aria-current=true] small{color:inherit}.lesson:hover,.practice:hover{background:#ebe9e2}.practice{border-top:1px solid var(--rule);border-radius:0;padding-top:14px}.practice span{font-size:20px}
.workspace{min-width:0}.workspace h2{font-size:clamp(27px,2.5vw,38px);letter-spacing:-.035em;margin:0;line-height:1.15}#task{color:var(--dim);margin:7px 0 18px;line-height:1.45}.workbench{overflow:hidden;border:1px solid #bfc5bc;border-radius:9px;background:white}.editorbar,.consolebar,.actions,footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.editorbar{padding:8px 14px;background:#eeede7;border-bottom:1px solid var(--rule)}#file,#output,.cm-editor,.cm-scroller,#answer{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}#file{font-size:14px}.actions{gap:8px}button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #27766d;outline-offset:2px}button:disabled{opacity:.6;cursor:wait}.primary,.send{background:var(--red);color:white;border:0;border-radius:5px;padding:8px 15px;display:inline-flex;align-items:center;gap:6px;font-weight:700}.primary:hover,.send:hover{background:#951821}.primary svg{width:15px;height:15px}.quiet{border:0;background:none;color:var(--dim);padding:8px}.quiet:hover{text-decoration:underline}
.cm-editor{font-size:15px;height:clamp(225px,30vh,390px)}.cm-editor .cm-scroller{overflow:auto;line-height:1.65}.cm-editor .cm-content{padding:14px 0;caret-color:var(--red)}.cm-editor .cm-line{padding:0 14px}.cm-editor .cm-gutters{background:#fafaf7;border:0;color:#63726d;padding-left:4px}.cm-editor .cm-activeLine,.cm-editor .cm-activeLineGutter{background:#f5f5ee}.cm-editor.cm-focused{outline:2px solid #40857a;outline-offset:-2px}
.console{background:var(--green);color:#f8f6f1;padding:14px 18px 18px}.consolebar h3{font-size:17px;margin:0}.consolebar #status{font-size:13px;color:#c1d5cc}#output{font-size:14px;line-height:1.55;min-height:65px;max-height:240px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;margin:12px 0 0}#output.idle{color:#bdd0c7}#input-form{margin-top:12px}#input-form label{font-size:14px}#input-form div{display:flex;gap:8px;margin-top:4px}#answer{min-width:0;flex:1;padding:8px;border-radius:4px;border:0}footer{color:var(--dim);font-size:13px;padding-top:10px}::selection{background:#cce2d9;color:var(--ink)}[hidden]{display:none!important}
@media(max-width:760px){main.wrap{grid-template-columns:minmax(0,1fr);gap:22px;padding-block:20px}.banner .wrap{padding-block:25px}.banner{background-size:auto,cover}.mast{height:56px}.mast img{width:95px}aside{border:0;padding:0}aside h2{font-size:19px;margin:0 0 9px}aside label{display:none}nav{display:flex;overflow-x:auto;margin:8px 0;gap:4px}.lesson{width:auto;flex:none;padding:8px}.practice{padding:6px;width:auto;border:0}.editorbar{padding:7px 9px}.cm-editor{height:230px}}
@media(max-width:420px){.mast span{font-size:13px}.editorbar{gap:4px}.actions{gap:0}#file{font-size:12px}.primary{padding:8px 11px}.banner p{font-size:15px}.banner{background-image:linear-gradient(90deg,rgba(17,39,38,.94),rgba(17,39,38,.70)),url(assets/day-1-hero.jpg)}}

#day + label{margin-top:12px}#files{width:auto;max-width:52%;font:14px ui-monospace,monospace}#reference{margin:0 0 14px;color:var(--dim)}#reference summary{cursor:pointer}#reference pre{white-space:pre-wrap;overflow-wrap:anywhere}#reference p{font-weight:bold}



/* Keep navigation inside the viewport, with the selectors and practice action pinned. */
html,body{overflow:hidden}
body{height:100vh;height:100dvh;display:grid;grid-template-rows:auto auto minmax(0,1fr)}
main.wrap{margin-block:0;min-height:0;grid-template-rows:minmax(0,1fr);grid-template-columns:clamp(240px,23vw,304px) minmax(0,1fr);padding-block:clamp(14px,3vh,32px)}
aside,#library-panel{display:flex;flex-direction:column;min-height:0;min-width:0}
aside{padding-right:clamp(16px,1.7vw,26px)}
aside h2{font-size:19px;line-height:1.2;margin:0 0 17px}
#library-panel{flex:1}
#library-panel label{display:block;font-size:12px;font-weight:700;margin-bottom:5px}
#day + label{margin-top:12px}
#library-panel select{flex:none;appearance:none;min-height:36px;border:1px solid #c7cbc3;border-radius:7px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none' stroke='%23515d55' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5'%3E%3Cpath d='m5 6 3-3 3 3m-6 4 3 3 3-3'/%3E%3C/svg%3E") no-repeat right 10px center;padding:7px 31px 7px 10px;color:var(--ink);font-size:13px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}
#library-panel select:hover{border-color:#929c92}
@supports (appearance:base-select){
  #library-panel select,#library-panel select::picker(select){appearance:base-select}
  #library-panel select::picker-icon{display:none}
  #library-panel select::picker(select){background:#fff;color:var(--ink);border:1px solid var(--rule);border-radius:8px;box-shadow:0 6px 18px #11272620;padding:4px;margin-block:4px;max-width:min(23rem,calc(100vw - 32px));font:13px Outfit,system-ui,sans-serif}
  #library-panel option{padding:8px 10px;border-radius:4px;gap:8px;white-space:normal;line-height:1.35}
  #library-panel option:checked{background:#f3f4ee;font-weight:bold}
  #library-panel option:hover,#library-panel option:focus-visible{background:#eaece5}
  #library-panel option::checkmark{color:var(--red);order:2;margin-left:auto}
}
#list{display:flex;flex-direction:column;gap:2px;margin:14px 0 0;padding:8px 3px 8px 0;border-top:1px solid var(--rule);min-height:0;flex:1;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#b4bdb3 transparent}
.lesson{flex:none;width:100%;min-height:32px;padding:6px 7px;gap:8px;font-size:13px;line-height:1.3;border-radius:5px}
.lesson small{flex:0 0 21px;text-align:center;font-size:11px}
.lesson .kind{margin-left:auto;font-size:10px;color:var(--dim)}
.practice{flex:none;width:100%;padding:10px 6px 2px;font-size:13px}
.workspace{min-height:0;overflow:auto;overscroll-behavior:contain;display:flex;flex-direction:column}
.workspace h2,#task,footer,.editorbar,.consolebar{flex:none}
.workbench{display:flex;flex-direction:column;flex:1 0 170px;min-height:0}
#editor{flex:1 1 52%;min-height:60px;overflow:hidden}
.cm-editor{height:100%}
.console{display:flex;flex-direction:column;flex:0 1 auto;max-height:52%;min-height:56px;overflow:auto}
#output{min-height:1.55em;max-height:160px;flex:1 1 auto}
#reference[open]{max-height:24vh;overflow:auto;flex:none}
.library-toggle{display:none}
@media(max-width:760px){
  main.wrap{position:relative;grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:12px}
  aside{padding:0;align-items:stretch}
  aside h2{display:none}
  .library-toggle{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:white;border:1px solid var(--rule);border-radius:6px;color:var(--ink);font-weight:700;font-size:14px}
  .chevron{width:8px;height:8px;border:solid var(--dim);border-width:0 1.5px 1.5px 0;transform:translateY(-2px) rotate(45deg)}
  .library-toggle[aria-expanded=true] .chevron{transform:translateY(2px) rotate(225deg)}
  #library-panel{display:none;position:absolute;z-index:5;inset:54px clamp(20px,5vw,78px) 12px;padding:14px;background:var(--paper);border:1px solid var(--rule);border-radius:8px}
  .library-toggle[aria-expanded=true] + #library-panel{display:flex}
  #list{overflow-x:hidden}
}
@media(max-height:720px){.banner .wrap{padding-block:14px}.banner h1{font-size:38px}.banner p{margin-top:5px}.mast{height:48px}}
@media(max-height:480px){.banner{display:none}body{grid-template-rows:auto minmax(0,1fr)}.mast{height:38px}.mast img{width:82px}main.wrap{padding-block:8px}.workspace h2{font-size:22px}}
