@charset "UTF-8";
:root{--paper:#f7f3e9;--ink:#302d37;--muted:#66626c;--line:#dcd7cb;--green:#246b56;--green-light:#e0eee2;--orange:#bd612e;--orange-light:#faead6;--cream:#fffdf7;--purple:#59506c;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,textarea{font:inherit}button,a,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}a{color:inherit}button{color:inherit}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #346eaf;outline-offset:4px}textarea:focus-visible{outline:0;box-shadow:inset 0 0 0 2px #e1b37c}button[hidden],[hidden]{display:none!important}code,kbd,pre{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}code{font-size:.88em}p{line-height:1.58}h1,h2,h3,p{margin-top:0}button{border:0;background:none}kbd{font-size:11px}.skip-link{position:absolute;left:16px;top:-100px;background:var(--ink);color:white;padding:12px;z-index:50}.skip-link:focus{top:8px}
.site-header{max-width:1550px;margin:auto;padding:24px 4.2%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:18px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-weight:800;font-size:23px;letter-spacing:-.6px}.brand small{display:block;font-size:11px;font-weight:500;letter-spacing:.6px;color:var(--muted);margin-top:4px}.site-header nav{display:flex;gap:15px;align-items:center}.quiet-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:9px 5px;font-size:13px;font-weight:650;text-decoration:none;border-radius:5px}.quiet-button:hover{color:var(--green)}#total-progress{font-size:11px;padding:5px 7px;border-radius:20px;background:#e7e2d7;color:var(--muted)}
#game{max-width:1550px;margin:auto;display:grid;grid-template-columns:minmax(350px,.85fr) minmax(530px,1.35fr)}.lesson{padding:36px 8% 30px 12%;border-right:1px solid var(--line)}.chapter-line{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;color:var(--muted);margin-bottom:22px}#chapter-name{color:var(--green);font-weight:750;letter-spacing:.3px}h1{font-family:Georgia,"Times New Roman",serif;font-weight:500;font-size:39px;letter-spacing:-1.3px;line-height:1.1;margin-bottom:22px;outline:none}.lesson-copy{font-size:14px;line-height:1.6}.lesson-copy p{margin-bottom:14px}.lesson-copy code,.reference-content code{background:#e9e4da;border-radius:4px;padding:2px 4px}.mission{display:flex;align-items:flex-start;gap:12px;border-top:1px solid var(--line);padding-top:18px;margin:20px 0 24px}.mission-icon{font-size:27px;line-height:1;color:var(--green)}.mission p{margin:0;font-size:14px;font-weight:650;line-height:1.5}.editor-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.editor-top label{font-size:12px;font-weight:750}.text-button{padding:0;font-size:12px;color:var(--green);text-decoration:underline;text-underline-offset:3px;line-height:1.5}.editor{background:#302d37;color:#f8efdf;border-radius:9px;box-shadow:0 4px 0 #e2dccf;overflow:hidden}.editor-caption{padding:13px 17px;border-bottom:1px solid #514b57;font-size:11px;color:#c9c0cc;display:flex;gap:8px;align-items:center}.status-dot{background:#dca963;width:7px;height:7px;display:inline-block;border-radius:50%}.code-input{display:flex;gap:10px;padding:10px 12px 12px}.code-input>span{color:#948a9b;font:12px/1.75 ui-monospace,monospace;padding-top:5px}textarea{display:block;resize:vertical;min-height:94px;max-height:280px;background:transparent;color:#ffe0a8;border:0;border-radius:4px;width:100%;padding:4px;font-size:13px;line-height:1.75;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;tab-size:2;overflow-wrap:anywhere}.editor-help{font-size:10px;color:var(--muted);margin:11px 0 21px}.action-row{display:flex;gap:17px;align-items:center}.primary-button,.next-button{background:var(--green);color:#fff;border-radius:6px;padding:13px 18px;display:inline-flex;align-items:center;justify-content:space-between;gap:26px;font-size:13px;font-weight:700;box-shadow:0 3px 0 #184f3f}.primary-button:hover,.next-button:hover{background:#195842}.next-button{background:transparent;box-shadow:none;color:var(--green);border:1px solid #9bbda4;margin-top:6px}.hint-box{font-size:12px;border-left:3px solid #ce9754;background:#f2e8d7;padding:14px;margin-top:20px;border-radius:0 6px 6px 0}.hint-box p{margin:7px 0 0}.hint-box pre{font-size:12px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}.solution-button{margin-top:12px}.result{font-size:13px;font-weight:650;margin-top:18px;line-height:1.5}.result:empty{margin:0}.success{color:var(--green)}.retry{color:#8c4c25}
.playground{padding:32px 7% 24px 6%;background:radial-gradient(#ddd7ca .7px,transparent .7px);background-size:16px 16px}.board-top{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:24px}.eyebrow{font-size:9px;font-weight:750;letter-spacing:1.4px;color:var(--muted)}.board-top h2{font-family:Georgia,"Times New Roman",serif;font-size:24px;font-weight:500;letter-spacing:-.4px;margin:7px 0 0}.score-badge{font-size:11px;white-space:nowrap;color:var(--muted);border:1px solid var(--line);background:var(--paper);padding:7px 10px;border-radius:20px}.all-matched{color:var(--green);border-color:#91b69d;background:var(--green-light)}.origin-scene{background:#eee8dc;border:1px solid #d4cdbf;border-radius:9px;min-height:130px;display:flex;align-items:center;gap:18px;padding:18px 19px;position:relative}.origin-details{min-width:0;flex:1}.origin-details>code{display:block;font-size:12px;overflow-wrap:anywhere;margin-top:8px;font-weight:650;line-height:1.55}.origin-details p{font-size:11px;line-height:1.4;margin:7px 0 0}.stored{color:var(--green)}.not-stored{color:#8c4c25}.bakery{flex:none;width:80px;height:85px;border:2px solid #71624c;border-radius:4px;background:#ead09d;position:relative;margin-top:15px}.awning{position:absolute;left:-6px;right:-6px;top:-18px;height:25px;background:repeating-linear-gradient(90deg,#457763 0 14px,#f7edda 14px 28px);border:2px solid #71624c;border-radius:4px 4px 7px 7px;transform:perspective(80px) rotateX(15deg)}.bakery-title{display:block;text-align:center;font-size:8px;font-weight:800;letter-spacing:1.2px;margin-top:15px}.bakery-door{position:absolute;bottom:0;left:9px;width:20px;height:40px;background:#655345;border:3px solid #f6e3be;border-bottom:0;border-radius:9px 9px 0 0}.bakery-window{position:absolute;right:7px;bottom:12px;font-size:11px;line-height:1.1;letter-spacing:1px;background:#fff1c9;padding:3px;color:#986835;border:2px solid #71624c}.jar{flex:none;border:2px solid #a9ada3;background:linear-gradient(100deg,#fff7 0 10%,#ffffff25 10% 80%,#fff9 80%);border-radius:7px 7px 16px 16px;width:59px;height:67px;position:relative;display:flex;align-items:center;justify-content:center;margin-left:1px}.jar-lid{position:absolute;top:-9px;width:61px;left:-3px;border:2px solid #7c8d7d;height:11px;background:#b6c7ae;border-radius:4px}.route-key{display:flex;gap:16px;align-items:center;font-size:10px;margin:22px 0 13px;color:var(--muted);flex-wrap:wrap}.route-key>span{display:flex;align-items:center;gap:5px}.key-dot{display:inline-block;width:8px;height:8px;border-radius:3px}.wanted{background:#5b9376}.unwanted{background:#c59572}.preview-label{margin-left:auto;color:var(--purple)}.routes{display:grid;grid-template-columns:1fr 1fr;gap:12px}.route-card{border:1px solid #d9d3c7;border-radius:9px;background:var(--cream);padding:14px;min-width:0;transition:border-color .2s,background .2s}.route-card.checked.matching{border-color:#83ad8b}.route-card.checked.mismatching{border-color:#c78c5e;background:#fff7eb}.route-heading{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-bottom:12px}.route-number{font:10px ui-monospace,monospace;color:#8b8277}.goal-pill{font-size:9px;font-weight:700;border-radius:4px;padding:4px 6px}.include{color:#2c6b50;background:#e6efdf}.exclude{color:#86512b;background:#f4e6d7}.route-card h3{font-size:13px;margin-bottom:7px;font-weight:700;line-height:1.4}.route-url{display:block;overflow-wrap:anywhere;font-size:10px;line-height:1.6;color:#5c5565}.site-context{font-size:9px;margin:6px 0;color:var(--muted);overflow-wrap:anywhere}.route-context{font-size:9px;color:var(--muted);margin:8px 0 12px;line-height:1.5}.delivery-state{display:flex;align-items:center;gap:8px;border-top:1px dashed #ddd4c4;padding-top:9px;font-size:10px;font-weight:650;min-height:49px}.cookie-token{position:relative;display:grid;place-items:center;width:36px;height:36px;flex-shrink:0}.cookie-token.held img{opacity:.18;filter:grayscale(1)}.cookie-token.held>span{position:absolute;inset:0;display:grid;place-items:center;font-size:25px;color:#9b8c7d}.match-symbol{margin-left:auto;font-size:16px;color:var(--green)}.mismatching .match-symbol{color:#a77b48}.route-explanation{font-size:11px;line-height:1.5;margin:10px 0 0;color:#5e5862;border-top:1px solid #e8dfd1;padding-top:9px}.inspector{background:#f5f0e7;border:1px solid var(--line);border-radius:6px;margin-top:17px;font-size:11px}.inspector summary{cursor:pointer;list-style:none;font-weight:650;padding:12px;display:flex;justify-content:space-between;align-items:center}.inspector dl{padding:0 12px 12px;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:8px 17px}.inspector dl>div{display:flex;justify-content:space-between;gap:10px;min-width:0}.inspector dt{color:var(--muted)}.inspector dd{margin:0;font-family:ui-monospace,monospace;overflow-wrap:anywhere;text-align:right}.inspector p{padding:0 12px 12px;margin:0}.model-note{color:var(--muted);font-size:10px;margin:17px 0 0;line-height:1.7}.model-note button{font-size:10px;margin-left:3px}.delivery-log{font-size:11px;padding:14px 0 0}.delivery-log h3{font-size:12px}.delivery-log ol{padding-left:18px}.delivery-log li{margin-bottom:6px;line-height:1.5}
.game-footer{max-width:1550px;margin:auto;display:flex;align-items:center;gap:20px;padding:16px 4.2%;border-top:1px solid var(--line);min-height:72px}.chapter-progress{display:flex;gap:7px;flex:1;justify-content:center}.level-dot{height:29px;width:29px;border-radius:50%;font-size:11px;border:1px solid var(--line);background:#eee8dd;color:var(--muted)}.level-dot.current{border-color:var(--green);background:var(--green);color:white}.level-dot.solved:not(.current){background:var(--green-light);color:var(--green);border-color:#acc6ac}#footer-concept{font-size:11px;color:var(--muted);text-align:right;max-width:36%}
dialog{background:var(--paper);color:var(--ink);border:1px solid #bdb4a6;border-radius:15px;width:min(760px,calc(100% - 30px));padding:28px;max-height:88dvh;box-shadow:0 24px 80px #211d2944}dialog::backdrop{background:#2f2a3c80;backdrop-filter:blur(3px)}.dialog-header{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;border-bottom:1px solid var(--line);padding-bottom:20px;margin-bottom:22px}.dialog-header h2{font:30px Georgia,serif;letter-spacing:-.7px;margin:7px 0 0}.close-dialog{font-size:29px;line-height:1;padding:0 5px;color:var(--muted)}.level-chapter{margin-bottom:24px}.level-chapter h3{font-size:14px;margin-bottom:6px}.level-chapter>p{font-size:11px;color:var(--muted);margin-bottom:12px}.level-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.level-choice{text-align:left;display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:6px;padding:11px;background:var(--cream)}.level-choice:hover,.level-choice[aria-current]{border-color:var(--green)}.level-choice span{font-size:12px;color:var(--muted)}.level-choice b{font-weight:600;font-size:12px}.level-choice.solved span{color:var(--green)}.reference-content{font-size:13px}.reference-content h3{font-size:16px;margin-top:25px}.flow{display:flex;align-items:center;justify-content:space-between;gap:6px;background:var(--green-light);padding:16px;border-radius:8px;margin:20px 0}.flow b{display:block;font-size:12px}.flow small{display:block;font-size:10px;margin-top:4px;color:var(--green)}.reference-list{margin:20px 0}.reference-list dt{font-family:ui-monospace,monospace;font-size:12px;font-weight:700;margin-top:16px;color:var(--green)}.reference-list dd{margin:6px 0 0;line-height:1.65}.reference-content li{margin:8px 0}.reference-content a{color:var(--green);text-underline-offset:3px}.checking{animation:press .25s ease}.matching.checked .delivered{animation:arrive .35s ease}@keyframes arrive{from{transform:translateY(-7px) rotate(-12deg);opacity:.5}to{transform:none;opacity:1}}@keyframes press{50%{transform:translateY(2px)}}
.target-label{font-size:11px;margin:18px 0 12px;color:var(--muted)}.target-label code{font-size:11px;font-weight:700;color:var(--ink);margin-left:6px}.origin-label{font-size:11px;color:var(--muted)}.header-warning{font-size:12px;color:#8c4c25;background:var(--orange-light);border-radius:5px;padding:10px;line-height:1.5}.delivery-state>span{overflow-wrap:anywhere;min-width:0}
@media(min-width:1450px){h1{font-size:46px}.lesson-copy{font-size:15px}.route-card{padding:17px}.route-card h3{font-size:14px}.route-url{font-size:11px}.route-context,.site-context{font-size:10px}}
@media(max-width:1050px){.site-header{padding:20px 3%}.lesson{padding:30px 7%}#game{grid-template-columns:minmax(310px,.9fr) minmax(450px,1.2fr)}h1{font-size:34px}.playground{padding:30px 5%}.board-top h2{font-size:21px}.jar{display:none}.origin-scene{gap:13px;padding:15px}.board-top{gap:8px}.score-badge{padding:6px;font-size:10px}.routes{gap:9px}.route-card{padding:12px}.route-key{gap:9px}.preview-label{display:none!important}}
@media(max-width:790px){.site-header{padding:17px 5%;gap:14px}.brand{font-size:20px}.brand small{font-size:9px}.brand img{width:32px;height:32px}.site-header nav{gap:10px}.site-header nav .quiet-button{font-size:11px}.source-link{display:none!important}#game{display:block}.lesson{padding:28px 6%;border-right:0;border-bottom:1px solid var(--line)}h1{font-size:37px}.lesson-copy{font-size:14px}.playground{padding:28px 6%}.origin-scene{gap:20px}.jar{display:flex}.routes{gap:12px}.route-card{padding:15px}.route-card h3{font-size:14px}.route-url{font-size:11px}.route-context{font-size:10px}.route-key{gap:15px}.game-footer{padding:15px 6%}.board-top h2{font-size:25px}.score-badge{font-size:11px}.chapter-line{margin-bottom:17px}.mission{margin-bottom:20px}#footer-concept{display:none}.chapter-progress{justify-content:flex-end}.game-footer{gap:12px}.origin-details>code{font-size:12px}}
@media(max-width:430px){.site-header{align-items:flex-start}.site-header nav{gap:3px;flex-direction:column;align-items:flex-end}.site-header nav .quiet-button{padding:2px}.brand small{letter-spacing:.2px}.routes{grid-template-columns:1fr}.route-card{padding:16px}.route-heading{margin-bottom:8px}.route-url{font-size:12px}.route-context,.site-context{font-size:11px}.delivery-state{font-size:12px}.route-explanation{font-size:12px}.board-top{align-items:flex-start}.board-top h2{font-size:24px;max-width:220px}.score-badge{margin-top:20px}.jar{display:none}.level-grid{grid-template-columns:1fr}dialog{padding:22px}.flow{padding:12px;gap:8px}.flow b{font-size:10px}.flow small{font-size:9px}.inspector dl{grid-template-columns:1fr}.primary-button{gap:15px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
