:root{color-scheme:dark;--bg:#081e2b;--surface:#102e3b;--ink:#f2f7ed;--muted:#b1c8cb;--line:#34515b;--lime:#ccf568;font-family:ui-rounded,'Hiragino Maru Gothic ProN','Hiragino Kaku Gothic ProN','Yu Gothic',system-ui,sans-serif;font-size:16px;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 65% 0,#173f4d88,transparent 60%);min-height:100vh}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;touch-action:manipulation;color:inherit;border:0;background:none;min-height:44px;transition:background .16s,transform .16s}button:hover:not(:disabled){filter:brightness(1.12)}button:active:not(:disabled){transform:translateY(1px)}button:disabled{opacity:.4;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,canvas:focus-visible{outline:3px solid var(--lime);outline-offset:3px}[hidden]{display:none!important}.shell{max-width:1440px;margin:auto;padding:0 40px}.topbar{min-height:96px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:24px}.brand{display:flex;gap:14px;align-items:center;font-size:20px;font-weight:800;color:inherit;text-decoration:none;line-height:1.35}.brand-symbol{font-family:Georgia,serif;color:var(--lime);font-style:italic;font-size:48px;line-height:1}.brand-symbol span{font-size:30px;letter-spacing:-5px}.brand small{display:block;color:var(--muted);font-size:12px;font-weight:500;letter-spacing:.14em;margin-top:4px}.top-actions{display:flex;align-items:center;gap:8px}.edition{font-size:14px;color:var(--muted);margin-right:8px}.icon-button{display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);border-radius:24px;min-width:44px;font-size:21px;padding:8px 14px}.icon-button span{font-size:14px}.eyebrow{font-size:12px;letter-spacing:.1em;color:var(--muted);margin:0;font-weight:650}.primary-button,.secondary-button{border-radius:12px;font-size:16px;min-height:48px;padding:11px 18px;line-height:1.6}.primary-button{background:var(--lime);color:#233b23;font-weight:750;width:100%}.secondary-button{border:1px solid var(--line);background:#173644}.text-button{font-size:14px;color:var(--lime);padding:8px 12px}.stage-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin:24px 0 16px}.stage-heading h1{font-size:clamp(23px,2.4vw,32px);margin:7px 0 0;line-height:1.45}.stage-counter{display:flex;gap:8px;align-items:baseline;color:var(--muted);white-space:nowrap}.stage-counter>span:first-child{font-size:42px;color:var(--lime);font-variant-numeric:tabular-nums}.mission{display:flex;align-items:center;gap:14px;background:#142f38;border:1px solid #355047;border-radius:16px;padding:14px 18px;margin-bottom:18px}.mission-icon{font-size:30px;color:var(--lime)}.mission p{font-size:16px;line-height:1.6;margin:3px 0 0}.mission .secondary-button{margin-left:auto;flex:none;font-size:14px}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:22px;align-items:start}.play-section{min-width:0}.board-wrap{background:#d2e8e4;color:#23434c;border:1px solid #ecfffa;border-radius:22px;overflow:hidden;box-shadow:0 12px 36px #00101933}.board-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 14px 0;font-size:14px}.board-tools{display:flex;gap:6px}.board-tools button{border-radius:10px;border:1px solid #9dbbb8;background:#ecf6ed;padding:7px 10px;font-size:14px;white-space:nowrap}.board-tools button[aria-pressed=true]{background:#244c48;color:#f3ffe9;border-color:#244c48}.board-scroll{overflow:auto;overscroll-behavior-x:contain;scrollbar-color:#79a39b #d2e8e4}canvas{display:block;width:100%;height:auto}#board{touch-action:none;cursor:pointer}.board-bottom{font-size:12px;text-align:center;line-height:1.6;padding:4px 12px 12px;color:#3a605f}.gimmick-guide{margin-top:18px}.guide-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:14px;margin-bottom:10px}.guide-heading>span:last-child{font-size:12px;color:var(--muted)}.legend{display:flex;flex-wrap:wrap;gap:8px}.legend button{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:12px;padding:7px 12px;background:#112c39;font-size:14px}.legend button[aria-pressed=true]{border-color:var(--gimmick-color);background:#203f49}.legend i{font-style:normal;display:grid;place-items:center;width:27px;height:27px;border-radius:8px;background:var(--gimmick-color);color:#1c3940;font-weight:800}.legend .plate-icon{border-radius:50%}.inspector{display:flex;align-items:flex-start;gap:12px;padding:16px;margin-top:12px;background:#0d2835;border:1px solid var(--line);border-radius:16px;min-height:124px}.inspect-icon{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#234750;color:var(--lime);font-size:21px;font-weight:800}.inspector strong{font-size:16px}.inspector p{font-size:14px;line-height:1.75;color:var(--muted);margin:5px 0}.inspector #inspect-state{color:var(--lime);font-size:14px}.inspector #inspect-state.needs{color:#ffd18e}.inspector>button{flex:none;min-width:32px;font-size:24px;margin-top:-8px;margin-right:-8px}.controls{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:18px;display:flex;flex-direction:column;gap:14px;min-width:0}.panel-label{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--muted)}.panel-label span{font-size:16px;color:var(--lime)}.specimen{height:108px;position:relative;display:flex;align-items:center;justify-content:center;gap:6px}.specimen img{height:122px;width:122px;object-fit:contain;transition:transform .19s}.size-badge{display:flex;flex-direction:column;align-items:center;min-width:48px}.size-badge small{font-size:14px;color:var(--muted)}.size-badge strong{font-size:44px;line-height:1.15;color:var(--lime)}.mass-dots{display:flex;justify-content:center;flex-wrap:wrap;gap:4px}.mass-dots i{height:5px;width:10px;background:var(--lime);border-radius:3px}.selected-card>p{font-size:12px;text-align:center;color:var(--muted);margin:7px 0 0}.mode-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;background:#071f2c;border-radius:12px;padding:4px}.mode-switch button{font-size:16px;border-radius:9px;color:var(--muted)}.mode-switch button[aria-pressed=true]{background:var(--lime);color:#233b23;font-weight:700}.mode-note{font-size:14px;color:var(--muted);line-height:1.75;margin:0}.cut-controls label{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;font-size:14px}.cut-controls strong{color:var(--lime);font-size:18px}.cut-controls input{width:100%;height:38px;margin:8px 0;accent-color:var(--lime);cursor:pointer}.split-preview{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}.split-preview>span{padding:9px;background:#0b2330;border-radius:9px;font-size:12px;color:var(--muted);text-align:center}.split-preview b{display:block;color:var(--lime);font-size:24px}.cut-controls p{font-size:12px;color:var(--muted);line-height:1.6;text-align:center;margin:7px 0 0}.dpad{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.dpad button{min-height:46px;font-size:23px;color:var(--lime);border:1px solid var(--line);border-radius:10px;background:#0d2633}.friends-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;font-size:14px;color:var(--muted);margin-bottom:8px}.friends-heading small{font-size:12px;display:block;margin-top:3px}.friends{display:flex;flex-wrap:wrap;gap:7px}.friend{flex:1;min-width:64px;display:flex;justify-content:center;align-items:center;gap:6px;border:1px solid #54717b;border-radius:11px;padding:7px;font-size:14px}.friend i{font-style:normal;color:var(--muted);font-size:12px}.friend b{font-size:22px;color:var(--lime)}.friend[aria-pressed=true]{border-color:var(--lime);background:#ccf56810}.status{font-size:14px;line-height:1.75;background:#0c2430;border-radius:10px;padding:12px;min-height:70px}.status.error{color:#ffd18e}.utility{display:grid;grid-template-columns:1fr 1fr;gap:8px;border-top:1px solid var(--line);padding-top:8px}.utility button{font-size:14px;border-radius:9px}.journey{margin-top:28px;border-top:1px solid var(--line);padding:16px 0}.journey-label{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.journey-label .eyebrow{font-size:14px;letter-spacing:0}.level-buttons{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.level{display:flex;align-items:center;gap:10px;text-align:left;padding:11px 14px;border:1px solid var(--line);border-radius:12px;color:var(--muted)}.level b{font-size:22px}.level span{font-size:12px;line-height:1.6}.level[aria-current=step]{border-color:var(--lime);background:#ccf5680c;color:var(--lime)}.level.completed b{color:var(--lime)}footer{display:flex;justify-content:space-between;gap:18px;padding:22px 0;color:#a1bcc3;font-size:12px;line-height:1.7}
/* Menu and campaign map */
.menu-screen{display:grid;grid-template-columns:1fr 1fr;min-height:680px;align-items:center;padding:44px 0 0;gap:20px}.menu-copy{position:relative;z-index:1;padding-left:24px}.menu-copy>.eyebrow{color:var(--lime)}.menu-copy h1{font-size:clamp(38px,4.4vw,64px);line-height:1.35;letter-spacing:.04em;margin:22px 0}.menu-copy h1 em{font-style:normal;color:var(--lime);font-size:1.35em;letter-spacing:.12em}.menu-copy h1>span{display:block;font-size:12px;font-weight:500;letter-spacing:.28em;margin-top:12px;color:var(--muted)}.menu-intro{font-size:16px;line-height:1.9;color:var(--muted);margin:22px 0 28px}.menu-actions{display:grid;gap:12px;max-width:370px}.menu-actions>button{display:flex;justify-content:space-between;align-items:center;min-height:58px;text-align:left}.menu-actions .primary-button>span{font-size:14px}.menu-progress{display:flex;align-items:center;flex-wrap:wrap;gap:18px;margin-top:26px}.menu-progress>div:not(.save-indicator){display:flex;align-items:baseline;gap:7px}.menu-progress strong{font-size:26px;color:var(--lime);font-weight:600}.menu-progress span{font-size:14px;color:var(--muted)}.save-indicator{width:100%;font-size:12px;color:var(--muted)}.menu-art{height:470px;position:relative;isolation:isolate;background:radial-gradient(ellipse,#335a4540,transparent 65%)}.orbit{position:absolute;aspect-ratio:1;border:1px solid #43645466;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%)}.orbit-one{width:75%}.orbit-two{width:94%;border-style:dashed}.menu-worm{position:absolute;object-fit:contain;filter:drop-shadow(0 20px 25px #01160c77)}.hero-worm{width:86%;height:86%;left:50%;top:42%;transform:translate(-50%,-50%) rotate(25deg);animation:float-main 6s ease-in-out infinite}.little-worm{width:47%;height:47%;left:-2%;bottom:0;transform:rotate(-37deg)}.tiny-worm{width:32%;height:32%;right:0;top:0;transform:rotate(75deg)}.art-note{position:absolute;font-size:14px;color:#b9cdb9}.note-one{top:20%;left:0;transform:rotate(-9deg)}.note-two{bottom:18%;right:0;transform:rotate(8deg)}.art-caption{position:absolute;bottom:0;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:12px;letter-spacing:.14em;color:var(--muted)}.menu-bottom{grid-column:1/-1;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px;color:var(--muted);font-size:14px;margin-top:24px;padding:14px 0}.selection-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:32px 0 24px}.selection-heading h1{font-size:30px;margin:10px 0}.selection-heading p:not(.eyebrow){font-size:16px;color:var(--muted);margin:8px 0 0}.selection-heading>.secondary-button{flex:none}.chapter-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.chapter-tab{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid var(--line);border-radius:12px;padding:12px;background:#102d3a}.chapter-tab>b{font-size:24px;color:var(--chapter-color);font-weight:500}.chapter-tab span{font-size:14px;line-height:1.5}.chapter-tab small{display:block;font-size:12px;color:var(--muted)}.chapter-tab[aria-current=true]{border-color:var(--chapter-color);background:#22414a;box-shadow:inset 0 -3px var(--chapter-color)}.selection-tools{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:14px;color:var(--muted);margin:24px 0}.selection-tools label{display:flex;align-items:center;gap:10px}.selection-tools select{color:var(--ink);background:#183541;border:1px solid var(--line);border-radius:10px;padding:10px;min-height:44px}.chapter-heading{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px}.chapter-heading .eyebrow{color:var(--chapter-color)}.chapter-heading h2{font-size:24px;margin:6px 0}.chapter-heading p:not(.eyebrow){font-size:14px;color:var(--muted);margin:6px 0}.chapter-heading>span{font-size:14px;color:var(--chapter-color);white-space:nowrap}.stage-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px}.stage-card{background:#112f3c;border:1px solid var(--line);border-radius:18px;padding:16px;text-align:left;min-width:0}.stage-card:hover{border-color:var(--chapter-color);background:#1c3d48;transform:translateY(-2px)}.stage-card-top{display:flex;align-items:center;justify-content:space-between;gap:7px}.stage-card-top b{font-size:28px;color:var(--chapter-color);font-weight:500}.stars{color:#879ca3;font-size:17px;white-space:nowrap}.stars.earned{color:var(--chapter-color)}.stage-card canvas{height:110px;object-fit:contain;padding:7px;background:#092431;border-radius:10px;margin:14px 0;image-rendering:pixelated}.stage-card strong{display:block;font-weight:650;font-size:16px;line-height:1.6;min-height:52px}.stage-card small{display:block;font-size:12px;color:var(--muted);line-height:1.8;margin-top:8px}.stage-features{font-size:12px;color:var(--chapter-color);line-height:1.8;min-height:40px;margin-top:9px}.chapter-paging{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:24px 0;font-size:14px;color:var(--muted)}.empty-stages{padding:30px;border:1px dashed var(--line);border-radius:14px;color:var(--muted);font-size:16px;line-height:1.8}.stars-explanation{font-size:14px;color:var(--muted);line-height:1.8;margin:24px 0}
/* Dialogs */
dialog{position:fixed;border:1px solid #54747b;border-radius:24px;background:var(--surface);color:var(--ink);padding:34px;width:calc(100% - 32px);max-width:510px;box-shadow:0 24px 100px #0008;max-height:90dvh;overflow:auto}dialog::backdrop{background:#01131ddd;backdrop-filter:blur(7px)}dialog h2{font-size:25px;line-height:1.6;margin:14px 0 20px}.close-dialog{position:absolute;right:10px;top:8px;min-width:44px;font-size:28px}.instructions{padding-left:24px}.instructions li{padding:0 0 14px 4px;color:var(--lime)}.instructions b{color:var(--ink)}.instructions p,.help-foot{font-size:14px;color:var(--muted);line-height:1.8;margin:6px 0}.help-foot{margin:10px 0 22px}#win-dialog{text-align:center}.win-art{height:125px;position:relative;display:flex;align-items:center;justify-content:center}.win-art img{width:145px;height:145px;object-fit:contain;transform:rotate(14deg)}.win-art span{color:var(--lime);font-size:40px;position:absolute;right:25%;top:12px}#win-message{font-size:16px;color:var(--muted);line-height:1.8}.win-stars{color:var(--lime);font-size:46px;letter-spacing:.12em;margin:12px 0}.win-stats{margin:16px 0;font-size:18px;color:var(--lime)}.win-objectives{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 14px;color:var(--muted);font-size:14px;margin:12px 0 22px}.win-secondary{display:flex;justify-content:center;gap:12px;margin-top:8px}.volume-label{display:flex;justify-content:space-between;gap:20px;font-size:16px;margin-top:24px}.volume-label output{color:var(--lime)}.volume-slider{width:100%;height:38px;accent-color:var(--lime);margin:8px 0 0;cursor:pointer}.volume-help{font-size:14px;color:var(--muted);line-height:1.8;margin:8px 0 18px}#settings-dialog .secondary-button{width:100%;margin:5px 0}.se-previews{display:grid;grid-template-columns:1fr 1fr;gap:8px}.se-previews .secondary-button{font-size:14px;padding:10px 8px}
@keyframes float-main{0%,100%{transform:translate(-50%,-50%) rotate(25deg)}50%{transform:translate(-48%,-54%) rotate(20deg)}}
@media(max-width:1150px){.shell{padding:0 24px}.edition{display:none}.game-layout{grid-template-columns:minmax(0,1fr) 252px;gap:16px}.controls{padding:15px}.menu-copy{padding-left:0}.menu-art{height:400px}.stage-grid{gap:10px}.stage-card{padding:12px}.chapter-tabs{gap:8px}.chapter-tab{padding:10px;gap:7px}.chapter-tab span{font-size:14px}.stage-card strong{font-size:14px}.stars{font-size:15px}}
@media(max-width:850px){.shell{padding:0 18px}.topbar{min-height:82px;gap:12px}.brand{font-size:18px;gap:10px}.brand small{font-size:12px;letter-spacing:.05em}.brand-symbol{font-size:40px}.top-actions{gap:6px}.icon-button{padding:0;min-width:44px;width:44px}.icon-button span{display:none}.game-layout{grid-template-columns:1fr}.stage-heading{margin-top:20px}.stage-heading h1{font-size:25px}.stage-counter>span:first-child{font-size:34px}.controls{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:18px}.selected-card{grid-column:1;grid-row:1/3}.mode-switch{grid-column:2;align-self:start}.mode-note,.cut-controls{grid-column:2}.dpad,.friend-panel,.status,.utility{grid-column:1/-1}.specimen{height:112px}.friend{flex:initial;min-width:80px}.status{min-height:0}.level{flex-direction:column;gap:3px;text-align:center;padding:10px 6px}.menu-screen{min-height:610px}.menu-art{height:330px}.menu-copy h1{font-size:39px}.chapter-tabs{grid-template-columns:repeat(3,minmax(0,1fr))}.stage-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.stage-card canvas{height:100px}.stage-card strong{font-size:16px}.stage-card small{font-size:12px}.selection-heading h1{font-size:26px}footer{flex-direction:column;gap:8px}.menu-copy>.eyebrow{line-height:1.7}}
@media(max-width:560px){.shell{padding:0 12px}.topbar{flex-wrap:wrap;gap:8px;padding:12px 0}.brand{font-size:16px}.brand small{font-size:12px;letter-spacing:0}.brand-symbol{font-size:35px}.top-actions{gap:4px}.icon-button{border-radius:12px}.brand-break{display:block}.stage-heading{gap:10px}.stage-heading h1{font-size:22px}.stage-heading .eyebrow{letter-spacing:0}.stage-counter{font-size:14px}.stage-counter>span:first-child{font-size:30px}.mission{padding:12px;gap:10px;align-items:flex-start}.mission p{font-size:14px}.mission .eyebrow{font-size:12px}.mission-icon{display:none}.mission .secondary-button{padding:8px 11px}.board-wrap{border-radius:16px}.board-top{padding:8px 8px 0;flex-wrap:wrap;font-size:14px}.board-tools{margin-left:auto}.board-tools button{font-size:14px;padding:7px 9px}.board-bottom{font-size:12px}.guide-heading{align-items:flex-start;flex-direction:column;gap:3px}.legend{gap:7px}.legend button{font-size:14px;padding:6px 9px}.inspector{padding:13px;gap:10px}.inspector strong{font-size:16px}.inspector p{font-size:14px}.controls{padding:14px;gap:12px}.mode-switch button{font-size:14px}.mode-note{font-size:14px}.specimen img{width:100px;height:100px}.specimen{height:100px;gap:0}.size-badge strong{font-size:36px}.cut-controls .primary-button{font-size:14px;padding:10px 8px}.cut-controls label{gap:3px}.cut-controls p{font-size:12px}.level-buttons{gap:6px}.level span{display:none}.level b{font-size:20px}.journey-label .eyebrow{font-size:14px}.journey-label .text-button{padding-right:0}.menu-screen{display:flex;flex-direction:column;min-height:0;padding-top:28px;gap:0;position:relative;overflow:hidden}.menu-copy{width:100%}.menu-copy>.eyebrow{font-size:12px;max-width:250px}.menu-copy h1{font-size:36px;margin:16px 0}.menu-copy h1 em{font-size:1.25em}.menu-intro{font-size:16px;max-width:230px;margin-bottom:22px}.menu-actions{padding-top:70px;max-width:none}.menu-art{position:absolute;right:-30px;top:110px;width:220px;height:270px;pointer-events:none}.hero-worm{width:100%;height:100%;top:44%;left:56%}.little-worm{height:43%;width:43%;left:-5%;bottom:-5%}.tiny-worm,.art-note,.art-caption{display:none}.orbit-one{width:74%}.orbit-two{width:98%}.menu-bottom{width:100%;font-size:14px;align-items:flex-start;margin-top:24px}.menu-bottom>span{max-width:190px}.menu-bottom .text-button{padding-right:0}.menu-progress{gap:16px}.selection-heading{flex-wrap:wrap;gap:12px;margin:24px 0}.selection-heading h1{font-size:24px}.selection-heading .eyebrow{font-size:12px;letter-spacing:.06em}.selection-heading p:not(.eyebrow){font-size:14px}.selection-heading>.secondary-button{font-size:14px}.chapter-tabs{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.chapter-tab>b{font-size:23px}.chapter-tab span{font-size:14px}.chapter-heading{align-items:flex-start}.chapter-heading h2{font-size:22px}.chapter-heading>span{font-size:12px}.stage-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stage-card{padding:12px;border-radius:14px}.stage-card-top b{font-size:27px}.stars{font-size:16px}.stage-card strong{font-size:14px;min-height:46px}.stage-card canvas{height:94px;margin:12px 0}.chapter-paging .secondary-button{font-size:14px;padding:10px 12px}.selection-tools{gap:8px;font-size:14px;flex-wrap:wrap}.selection-tools label{margin-left:auto}.stars-explanation{font-size:14px}dialog{padding:30px 22px}dialog h2{font-size:23px}}
@media(max-width:370px){.topbar{justify-content:center}.brand{margin-right:auto}.top-actions{margin-left:auto}.specimen{flex-wrap:wrap;height:auto;min-height:116px}.specimen img{width:78px;height:90px}.size-badge strong{font-size:32px}.menu-art{right:-65px;top:145px}.menu-actions{padding-top:70px}.chapter-tab{padding:9px;gap:6px}.chapter-tab span{font-size:14px}.stage-card{padding:10px}.stars{font-size:14px}.board-tools{width:100%;justify-content:flex-end}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
/* Keep touch controls next to the board; inspecting temporarily brings the guide forward. */
@media(max-width:850px){.game-layout{display:flex;flex-direction:column;align-items:stretch}.play-section{display:contents}.board-wrap{order:0}.controls{order:1}.gimmick-guide{order:2;margin-top:0}}
@media(min-width:851px) and (max-height:850px){body:has(#game-screen:not([hidden])) .topbar{min-height:72px}.stage-heading{margin:15px 0 12px}.stage-heading h1{font-size:26px;margin-top:3px}.mission{padding:10px 16px;margin-bottom:14px}.board-scroll:not(.zoomed) #board{width:min(100%,calc((100dvh - 325px)*var(--board-aspect)));margin-inline:auto}.controls{gap:10px}.specimen{height:82px}.specimen img{height:95px;width:95px}.status{padding:10px}.gimmick-guide{margin-top:14px}}
@media(max-width:560px){.controls{grid-template-columns:1fr 1fr}.selected-card{grid-column:1/-1;grid-row:auto;display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-label{display:flex;flex-direction:column;align-items:flex-start;gap:5px}.specimen{height:66px;gap:10px}.specimen img{width:72px;height:72px}.size-badge{flex-direction:row;gap:8px}.size-badge strong{font-size:32px}.selected-card .mass-dots,.selected-card>p{display:none}.mode-switch{grid-column:1;grid-row:2}.dpad{grid-column:2;grid-row:2;gap:4px}.dpad button{font-size:20px;min-width:0}.mode-note{grid-column:1/-1;grid-row:3;font-size:14px}.cut-controls{grid-column:1/-1;grid-row:3}.cut-controls label{font-size:14px}.split-preview{grid-template-columns:1fr 1fr}.split-preview>span{display:flex;justify-content:center;align-items:center;gap:10px}.friend-panel{grid-row:4}.friends-heading small{display:inline;margin-left:8px}.status{grid-row:5}.utility{grid-row:6}.inspector>div{flex:1}}
@media(min-width:851px){.play-section{grid-column:1;grid-row:1}.controls{grid-column:2;grid-row:1 / span 2}.gimmick-guide{grid-column:1;grid-row:2;margin-top:0}.game-layout{row-gap:16px}}

#game-screen:has(#cut-mode[aria-pressed=true]) #board{touch-action:none}
/* Advanced chapters keep planning clues separate from full solutions. */
.expert-entry{display:block;padding:12px 0;color:#c8c9ff;font-size:14px;text-align:left;margin-top:7px}.campaign-parts{display:flex;gap:10px;margin-bottom:18px}.campaign-parts button{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;background:#102d3a;padding:11px 18px;font-size:16px}.campaign-parts small{font-size:14px;color:var(--muted)}.campaign-parts button[aria-pressed=true]{border-color:#bfc4ff;background:#2a3c52;color:#e4e8ff}.stage-features b{font-weight:600;color:#e0e5fa}.hint-panel{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border:1px solid #58667c;background:#1a3546;border-radius:16px;padding:16px 18px;margin-bottom:16px}.hint-panel>div{min-width:0}.hint-panel strong{font-size:14px;color:#d5d8ff}.hint-panel p{font-size:16px;line-height:1.8;margin:7px 0}.hint-panel>.text-button{padding-left:0}.hint-panel>button{min-width:44px;flex:none;font-size:25px}.hint-panel .text-button{padding-left:0;color:#cdd2ff}.mission .eyebrow{letter-spacing:.04em}
@media(max-width:560px){.campaign-parts{gap:8px}.campaign-parts button{flex:1;display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 12px;font-size:16px}.campaign-parts small{font-size:14px}.hint-panel{padding:13px;gap:8px}.hint-panel p{font-size:14px}.expert-entry{font-size:14px}}.se-previews{flex-wrap:wrap}
@media(max-width:560px){}
/* Fifty-stage campaign: the board and thumb controls share one mobile viewport. */
.action-controls{display:flex;flex-direction:column;gap:10px}.action-controls .mode-switch{grid-template-columns:repeat(2,1fr)}.dpad{grid-template-columns:repeat(3,46px);grid-template-rows:repeat(3,46px);gap:4px;justify-content:center;user-select:none;-webkit-user-select:none}.dpad button{padding:0;min-width:44px;min-height:44px;touch-action:none;user-select:none;-webkit-touch-callout:none}.dpad [data-direction="0,-1"]{grid-area:1/2}.dpad [data-direction="-1,0"]{grid-area:2/1}.dpad [data-direction="1,0"]{grid-area:2/3}.dpad [data-direction="0,1"]{grid-area:3/2}.dpad #stop{grid-area:2/2;font-size:14px;color:var(--muted);background:#173944}.ratio-row{display:grid;grid-template-columns:48px 1fr 48px;gap:12px;align-items:center;margin:16px 0}.ratio-row button{height:48px;border:1px solid var(--line);border-radius:12px;background:#0c2430;font-size:24px}.ratio-row input{min-width:0;height:48px;margin:0}.cut-controls .split-preview{gap:14px;margin:18px 0}.cut-controls .split-preview>span{display:flex;flex-direction:column;gap:4px;font-size:14px;padding:14px}.cut-controls .split-preview b{font-size:36px}.cut-controls #split-availability{font-size:14px;line-height:1.7;min-height:24px;margin:12px 0}.action-sheet .cut-controls label{font-size:16px}.action-sheet .cut-controls strong{font-size:22px}.action-sheet .gimmick-guide{margin:0 0 18px}.action-sheet .guide-heading>span:first-child{display:none}.action-sheet .hint-panel{margin:0;border:0;background:none;padding:0}.action-sheet .hint-panel p{font-size:16px}.action-sheet h2{padding-right:18px}.action-sheet #inspect-board,.action-sheet>.secondary-button{width:100%;margin-top:12px}.action-sheet p{line-height:1.7}.friend-panel{min-width:0}.friend{scroll-margin:10px}
@media(min-width:851px){.game-layout{grid-template-rows:auto}.controls{grid-row:1}.action-controls .utility{margin-top:0}.controls{gap:12px}.selected-card .specimen{height:88px}.selected-card .specimen img{width:100px;height:100px}.mode-note{display:none}}
@media(max-width:850px){
 .chapter-tabs{display:flex;overflow-x:auto;scroll-snap-type:x proximity;overscroll-behavior-x:contain;padding:3px 3px 12px;gap:10px}.chapter-tab{flex:0 0 200px;scroll-snap-align:start}.selection-tools{margin:12px 0 20px}
 body[data-screen="game"] .shell{padding:env(safe-area-inset-top) 10px 0}body[data-screen="game"] .topbar{height:56px;min-height:56px;flex-wrap:nowrap;padding:0;gap:6px}body[data-screen="game"] .brand{font-size:12px;gap:6px;flex:none;margin:0}body[data-screen="game"] .brand-symbol{font-size:28px}body[data-screen="game"] .brand small{display:none}body[data-screen="game"] .brand-break{display:block}body[data-screen="game"] .top-actions{margin:0;gap:2px}body[data-screen="game"] .icon-button{width:44px;min-width:44px;border:0}body[data-screen="game"] footer{display:none}
 #game-screen{height:calc(100dvh - 56px - env(safe-area-inset-top));min-height:510px;display:flex;flex-direction:column;padding-bottom:env(safe-area-inset-bottom)}
 #game-screen .stage-heading{flex:none;margin:8px 2px 6px;gap:8px}#game-screen .stage-heading .eyebrow{display:none}#game-screen .stage-heading h1{font-size:18px;line-height:1.4;margin:0}#game-screen .stage-counter{gap:5px;font-size:12px}#game-screen .stage-counter>span:first-child{font-size:24px}
 #game-screen .mission{flex:none;margin:0 0 8px;padding:5px 8px;gap:8px;align-items:center;border-radius:12px}#game-screen .mission-icon,#game-screen #goal-label{display:none}#game-screen .mission p{font-size:14px;line-height:1.5;margin:0}#game-screen .mission .secondary-button{font-size:13px;min-height:44px;padding:7px 10px}
 #game-screen .game-layout{display:flex;flex:1;min-height:0;gap:8px;align-items:stretch;flex-direction:column}#game-screen .play-section{display:flex;flex:1;min-height:clamp(240px,70vw,320px)}#game-screen .board-wrap{display:flex;flex-direction:column;flex:1;min-height:0;border-radius:14px;box-shadow:none}#game-screen .board-top{flex:none;padding:2px 6px 0;flex-wrap:nowrap;gap:4px;font-size:12px}#game-screen .board-tools{width:auto;margin-left:auto;gap:3px}#game-screen .board-tools button{font-size:12px;padding:4px 7px;border:0;background:transparent;min-height:44px}#game-screen .board-tools button[aria-pressed=true]{background:#244c48}
 #game-screen .board-scroll{display:flex;justify-content:center;align-items:center;flex:1;min-height:0;width:100%;overflow:auto}#game-screen .board-scroll.zoomed{display:block}#game-screen #board{flex:none;margin:0;max-width:none}#game-screen .board-bottom{flex:none;padding:3px 2px 5px;font-size:12px;line-height:1.4}
 #game-screen .controls{flex:none;display:grid;grid-template-columns:146px minmax(0,1fr);grid-template-rows:auto 146px auto;gap:6px 12px;padding:8px 10px;border-radius:16px;margin-bottom:4px}#game-screen .selected-card,#game-screen .mode-note{display:none}#game-screen .friend-panel{grid-area:1/1/2/3;display:flex;align-items:center;gap:10px}#game-screen .friends-heading{display:flex;flex-direction:column;align-items:flex-start;gap:0;flex:none;margin:0;font-size:14px}#game-screen .friends-heading small,#game-screen #friend-count{display:none}#game-screen .friends{flex:1;min-width:0;flex-wrap:nowrap;overflow-x:auto;gap:6px;scrollbar-width:thin}#game-screen .friend{flex:0 0 64px;min-width:64px;min-height:44px;padding:4px 7px}#game-screen .friend b{font-size:22px}
 #game-screen .dpad{grid-area:2/1;gap:4px;grid-template-columns:repeat(3,46px);grid-template-rows:repeat(3,46px);margin:0;align-self:center}#game-screen .dpad button{font-size:24px}#game-screen .dpad #stop{font-size:14px}#game-screen .action-controls{grid-area:2/2;gap:8px;align-self:stretch;justify-content:center}#game-screen .mode-switch{grid-area:auto;display:grid;grid-template-columns:1fr 1fr;padding:0;gap:8px;background:none}#game-screen #move-mode{display:none}#game-screen .mode-switch button{min-height:58px;font-size:16px;color:var(--ink);background:#24424c;border:1px solid #58747b;border-radius:12px}#game-screen .mode-switch #cut-mode{background:var(--lime);color:#233b23;border-color:var(--lime);font-weight:750}#game-screen .utility{grid-area:auto;gap:8px;padding:0;border:0}#game-screen .utility button{font-size:14px;background:#0b2532;border:1px solid #34515b;min-height:52px;padding:4px;border-radius:12px}
 #game-screen .status{grid-area:3/1/4/3;font-size:14px;line-height:1.5;min-height:36px;padding:4px 7px;background:none;margin:0}#game-screen .journey{display:none}
 dialog.action-sheet{inset:auto 0 0;margin:0 auto;width:100%;max-width:580px;max-height:82dvh;border-radius:24px 24px 0 0;padding:28px 22px calc(18px + env(safe-area-inset-bottom));border-bottom:0}dialog.action-sheet::before{content:"";position:absolute;top:9px;left:calc(50% - 18px);width:36px;height:4px;border-radius:4px;background:#66848a}.action-sheet h2{font-size:22px;margin:10px 0 20px}.action-sheet .close-dialog{top:14px}.action-sheet .hint-panel{padding-top:14px}
}
@media(max-width:850px) and (orientation:landscape) and (max-height:540px){
 #game-screen{min-height:390px}.topbar .brand-break{display:inline}#game-screen .stage-heading{margin:4px 0}#game-screen .stage-heading h1{font-size:16px}#game-screen .mission{margin-bottom:5px;min-height:34px;padding:0 8px}#game-screen .mission .secondary-button{min-height:36px}#game-screen .game-layout{display:grid;grid-template-columns:minmax(0,1fr) 304px;gap:8px}#game-screen .play-section{grid-area:1/1;min-height:0}#game-screen .controls{grid-area:1/2;grid-template-columns:138px minmax(0,1fr);grid-template-rows:auto 138px auto;gap:5px 8px;align-self:stretch;padding:6px}#game-screen .dpad{grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);gap:3px}#game-screen .friends-heading{display:none}#game-screen .board-bottom{display:none}#game-screen .mode-switch button{min-height:54px;font-size:14px}#game-screen .utility{grid-template-columns:1fr;gap:4px}#game-screen .utility button{min-height:32px}#game-screen .status{font-size:14px}
}

@media(max-width:850px){#game-screen .mode-switch{grid-template-columns:1fr}#game-screen .mode-switch #cut-mode{grid-column:1}}
.stage-heading-title{flex:1;min-width:0}.stage-back{flex:none;min-height:44px;padding:8px 12px;font-size:14px;line-height:1.3;white-space:nowrap}
@media(max-width:850px){#game-screen .stage-back{padding:6px 8px;font-size:14px}#game-screen .stage-heading-title h1{overflow-wrap:anywhere}}

/* Keep the return destination readable, including the compact game header. */
.menu-return{flex:none;min-height:44px;padding:8px 12px;border:1px solid #66848a;border-radius:12px;background:#173644;font-size:14px;font-weight:650;line-height:1.4;white-space:nowrap}
@media(max-width:850px){
 body[data-screen="game"] .brand{display:none}
 body[data-screen="game"] .top-actions{width:100%;gap:2px}
 body[data-screen="game"] .menu-return{margin-right:auto;padding-inline:8px}
}
@media(max-width:560px){
 .top-actions:has(.menu-return:not([hidden])){width:100%;gap:2px}
 .menu-return{margin-right:auto;padding-inline:8px}
}

.stage-difficulty{display:block;color:var(--lime);font-size:14px;font-weight:650;margin-bottom:5px}

.friend{flex-wrap:wrap;row-gap:0}.friend-key{flex-basis:100%;text-align:center;color:#ffdf91;font-size:14px;font-weight:700;line-height:1.3}.active-keys{display:block;color:#ffdf91;font-size:14px;line-height:1.4}

/* Small phones retain a usable board and scroll instead of shrinking it away. */
@media(max-width:370px){#game-screen .stage-heading{display:grid;grid-template-columns:1fr auto}#game-screen .stage-heading-title{grid-column:1/-1;grid-row:1}#game-screen .stage-back{justify-self:start}#game-screen .stage-counter{justify-self:end}}

@media(max-width:370px){#game-screen .action-controls{gap:6px}#game-screen .mode-switch button{min-height:54px}#game-screen .utility{grid-template-columns:1fr;gap:5px}#game-screen .utility button{min-height:40px}}

/* The board uses the phone width; short screens scroll rather than shrink the map. */
#game-screen .board-scroll,#game-screen .board-scroll.zoomed{position:relative;display:block;overflow:hidden;aspect-ratio:var(--board-aspect);touch-action:none;user-select:none;-webkit-user-select:none;overscroll-behavior:contain}
#game-screen #board{position:absolute;left:0;top:0;margin:0;max-width:none;touch-action:none;transform-origin:0 0;-webkit-touch-callout:none}
#game-screen .board-scroll.zoomed #board{cursor:grab}
#game-screen:has(#cut-mode[aria-pressed=true]) .board-scroll #board{cursor:crosshair}
@media(max-width:850px){
 body[data-screen="game"] .shell{padding-inline:4px}
 body[data-screen="game"] .topbar{height:48px;min-height:48px;padding-inline:4px}
 #game-screen{height:auto;min-height:calc(100dvh - 48px - env(safe-area-inset-top));padding-bottom:env(safe-area-inset-bottom)}
 #game-screen .stage-heading{margin:6px 4px}
 #game-screen .mission{margin:0 4px 6px;padding:3px 7px}
 #game-screen .game-layout{flex:none;gap:6px}
 #game-screen .play-section{flex:none;min-height:0}
 #game-screen .board-wrap{min-width:0}
 #game-screen .board-scroll{flex:none;width:100%}
 #game-screen .board-bottom{padding-block:4px 6px}
 #game-screen .controls{margin:0 4px 6px;grid-template-columns:138px minmax(0,1fr);grid-template-rows:auto 138px auto;gap:4px 10px;padding:6px 8px}
 #game-screen .dpad{grid-template-columns:repeat(3,44px);grid-template-rows:repeat(3,44px);gap:3px}
 #game-screen .status{min-height:28px;padding-block:2px}
}
@media(max-width:850px) and (orientation:landscape) and (max-height:540px){
 #game-screen .game-layout{grid-template-columns:minmax(0,1fr) 290px;align-items:start}
 #game-screen .board-bottom{display:block}
 #game-screen .board-scroll{height:max(200px,calc(100dvh - 230px));aspect-ratio:auto}
 #game-screen .controls{margin-left:0;grid-template-rows:auto 138px auto;align-self:start;align-content:start}
}
