/* SHAGAI design tokens — presentation only. SVG world coordinates are unchanged. */
:root{--bg:#111b21;--surface:#1b272c;--raised:#253238;--ink:#f2e9d8;--muted:#a6b1ad;--gold:#d9b478;--line:#ffffff16;--teal:#87b8ab;--danger:#ed967f;--space:16px;--radius:20px;color-scheme:dark;color:var(--ink);background:var(--bg);font-family:Inter,'Segoe UI',system-ui,sans-serif}
*{box-sizing:border-box}body{background:#0b1115;color:var(--ink);margin:0}button,input,select{font:inherit}button{min-height:44px;color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:3px}button:disabled{cursor:default;opacity:.55}[hidden]{display:none!important}h1,h2,h3,p{margin-top:0}h1,h2,h3{color:var(--ink);letter-spacing:-.025em}p{line-height:1.45}small,.eyebrow{font-size:11px;letter-spacing:.06em;color:var(--muted)}.eyebrow{font-weight:600}.game{max-width:460px;padding:16px 20px 20px;min-height:100svh;background:var(--bg);overflow:hidden;border-inline:1px solid var(--line)}header{height:40px;margin-bottom:16px;gap:8px}.brand{font-size:18px;letter-spacing:.08em;font-weight:750}.brand-mark{color:var(--gold);font-size:22px}.edition{display:none}.icon{background:var(--surface);border:1px solid var(--line);box-shadow:none;border-radius:50%;width:40px;height:40px;min-height:40px}#pause{margin-left:auto}.primary,.secondary,.text-button{width:100%;border-radius:12px;min-height:48px;margin:0;box-shadow:none;font-size:14px;font-weight:650;letter-spacing:0}.primary{background:var(--gold);color:#211e17;border:1px solid #efcf97;box-shadow:0 3px 0 #947242;display:flex;align-items:center;justify-content:center;gap:12px;padding:12px 16px}.primary:hover{background:#e6c58f}.primary:active{transform:translateY(1px)}.secondary{background:var(--raised);border:1px solid var(--line);color:var(--ink);padding:10px 14px}.text-button{background:none;border:0;color:var(--muted);min-height:36px}.player-strip{display:flex;align-items:center;gap:10px}.avatar{width:44px;height:44px;border-radius:50%;border:1px solid #d9b47866;background:#403c30;color:var(--gold);font-size:21px;flex-shrink:0}.player-identity{display:grid;gap:2px}.player-identity strong{font-size:16px}.player-identity span{font-size:11px;color:var(--muted)}.coin-pill{margin-left:auto;background:#d9b47812;border:1px solid #d9b47833;border-radius:20px;padding:7px 10px;color:var(--gold);font-size:13px}.profile-card{padding:0;background:none;border:0;box-shadow:none;margin:8px 0 0}.progress{height:4px;background:#ffffff14;margin:0;border:0;box-shadow:none}#xp-fill{background:var(--teal);height:100%}.profile-bottom{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:6px}.profile-bottom b{color:var(--gold)}.home-intro{margin:26px 0 17px;text-align:left}.home-intro h1{font-size:30px;line-height:1.15;margin:8px 0 0;font-weight:650}.home-intro em{font-style:normal;color:var(--gold)}.campaign-card{position:relative;isolation:isolate;overflow:hidden;min-height:228px;border:1px solid #d9b4783a;border-radius:var(--radius);background:#253536}.campaign-card-copy{position:relative;padding:90px 18px 18px}.campaign-card-copy .eyebrow{color:#e2d6bc}.campaign-card-copy h2{font-size:26px;margin:5px 0 14px}.landscape,.entry-art{position:absolute;inset:0;overflow:hidden;pointer-events:none}.sun{position:absolute;width:76px;height:76px;border-radius:50%;background:#c6a371;right:35px;top:22px;opacity:.65}.ridge{position:absolute;inset:24% -2% 0;background:#596553;clip-path:polygon(0 45%,12% 36%,24% 48%,42% 12%,58% 40%,70% 22%,89% 48%,100% 35%,100% 100%,0 100%)}.ridge.near{inset:38% -5% 0;background:#293c36;clip-path:polygon(0 25%,25% 45%,42% 25%,65% 50%,82% 38%,100% 55%,100% 100%,0 100%)}.landscape img{width:104px;height:120px;position:absolute;right:12px;top:40px;transform:rotate(24deg);filter:drop-shadow(0 10px 8px #0006);opacity:.85}.battle-card{display:flex;align-items:center;gap:12px;background:#1b2529;border:1px solid var(--line);border-radius:16px;padding:13px 15px;margin:14px 0}.battle-mark{font-size:34px;color:#8a8f85}#home-battle{min-height:0;background:none;border:0;opacity:1;text-align:left;font-size:12px;color:#c1c5b9;padding:0;line-height:1.5}#battle-progress{font-size:11px;color:var(--muted);margin:4px 0 0}.home-links{display:grid;grid-template-columns:1fr 1fr;gap:10px}.campaign-score{display:flex;align-items:center;justify-content:space-between;background:none;border:0;border-top:1px solid var(--line);padding:14px 0 0;margin:17px 0 0}.campaign-score strong{font-size:22px;color:var(--ink)}#home-account{margin-top:4px}#home-save{display:none}#cloud-status{font-size:11px;color:var(--teal);margin:2px 0;text-align:center;min-height:16px}.chest-invite{background:#d9b47814;border:1px solid #d9b47844;border-radius:12px;color:var(--gold);width:100%;padding:10px;margin:10px 0;font-size:12px;min-height:42px}
/* Entry: lightweight local art, no downloaded imagery. */
#entry-screen{position:fixed;z-index:50;inset:0;margin:auto;width:min(100%,460px);min-height:100svh;background:#18282d;display:flex;flex-direction:column;justify-content:flex-end;isolation:isolate;overflow:hidden}.entry-top{position:absolute;top:38px;left:0;right:0;text-align:center;font-size:10px;letter-spacing:.1em;color:#c5c5b0}.entry-art{inset:12% 0 18%}.entry-art .sun{width:130px;height:130px;right:40px;top:30px;background:#c4a371}.entry-art .far{background:#566052}.entry-art .near{background:#2a3e36;inset:37% -10% 0}.entry-art img{position:absolute;width:168px;left:calc(50% - 84px);top:22%;transform:rotate(-20deg);filter:drop-shadow(10px 22px 14px #0005)}.entry-copy{position:relative;padding:25px 28px 38px;text-align:center;background:linear-gradient(transparent,#111b21 25%)}.entry-symbol{font-size:34px;color:var(--gold)}.entry-copy h1{font-size:52px;letter-spacing:.1em;margin:6px 0;font-weight:650}.entry-copy p{color:#d3d4c8;font-size:16px;margin-bottom:28px}.entry-copy small{display:block;font-size:11px;margin-top:18px}
/* Map: a winding trail with tactile, restrained level markers. */
.map-heading{text-align:left;padding:14px 0 8px}.map-heading h1{font-size:30px;margin:6px 0}.map-heading p{font-size:12px;color:var(--muted)}#level-map{position:relative;padding:25px 0 50px;background:repeating-linear-gradient(170deg,transparent 0 190px,#d9b47805 190px 193px,transparent 193px 280px)}#level-map:before{content:'';position:absolute;top:0;bottom:20px;left:50%;border-left:2px dashed #b8a17840;transform:rotate(1deg)}#level-map .map-row{position:relative;display:flex;align-items:center;flex-direction:column;margin:0 auto;transform:translateX(var(--offset));min-height:0;width:110px;height:116px}.level-node{width:62px;height:62px;min-height:62px;border-radius:50%;background:#293a37;color:var(--ink);border:2px solid #798572;box-shadow:0 5px 0 #0a1013;font-size:23px;font-weight:700}.level-node:disabled{background:#1c272d;border:1px solid #495457;color:#647170;opacity:.75;filter:grayscale(1)}.level-node.recommended{background:var(--gold);color:#28241b;border-color:#f4dbae;box-shadow:0 0 0 6px #d9b47818,0 6px 0 #725c3e}.node-caption{color:var(--gold);font-size:12px;margin-top:9px}.node-best{display:none}.milestone-caption{font-size:10px;color:var(--muted);margin-top:4px}#map-home{margin-top:8px}
/* Shared sheets and dialog components. */
dialog{width:min(calc(100% - 24px),410px);max-height:calc(100svh - 24px);padding:24px;border:1px solid #d9b47840;border-radius:22px;background:var(--surface);color:var(--ink);box-shadow:0 25px 80px #0009;overflow:auto}dialog::backdrop{background:#080f14cc;backdrop-filter:blur(5px)}dialog h2{font-size:28px;margin:7px 0 16px}dialog p{color:var(--muted);font-size:13px}dialog .secondary,dialog .text-button{margin-top:10px}.modal-body{padding:0;background:none}.modal-body label{display:flex;align-items:center;justify-content:space-between;padding:14px 0;font-size:14px;border-bottom:1px solid var(--line)}#account-form label{display:grid;gap:7px;text-align:left;font-size:12px;color:var(--muted);margin:14px 0}input:not([type=checkbox]):not([type=range]),select{width:100%;min-height:46px;border:1px solid #ffffff24;background:#101b21;color:var(--ink);padding:11px 12px;border-radius:10px;font-size:16px}input[type=checkbox]{accent-color:var(--gold);width:21px;height:21px}input[type=range]{accent-color:var(--gold)}#account-status{font-size:12px;color:var(--teal);line-height:1.45;margin:0 0 12px}#account-toggle{font-size:12px}#account-submit{margin-top:18px}#account-profile{text-align:center}.profile-avatar{margin:0 auto 10px;display:grid;place-items:center;width:68px;height:68px;font-size:30px}.profile-stats{border-block:1px solid var(--line);padding:18px 0;line-height:2;color:var(--gold);font-size:14px}#profile-name{font-size:24px;margin:0 0 6px}#preview-objective{font-size:18px;line-height:1.4;color:var(--ink)}.earned-stars{color:var(--gold);letter-spacing:4px;font-size:25px}#preview-best{text-align:center}#level-preview{text-align:center}
/* Gameplay: preserve a uniformly scaled 360 × 460 coordinate plane. */
body[data-view=flick] .game{height:100svh;min-height:0;display:flex;flex-direction:column;padding:8px 12px 10px}body[data-view=flick] header{height:36px;min-height:36px;margin:0 0 8px}#flick-screen{flex:1;min-height:0;display:flex;flex-direction:column;gap:5px}.flick-hud{margin:0;padding:0;border:0;border-radius:0;background:none;box-shadow:none;text-align:left;position:relative}.flick-hud>.eyebrow,.flick-hud>small,#flick-star-goals{display:none}#flick-level{font-size:13px;color:var(--gold);margin:0 0 5px}#flick-objective{font-size:16px;line-height:1.25;color:var(--ink);margin:0 0 8px;max-width:100%}#flick-shooter-label{font-size:11px;margin:0 0 5px;color:var(--teal)}.flick-counters{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:8px;margin:0;padding:8px 12px;border:1px solid var(--line);background:var(--surface);border-radius:12px}.flick-counters div{display:flex;flex-direction:column;gap:2px;text-align:left}.flick-counters small{font-size:9px;letter-spacing:.02em}.flick-counters strong{font-size:20px;color:var(--ink)}.flick-counters div:last-child strong{color:var(--gold)}.flick-field{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;margin:0;background:none;overflow:visible}#flick-board{width:auto;height:100%;max-width:100%;max-height:100%;aspect-ratio:360/460;display:block;touch-action:none;border-radius:20px;filter:drop-shadow(0 8px 8px #0004)}.flick-power-row{display:flex;align-items:center;gap:12px;margin:3px 7px;font-size:10px;color:var(--muted);flex-shrink:0}#flick-power-bar{height:5px;flex:1;background:#ffffff14;border-radius:5px;overflow:hidden}#flick-power-fill{height:100%;background:var(--gold)}#flick-feedback{height:28px;min-height:28px;font-size:12px;color:var(--teal);text-align:center;margin:2px 0;line-height:1.2}#flick-screen>p.flick-tip{display:none}.flick-actions{display:none}.flick-help{font-size:11px;color:var(--muted);margin:0;border:0;background:none;padding:0}.flick-help summary{text-align:center;padding:5px;min-height:28px}.flick-help[open]{position:absolute;z-index:8;bottom:8px;left:12px;right:12px;background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:12px;box-shadow:0 -15px 50px #0008}.flick-help p{display:none}.flick-help label{display:flex;gap:12px;align-items:center;margin:8px 0}.flick-help input{flex:1}.flick-help button{min-height:40px;font-size:12px}.body-label{paint-order:stroke;stroke:#25352e;stroke-width:3px;stroke-linejoin:round}.body-disc{filter:drop-shadow(0 3px 2px #0005)}
/* Result overlay: next action stays above the fold, no nested scroll by default. */
#flick-outcome{position:fixed;z-index:20;inset:0;width:min(100%,460px);height:100svh;max-height:none;margin:auto;padding:22px 24px;display:flex;flex-direction:column;align-items:stretch;justify-content:center;gap:10px;background:#142127f7;border:0;border-radius:0;overflow:visible;text-align:center;backdrop-filter:blur(8px)}#flick-outcome>.eyebrow{color:var(--gold)}#flick-outcome-title{font-size:30px;margin:0}#flick-stars{font-size:42px;color:var(--gold);letter-spacing:5px;margin:2px 0}#outcome-score{font-size:58px;line-height:1.05;font-weight:700;color:var(--ink);letter-spacing:-2px}.outcome-score-label{margin-top:-6px}#flick-record{color:var(--teal);font-size:12px;margin:0}#flick-reward{font-size:14px;color:var(--gold);margin:4px 0 8px}#flick-next{order:6;margin-top:10px}.outcome-secondary{order:7;display:flex;gap:10px}.outcome-secondary button{flex:1;font-size:12px}#score-breakdown{order:8;position:relative;font-size:12px;color:var(--muted);margin-top:6px}#score-breakdown summary{padding:8px;cursor:pointer}#score-breakdown[open] p{position:absolute;bottom:40px;left:0;right:0;background:#223138;border:1px solid #d9b47855;box-shadow:0 0 0 200px #0a101399;padding:18px;border-radius:14px;white-space:pre-line;text-align:left;font-size:12px;line-height:1.7;color:var(--ink);margin:0;z-index:3}#flick-screen[data-phase=lost] #flick-stars{font-size:17px;letter-spacing:0;color:var(--danger)}#flick-screen[data-phase=lost] #outcome-score,#flick-screen[data-phase=lost] .outcome-score-label,#flick-screen[data-phase=lost] #flick-reward{display:none}#flick-screen[data-phase=lost] .outcome-secondary{flex-direction:column}#flick-screen[data-phase=lost] #flick-retry{background:var(--gold);color:#211e17}
/* Rankings and current player. */
#leaderboard-dialog{width:min(calc(100% - 20px),430px);padding:20px;max-height:calc(100svh - 20px)}.leaderboard-tabs{display:flex;gap:6px;flex-wrap:wrap}.leaderboard-tabs .secondary{flex:1;margin:0;min-height:40px}.leaderboard-tabs select{margin-top:6px;min-height:40px;font-size:13px}#leaderboard-status{font-size:11px;margin:12px 0 6px}#leaderboard-own{background:#87b8ab14;border:1px solid #87b8ab33;color:var(--teal);border-radius:10px;padding:10px;font-size:12px}.leaderboard-scroll{max-height:42svh;overflow:auto}#leaderboard-dialog table{border-collapse:collapse;width:100%;font-size:12px;table-layout:auto}#leaderboard-dialog th{font-size:10px;color:var(--muted);font-weight:500}#leaderboard-dialog td,#leaderboard-dialog th{padding:12px 5px;text-align:left;border-bottom:1px solid var(--line);overflow-wrap:anywhere}#leaderboard-dialog tbody tr:nth-child(-n+3) td:first-child{color:var(--gold);font-weight:750}#leaderboard-dialog .own-rank{background:#87b8ab18}#leaderboard-dialog td:last-child{font-variant-numeric:tabular-nums}#leaderboard-retry{font-size:11px;background:none;border:0;min-height:32px}.reward-grid{background:none}.reward-grid>div{background:var(--raised);border:1px solid var(--line);color:var(--ink)}
@media(max-height:680px){.game{padding:10px 16px 14px}header{margin-bottom:10px}.home-intro{margin:15px 0 12px}.home-intro h1{font-size:25px}.campaign-card{min-height:184px}.campaign-card-copy{padding:55px 14px 14px}.campaign-card-copy h2{font-size:22px;margin-bottom:10px}.battle-card{margin:10px 0;padding:10px 12px}.campaign-score{margin-top:10px;padding-top:9px}.campaign-score strong{font-size:19px}.entry-copy{padding-bottom:25px}.entry-copy h1{font-size:43px}.entry-copy p{margin-bottom:20px}.entry-art img{width:130px;left:calc(50% - 65px)}dialog{padding:18px}dialog h2{font-size:24px;margin-bottom:10px}#account-form label{margin:10px 0;gap:5px}#account-submit{margin-top:12px}#flick-outcome{padding:18px 22px;gap:8px}#flick-outcome-title{font-size:27px}#flick-stars{font-size:36px}#outcome-score{font-size:48px}#flick-objective{font-size:14px}.flick-counters{padding:6px 10px}.flick-counters strong{font-size:17px}}
@media(max-width:340px){.home-intro h1{font-size:24px}.player-identity span{font-size:10px}.coin-pill{font-size:12px}.home-links .secondary{font-size:12px}#level-map .map-row{--offset:0px!important}#leaderboard-dialog{padding:14px}#leaderboard-dialog td,#leaderboard-dialog th{padding:10px 3px;font-size:10px}#flick-objective{font-size:13px}#flick-level{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.no-motion *{animation:none!important;transition:none!important}

body:has(#entry-screen:not([hidden])){overflow:hidden}.home-intro h1{color:var(--ink)}
/* Override legacy outcome specificity; preserve the physics viewport aspect ratio. */
.flick-field #flick-outcome:not([hidden]){position:fixed;inset:0;max-height:none;height:100svh;padding:22px 24px;background:#142127f7;border:0;border-radius:0;overflow:visible;z-index:20;box-shadow:none}
#flick-outcome h2{color:var(--ink)}
.flick-field{container-type:size;max-width:none;width:100%}
#flick-board{width:min(100cqw,78.26087cqh);height:auto;max-height:100%;aspect-ratio:360/460}
@media(max-height:680px){.flick-field #flick-outcome:not([hidden]){padding:18px 22px}}
#flick-power-bar[aria-valuenow="100"] #flick-power-fill{background:var(--gold);box-shadow:0 0 9px #d9b47866}
