@font-face{font-family:Cormorant;src:url('./assets/fonts/display.woff2') format('woff2');font-weight:300 700;font-display:swap}
@font-face{font-family:Nunito;src:url('./assets/fonts/body.woff2') format('woff2');font-weight:200 1000;font-display:swap}
:root{color-scheme:dark;--ink:#f4ebd8;--muted:#bec6b8;--gold:#dbc28c;--line:#dfd5b72b;--panel:#132b26;--accent:#c6d9af;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overscroll-behavior:none}body{background:#081714;color:var(--ink);font:16px/1.55 Nunito,system-ui,sans-serif}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer;min-height:48px;border:1px solid var(--line);border-radius:6px;padding:12px 19px;background:#1e3830;transition:background .18s,border-color .18s,transform .18s}button:hover{background:#314a3a;border-color:#dbc28c88}button:active{transform:translateY(1px)}button:disabled{cursor:default;opacity:.43;transform:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid #f6d79b;outline-offset:4px}button.primary{background:#d9c598;color:#17281f;border-color:#efe0b9;font-weight:800;display:flex;align-items:center;justify-content:space-between;gap:20px}button.primary:hover{background:#eaddbc}button.quiet,.back,.menu-links button{background:transparent;border-color:transparent}.hidden,[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Cormorant,Georgia,serif;font-weight:500;line-height:1.06}h2{font-size:clamp(34px,4vw,55px);letter-spacing:-.025em}h3{font-size:27px}p{margin:17px 0;color:#d5dccc}b{color:var(--ink)}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.19em;color:var(--gold);display:block}.muted{font-size:13px;color:var(--muted)}#app{width:100%;height:100dvh;isolation:isolate;position:relative;overflow:hidden}.ambient{position:absolute;inset:0;background:linear-gradient(90deg,#071812a8,#06181442,#071812c4),var(--ambient-art,url('./assets/garden.webp')) center 48%/cover;z-index:-2}.ambient:after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 40%,transparent,#04120ac4)}#navigation{position:absolute;top:max(14px,var(--safe-top));left:max(22px,env(safe-area-inset-left));right:max(22px,env(safe-area-inset-right));z-index:10;display:flex;justify-content:space-between;align-items:center;pointer-events:none}#navigation button{pointer-events:auto}#navigation>div{display:flex;gap:8px}#brand{background:none;border:none;font:600 29px/1 Cormorant,Georgia,serif;letter-spacing:.09em;padding:4px 0;text-align:left}#brand span{display:block;font:700 8px/2 Nunito,sans-serif;letter-spacing:.19em}.round{width:46px;height:46px;min-height:46px;border-radius:50%;padding:0;background:#10281fab;font-size:22px}#screens{position:absolute;inset:0;display:flex;justify-content:center;align-items:center;padding:88px 30px 28px;overflow:auto;scrollbar-color:#52674e #14281f}#screens:has(.panel:not(.hidden)){background:#06171344}.panel{position:relative;flex-shrink:0;max-height:100%;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#52674e transparent}.card{width:min(100%,490px);padding:34px 38px;background:linear-gradient(145deg,#24372ef5,#102721f7);border:1px solid var(--line);border-radius:11px;box-shadow:0 20px 70px #020a084f}.card>h2{margin:14px 0 22px}.card>button{width:100%;margin-top:10px}.compact{width:min(100%,400px)}.home{display:flex;align-items:center;width:min(1020px,100%);overflow:visible;min-height:560px}.home-art{width:49%;align-self:stretch;display:flex;align-items:center;position:relative}.home-art:before{content:'';position:absolute;width:85%;height:80%;background:radial-gradient(ellipse,#b9d4ac25,transparent 65%);filter:blur(15px)}.home-art img{position:relative;width:100%;height:auto;max-height:620px;object-fit:contain;filter:drop-shadow(0 22px 30px #0008);animation:float 7s ease-in-out infinite}.home-copy{padding:20px 0 20px 45px;flex:1}.home h1{font-size:clamp(110px,12vw,168px);line-height:.9;letter-spacing:.045em;margin:24px 0 0;color:#eee4c9;text-shadow:0 4px 40px #dce3b333}.subtitle{font:500 33px Cormorant,Georgia,serif;letter-spacing:.045em;margin:4px 0 26px;color:var(--gold)}.home p{font-size:17px;color:#d6dec9;margin-bottom:30px}.home-buttons{max-width:340px;display:grid;gap:8px}.home-buttons button{width:100%}.home-buttons #new-game:not(.primary){font-size:14px}.menu-links{display:flex;gap:3px;margin:16px -12px 15px}.menu-links button{font-size:13px;padding:9px 12px}.edition{font-size:9px;letter-spacing:.18em;color:#a3b29b}.wide{width:min(1050px,100%);padding:10px 6px 24px}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.panel-heading h2{margin-top:10px}.map-toolbar{display:flex;align-items:center;gap:15px;margin:24px 0 20px;flex-wrap:wrap;font-size:13px}.map-toolbar>span{flex:1}.map-toolbar button{font-size:13px}.region-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.region-card{padding:0;position:relative;height:260px;overflow:hidden;text-align:left;border:1px solid #b7bd9633;border-radius:8px;background:#16271e}.region-card:disabled{opacity:.72}.region-card img{position:absolute;width:100%;height:100%;object-fit:cover;transition:transform .4s}.region-card:hover img{transform:scale(1.04)}.region-card:after{content:'';position:absolute;inset:0;background:linear-gradient(transparent 20%,#061610ed)}.region-card .card-copy{position:absolute;z-index:1;bottom:20px;left:20px;right:15px}.region-card h3{margin:7px 0;font-size:28px}.region-card p{margin:0;font-size:12px;color:#d1d9c7}.region-card .card-number{position:absolute;top:12px;left:15px;z-index:1;font:500 22px Cormorant;color:#eee8d1;text-shadow:0 1px 5px #000}.region-panel{width:min(920px,100%);display:flex;background:#122923ef;border:1px solid var(--line);border-radius:10px}.region-art{width:40%;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(ellipse,#69856825,transparent)}.region-art img{width:120%;height:auto;max-height:570px;object-fit:contain;filter:drop-shadow(0 15px 25px #0007)}.region-content{padding:28px 32px;width:60%}.back{padding:7px 0;font-size:13px;margin-bottom:16px}.region-content h2{margin:12px 0}.region-content>p{font-size:14px}.level-row{display:grid;grid-template-columns:30px 1fr auto;gap:12px;text-align:left;width:100%;padding:13px 12px;align-items:center;margin-top:10px;background:#20382d}.level-row .level-number{font:500 25px Cormorant;color:var(--gold)}.level-row strong{display:block;font-size:14px}.level-row small{display:block;font-size:11px;color:#b4c1af}.level-row .stars{font-size:12px;color:var(--gold);letter-spacing:2px}.rule-box{border-left:2px solid #bba26d;background:#b7cc9910;padding:16px 19px;margin:23px 0}.rule-box p{font-size:14px;margin:7px 0}.balance{padding:13px 0;font-size:18px;color:var(--gold)}.upgrade-row{border-top:1px solid var(--line);padding:16px 0;display:flex;align-items:center;gap:15px}.upgrade-row>div{flex:1}.upgrade-row h3{font-size:25px}.upgrade-row p{font-size:12px;margin:5px 0}.upgrade-row button{font-size:13px;white-space:nowrap}.workshop>h3{margin:20px 0 10px}.stitch-card{display:block;width:100%;text-align:left;margin:8px 0;padding:13px 15px}.stitch-card[aria-pressed=true]{border-color:#d6c693;background:#495339}.stitch-card b{display:block}.stitch-card small{font-size:12px;display:block;color:#cad3bf}.result-stars{color:var(--gold);font-size:36px;letter-spacing:14px;margin:8px 0}.stats{display:grid;grid-template-columns:repeat(3,1fr);border-block:1px solid var(--line);padding:17px 0;gap:8px}.stats b{display:block;font:500 32px Cormorant}.stats small{font-size:9px;letter-spacing:.12em;color:var(--muted)}.setting{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:7px;margin:18px 0;font-size:14px}.setting input{width:100%;height:32px;accent-color:#dcc38f}.setting select{background:#173126;color:var(--ink);border:1px solid var(--line);border-radius:5px;padding:10px;min-height:46px}.check{display:flex;align-items:center;gap:10px;min-height:48px;font-size:14px}.check input{width:20px;height:20px;accent-color:#d6c394}.settings details{margin:20px 0;padding-block:10px;border-block:1px solid var(--line)}summary{cursor:pointer;padding:10px 0}.binding-row{display:flex;align-items:center;justify-content:space-between;font-size:13px;gap:10px;margin:8px 0}.binding-row button{min-width:100px;font-size:13px;padding:8px}.instructions{padding-left:23px}.instructions li{padding-left:5px;margin-bottom:17px;font-size:14px;color:#cad4c0}.instructions b{display:block}.loading-thread{height:2px;background:#dac68f;margin:40px 20px;animation:unwind 1.6s ease-in-out infinite;transform-origin:left}.warning{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);max-width:92%;width:max-content;font-size:12px;background:#52402e;padding:8px 15px;z-index:40;border-radius:5px}.fatal{position:absolute;inset:0;z-index:100;background:#10241ffa;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:25px}.fatal button{min-width:200px}
#playfield{position:absolute;width:min(100vw,56.25dvh);height:min(177.7778vw,100dvh);left:50%;top:50%;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s;container-type:inline-size}#stage{display:block;width:100%;height:100%;touch-action:none;outline:none}#app[data-view=game] #playfield,#app[data-view=pause] #playfield{opacity:1}#app[data-view=game] #screens{pointer-events:none;padding:0;background:none}#app[data-view=game] #navigation{display:none}#battle-hud{position:absolute;top:2.5%;left:6.4%;right:6.4%;pointer-events:none;text-shadow:0 1px 5px #000b}#battle-hud button{pointer-events:auto}.hud-top{display:flex;align-items:center;justify-content:space-between;gap:10px}#stage-title{font:600 clamp(20px,6cqw,29px)/1.05 Cormorant;margin-top:3px}#stage-eyebrow{font-size:clamp(8px,2.1cqw,10px)}.hud-top .round{min-width:44px}.health-row{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin-top:9px}#lives{color:#f0d6af;letter-spacing:3px;font-size:17px}#objective-count{font-size:12px;color:#f7e8c8}.meter{height:4px;border-radius:8px;overflow:hidden;background:#ebe2c833}.meter i{display:block;height:100%;background:#dfbf7d;transform-origin:left;border-radius:8px}#boss-meter{margin-top:7px}#mechanic-hint{font-size:clamp(10px,2.6cqw,13px);line-height:1.35;margin:7px 0 0;color:#eee7d5}#play-hud{position:absolute;left:50%;bottom:16.7%;transform:translateX(-50%);display:flex;align-items:center;gap:10px;pointer-events:none;background:#081c19ad;border:1px solid #ddd0aa2e;border-radius:20px;padding:7px 15px;min-width:180px;max-width:90%}#charges{display:flex;gap:5px}#charges i{height:9px;width:9px;display:block;border-radius:50%;border:1px solid #e6cd95}#charges i.filled{background:#fff0c8;box-shadow:0 0 7px #ead39888}.thread-status{flex:1}#thread-label{font-size:10px;display:block;white-space:nowrap;margin-bottom:3px}#announcement{position:absolute;top:21%;left:8%;right:8%;text-align:center;color:#f7e9c4;font-size:13px;pointer-events:none;text-shadow:0 1px 5px #001;}#announcement:empty{display:none}#tutorial-hint{position:absolute;bottom:22%;left:8%;right:8%;background:#102922ed;border:1px solid #dbc9955e;border-radius:8px;padding:11px 15px;pointer-events:none}#tutorial-hint p{font-size:13px;line-height:1.45;margin:5px 0 0}#touch-controls{position:absolute;left:0;right:0;bottom:0;height:17.4%;pointer-events:none;padding-bottom:var(--safe-bottom);background:linear-gradient(transparent,#081b158c)}#touch-move{pointer-events:auto;position:absolute;left:0;top:0;width:47%;height:100%;touch-action:none;user-select:none}#touch-stick{position:absolute;left:44%;top:50%;width:82px;height:82px;border:1px solid #eddfb852;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle,#d7dfbf08,#0a251750)}#touch-knob{position:absolute;left:50%;top:50%;margin:-19px 0 0 -19px;width:38px;height:38px;border-radius:50%;background:radial-gradient(circle at 38% 25%,#ddcca98c,#9aaf8352);border:1px solid #d8cdac77;box-shadow:0 3px 15px #0005}#touch-move>span{position:absolute;bottom:5px;left:26%;font-size:8px;color:#d2dbbe;letter-spacing:.15em}.touch-actions{position:absolute;right:5%;bottom:19%;display:flex;gap:15px;align-items:center;pointer-events:auto}.touch-actions button{width:66px;height:66px;min-height:66px;border-radius:50%;padding:2px;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:10px;font-weight:800;position:relative;overflow:hidden;user-select:none;touch-action:none;border-color:#e1c99188;background:#394830d9;box-shadow:0 3px 14px #0004}.touch-actions #touch-dash{width:72px;height:72px;background:#d2be93ed;color:#172d22;align-self:flex-end}.action-icon{font:500 29px/1 Cormorant}.touch-actions button.pressed{transform:scale(.94);background:#e6d4a9;color:#17291d}#touch-release.ready{box-shadow:0 0 17px #e6ca9766;border-color:#ffe5a9}#dash-cooldown{position:absolute;bottom:0;left:0;right:0;height:100%;background:#122a2173;transform-origin:bottom;pointer-events:none}.desktop-hints{display:flex;justify-content:center;gap:20px;position:absolute;bottom:5%;left:3%;right:3%;font-size:11px;color:#e0dec9}.desktop-hints span{display:flex;align-items:center;gap:6px}kbd{font:700 10px Nunito;padding:4px 6px;border:1px solid #c9d0ad55;border-radius:4px;background:#0a211c99}#touch-controls{display:none}#app.touch #touch-controls:not([hidden]){display:block}#app.touch .desktop-hints{display:none}#app.large-text{font-size:18px}#app.large-text .card p,#app.large-text .instructions li{font-size:17px}#app.large-text #mechanic-hint{font-size:14px}.reduced-motion *{animation:none!important;transition:none!important}
@keyframes float{50%{transform:translateY(-9px) rotate(.6deg)}}@keyframes unwind{0%,100%{transform:scaleX(.2);opacity:.4}50%{transform:scaleX(1);opacity:1}}
@media(max-width:650px){#navigation{top:max(8px,var(--safe-top));left:18px;right:18px}#navigation .round{width:42px;height:42px;min-height:42px}#screens{padding:76px 16px max(16px,var(--safe-bottom));align-items:center}.card{padding:26px 25px}.home{min-height:0;height:100%;max-height:none;display:block;text-align:center;overflow:visible}.home-art{height:40%;width:100%;justify-content:center}.home-art img{height:100%;width:auto;max-width:95%}.home-copy{padding:0;position:relative}.home .eyebrow{font-size:8px;letter-spacing:.18em}.home h1{font-size:94px;margin:8px 0 0}.subtitle{font-size:24px;margin:0 0 12px}.home p{font-size:14px;margin:13px 0 19px}.home-buttons{margin:auto;width:100%;max-width:320px}.home-buttons button{min-height:48px}.menu-links{justify-content:center;margin:6px 0 0;gap:0}.menu-links button{font-size:12px}.edition{font-size:8px}.wide{padding:4px 0 20px}.panel-heading h2{font-size:36px}.panel-heading>button{padding:8px;font-size:13px}.map-toolbar{gap:8px;margin:18px 0 14px}.map-toolbar>span{width:100%;flex:auto}.map-toolbar button{padding:8px 12px;min-height:44px}.region-grid{grid-template-columns:repeat(2,1fr);gap:10px}.region-card{height:215px}.region-card .card-copy{bottom:14px;left:13px;right:10px}.region-card h3{font-size:25px}.region-card p{font-size:10px}.region-panel{display:block}.region-art{width:100%;height:185px}.region-art img{height:235px;width:235px;object-fit:contain}.region-content{width:100%;padding:8px 23px 26px}.region-content .back{margin:0 0 8px}.region-content h2{font-size:36px}.region-content>p{font-size:13px}.level-row{padding:12px 10px;gap:8px}.level-row strong{font-size:13px}.region-content .eyebrow{font-size:9px}.settings>h2{margin-bottom:14px}.card>h2{font-size:40px}.card p{font-size:14px}.card .muted{font-size:12px}}
@media(max-width:650px) and (max-height:730px){.home-art{height:31%}.home h1{font-size:78px}.home p{margin:9px 0 13px}.home .subtitle{margin-bottom:5px}.edition{display:none}.home .home-buttons button{min-height:44px;padding:10px 15px}.menu-links{margin:0}}
@media(orientation:landscape) and (max-height:550px){#screens{padding:62px 20px 14px}.home{min-height:0}.home-art{width:45%;height:100%;display:flex}.home-copy{padding:10px 20px}.home h1{font-size:76px}.home p{font-size:13px;margin:8px 0 14px}.home .subtitle{font-size:23px;margin-bottom:10px}.edition{display:none}.menu-links{margin:0}.home .eyebrow{font-size:8px}#app.touch #touch-controls{position:fixed;width:100vw;left:50%;transform:translateX(-50%);height:130px;bottom:0}#app.touch #touch-move{width:170px}#app.touch .touch-actions{right:30px;bottom:15px}#app.touch #play-hud{bottom:9%}.panel{max-height:100%}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
#tutorial-hint{top:18%;bottom:auto}
.region-card img{inset:0}.panel-heading>div{min-width:0}.panel-heading>button{flex-shrink:0}.panel-heading h2{max-width:100%}@media(max-width:650px){.panel-heading h2{font-size:32px}}
.home-copy{min-width:0}.home-art{flex-shrink:0}@media(min-width:651px) and (max-width:900px){.home-art{width:44%}.home-copy{padding-left:24px}}

/* The active play surface owns its gestures, including the gaps around controls.
   Menus keep ordinary scrolling and pinch zoom. */
#app[data-view="game"],
#app[data-view="game"] * {
  touch-action: none;
  user-select: none;
  -webkit-user-select: none;
  -webkit-touch-callout: none;
  -webkit-tap-highlight-color: transparent;
}
button, summary, select, input { touch-action: manipulation; }
button { user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; }
img { -webkit-user-drag: none; }

/* Broad thumb targets and a needle / returning-light icon pair. */
#touch-controls { height: 19%; }
#touch-move { width: 44%; }
.touch-actions { right: 3%; gap: clamp(8px, 2.5vw, 12px); bottom: 13%; }
.touch-actions button {
  width: clamp(68px, 20vw, 80px);
  height: clamp(68px, 20vw, 80px);
  min-height: 68px;
  font-size: 11px;
  letter-spacing: .015em;
  isolation: isolate;
  border-width: 1.5px;
  box-shadow: inset 0 1px 0 #fff5, 0 5px 18px #001a;
}
.touch-actions #touch-dash {
  width: clamp(76px, 23vw, 90px);
  height: clamp(76px, 23vw, 90px);
  min-height: 76px;
  background: linear-gradient(145deg, #eddbb2, #bca273);
}
.touch-actions .action-icon {
  display: block;
  width: 37px;
  height: 37px;
  margin: 0 0 2px;
  flex-shrink: 0;
  pointer-events: none;
  z-index: 1;
  filter: drop-shadow(0 1px 1px #0012);
}
.touch-actions .action-label { position: relative; z-index: 1; pointer-events: none; }
#dash-cooldown { z-index: 0; background: #132b2259; }
#play-hud { bottom: 19.6%; }
@media (orientation: landscape) and (max-height: 550px) {
  #app.touch .touch-actions { right: 20px; bottom: 12px; }
  #app.touch .touch-actions button { width: 76px; height: 76px; }
  #app.touch .touch-actions #touch-dash { width: 86px; height: 86px; }
  #app.touch #touch-move { width: 180px; }
}
@media(orientation:landscape) and (max-height:550px){#battle-hud{top:20px;left:calc((100cqw - 100vw)/2 + 22px);right:auto;width:calc((100vw - 100cqw)/2 - 44px)}#announcement,#tutorial-hint{top:18%;left:calc(100% + 22px);right:auto;width:calc((100vw - 100cqw)/2 - 44px);text-align:left;background:#102922ed;padding:12px;border-radius:8px}#tutorial-hint{bottom:auto}#battle-hud .health-row{flex-wrap:wrap;gap:5px}#battle-hud #mechanic-hint{font-size:13px}#battle-hud #stage-title{font-size:25px}}
@media(max-width:350px) and (orientation:portrait){#mechanic-hint,#announcement{display:none}#play-hud{max-width:94%;padding:7px 10px}#thread-label{font-size:11px}#app.large-text #thread-label{font-size:12px}}

/* V5: clear play space, compact cues and a floating left-thumb control. */
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.game-icon{display:block;width:24px;height:24px;flex:none}
#app[data-view=menu] #brand{visibility:hidden;pointer-events:none}
.home{display:grid;grid-template-columns:1fr;grid-template-rows:auto auto minmax(150px,1fr) auto auto auto;align-items:center;height:100%;max-height:none;min-height:0;text-align:center;padding:0 18px;gap:3px}
.home-copy{display:contents}.home-art{grid-row:3;display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:0;pointer-events:none}
.home-art img{height:100%;width:100%;max-width:460px;object-fit:contain;filter:drop-shadow(0 16px 24px #00130da0)}
.home h1{grid-row:1;font-size:clamp(76px,12dvh,108px);letter-spacing:.08em;line-height:.88;margin:0 0 0 .08em}
.home .subtitle{grid-row:2;font-family:Nunito,sans-serif;font-size:12px;text-transform:uppercase;letter-spacing:.3em;margin:9px 0 0;color:var(--gold)}
.home-buttons{grid-row:4;width:min(100%,280px);margin:4px auto 0;display:grid;gap:6px}
.home-buttons button{min-height:48px;font-size:18px;letter-spacing:.04em}.home-buttons #new-game:not(.primary){min-height:38px;padding:5px;background:none;border-color:transparent;font-size:12px;color:var(--muted)}
.menu-progress{grid-row:5;font-size:10px;letter-spacing:.18em;color:var(--muted);min-height:13px}
.menu-links{grid-row:6;display:flex;justify-content:center;gap:18px;margin:7px 0 0}.menu-links button{display:flex;flex-direction:column;align-items:center;gap:6px;min-width:60px;min-height:62px;font-size:10px;padding:6px;background:none;border:0;color:#dfd9ba}.menu-links .game-icon{width:25px;height:25px}
.home .edition{display:none}.practice-strip{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:22px 0;font-size:14px;color:var(--gold)}.practice-strip i{font-style:normal;opacity:.5}
.panel-heading h2{font-size:48px}.region-card h3{font-size:30px}.world-nodes{display:flex;align-items:center;gap:8px;margin-top:12px!important}.world-nodes i{display:block;height:6px;width:6px;border:1px solid #f4e7ba99;border-radius:50%;background:#091e16a0}.world-nodes i.complete{background:#e4cf91;border-color:#f7e9b7}.world-nodes .guardian-node{border-radius:1px;transform:rotate(45deg);height:8px;width:8px;margin-left:3px}
.lore{margin:12px 0;color:var(--muted);font-size:12px}.lore summary{padding:7px 0}.lore p{font-size:13px}.region-content .lore:not([open]){margin:4px 0 12px}.region-content .eyebrow{font-size:9px}.level-row .level-number{display:flex;align-items:center;justify-content:center;color:var(--gold)}.level-row small{font-size:9px;letter-spacing:.07em}
.stage-intro{text-align:center}.intro-symbol{height:76px;width:76px;border:1px solid #e4cb8352;border-radius:50%;display:grid;place-items:center;margin:0 auto 18px;background:radial-gradient(circle,#b2c79719,transparent)}.intro-symbol .game-icon{height:37px;width:37px;color:var(--gold)}.stage-intro h2{margin-top:10px}.stage-intro .one-rule{font-size:16px;color:#f2e4bd;line-height:1.4;margin:18px 0 25px}.stage-intro details{text-align:left;border-top:1px solid var(--line);margin-top:12px;font-size:12px}.stage-intro details p{font-size:13px}.stage-intro #level-record{font-size:11px;margin:14px 0}.stage-intro .quiet{font-size:12px;margin-top:9px}.compact details{font-size:12px;text-align:left;margin-top:12px}.compact details p{font-size:13px;line-height:1.55}
#battle-hud{top:max(2.5%,env(safe-area-inset-top));left:6.4%;right:6.4%}#stage-title{font-size:clamp(19px,5.7cqw,27px)}#stage-eyebrow{font-size:8px;letter-spacing:.14em}.health-row{gap:10px;justify-content:flex-start;flex-wrap:nowrap;margin-top:8px}#lives{font-size:15px;letter-spacing:1px;white-space:nowrap;margin-right:auto}.objective-readout{display:flex;align-items:center;gap:5px;white-space:nowrap;color:#eee0b2}#objective-icon .game-icon{width:15px;height:15px}#objective-count{font-size:11px;font-variant-numeric:tabular-nums}
#battle-hud #play-hud{position:static;inset:auto;transform:none;padding:0;margin:0;min-width:38px;width:38px;max-width:38px;flex:none;display:flex;flex-direction:column;align-items:stretch;gap:4px;background:none;border:0;border-radius:0}#charges{justify-content:center;gap:4px}#charges i{height:8px;width:8px;box-shadow:none}#play-hud .meter{height:2px}#boss-meter{margin-top:7px;height:3px}
#mechanic-hint{display:block;font-size:12px!important;line-height:1.3;margin-top:8px;opacity:0;transition:opacity .18s;max-width:100%;color:#e9e0c5}#mechanic-hint.cue-visible{opacity:1}#mechanic-hint.urgent{color:#ffebaf}#announcement{display:none!important}
#touch-controls{height:19%;overflow:visible}#touch-move,#app.touch #touch-move{width:52%;overflow:visible;pointer-events:none}#touch-stick{pointer-events:auto;width:clamp(96px,28vw,112px);height:clamp(96px,28vw,112px);border-color:#e7d6a66b;background:radial-gradient(circle,#c8d5b417,#09251bc0);box-shadow:inset 0 0 0 10px #ffffff03;transition:none}#touch-knob{width:48px;height:48px;margin:-24px 0 0 -24px;transition:none;background:radial-gradient(circle at 35% 25%,#f0e3b7bc,#8d9f758c);border-color:#e7dcadb3}#touch-move>span{display:none}.touch-actions button{box-shadow:0 4px 18px #0005}.touch-actions .action-label{font-size:10px}
#tutorial-hint{bottom:auto;padding:10px 13px;background:#102922e6}#tutorial-hint p{font-size:12px;line-height:1.4}.desktop-hints{bottom:5%;font-size:10px}
@media(max-width:650px){#screens{padding-top:62px}.home{gap:2px;padding:0 6px}.home .subtitle{font-size:10px;letter-spacing:.24em}.region-card{height:195px}.region-card h3{font-size:26px}.region-content h2{font-size:36px}.region-art{height:170px}.region-art img{height:215px}.stage-intro h2{font-size:35px}.map-toolbar>span{width:auto;flex:1}.map-toolbar{flex-wrap:wrap}.panel-heading h2{font-size:42px}}
@media(max-width:350px) and (orientation:portrait){#stage-eyebrow{display:none}#stage-title{font-size:18px}#lives{font-size:13px}.health-row{gap:8px;margin-top:5px}#battle-hud{top:3%}#mechanic-hint{font-size:11px!important}#objective-count{font-size:10px}#objective-icon .game-icon{width:12px;height:12px}#battle-hud #play-hud{width:32px;min-width:32px;max-width:32px}.home h1{font-size:74px}.home-buttons button{min-height:44px}.menu-links{gap:13px;margin-top:1px}.menu-links button{min-height:52px}.intro-symbol{height:56px;width:56px;margin-bottom:13px}.stage-intro .one-rule{font-size:14px;margin:14px 0 19px}}
@media(orientation:landscape) and (max-height:550px){.home{grid-template-columns:48% 52%;grid-template-rows:auto auto auto auto auto;max-width:820px;margin:auto;padding:0 20px;gap:2px}.home-art{grid-column:1;grid-row:1/6;height:100%;width:100%}.home h1{grid-column:2;grid-row:1;font-size:68px}.home .subtitle{grid-column:2;grid-row:2;font-size:10px;margin:4px 0}.home-buttons{grid-column:2;grid-row:3;max-width:260px;margin-top:7px}.menu-progress{grid-column:2;grid-row:4}.menu-links{grid-column:2;grid-row:5;margin:0;gap:18px}.menu-links button{min-height:42px;font-size:9px}.menu-links .game-icon{width:21px;height:21px}#battle-hud{top:20px;left:calc((100cqw - 100vw)/2 + 20px);right:auto;width:calc((100vw - 100cqw)/2 - 40px)}#stage-title{font-size:23px}.health-row{flex-wrap:wrap;gap:7px}#lives{width:100%}#battle-hud #play-hud{margin-left:auto}#mechanic-hint{font-size:12px!important}#app.touch #touch-stick{left:92px}#tutorial-hint{top:18%;bottom:auto;left:calc(100% + 18px);width:calc((100vw - 100cqw)/2 - 36px);right:auto}#app.touch #touch-controls{height:132px}.stage-intro{padding:20px 28px}.intro-symbol{height:48px;width:48px;margin-bottom:10px}.stage-intro h2{font-size:34px}.stage-intro .one-rule{margin:10px 0 16px}}
@media(orientation:landscape) and (max-height:550px){#app.touch .touch-actions{right:max(20px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom))}#app.touch #touch-stick{left:calc(92px + env(safe-area-inset-left));bottom:calc(12px + env(safe-area-inset-bottom))}#battle-hud{left:calc((100cqw - 100vw)/2 + 20px + env(safe-area-inset-left));width:calc((100vw - 100cqw)/2 - 40px - env(safe-area-inset-left))}}

.home-buttons button{text-align:center}

.home-buttons button.primary,.stage-intro>button.primary{justify-content:center}
/* Save transfers stay selectable even on touch devices. */
#save-text{display:block;width:100%;box-sizing:border-box;min-height:8rem;padding:12px;border:1px solid #d7c18a66;border-radius:12px;background:#102923;color:#f8efd4;font:13px/1.45 monospace;user-select:text;-webkit-user-select:text;resize:vertical}
#save-backup input[type=file]{max-width:100%;font-size:13px}
.atlas-links{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.equipment-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.equipment-grid .stitch-card{margin:0;padding:13px;text-align:left;min-width:0}.dye-name:before{content:'';display:inline-block;width:11px;height:11px;background:var(--dye);border-radius:50%;margin-right:8px}.challenge-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.challenge-card{display:flex;flex-direction:column;width:100%;gap:9px;text-align:left;padding:18px;margin:8px 0}.challenge-card small{font-size:12px;line-height:1.55;font-weight:400}.challenge-world h3{font-size:22px;margin:20px 0 10px}.journal-world{padding:14px 0;border-top:1px solid #e8dfbd26}.journal-world h3{font-size:24px}.memory-entry{margin:12px 0}.achievement{margin:16px 0}.achievement p{margin:5px 0}.story-buttons{display:grid;gap:7px}#story-copy{line-height:1.9;text-align:left}#relic-count{margin-bottom:0}#postgame>h3{font-size:30px;margin-top:28px}@media(max-width:650px){.challenge-grid{grid-template-columns:1fr}.equipment-grid{gap:7px}.equipment-grid small{font-size:11px}.atlas-links button{flex:1;font-size:13px}}
