@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Manrope:wght@400;500;600;650;700;750;800&display=swap');
:root{--ink:#192822;--muted:#69726c;--line:#dce0d9;--paper:#fbfcf8;--green:#dafa6b;--violet:#ded4fc;--orange:#ffbd8c;--accent:#dafa6b}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',Arial,sans-serif;font-size:16px}button,a,input,select{-webkit-tap-highlight-color:transparent}button,select{font:inherit;color:inherit}button{cursor:pointer;border:0}button:disabled{cursor:default;opacity:.4}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #6479c1;outline-offset:4px}button{transition:background .16s,transform .16s,box-shadow .16s}button:active:not(:disabled){transform:scale(.96)}header{max-width:1320px;margin:auto;padding:28px 48px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line)}.brand{font-family:Manrope,Arial,sans-serif;font-size:30px;font-weight:800;letter-spacing:-1.5px;display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink)}.brandmark{background:var(--ink);color:var(--green);border-radius:9px;width:37px;height:37px;display:grid;place-items:center;font-size:29px;line-height:1;padding-bottom:5px}.brandperiod{font-family:Arial;font-size:11px;align-self:flex-start;letter-spacing:0;margin:7px 0 0 -6px}.header-tag,.eyebrow{font-size:12px;font-weight:700;letter-spacing:1.65px}.header-tag{margin-left:-90px}.header-actions{display:flex;gap:10px}.icon-button{width:38px;height:38px;border:1px solid var(--line);border-radius:50%;background:transparent;font-size:20px;position:relative}.off-slash{position:absolute;left:12px;top:5px;transform:rotate(20deg);font-size:24px}main{max-width:1224px;margin:auto;padding:0 36px}.edition{display:flex;justify-content:space-between;font-size:11px;letter-spacing:1.3px;padding:21px 0 26px;color:var(--muted);font-weight:600}.game-tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:27px}.game-tabs button{display:flex;align-items:center;gap:17px;text-align:left;background:transparent;border:1px solid var(--line);border-radius:12px;padding:16px 22px;font-size:20px;font-weight:700}.game-tabs button:hover{background:#f0f2ea}.game-tabs button.active{border-color:var(--ink);background:#fff;box-shadow:0 2px 0 var(--ink)}.game-tabs small{display:block;font-size:10px;letter-spacing:1.15px;font-weight:600;color:var(--muted);margin-top:5px}.mini-logo{width:46px;height:46px;flex:none;display:grid;place-items:center;border-radius:10px;font-size:34px;color:var(--ink)}.ripple-logo{background:var(--green)}.ladder-logo{background:var(--violet);font-size:23px;font-family:Georgia,serif;font-weight:700;letter-spacing:-3px;padding-right:3px}.orbit-logo{background:var(--orange)}.layout{display:grid;grid-template-columns:minmax(0,1fr) 326px;gap:27px}.play-panel{background:white;border:1px solid var(--line);border-radius:16px;padding:30px 38px 21px;position:relative;overflow:hidden}.game-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.eyebrow{font-size:11px}h1,h2,h3,p{margin:0}h1{font-family:Manrope,Arial,sans-serif;font-size:35px;letter-spacing:-1.65px;line-height:1.15;font-weight:750;margin-top:12px}h1 br{display:none}.difficulty{white-space:nowrap;font-size:11px;padding:6px 9px;background:#f2f4ed;border-radius:5px;margin-top:2px}.instruction{font-size:14px;color:var(--muted);line-height:1.6;margin-top:12px;max-width:480px}.board-meta{display:flex;justify-content:space-between;max-width:370px;margin:22px auto 12px;font-size:11px;font-weight:600;letter-spacing:.65px;color:var(--muted)}#timer{font-variant-numeric:tabular-nums}.board{margin:0 auto;max-width:370px}.number-board{display:grid;border:2px solid var(--ink);border-radius:7px;overflow:hidden;gap:1px;background:#d4d9d0}.num-cell{aspect-ratio:1;background:#fff;position:relative;font-size:32px;font-family:Manrope,sans-serif;font-weight:550;display:grid;place-items:center;padding:0}.num-cell.given{background:#f2f4ed;font-weight:800}.num-cell.selected{background:var(--green);box-shadow:inset 0 0 0 2px var(--ink)}.num-cell.related:not(.selected):not(.given){background:#f6faec}.num-cell.user{color:#467635}.num-cell.error{background:#ffddd7;color:#a12824}.num-cell.notes{font-family:Arial;font-size:13px;letter-spacing:4px;line-height:1.5;padding:4px;overflow-wrap:anywhere}.num-cell.edge-r{border-right:2px solid var(--ink)}.num-cell.edge-b{border-bottom:2px solid var(--ink)}.ineq{position:absolute;right:-6px;top:50%;transform:translateY(-50%);width:12px;height:18px;background:#fff;display:grid;place-items:center;z-index:2;font-family:Arial;font-size:14px;line-height:1;color:#5c655c;pointer-events:none}.num-cell.has-ineq{overflow:visible;z-index:2}.keypad{display:flex;justify-content:center;gap:7px;margin-top:17px;flex-wrap:wrap}.keypad button{width:42px;height:41px;border-radius:7px;background:#f1f3eb;font-size:20px;font-weight:600;border:1px solid transparent}.keypad button:hover{background:var(--green)}.keypad button.erase{font-size:17px}.keypad button.note{width:auto;font-size:12px;padding:0 10px}.keypad button.on{border-color:var(--ink);background:var(--green)}#status{min-height:36px;text-align:center;font-size:12px;line-height:1.45;padding-top:12px;color:var(--muted)}.tools{display:flex;justify-content:center;gap:28px;border-top:1px solid #edf0e8;padding-top:15px}.tools button{background:transparent;font-size:12px;display:flex;gap:7px;align-items:center;padding:3px}.tools button span{font-size:19px}.daily-card{background:var(--green);border:1px solid #c4df59;border-radius:16px;padding:25px 25px 20px}.card-top{display:flex;align-items:center;justify-content:space-between}.sun-symbol{font-size:37px;line-height:1}.daily-card h2{font-family:Manrope,sans-serif;font-size:28px;line-height:1.15;letter-spacing:-1.25px;margin-top:23px;font-weight:750}.daily-card p{font-size:13px;margin-top:13px}.daily-progress{display:flex;gap:9px;margin:24px 0 19px}.daily-progress button{height:47px;flex:1;background:transparent;border:1px solid #859940;border-radius:8px;font-size:22px}.daily-progress button.complete{background:var(--ink);color:var(--green)}.daily-bottom{display:flex;justify-content:space-between;gap:12px;font-size:10px;line-height:1.5}.daily-bottom span:last-child{max-width:83px;text-align:right;color:#52642d}.practice-card{border:1px solid var(--line);border-radius:16px;padding:26px;margin-top:17px}.practice-card h2{font-family:Manrope,sans-serif;letter-spacing:-.6px;font-size:24px;line-height:1.2;margin-top:14px}.practice-card p{font-size:13px;margin-top:13px;color:var(--muted)}.dark-button{background:var(--ink);color:white;display:flex;justify-content:space-between;align-items:center;gap:20px;font-size:12px;font-weight:500;border-radius:7px;padding:13px 15px;width:100%;margin-top:21px}.dark-button:hover{background:#364b3f}.dark-button span{font-size:18px}.small-note{display:flex;gap:13px;padding:22px 23px;align-items:center;font-size:12px;line-height:1.65;color:var(--muted)}.small-note>span{font-size:28px;color:var(--ink)}.shelf{padding:45px 0 0;scroll-margin-top:20px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:22px}.section-heading h2{font-family:Manrope,sans-serif;font-size:30px;letter-spacing:-1.25px;margin-top:8px}.section-heading h2 span{color:#7d9750}.section-heading>span{font-size:12px;color:var(--muted)}.shelf-bar{display:flex;justify-content:space-between;gap:10px;align-items:center;border-bottom:1px solid var(--line);padding-bottom:16px}.filter-tabs{display:flex;gap:6px}.filter-tabs button{font-size:13px;background:transparent;padding:9px 12px;border-radius:6px}.filter-tabs button.active{background:var(--ink);color:white}.filter-tabs span{font-size:10px;opacity:.65;margin-left:4px}.shelf-bar label{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}select{border:1px solid var(--line);border-radius:6px;padding:8px;background:transparent;font-size:12px}.level-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:10px;padding-top:19px}.level{background:#fff;border:1px solid var(--line);border-radius:9px;padding:14px 12px;text-align:left;position:relative;min-height:81px}.level:hover{border-color:var(--ink);transform:translateY(-2px)}.level b{font-size:22px;font-family:Manrope,sans-serif}.level small{display:block;font-size:10px;margin-top:5px;color:var(--muted)}.level .level-mark{position:absolute;right:10px;top:12px;font-size:14px}.level.completed{background:#eff6dc}.level.current{border:2px solid var(--ink);padding:13px 11px}.level .pips{letter-spacing:1px;color:#a6ae9f;font-size:10px}.level:nth-child(n+25){display:none}.more-levels{grid-column:1/-1;background:transparent;padding:12px;font-size:13px;text-decoration:underline;text-underline-offset:4px}footer{display:flex;justify-content:space-between;align-items:center;gap:15px;border-top:1px solid var(--line);margin-top:40px;padding:26px 0 32px;font-size:11px;color:var(--muted)}footer .brand{font-size:20px;letter-spacing:-.8px}.orbit-board{display:grid;gap:10px;background:#1d2b26;padding:17px;border-radius:14px}.light-cell{aspect-ratio:1;border-radius:50%;background:#34473d;border:2px solid #44564b;box-shadow:inset 0 3px 8px #14221e;position:relative}.light-cell.on{background:#e0fc89;border-color:#e6ffa7;box-shadow:0 0 18px #dafa6b35,inset 0 1px 3px #fff}.light-cell:after{content:'';width:5px;height:5px;border:1px solid #829273;border-radius:50%;position:absolute;left:calc(50% - 3px);top:calc(50% - 3px)}.light-cell.on:after{background:#566b30;border-color:#566b30}.light-cell.suggested{outline:3px dashed white;outline-offset:3px}.orbit-legend{text-align:center;font-size:12px;color:var(--muted);padding-top:16px}.word-board{max-width:390px}.word-endpoint{display:flex;align-items:center;justify-content:space-between;background:#f3effc;border:1px solid #d5c9ed;border-radius:8px;padding:10px 17px}.word-endpoint>span:first-child{font-size:11px;letter-spacing:1px;font-weight:600;color:#6d5c86}.word-letters{font-family:Manrope,sans-serif;font-size:22px;letter-spacing:7px;font-weight:750}.word-slot{width:100%;display:flex;align-items:center;justify-content:space-between;border:1px dashed #d2c9df;background:#fff;border-radius:8px;margin:7px 0;padding:9px 17px;min-height:48px}.word-slot .step-num{font-size:11px;color:#8b8296}.word-slot .placeholder{font-size:12px;color:#9a92a3;letter-spacing:0}.word-slot.filled{background:#f9f7fd;border-style:solid}.word-slot.valid{background:#f2f8e5;border-color:#c9dba8}.word-slot.invalid{background:#fff0ec;border-color:#dca99e}.word-bank{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:15px auto 0;max-width:420px}.word-bank button{padding:10px 15px;border:1px solid #cec4df;border-radius:7px;background:#eee7fc;font-weight:700;font-size:14px;letter-spacing:1px;box-shadow:0 2px 0 #cec4df}.word-bank button.used{visibility:hidden}.word-check{display:block;margin:14px auto 0;border-radius:7px;background:var(--ink);color:#fff;padding:10px 23px;font-size:13px}.win{position:absolute;inset:0;background:#fbfcf8f5;backdrop-filter:blur(6px);z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px}.win[hidden]{display:none}.win-medal{width:85px;height:85px;background:var(--accent);border:1px solid var(--ink);border-radius:50%;display:grid;place-items:center;font-size:50px;animation:pop .5s ease}.win h2{font-family:Manrope,sans-serif;font-size:39px;letter-spacing:-1.5px;margin-top:22px}.win p{font-size:14px;color:var(--muted);margin-top:10px;line-height:1.6}.win .dark-button{max-width:240px;justify-content:center;font-size:14px}.text-button{background:transparent;text-decoration:underline;text-underline-offset:5px;margin-top:19px;font-size:13px}dialog{background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:17px;padding:35px;max-width:470px;width:calc(100% - 36px);box-shadow:0 20px 100px #19282240}dialog::backdrop{background:#19282270;backdrop-filter:blur(4px)}dialog .close{position:absolute;right:14px;top:10px;background:transparent;font-size:27px}dialog h2{font-family:Manrope,sans-serif;font-size:30px;letter-spacing:-1px;margin:13px 0 16px}dialog p,dialog li{font-size:15px;line-height:1.7;color:#546159}dialog ol{padding-left:20px}dialog .tip{background:var(--accent);border-radius:8px;padding:13px;margin-top:20px;font-size:14px;color:var(--ink)}.dialog-actions{display:flex;gap:10px}.dialog-actions button{justify-content:center}.dialog-actions .cancel{background:#e9ece3;color:var(--ink)}@keyframes pop{from{transform:scale(.6) rotate(-20deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}@media(min-width:1200px){.play-panel{padding-left:44px;padding-right:44px}.layout{grid-template-columns:minmax(0,1fr) 345px}h1{font-size:36px}}@media(max-width:900px){header{padding:22px 28px}.header-tag{display:none}main{padding:0 25px}.layout{grid-template-columns:minmax(0,1fr) 275px;gap:17px}.play-panel{padding:25px 23px 20px}h1{font-size:29px}.game-heading{flex-wrap:wrap;gap:10px}.difficulty{position:absolute;right:23px;top:20px}.game-heading .eyebrow{max-width:180px}.daily-card,.practice-card{padding:21px}.daily-card h2{font-size:25px}.daily-bottom{font-size:10px}.level-grid{grid-template-columns:repeat(6,1fr)}.game-tabs button{padding:12px;gap:10px;font-size:17px}.mini-logo{width:40px;height:40px}.game-tabs small{font-size:9px}.header-tag{font-size:10px}.num-cell{font-size:29px}}@media(max-width:700px){header{padding:17px 20px}.brand{font-size:26px}.brandmark{width:32px;height:32px;font-size:26px}.icon-button{width:33px;height:33px;font-size:17px}.off-slash{top:3px;left:10px}main{padding:0 16px}.edition{font-size:9px;padding:18px 0}.edition span:last-child{display:none}.game-tabs{gap:7px;margin-bottom:16px}.game-tabs button{flex-direction:column;gap:7px;align-items:center;padding:12px 5px;font-size:15px;text-align:center}.game-tabs small{font-size:8px;letter-spacing:.7px}.mini-logo{width:34px;height:34px;font-size:27px;border-radius:8px}.ladder-logo{font-size:20px}.layout{display:block}.play-panel{padding:23px 18px 19px;border-radius:13px}h1{font-size:28px;letter-spacing:-1.1px;margin-top:11px}.game-heading .eyebrow{font-size:10px;letter-spacing:1px}.difficulty{right:18px;top:20px;font-size:10px}.instruction{font-size:13px;margin-top:10px}.board-meta{margin-top:18px}.number-board{max-width:325px}.board-meta{max-width:325px}.num-cell{font-size:29px}.keypad{gap:6px}.keypad button{width:37px;height:38px}.keypad button.note{font-size:11px;padding:0 8px}.tools{gap:29px}aside{display:grid;grid-template-columns:1fr;gap:0}.daily-card{margin-top:17px;position:relative;padding:20px}.daily-card h2{font-size:24px;margin-top:15px}.daily-card h2 br{display:none}.daily-card p{margin-top:8px}.card-top .sun-symbol{font-size:30px}.daily-progress{margin:17px 0 12px}.daily-progress button{height:40px}.daily-bottom span:last-child{max-width:none}.practice-card,.small-note{display:none}.shelf{padding-top:32px}.section-heading h2{font-size:27px}.section-heading .eyebrow{font-size:9px;letter-spacing:1.1px}.section-heading>span{font-size:10px}.shelf-bar{flex-wrap:wrap;gap:12px}.filter-tabs{width:100%;justify-content:space-between}.filter-tabs button{font-size:12px;padding:8px 12px}.shelf-bar label{width:100%;justify-content:space-between}.shelf-bar select{padding:5px 9px}.level-grid{grid-template-columns:repeat(4,1fr);gap:8px}.level{min-height:76px;padding:12px 10px}.level small{font-size:9px}.level b{font-size:21px}.level.current{padding:11px 9px}footer{flex-wrap:wrap;padding-bottom:22px;font-size:10px;margin-top:30px}footer>span:last-child{width:100%}.word-letters{font-size:21px;letter-spacing:6px}.word-slot{min-height:44px;padding:8px 15px}.word-bank button{padding:10px 12px}.orbit-board{max-width:325px;padding:14px;gap:9px}.win h2{font-size:34px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Keep controls legible at touch sizes and inequalities above neighboring cells. */
.num-cell.has-ineq{z-index:auto}.ineq{z-index:5}.tools button,.filter-tabs button,.shelf-bar label,.shelf-bar select,.dark-button,.text-button,.word-check{font-size:14px}.game-tabs small{font-size:11px}.instruction,.practice-card p,.daily-card p{font-size:14px}#status{font-size:13px}.difficulty,.level small{font-size:12px}.keypad button.note{font-size:13px}.word-slot .placeholder{font-size:14px}.daily-bottom{font-size:12px}.daily-bottom span:last-child{max-width:105px}.level{min-height:86px}.level .level-mark{top:10px}.level small{line-height:1.4}.num-cell .ineq{font-size:16px;font-weight:600}
@media(max-width:700px){.game-tabs small{font-size:9px}.difficulty{font-size:11px}.daily-bottom span:last-child{max-width:none}.level small{font-size:11px}.level b{font-size:22px}.level .level-mark{right:8px;top:12px}.level-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.keypad button.note{font-size:12px}.filter-tabs button{padding:9px 10px;font-size:13px}.keypad{gap:5px}.keypad button{width:35px}.tools button{font-size:14px}.game-heading{padding-top:1px}}
@media(max-width:360px){.keypad button{width:32px}.keypad button.note{padding:0 5px}.level-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.game-tabs small{font-size:8px}.daily-bottom{font-size:11px}}
/* Touch input keeps native scrolling and pinch-to-zoom available. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
button,a,select{touch-action:manipulation}
.board button,.keypad button,.word-bank button{-webkit-user-select:none;user-select:none}
.num-cell,.light-cell{min-width:0;min-height:0}
.play-panel,aside,.game-tabs>button,.shelf-bar>*{min-width:0}
dialog{max-height:calc(100dvh - 32px);overflow-y:auto;overscroll-behavior:contain}
dialog .close{width:44px;height:44px;right:6px;top:4px}
.win{border-radius:inherit}
@media(pointer:coarse){
 .icon-button{width:44px;height:44px;flex:none}
 .off-slash{left:15px;top:8px}
 .tools button,.text-button,.word-check,.word-bank button,.daily-progress button,.filter-tabs button,.more-levels{min-height:44px}
 .tools button{padding:8px 10px}
 .shelf-bar select{min-height:44px;font-size:16px}
}
@media(max-width:700px){
 header{padding:14px max(16px,env(safe-area-inset-right)) 14px max(16px,env(safe-area-inset-left));gap:12px}
 main{padding-left:max(12px,env(safe-area-inset-left));padding-right:max(12px,env(safe-area-inset-right))}
 footer{padding-bottom:max(24px,env(safe-area-inset-bottom))}
 .header-actions{gap:8px}.icon-button{width:44px;height:44px}.off-slash{left:15px;top:8px}
 .play-panel{padding:20px 12px 16px}
 .game-heading{display:grid;grid-template-columns:minmax(0,1fr);gap:10px}
 .game-heading .eyebrow{max-width:none}
 .difficulty{position:static;justify-self:start;margin:0;padding:5px 9px;font-size:12px}
 h1{font-size:clamp(25px,6.7vw,31px)}
 .board,.board-meta{width:100%;max-width:350px}
 .board[data-size="6"]{max-width:350px}
 .num-cell{font-size:clamp(24px,7vw,30px)}
 .num-cell.notes{font-size:12px;letter-spacing:2px;line-height:1.4;padding:3px}
 .keypad{display:grid;grid-template-columns:repeat(var(--keys),minmax(0,1fr));gap:7px;max-width:350px;margin:14px auto 0}
 .keypad button{width:auto;min-width:0;height:46px;font-size:21px}
 .keypad button.erase{grid-column:1 / span 2;font-size:20px}
 .keypad button.note{grid-column:3 / -1;font-size:14px;width:auto}
 .tools{gap:12px;justify-content:space-evenly;padding-top:9px}
 .tools button{min-height:44px;padding:7px 8px;font-size:14px}
 .daily-progress button{min-height:44px}
 .daily-bottom{flex-wrap:wrap;gap:6px}
 .daily-bottom span:last-child{text-align:left}
 .word-bank button{min-height:46px;font-size:15px;padding:10px 14px}
 .word-slot{min-height:46px;padding:8px 12px;gap:5px}
 .word-slot .word-letters,.word-endpoint .word-letters{font-size:clamp(19px,5.7vw,23px);letter-spacing:5px}
 .word-slot .placeholder{font-size:13px}
 .word-endpoint{padding:10px 12px;gap:8px}
 .word-check{min-height:46px;width:100%;max-width:350px}
 .orbit-board{padding:10px;gap:7px}
 .filter-tabs button{min-height:44px;flex:1;padding:8px 4px;font-size:13px}
 .filter-tabs span{margin-left:2px}
 .shelf-bar select{min-height:44px;font-size:16px;max-width:70%}
 .more-levels,.text-button{min-height:44px}
 .win{padding:22px 15px}.win h2{font-size:clamp(28px,8vw,36px)}
 dialog{padding:30px 22px max(24px,env(safe-area-inset-bottom));width:calc(100% - 24px)}
 dialog h2{font-size:26px;padding-right:12px}
 .dialog-actions{flex-wrap:wrap}.dialog-actions button{min-height:46px;flex:1;min-width:115px}
}
@media(max-width:360px){
 .play-panel{padding-left:8px;padding-right:8px}
 .game-tabs{gap:5px}.game-tabs button{font-size:14px}.game-tabs small{font-size:8px;letter-spacing:.25px}
 .section-heading{gap:10px;align-items:flex-start}.section-heading h2{font-size:24px}.section-heading>span{max-width:62px;text-align:right;line-height:1.5}
 .num-cell.notes{letter-spacing:1px;font-size:11px}
 .daily-card{padding:18px}.daily-card h2{font-size:23px}
}
@media(max-width:950px) and (orientation:landscape) and (max-height:500px){
 .layout{grid-template-columns:minmax(0,1fr);display:grid}
 aside{display:none}.play-panel{max-width:620px;width:100%;margin:auto}
 header,main{padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}
}
/* Volume 02: rule-driven game surfaces. */
.cage-board{gap:0;background:transparent;border:2px solid var(--ink);overflow:hidden;border-radius:10px}
.cage-cell{position:relative;display:flex;align-items:center;justify-content:center;padding:17px 3px 2px;border:1px solid #ffffff8a;background:var(--cage-fill)!important;color:var(--ink)}
.cage-cell[data-color="0"]{--cage-fill:#f2f8d8}.cage-cell[data-color="1"]{--cage-fill:#ede7fa}.cage-cell[data-color="2"]{--cage-fill:#fff0dc}.cage-cell[data-color="3"]{--cage-fill:#e5f3f3}.cage-cell[data-color="4"]{--cage-fill:#f8e6eb}.cage-cell[data-color="5"]{--cage-fill:#e8edfc}
.cage-cell.cage-top{border-top:2px solid #788273}.cage-cell.cage-bottom{border-bottom:2px solid #788273}.cage-cell.cage-left{border-left:2px solid #788273}.cage-cell.cage-right{border-right:2px solid #788273}
.cage-cell.cage-active{box-shadow:inset 0 0 0 2px #293a2740}.cage-cell.selected{box-shadow:inset 0 0 0 3px var(--ink);z-index:2}
.cage-cell.given .cell-value{font-weight:800;color:#29392a}.cage-cell.user .cell-value{color:#3c6274;font-weight:550}
.cage-target{position:absolute;left:5px;top:3px;font-size:12px;font-weight:800;line-height:1.15;color:#3e493d;letter-spacing:0}
.cage-cell.error{background:#ffdad4!important}.cage-cell.error .cell-value{color:#9c3429}
.cell-value{font-size:clamp(25px,3vw,34px);line-height:1}
.pencil-values{font-size:12px;letter-spacing:2px;line-height:1.5;overflow-wrap:anywhere;text-align:center}
.route-board{max-width:420px}
.route-mission{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:8px;align-items:stretch}
.route-mission>div{padding:13px 6px;border:1px solid #d8d0e7;border-radius:9px;text-align:center;background:#fbf9ff}
.route-mission small{display:block;font-size:10px;font-weight:650;letter-spacing:1px;color:#7d708e;margin-bottom:7px}
.route-mission b{font-size:19px;letter-spacing:2px;font-family:Manrope,sans-serif}
.route-mission .checkpoint{background:#e6dcff;border-color:#b2a0d2}.route-mission .collected{background:#e4f4c8;border-color:#91aa6f}
.current-word{padding:24px 12px 20px;text-align:center}.current-word>small{font-size:10px;letter-spacing:1.5px;font-weight:600;color:#7d708e}
.current-word>div{display:flex;justify-content:center;gap:6px;margin:10px 0}.current-word>div>span{display:grid;place-items:center;width:48px;height:55px;border:1px solid #bdb1d0;border-radius:8px;font-family:Manrope,sans-serif;font-size:30px;font-weight:700;background:#f5f1fe;box-shadow:0 3px 0 #e2d9f0}
.current-word>span{font-size:12px;color:#776988}.changed-letter{color:#7442aa}.current-word .changed-letter{background:#dfcafa}
.route-trail{display:flex;overflow-x:auto;gap:6px;padding:2px 0 10px;scrollbar-width:thin;max-width:100%}.trail-word{font-size:11px;padding:7px 9px;flex:none;min-height:36px;border:1px solid #ded6e9;background:#fff;border-radius:6px}.trail-word:disabled{opacity:1;background:#f0eafa;font-weight:700}.trail-word.trail-star{background:#e6dcff}
.choices-label{max-width:420px;margin:14px auto 8px;font-size:10px;letter-spacing:.8px;font-weight:600;color:#6f647b;display:flex;justify-content:space-between;gap:10px}.choices-label>span{letter-spacing:0;font-weight:400;font-size:11px}
.route-choices{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;max-width:420px;margin:0 auto}
.route-choices button{display:flex;justify-content:center;gap:1px;align-items:center;font-size:14px;letter-spacing:1px;padding:10px 3px;min-height:45px;position:relative}
.route-choices .available{background:#e6d8ff;border-color:#8765ae;box-shadow:0 3px 0 #bba2d8}.route-choices .unavailable{background:#faf8fd;border-color:#eee9f3;box-shadow:none;color:#a89eb3;font-weight:500}.route-choices .waypoint-word:before{content:'◇';position:absolute;right:2px;top:1px;font-size:9px;color:#735196}
.route-choices .suggested{outline:3px solid #6e498f;outline-offset:1px}
.circuit-board{background:#15231e;border:1px solid #2c4338;gap:10px;padding:18px;border-radius:16px;box-shadow:inset 0 0 40px #081c1166}
.circuit-board .light-cell{border-radius:12px;box-shadow:inset 0 2px 5px #04150f;background:#30483c;border-color:#405b4c;transition:background .2s,box-shadow .2s,border-color .2s}
.circuit-board .light-cell:after{display:none}.circuit-board .light-cell.on{background:#dcf891;border-color:#e8ffb2;box-shadow:0 0 16px #d9fa6b44,inset 0 1px 2px #fff}
.switch-symbol{font-size:25px;line-height:1;font-weight:500;color:#88a491;pointer-events:none}.on .switch-symbol{color:#436331}
.circuit-board .will-flip{outline:2px solid #98bbff;outline-offset:2px}.circuit-board .switch-selected{outline:3px solid #ffcc86;outline-offset:2px}.circuit-board .suggested{outline-style:dashed}
.switch-legend{display:flex;justify-content:center;flex-wrap:wrap;gap:13px;font-size:12px;color:var(--muted);padding:16px 0 14px}.switch-legend span{display:flex;align-items:center;gap:5px}.switch-legend b{font-size:20px;font-weight:500;color:var(--ink)}
.pulse-button{width:100%;max-width:370px;display:block;margin:auto;border-radius:9px;min-height:48px;background:#192f24;color:#f1ffd8;font-size:15px;font-weight:600;box-shadow:0 3px 0 #101e16}.pulse-button:disabled{background:#e8ede5;color:#758170;box-shadow:none;opacity:1}
.just-pulsed{animation:pulse-light .42s ease}.win-medal{font-size:24px;letter-spacing:2px}.level-mark{letter-spacing:-1px;font-size:11px!important}
body[data-game="orbit"] .game-tabs button.active{box-shadow:0 2px 0 #b1763e}body[data-game="ladder"] .game-tabs button.active{box-shadow:0 2px 0 #9272b3}
@keyframes pulse-light{0%{transform:scale(.86)}60%{transform:scale(1.04)}100%{transform:scale(1)}}
@media(max-width:700px){
 .cage-target{font-size:11px;top:3px;left:4px}.cell-value{font-size:27px}.cage-cell{padding-top:16px}
 .cage-board[data-size="6"] .cell-value{font-size:24px}.cage-board[data-size="6"] .cage-target{font-size:10px}
 .cage-board[data-size="6"] .pencil-values{font-size:10px;letter-spacing:1px}
 .route-board{max-width:350px}.route-mission{gap:5px}.route-mission>div{padding:12px 3px}.route-mission b{font-size:17px;letter-spacing:1px}.route-mission small{font-size:9px;letter-spacing:.6px}
 .current-word{padding:20px 6px 16px}.current-word>div>span{width:46px;height:51px;font-size:28px}.route-choices{gap:6px;max-width:350px}.route-choices button{font-size:13px;letter-spacing:.7px;padding:9px 2px;min-height:46px}
 .choices-label{max-width:350px;font-size:9px;gap:5px;flex-wrap:wrap}.choices-label>span{font-size:10px}.trail-word{min-height:44px}
 .circuit-board{padding:10px;gap:7px}.switch-symbol{font-size:24px}.switch-legend{gap:11px;font-size:11px}.switch-legend b{font-size:18px}.pulse-button{max-width:350px}
 .circuit-board .will-flip{outline-offset:1px}.circuit-board .switch-selected{outline-offset:1px}
}
@media(max-width:360px){.cage-board[data-size="6"] .cell-value{font-size:22px}.cage-target{font-size:10px}.route-mission small{font-size:8px}.route-choices button{font-size:12px;letter-spacing:0}.switch-symbol{font-size:21px}}
.star-rules{font-size:12px!important;line-height:1.6!important;margin-top:15px}
/* Volume 03: every tile participates in a connected system. */
.weave-board{display:grid;gap:7px;max-width:370px;background:transparent;padding:4px 0}
.weave-gap{aspect-ratio:1;pointer-events:none}
.letter-tile{position:relative;aspect-ratio:1;border:1px solid #d1d2cc;border-radius:9px;background:#f0f1ec;display:grid;place-items:center;padding:0;box-shadow:0 3px 0 #d3d5cd;color:#253830;min-width:0;font-family:Manrope,Arial,sans-serif;font-weight:750;font-size:31px}
.letter-tile.correct{background:#357b61;color:#f4ffe9;border-color:#28634d;box-shadow:0 3px 0 #24583f}
.letter-tile.belongs{background:#e8cf79;border-color:#c5ac57;box-shadow:0 3px 0 #c5b05f}
.letter-tile.misplaced{background:#f0f1ed}
.letter-tile.word-related{outline:1px solid #ad93c8;outline-offset:2px}
.letter-tile.letter-selected{outline:3px solid #592c83;outline-offset:2px;box-shadow:0 3px 0 #77568f}
.hint-cell{outline:3px dashed #6e4696!important;outline-offset:2px!important}
.shared-marker{position:absolute;right:4px;bottom:2px;font-size:12px;font-style:normal;font-weight:500;opacity:.6;line-height:1}
.letter-legend{display:flex;justify-content:center;gap:16px;font-size:12px;color:#657268;margin:16px auto 19px;flex-wrap:wrap}
.letter-legend>span{display:flex;align-items:center;gap:5px}.color-swatch{display:inline-block;width:11px;height:11px;border-radius:3px;border:1px solid #b4b8ab}
.color-swatch.correct{background:#357b61;border-color:#357b61}.color-swatch.belongs{background:#e8cf79;border-color:#c5ac57}.color-swatch.misplaced{background:#f0f1ed}
.shared-clue-header{font-size:10px;letter-spacing:1.3px;font-weight:600;color:#7b698c;margin-bottom:10px;text-align:center}
.shared-clues{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-width:420px;margin:auto}
.shared-clues:has(>.word-clue:only-child){grid-template-columns:1fr}
.word-clue{padding:13px 13px 11px;background:#f6f2fc;border:1px solid #e0d6ed;border-radius:10px}
.word-clue>span{font-size:11px;font-weight:700;color:#836895;letter-spacing:.4px}
.word-clue>p{font-size:14px;line-height:1.4;min-height:40px;margin:7px 0 9px}
.clue-pattern{display:flex;gap:3px}.clue-pattern b{font-size:16px;width:20px;height:24px;text-align:center;border-bottom:2px solid #d0bfdc;color:#a69ab0;font-family:Manrope,sans-serif}
.clue-pattern b.found-letter{color:#367554;border-color:#79aa8b}
.word-complete{background:#f0f6e8;border-color:#b3c8a6}.word-complete>span{color:#48794f}
.all-clues-button{display:block;margin:12px auto 0;background:transparent;text-decoration:underline;text-underline-offset:4px;font-size:13px;padding:9px 15px;min-height:44px}
.all-word-clues{display:grid;gap:8px}.all-word-clues button{padding:12px;background:#f0ebf8;border:1px solid #d7cde4;border-radius:8px;text-align:left;min-height:56px}
.all-word-clues b{font-size:12px;color:#7b6590;display:block;margin-bottom:4px}.all-word-clues span{font-size:14px;line-height:1.4}
.lens-button{display:block;margin:7px auto 0;background:transparent;border-radius:7px;padding:8px 16px;min-height:44px;font-size:13px;color:#6d7963}.lens-button.on{background:#edf5d9;color:#2d4e23}
.cage-cell.ripple-linked:not(.selected){outline:2px solid #637d4160;outline-offset:-3px}.live-possibilities{color:#68814b;font-size:11px;opacity:.9}
.network-board{display:grid;gap:2px;padding:12px;border-radius:15px;background:#13231e;border:1px solid #233e30;max-width:370px;box-shadow:inset 0 0 40px #092016}
.network-cell{aspect-ratio:1;position:relative;background:#1d322a;border:1px solid #2c4436;border-radius:8px;padding:0;overflow:visible;min-width:0;min-height:0}
.network-cell svg{width:100%;height:100%;display:block;overflow:visible}
.wire{stroke:#50665a;stroke-width:6;fill:none;stroke-linecap:butt;transition:stroke .2s}
.wire-joint{fill:#50665a;transition:fill .2s}
.bulb{fill:#1f3229;stroke:#667a68;stroke-width:2}.bulb-core{fill:#596c55;transition:fill .2s}
.loose-tip{fill:#eb9d65;stroke:#17291f;stroke-width:1}
.power-core{fill:#dccf80;stroke:#f5edb0;stroke-width:1.5}.power-bolt{fill:#35432d}
.network-cell.powered{background:#234431;border-color:#33593d}.powered .wire{stroke:#a1dba3}.powered .wire-joint{fill:#a1dba3}
.powered .bulb{fill:#cfdf93;stroke:#f5ffd1}.powered .bulb-core{fill:#fff9db}.network-cell.powered.lamp-cell{background:#33563a;box-shadow:inset 0 0 17px #b7da7718}
.network-cell.source-cell{background:#3d4e30;border-color:#7c8653}
.network-cell.network-selected{z-index:2;outline:2px solid #e9bc7a;outline-offset:-2px}.network-cell.hint-cell{z-index:3;outline-color:#f3d889!important}
.network-hud{display:flex;justify-content:space-between;gap:12px;align-items:center;max-width:370px;margin:15px auto 0;font-size:13px;font-weight:600}
.network-hud>span:first-child{display:flex;gap:7px;align-items:center}.power-dot{width:7px;height:7px;border-radius:50%;background:#62a375;display:inline-block}
.network-key{display:flex;justify-content:center;gap:17px;font-size:11px;color:#7b8577;margin:17px 0 6px}.network-key>span{display:flex;gap:4px;align-items:center}.leak-dot{display:inline-block;width:7px;height:7px;background:#dc9767;border-radius:50%}
.network-instruction{text-align:center;font-size:13px;line-height:1.5;color:#61715e;margin-bottom:3px}
.tile-swapped{animation:letter-land .24s ease}.tile-turned{animation:wire-turn .25s ease}
@keyframes letter-land{0%{transform:translateY(-3px) scale(.9)}100%{transform:translateY(0) scale(1)}}
@keyframes wire-turn{0%{filter:brightness(1.4)}100%{filter:brightness(1)}}
@media(max-width:700px){
 .weave-board{gap:6px;max-width:350px}.letter-tile{font-size:27px;border-radius:8px}.shared-marker{font-size:11px;right:3px;bottom:2px}
 .letter-legend{font-size:11px;gap:12px;margin-top:16px;margin-bottom:17px}.shared-clue-header{font-size:9px;letter-spacing:1px}
 .shared-clues{max-width:350px;gap:7px}.word-clue{padding:11px 10px 10px}.word-clue>p{font-size:14px;min-height:40px;line-height:1.4}
 .network-board{max-width:350px;padding:9px;gap:2px}.network-hud{max-width:350px;font-size:13px}.network-key{font-size:11px;gap:13px}
 .live-possibilities{font-size:10px}.lens-button{min-height:44px}
}
@media(max-width:360px){.weave-board{gap:5px}.letter-tile{font-size:25px}.word-clue{padding:10px 8px}.word-clue>p{font-size:13px}.network-key{font-size:10px;gap:10px}.letter-legend{font-size:10px;gap:8px}.shared-clue-header{letter-spacing:.6px}}
