@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap');
:root{--ink:#20382d;--muted:#718077;--paper:#f6f7f1;--line:#dce2d8;--lime:#d5f577}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0;background:var(--paper);color:var(--ink);font:15px 'DM Sans',Arial,sans-serif}button,input,select{font:inherit}button,a{ -webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:inherit;text-decoration:none}header{max-width:1320px;margin:auto;padding:27px 48px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:18px;letter-spacing:-.5px}.logo{font:700 31px 'Space Grotesk',sans-serif;position:relative}.logo span{color:#90ac35}nav{display:flex;align-items:center;gap:30px;font-size:13px}.small,.secondary{background:transparent;border:1px solid var(--line);padding:12px 17px;border-radius:7px;color:var(--ink)}main{max-width:1320px;margin:auto;padding:0 48px}.hero{display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:center;padding:77px 0 70px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;display:flex;gap:9px;align-items:center}.eyebrow>span{height:6px;width:6px;background:#70983c;border-radius:50%}h1,h2,h3{font-family:'Space Grotesk',Arial,sans-serif;letter-spacing:-1.8px}h1{font-size:66px;line-height:1.05;margin:25px 0}em{font-style:normal;color:#718d40}p{line-height:1.75}.hero p{color:var(--muted);font-size:16px}.actions{display:flex;align-items:center;gap:24px;margin:28px 0}.primary{background:var(--ink);color:white;border:0;border-radius:7px;padding:15px 20px;font-weight:600}.primary span{margin-left:30px}.textlink{font-size:12px;font-weight:600}.stats{display:flex;gap:38px;margin-top:38px}.stats div{display:flex;flex-direction:column;gap:5px}.stats strong{font-family:'Space Grotesk';font-size:23px}.stats span{font-size:11px;color:var(--muted)}.hero-art{background:#1e352b;color:#cdd8cb;padding:25px;border-radius:14px;transform:rotate(-1deg);box-shadow:0 20px 50px #23372b12}.art-label{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1.5px}.art-label span{color:#82968a}.artnodes circle{fill:#294137;stroke:#708776;stroke-width:1.4}.artnodes .lime{fill:var(--lime);stroke:var(--lime)}.art-foot{display:flex;justify-content:space-between;align-items:center;font:10px monospace}.pill{border:1px solid #78937b55;border-radius:20px;padding:8px 12px;font-size:10px;letter-spacing:.5px}section:not(.hero){padding:40px 0 60px;border-top:1px solid var(--line)}.sectionhead{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px}h2{font-size:31px;letter-spacing:-1.2px;margin:13px 0 0}.progress{font-size:11px;color:var(--muted);width:160px}.progress>div{background:#e4e8dc;border-radius:10px;height:5px;margin-top:10px;overflow:hidden}.progress i{display:block;background:#849c44;height:100%;width:0}.course-layout{display:grid;grid-template-columns:225px 1fr;gap:38px}aside{padding-right:15px}.stage{display:flex;justify-content:space-between;width:100%;border:0;background:transparent;color:var(--muted);padding:15px 12px;border-radius:6px;text-align:left;font-size:12px}.stage.active{background:#e5ecd8;color:var(--ink);font-weight:700}.stage span{font-size:10px;opacity:.7}.aside-note{color:var(--muted);font-size:12px;line-height:1.8;padding:23px 12px}.searchlabel{display:block;font-size:11px;margin:10px 0}input,select{width:100%;border:1px solid var(--line);padding:11px;border-radius:6px;background:white;color:var(--ink);font-size:12px}.cards{display:grid;grid-template-columns:1fr 1fr;gap:14px}.card{background:#fff;border:1px solid var(--line);border-radius:9px;padding:21px;text-align:left;position:relative;transition:transform .2s,border-color .2s;color:var(--ink)}.card:hover{transform:translateY(-3px);border-color:#90a967}.card-top{display:flex;justify-content:space-between;align-items:center;font:10px monospace;color:var(--muted)}.card h3{font-size:18px;letter-spacing:-.5px;margin:18px 0 8px}.card p{font-size:12px;color:var(--muted);line-height:1.65;margin:0}.card-bottom{margin-top:20px;display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}.card.completed{border-color:#9fb47a;background:#f8fbf2}.card.completed .card-top span:last-child{color:#6a8b38}.lab{margin-top:10px}.lab .sectionhead p{color:var(--muted);font-size:13px;margin:12px 0 0}.labgrid{display:grid;grid-template-columns:1.7fr 1fr;background:white;border:1px solid var(--line);border-radius:12px;overflow:hidden}.graphwrap{padding:18px;background-image:radial-gradient(#dde3d6 1px,transparent 1px);background-size:20px 20px}.graphwrap svg{width:100%;display:block}.legend{display:flex;justify-content:center;gap:22px;font-size:11px;color:var(--muted);padding:12px}.yellow{color:#8b8e36}.green{color:#448764}.controls{padding:26px;border-left:1px solid var(--line)}.controls label{display:block;margin-bottom:9px;font-size:11px;font-weight:600}.controls select{margin-bottom:17px}.labbuttons{display:flex;gap:10px}.labbuttons button{font-size:12px;padding:12px 16px}#trace{font-size:12px;min-height:45px}#distances{display:flex;flex-wrap:wrap;gap:6px;font:11px monospace}#distances span{border:1px solid var(--line);padding:6px;border-radius:4px}.muted{color:var(--muted);font-size:11px}.tablewrap{overflow:auto}table{border-collapse:collapse;width:100%;margin-top:25px;font-size:13px}th,td{text-align:left;padding:17px 15px;border-bottom:1px solid var(--line)}th{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}td:nth-child(2){font-weight:600}footer{border-top:1px solid var(--line);padding:30px 0;display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted)}footer .brand{font-size:13px}dialog{border:0;border-radius:14px;max-width:900px;width:calc(100% - 32px);max-height:90vh;padding:0;color:var(--ink);background:var(--paper)}dialog::backdrop{background:#14261ed0;backdrop-filter:blur(5px)}.dialoghead{display:flex;justify-content:space-between;align-items:center;padding:18px 30px;position:sticky;top:0;background:var(--paper);border-bottom:1px solid var(--line);z-index:1;font-size:11px}.dialoghead button{border:0;background:transparent;font-size:19px}#lessonContent{padding:25px 35px 35px}#lessonContent h2{font-size:35px;margin:0 0 17px}#lessonContent h3{font-size:19px;letter-spacing:-.5px;margin-top:28px}#lessonContent p,#lessonContent li{font-size:14px;line-height:1.8}#lessonContent li{padding:5px 0}pre{background:#1e3329;color:#dceccf;padding:20px;border-radius:8px;overflow:auto;font:12px/1.8 monospace;tab-size:4}.codehead{display:flex;justify-content:space-between;align-items:center}.codehead button{font-size:11px;padding:7px 10px}.callout{padding:14px 18px;border-left:3px solid #a4bd57;background:#ebefdf;border-radius:0 6px 6px 0}.answers{display:flex;flex-direction:column;gap:8px}.answer{text-align:left;padding:12px 15px;background:white;border:1px solid var(--line);border-radius:6px;color:var(--ink)}.answer.correct{background:#dfeccb;border-color:#82a454}.answer.wrong{background:#f5e4dc;border-color:#c7997d}.lessonnav{display:flex;justify-content:space-between;gap:10px;margin-top:30px}details{font-size:13px;border:1px solid var(--line);border-radius:7px;padding:14px;margin-top:15px}summary{cursor:pointer;font-weight:600}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #91ae44;outline-offset:3px}@media(max-width:850px){header{padding:20px 24px}main{padding:0 24px}nav>a{display:none}.hero{grid-template-columns:1fr;padding:45px 0;gap:30px}h1{font-size:53px}.hero-art{max-width:600px;width:100%}.course-layout{grid-template-columns:1fr;gap:20px}aside{display:flex;flex-wrap:wrap;gap:5px;padding:0}.stage{width:auto;padding:10px;font-size:11px;gap:12px}.aside-note,.searchlabel{display:none}aside input{margin-top:8px}.labgrid{grid-template-columns:1fr}.controls{border-left:0;border-top:1px solid var(--line)}.sectionhead{align-items:flex-start}h2{font-size:27px}.progress{min-width:100px;width:100px}.actions{flex-wrap:wrap}.stats{gap:32px}}@media(max-width:520px){.cards{grid-template-columns:1fr}.sectionhead{flex-direction:column}.hero p{font-size:14px}.small{font-size:11px;padding:10px}.brand{font-size:14px}.stats{justify-content:space-between}.lab .sectionhead .pill{display:none}footer{gap:20px;align-items:flex-start}#lessonContent{padding:22px}#lessonContent h2{font-size:29px}.lessonnav{flex-wrap:wrap}h1{font-size:46px}}

.editorbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.editorbar label{font-size:11px}.editorbar select{width:auto;flex:1}.editorbar button{padding:9px;font-size:11px}.graphsettings{border-bottom:1px solid var(--line);margin-bottom:18px;padding-bottom:12px}.graphsettings input[type=checkbox]{width:auto;margin-right:7px}#graph{cursor:crosshair;touch-action:manipulation}#graph [data-vertex],#graph [data-edge]{cursor:pointer}#editHelp{min-height:30px}button:disabled{opacity:.5;cursor:default}

.graphwrap{position:relative}#graph{touch-action:none;user-select:none}#graph [data-vertex]{cursor:grab}#graph.dragging,#graph.dragging [data-vertex]{cursor:grabbing}#graph [data-weight]{cursor:text}#graph [data-weight]:hover rect{fill:#e5ecd8;stroke:#789575}#graph [data-weight]:focus{outline:none}#graph [data-weight]:focus rect{stroke:#70983c;stroke-width:2}.inline-weight{position:absolute;z-index:3;width:100px;padding:7px 8px;transform:translate(-50%,-50%);border:2px solid #70983c;box-shadow:0 3px 12px #20382d22;font-size:13px;text-align:center}.inline-weight[aria-invalid=true]{border-color:#b75b42}

.editorbar .canvas-size{display:flex;align-items:center;gap:6px;white-space:nowrap}.editorbar #canvasSize{width:68px;padding:8px 5px;font-size:12px}.labgrid{align-items:start}#graph{max-width:100%}

.random-generator{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px;font-size:11px}.random-generator label{display:flex;align-items:center;gap:6px}.random-generator input{width:58px;padding:7px 5px}.random-generator button{padding:9px 12px;font-size:11px}

.random-generator select{width:85px;padding:7px}.random-generator .parallel-option{flex-basis:100%;white-space:normal}.random-generator input[type=checkbox]{width:auto}.random-generator input:disabled{background:#e9edde;color:#73806d}#graph:focus-visible{outline:2px solid #b26ad2;outline-offset:2px}
@media(max-width:850px){nav>a.competition-link{display:block}}@media(max-width:520px){header{flex-wrap:wrap;gap:12px}nav{gap:18px}}

/* Keep every destination reachable as the navigation grows. */
nav .editor-link{display:block}nav .editor-link.current{color:#657f2e;font-weight:700}@media(max-width:1100px){header{flex-wrap:wrap;gap:18px}header nav{gap:20px;flex-wrap:wrap}}@media(max-width:850px){header nav{display:flex;width:100%;gap:14px;flex-wrap:wrap}header nav>a{display:block}header nav .small{padding:9px 12px}}@media(max-width:520px){header nav{gap:11px;font-size:11px}}

nav>a.maze-link{display:block}
