@charset "UTF-8";
:root{--navy:#172c50;--ink:#27354e;--cream:#fff9e7;--gold:#e9b94f;--blue:#347dd8;--red:#e85b51;--shadow:0 5px 0 #132b4760,0 9px 24px #081c4230;--safe:env(safe-area-inset-bottom,0px);font-family:"Hiragino Maru Gothic ProN","Yu Gothic",Meiryo,sans-serif;color:var(--ink);background:#182d4a;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:default;opacity:.46}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ffad30;outline-offset:4px}button{color:inherit}a{color:inherit}button svg,.icon{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:middle}.icon-defs,.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}button:active:not(:disabled){transform:translateY(2px)}#app{min-height:100svh}.title-screen{min-height:100svh;overflow:hidden;position:relative;display:flex;justify-content:center;align-items:center;background:#72bdd7}.title-art{position:absolute;inset:0;background:url('title.webp') center center/cover no-repeat;animation:reveal .7s ease}.title-art:after{content:"";position:absolute;inset:0;background:linear-gradient(#1e477915,#132b4700 40%,#142b5070)}.title-copy{text-align:center;position:relative;z-index:1;width:min(680px,92%);padding:26px 20px 60px}.eyebrow{font-weight:900;letter-spacing:.25em;font-size:16px;color:#fff;text-shadow:0 2px 6px #203453;margin:0 0 10px}.game-logo{font-size:clamp(50px,7.3vw,98px);line-height:1.15;margin:0;color:#fffae2;letter-spacing:-.08em;transform:rotate(-3deg);text-shadow:0 5px 0 #8f4b1f,0 8px 0 #422c42,5px 0 0 #422c42,-5px 0 0 #422c42,0 -4px 0 #422c42,0 12px 15px #182e5470;font-weight:1000}.game-logo span{display:block;font-size:1.25em;color:#ffe478;letter-spacing:.06em}.title-tagline{color:#fff;font-weight:800;text-shadow:0 2px 6px #172c50;font-size:17px;letter-spacing:.14em;margin:27px 0}.title-menu{display:flex;flex-direction:column;align-items:center;gap:12px;margin:20px auto 0;width:min(355px,100%)}.btn{border:2px solid #293d60;border-radius:12px;background:linear-gradient(#fffef8,#f3e7cb);box-shadow:0 4px 0 #18304e;padding:13px 20px;font-weight:900;display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;text-decoration:none;transition:filter .12s,transform .12s}.btn:hover:not(:disabled){filter:brightness(1.065)}.btn.primary{background:linear-gradient(#ffe58b,#f6be47);border-color:#7a4b23;box-shadow:0 4px 0 #75421f;color:#382d27}.btn.blue{background:linear-gradient(#499ce4,#246cbd);color:#fff}.btn.danger{background:#ad454e;color:white}.btn.small{min-height:38px;padding:7px 13px;font-size:13px}.title-menu>.btn{width:100%;font-size:18px}.title-secondary{display:flex;gap:12px;justify-content:center;width:100%}.title-secondary .btn{flex:1;font-size:14px;padding:11px}.title-footer{position:absolute;bottom:18px;left:20px;right:20px;display:flex;justify-content:space-between;gap:16px;font-size:11px;color:white;text-shadow:0 1px 4px #132945}.title-footer a{padding:6px;background:#182e5260;border-radius:6px}.title-note{font-size:12px;color:#fff;text-shadow:0 1px 3px #102644;margin:20px 0 0}.loading{color:white;text-shadow:0 1px 4px navy;font-weight:700}.modal-backdrop{position:fixed;inset:0;background:#081d37b3;backdrop-filter:blur(6px);z-index:100;display:flex;align-items:center;justify-content:center;padding:22px;animation:reveal .16s ease}.modal{width:min(690px,100%);max-height:calc(100dvh - 44px);overflow:auto;overscroll-behavior:contain;background:var(--cream);border:3px solid #f5d587;outline:3px solid #263c60;border-radius:20px;box-shadow:0 25px 90px #08172a80;padding:26px;position:relative}.modal.wide{width:min(910px,100%)}.modal h2{margin:0 45px 8px 0;font-size:25px}.modal h3{margin:24px 0 10px;font-size:17px}.modal p{font-size:14px;line-height:1.8}.modal .muted{color:#5e6c7e;font-size:13px}.close-btn{position:absolute;right:15px;top:15px;background:#f0e5cd;border:1px solid #baa983;border-radius:50%;width:36px;height:36px;padding:7px;display:grid;place-items:center}.form-field{display:block;font-size:13px;font-weight:800;margin:18px 0 8px}.text-input,select{width:100%;border:2px solid #b9b4a4;background:#fffdf8;padding:11px 13px;border-radius:9px;min-height:46px;color:var(--ink);font-size:16px}.row{display:flex;gap:14px}.row>*{flex:1;min-width:0}.job-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}.job-card{position:relative;border:2px solid #cebea0;border-radius:12px;background:#fffef7;padding:5px 3px 10px;min-width:0;text-align:center}.job-card.selected{border-color:#bd8323;box-shadow:0 0 0 2px #f0bc4a;background:#fff2ba}.job-card strong{display:block;font-size:14px}.job-card small{font-size:10px;color:#6b6e73}.hero-art{background-image:url('heroes.webp');background-size:200% 200%;background-repeat:no-repeat;aspect-ratio:1;width:100%;filter:drop-shadow(0 7px 3px #14234220)}.hero-art.art0{background-position:0 0}.hero-art.art1{background-position:100% 0}.hero-art.art2{background-position:0 100%}.hero-art.art3{background-position:100% 100%}.job-desc{background:#eee7d7;border-radius:8px;padding:10px 13px;margin:12px 0;font-size:12px;line-height:1.65;min-height:54px}.mode-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.mode-card{text-align:left;padding:11px 10px;background:#fffcf3;border:2px solid #d7cbb2;border-radius:9px;font-size:13px;font-weight:800}.mode-card.selected{background:#e3eefb;border-color:#4381ba}.mode-card small{display:block;margin-top:5px;font-size:10px;font-weight:400;color:#607088}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.form-actions .btn.primary{min-width:180px}.error-text{color:#a5313c;font-weight:700;font-size:13px}.help-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.help-step{padding:14px;border-radius:11px;background:#efe7d5}.help-step b{display:block;margin-bottom:8px}.help-step p{font-size:12px;margin:0}.help-table{border-collapse:collapse;width:100%;font-size:12px;margin:15px 0}.help-table th,.help-table td{padding:10px 8px;border-bottom:1px solid #dacbac;text-align:left}.help-table th{background:#ede2cb}.lobby{min-height:100svh;background:linear-gradient(#153452b0,#132846cc),url('world.webp') center/cover;display:flex;align-items:center;justify-content:center;padding:28px}.lobby-panel{width:min(900px,100%);text-align:center;color:white}.lobby-panel h1{font-size:32px;margin:10px}.lobby-panel>.eyebrow{font-size:12px}.lobby-seats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:24px 0}.lobby-seat{background:linear-gradient(#ffffffed,#f1e5caf5);color:var(--ink);border:3px solid #c6a265;border-radius:18px;padding:12px 7px;box-shadow:var(--shadow);position:relative}.lobby-seat.empty{background:#122a4655;color:#c6d7e8;border:2px dashed #85a0b8;display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:235px}.lobby-seat.empty .icon{width:45px;height:45px;margin-bottom:15px}.seat-index{display:inline-block;border-radius:7px;background:var(--navy);color:white;padding:3px 9px;font-size:11px}.lobby-seat .hero-art{max-width:180px;margin:auto}.lobby-seat strong{display:block;font-size:17px}.lobby-seat small{display:block;font-size:11px;margin-top:6px}.invite-box{border:1px solid #a5c2d566;background:#102d4d9c;max-width:490px;padding:18px 20px;margin:20px auto;border-radius:14px}.invite-box p{font-size:12px;margin:0 0 8px}.invite-code{display:block;letter-spacing:.2em;font-size:32px;font-weight:900;margin:7px 0 16px;font-family:monospace}.invite-actions{display:flex;gap:12px}.invite-actions .btn{flex:1}.lobby-start{min-width:270px;font-size:19px}.lobby-info{font-size:12px;color:#dcebf5;line-height:1.7}.lobby-back{border:0;background:none;color:white;font-size:12px;text-decoration:underline;margin:22px auto;padding:10px}.game-shell{height:100dvh;min-height:500px;display:flex;flex-direction:column;overflow:hidden;background:#102c43}.game-top{height:54px;flex:none;display:flex;align-items:center;gap:12px;padding:6px 18px;background:linear-gradient(#294b6e,#1b3556);border-bottom:2px solid #ddbe73;color:#ffedbc;z-index:12;box-shadow:0 2px 8px #16284350}.brand-small{font-weight:1000;font-size:19px;letter-spacing:-.04em;white-space:nowrap}.brand-small .icon{color:#ffd461;width:26px;height:26px;margin-right:6px}.day-pill{background:#112942;border:1px solid #7890a9;border-radius:8px;padding:5px 12px;line-height:1.2}.day-pill b{font-size:17px}.day-pill small{font-size:10px;color:#d6e1ed}.game-objective{font-size:12px;flex:1;color:#edf2f3}.top-tools{display:flex;gap:7px;margin-left:auto}.tool-btn{background:#102a4580;color:#f7edcc;border:1px solid #6c839a;border-radius:8px;min-width:37px;min-height:37px;padding:6px}.tool-btn.active{background:#806630}.connection{font-size:10px;color:#b1d8cb;white-space:nowrap}.connection.bad{color:#ffd080}.game-stage{flex:1;position:relative;overflow:hidden;isolation:isolate;background:#6fb9d2}.board-svg{position:absolute;inset:0;width:100%;height:100%;touch-action:none;user-select:none;background:#6fb9d2}.board-svg text{font-family:inherit}.route-shadow{fill:none;stroke:#174765;stroke-opacity:.5;stroke-width:11;stroke-linecap:round;stroke-linejoin:round}.route-line{fill:none;stroke:#f6f5d0;stroke-width:6;stroke-linecap:round;stroke-linejoin:round}.route-locked{opacity:.16}.node{cursor:pointer;outline:none}.node:focus-visible circle{stroke:#fff900;stroke-width:5}.node-body{stroke:#334b57;stroke-width:1.6;filter:drop-shadow(0 2px 0 #17384399)}.node-icon{fill:none;stroke:#193748;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}.node.reachable .node-halo{fill:#ffdf35;stroke:#fffbe8;stroke-width:2;animation:nodeglow 1s infinite alternate}.node-halo{fill:transparent;stroke:transparent}.node.locked{opacity:.36}.region-label{fill:#fffaf0;font-size:13px;font-weight:900;paint-order:stroke;stroke:#233e62;stroke-width:3;pointer-events:none}.pawn-ring{fill:#fff3;stroke-width:3}.pawn{pointer-events:none;filter:drop-shadow(0 3px 2px #15283c80)}.pawn.active{animation:pawn-bob 1.3s ease-in-out infinite}.pawn-label{fill:#fff;font-size:10px;font-weight:900;paint-order:stroke;stroke:#17324e;stroke-width:2}.hud{position:absolute;inset:14px 16px;pointer-events:none;z-index:5}.player-card{pointer-events:auto;position:absolute;width:225px;border:2px solid #f0d08a;border-radius:11px;background:linear-gradient(110deg,#fffaf0f7,#eee3cbee);box-shadow:0 3px 0 #1a335199,0 6px 18px #22344730;color:var(--ink);padding:7px 10px 8px 64px;text-align:left;min-height:90px;overflow:hidden}.player-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--player-color)}.player-card.current{box-shadow:0 0 0 2px #ffefa7,0 0 25px #ffea7190;border-color:#e9a635}.player-card.p0{top:0;left:0}.player-card.p1{top:0;right:0}.player-card.p2{bottom:0;left:0}.player-card.p3{bottom:0;right:0}.player-portrait{position:absolute;width:74px;height:74px;left:-5px;top:10px}.player-name{display:flex;align-items:center;gap:5px;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-name b{overflow:hidden;text-overflow:ellipsis}.player-name span{font-size:9px;padding:2px 4px;background:var(--player-color);color:#fff;border-radius:4px}.player-lv{font-size:10px;margin:3px 0;color:#586272}.hp-track{height:6px;border:1px solid #899879;background:#c9c7b8;border-radius:5px;overflow:hidden;display:block}.hp-track i{display:block;height:100%;width:var(--hp);background:linear-gradient(#80c571,#438b5d);transition:width .5s}.hp-track.low i{background:#dc5e5e}.hp-line{font-size:9px;display:flex;justify-content:space-between;margin:1px 0 4px}.player-money{font-size:12px;font-weight:900;color:#69502e}.player-money small{font-size:9px;font-weight:400;margin-left:4px}.map-controls{position:absolute;right:16px;top:118px;display:flex;flex-direction:column;gap:7px;z-index:7}.map-controls button{border:2px solid #efdbad;box-shadow:0 3px 0 #244563;border-radius:8px;background:#fff8e3e8;width:37px;height:37px;font-size:20px;font-weight:900}.turn-banner{position:absolute;top:15px;left:50%;transform:translateX(-50%);background:#183658e8;border:2px solid #e7c675;color:#fff3bf;border-radius:30px;padding:8px 23px;text-align:center;z-index:6;max-width:40%;font-size:13px;font-weight:900;box-shadow:0 3px 8px #10334f40}.turn-banner small{display:block;font-size:10px;font-weight:400;margin-top:3px;color:#d9e7ef}.location-tag{position:absolute;bottom:110px;left:18px;color:#fff;font-size:12px;font-weight:900;text-shadow:0 1px 4px #193046;pointer-events:none}.map-tip{position:absolute;left:50%;bottom:110px;transform:translateX(-50%);font-size:11px;border-radius:30px;background:#152e50d9;color:white;padding:7px 14px;pointer-events:none;white-space:nowrap}.game-dock{z-index:10;flex:none;position:relative;background:linear-gradient(#fff9e9,#f0e1bf);border-top:3px solid #b49455;box-shadow:0 -5px 25px #10284030;min-height:140px;padding:12px 22px calc(13px + var(--safe));display:flex;gap:24px;align-items:center}.dock-story{flex:1;max-width:440px;min-width:190px}.dock-kicker{font-size:10px;letter-spacing:.12em;color:#81704e;font-weight:900}.dock-story h2{margin:5px 0;font-size:22px;line-height:1.35}.dock-story p{font-size:12px;line-height:1.7;margin:3px 0;color:#586176}.dock-actions{display:flex;gap:12px;flex-wrap:wrap;align-items:center;justify-content:flex-end;flex:1}.action-big{min-height:74px;min-width:155px;font-size:20px;padding:15px 20px;border-radius:14px}.action-big svg{width:28px;height:28px}.dock-actions .sub-action{display:flex;flex-direction:column;gap:5px;padding:9px 20px;min-height:70px;font-size:12px}.dock-actions .sub-action svg{width:25px;height:25px}.waiting-orb{width:38px;height:38px;border:4px solid #c7bda6;border-top-color:#b58931;border-radius:50%;animation:spin 1.3s linear infinite;display:inline-block;margin:10px 20px}.dest-list{display:flex;gap:7px;max-width:550px;overflow-x:auto;padding:4px 3px 7px;scrollbar-width:thin}.dest-btn{min-width:95px;font-size:11px;white-space:nowrap;flex-direction:column;gap:4px;padding:8px 10px;min-height:61px}.dest-btn small{font-size:9px;color:#67706f}.dice-value{width:62px;height:62px;border:3px solid #896e34;box-shadow:0 4px 0 #694d25;background:#fffae9;color:#263551;border-radius:14px;display:grid;place-items:center;font-size:33px;font-weight:1000;transform:rotate(-7deg);flex:none}.roll-overlay{position:absolute;inset:0;z-index:30;background:#15365930;display:grid;place-items:center;pointer-events:none}.roulette{background:radial-gradient(#ffe996,#dca344);border:8px solid #fff5d5;outline:4px solid #845c2b;border-radius:50%;width:190px;height:190px;display:grid;place-items:center;box-shadow:0 15px 45px #182e6470;position:relative}.roulette:before{content:"★　★　★";position:absolute;top:13px;font-size:22px;color:#fff8cf}.roulette-number{font-size:96px;line-height:1;font-weight:1000;color:#fff7e4;text-shadow:3px 4px 0 #795029}.battle-scene{position:absolute;inset:0;z-index:9;overflow:hidden;background:#87bfd3 url('battle.webp') center/cover}.battle-scene:before{content:"";position:absolute;inset:0;background:linear-gradient(#1b365649,transparent 40%,#35435d24)}.battle-heading{position:absolute;top:14px;left:50%;transform:translateX(-50%);color:#ffebb5;background:#172f50e8;border:2px solid #e0b65d;border-radius:20px;padding:6px 25px;font-size:13px;font-weight:900;white-space:nowrap}.battle-actor{position:absolute;width:min(31vw,300px);height:min(31vw,300px);bottom:10%;left:14%;z-index:3;animation:battle-idle 2.5s ease-in-out infinite}.battle-actor.right{left:auto;right:14%;animation-delay:-1.2s}.battle-actor.left .hero-art{transform:scaleX(-1)}.battle-actor .hero-art,.monster-art{width:100%;height:100%;filter:drop-shadow(0 13px 5px #09253655)}.monster-art{background:url('monsters.webp') no-repeat;background-size:300% 200%;aspect-ratio:2/3}.monster-art.art0{background-position:0 0}.monster-art.art1{background-position:50% 0}.monster-art.art2{background-position:100% 0}.monster-art.art3{background-position:0 100%}.monster-art.art4{background-position:50% 100%}.monster-art.art5{background-position:100% 100%}.battle-actor .monster-art{width:80%;margin:auto}.battle-actor.boss{transform:scale(1.2)}.battle-plate{position:absolute;top:65px;left:5%;width:33%;max-width:320px;background:#fffaeae8;border:2px solid #dfbd79;border-radius:12px;padding:11px 15px;z-index:5;box-shadow:var(--shadow)}.battle-plate.right{left:auto;right:5%}.battle-plate strong{font-size:17px}.battle-plate .hp-line{font-size:11px;margin:7px 0 3px}.battle-plate .hp-track{height:10px}.battle-role{font-size:11px;display:inline-block;background:#df5d4b;color:white;border-radius:5px;padding:3px 8px;margin-bottom:7px}.battle-role.defend{background:#497fab}.battle-vs{position:absolute;left:50%;top:47%;transform:translate(-50%,-50%) rotate(-9deg);font-size:54px;font-style:italic;font-weight:1000;color:#ffdfa4;text-shadow:0 4px 0 #3b416b;opacity:.9}.battle-commands{display:grid;grid-template-columns:1fr 1fr;gap:9px;width:min(510px,100%)}.command{padding:10px 14px;min-height:59px;justify-content:flex-start;text-align:left;font-size:14px;gap:11px}.command small{display:block;font-size:9px;margin-top:3px;font-weight:400}.command svg{width:25px;height:25px}.command.attack{background:linear-gradient(#ffe6d4,#eec39c)}.command.magic{background:linear-gradient(#ddecff,#bed9f3)}.command.strike{background:linear-gradient(#ffdfb1,#f1c567)}.command.skill{background:linear-gradient(#e8f2d8,#c9dfac)}.battle-last{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);background:#193553e6;color:#fff5d9;border:1px solid #f8d184;border-radius:9px;padding:8px 20px;font-size:12px;z-index:8;max-width:90%;text-align:center;white-space:nowrap}.damage-number{position:absolute;top:15%;left:40%;font-size:58px;font-weight:1000;color:#fff8dc;paint-order:stroke;-webkit-text-stroke:2px #91442e;text-shadow:0 4px 0 #842f2f;z-index:12;animation:damage-float .9s ease-out forwards;pointer-events:none}.damage-number.heal{color:#bdffb6;-webkit-text-stroke-color:#2c784b}.battle-actor.hit{animation:hit-shake .42s}.battle-actor.striking{animation:attack-lunge .45s}.battle-actor.right.striking{animation:attack-lunge-right .45s}.fx-spark{position:absolute;inset:10%;border-radius:50%;background:radial-gradient(#fffbdc,#ffd66860 30%,transparent 65%);animation:flash .45s;z-index:9;pointer-events:none}.inventory-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:15px}.item-card{border:2px solid #ddca9f;background:#fffdf4;border-radius:11px;padding:13px;display:flex;gap:12px;text-align:left;align-items:center;min-height:78px}.item-card .item-symbol{display:grid;place-items:center;background:#eee5d3;border-radius:9px;width:42px;height:42px;flex:none;color:#977032}.item-card strong{font-size:13px}.item-card small{display:block;font-size:11px;line-height:1.6;font-weight:400;color:#686d76;margin-top:4px}.item-card em{font-style:normal;color:#8d611d}.empty-message{padding:25px;text-align:center;color:#6a7381;font-size:13px}.rank-list{list-style:none;margin:18px 0;padding:0}.rank-row{display:flex;align-items:center;gap:12px;border-bottom:1px solid #d9c9a9;padding:11px 3px}.rank-num{font-size:23px;color:#967222;font-weight:1000;width:32px}.rank-row .hero-art{width:62px;flex:none}.rank-info{flex:1}.rank-info strong{font-size:15px}.rank-info small{display:block;font-size:11px;margin-top:5px;color:#5b6470}.rank-worth{font-size:17px;font-weight:900;color:#806029}.rank-worth small{font-size:10px}.log-list{list-style:none;padding:0;margin:15px 0;max-height:55vh;overflow:auto}.log-list li{font-size:12px;line-height:1.7;padding:9px 5px;border-bottom:1px dashed #ccbda2}.log-list time{display:inline-block;font-size:10px;padding:2px 5px;background:#e1d9c7;border-radius:4px;margin-right:8px}.log-list li.victory,.log-list li.chapter{color:#927028;font-weight:900}.log-list li.defeat{color:#a24f52}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.stat{background:#ede5d3;border-radius:8px;padding:10px;text-align:center;font-size:11px}.stat strong{display:block;font-size:20px;margin-top:4px}.profile-head{display:flex;align-items:center;gap:15px}.profile-head .hero-art{width:140px;flex:none}.profile-head h2{margin:0}.profile-head p{margin:7px 0}.profile-towns{font-size:12px;line-height:2;margin:16px 0}.settings-line{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:15px 0;border-bottom:1px solid #dbcba9;font-size:14px}.settings-line small{font-size:11px;color:#6f7480;display:block;margin-top:5px}.settings-line input[type=range]{width:140px}.hotseat-cover{position:absolute;inset:0;z-index:35;display:flex;align-items:center;justify-content:center;background:#183451f2;color:white;text-align:center;padding:20px}.hotseat-cover .hero-art{width:200px;margin:0 auto}.hotseat-cover h2{font-size:25px}.hotseat-cover p{font-size:13px}.result-scene{position:absolute;inset:0;z-index:20;background:linear-gradient(#143353a0,#1e3651dd),url('title.webp') center/cover;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:auto;padding:30px;color:#fff4d4}.result-scene h1{font-size:clamp(28px,4vw,48px);margin:10px;text-shadow:0 3px 0 #49362c}.result-scene>.hero-art{width:min(240px,26vh);min-height:110px;animation:battle-idle 3s infinite}.result-scene .rank-list{background:#fff8e6f0;color:var(--ink);width:min(480px,100%);padding:4px 18px;border:3px solid #d9b46b;border-radius:15px;margin:10px 0 18px}.result-scene .rank-row{padding:5px 0}.result-scene .rank-row .hero-art{width:42px}.result-actions{display:flex;gap:12px}.confetti{position:absolute;top:-15px;width:10px;height:15px;opacity:.9;animation:confetti 5s linear infinite;pointer-events:none}.node-preview{display:flex;align-items:center;gap:16px;background:#ebe5d6;padding:15px;border-radius:12px;margin:16px 0}.node-preview .icon{width:40px;height:40px;color:#917033}.node-preview p{margin:3px 0;font-size:12px}.node-preview h3{margin:0}.chip{display:inline-block;font-size:10px;padding:3px 7px;border-radius:5px;background:#e7ddc7;color:#755c31;margin:3px}.save-list{display:flex;flex-direction:column;gap:9px}.save-item{display:flex;justify-content:space-between;text-align:left;width:100%;padding:13px}.save-item small{font-size:10px;display:block;margin-top:6px;color:#667080}#toast{position:fixed;z-index:200;bottom:calc(26px + var(--safe));left:50%;transform:translate(-50%,15px);opacity:0;transition:.2s;background:#162e4def;color:#fff4d6;border:1px solid #d9ba73;border-radius:10px;padding:13px 22px;max-width:90vw;font-size:13px;pointer-events:none;box-shadow:0 8px 26px #122a4530;text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}.noscript{position:fixed;inset:25%;background:white;padding:30px;z-index:300}.muted{color:#627083}.text-center{text-align:center}.no-motion *,.no-motion *:before,.no-motion *:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
@keyframes reveal{from{opacity:0}to{opacity:1}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pawn-bob{50%{translate:0 -3px}}@keyframes nodeglow{to{opacity:.6;stroke-width:4}}@keyframes battle-idle{50%{translate:0 -5px}}@keyframes hit-shake{20%,60%{translate:-10px 0;filter:brightness(2)}40%,80%{translate:10px 0}100%{translate:0 0}}@keyframes attack-lunge{45%{translate:65px -8px}}@keyframes attack-lunge-right{45%{translate:-65px -8px}}@keyframes damage-float{0%{opacity:0;translate:0 15px;scale:.7}25%{opacity:1;scale:1.15}60%{opacity:1;scale:1}100%{opacity:0;translate:0 -65px}}@keyframes flash{0%,100%{opacity:0}30%{opacity:1}}@keyframes confetti{0%{translate:0 -50px;rotate:0}100%{translate:60px 110vh;rotate:760deg}}
@media(min-width:1500px){.player-card{width:260px;min-height:104px;padding-left:76px}.player-portrait{width:85px;height:85px}.player-name{font-size:15px}.player-lv{font-size:11px}.game-dock{padding-left:4vw;padding-right:4vw;min-height:160px}.dock-story{max-width:540px}.dock-actions{gap:20px}.action-big{min-width:210px}}
@media(max-width:900px){.brand-small{font-size:15px}.connection{display:none}.game-top{padding:6px 10px;gap:8px}.game-objective{font-size:10px}.player-card{width:180px;padding-left:51px;min-height:82px}.player-portrait{width:61px;height:61px;top:15px}.player-name{font-size:12px}.player-lv,.player-money small{font-size:9px}.player-money{font-size:10px}.turn-banner{max-width:36%;font-size:11px;padding:7px 14px}.turn-banner small{font-size:9px}.game-dock{gap:15px;padding:11px 14px calc(12px + var(--safe))}.dock-story h2{font-size:19px}.dock-story{max-width:290px;min-width:160px}.dock-story p{font-size:11px}.action-big{min-width:140px;font-size:17px;padding:12px}.dock-actions{gap:8px}.dock-actions .sub-action{padding:8px 13px}.hud{inset:12px}.map-controls{right:12px;top:108px}.dest-list{max-width:380px}.battle-commands{gap:7px}.command{padding:8px;gap:7px}.battle-actor{width:30vw;height:30vw;bottom:18%}.battle-last{font-size:11px}.battle-plate{top:60px;width:37%}}
@media(max-width:600px){.title-art{background-position:50% 50%;background-size:auto 100%}.title-copy{padding:20px 0 70px;width:88%;align-self:center}.eyebrow{font-size:12px;letter-spacing:.2em}.game-logo{font-size:57px;text-shadow:0 4px 0 #8f4b1f,0 6px 0 #422c42,3px 0 0 #422c42,-3px 0 0 #422c42,0 -3px 0 #422c42,0 8px 10px #182e5470}.title-tagline{font-size:13px;margin:22px 0}.title-menu{width:290px;gap:10px;margin:24px auto 0}.title-menu>.btn{font-size:17px;min-height:48px}.title-secondary{gap:8px}.title-secondary .btn{font-size:12px;padding:10px}.title-note{font-size:10px;line-height:1.8}.title-footer{font-size:9px;bottom:12px;gap:10px;left:12px;right:12px}.modal-backdrop{padding:12px}.modal{padding:21px 16px;max-height:calc(100dvh - 26px);border-radius:16px}.modal h2{font-size:22px}.modal h3{font-size:15px;margin-top:20px}.job-grid{gap:5px}.job-card strong{font-size:12px}.job-card small{font-size:8px}.job-desc{font-size:11px}.mode-grid{grid-template-columns:1fr 1fr}.mode-card{font-size:12px;padding:9px}.form-field{font-size:12px;margin-top:15px}.form-actions .btn.primary{min-width:150px}.row{gap:10px}.help-grid{grid-template-columns:1fr}.help-step{padding:12px}.help-table{font-size:11px}.lobby{padding:20px 15px}.lobby-panel h1{font-size:25px}.lobby-seats{grid-template-columns:1fr 1fr;gap:11px;margin:18px 0}.lobby-seat{padding:9px 6px;min-height:0}.lobby-seat .hero-art{width:115px;height:110px}.lobby-seat strong{font-size:14px}.lobby-seat small{font-size:10px}.lobby-seat.empty{min-height:184px;font-size:12px}.invite-box{padding:13px;margin:15px auto}.invite-code{font-size:28px;margin:7px 0 12px}.lobby-info{font-size:11px}.game-shell{min-height:530px}.game-top{height:47px;padding:4px 9px;gap:8px}.brand-small{font-size:13px}.brand-small .icon{width:19px;height:19px;margin-right:3px}.day-pill{padding:3px 7px}.day-pill b{font-size:13px}.day-pill small{font-size:8px}.game-objective{display:none}.top-tools{gap:5px}.tool-btn{min-width:32px;min-height:32px;padding:5px}.tool-btn svg{width:19px;height:19px}.top-tools .sound-tool{display:none}.hud{inset:8px 7px}.player-card{width:calc(50% - 5px);min-height:64px;height:67px;padding:5px 7px 5px 43px;border-radius:8px}.player-card.p0{top:0;left:0}.player-card.p1{top:0;right:0}.player-card.p2{top:auto;bottom:0;left:0}.player-card.p3{top:auto;bottom:0;right:0}.player-portrait{width:51px;height:51px;left:-5px;top:9px}.player-name{font-size:10px;gap:3px}.player-name span{font-size:8px;padding:1px 3px}.player-lv{font-size:8px;margin:2px 0}.hp-track{height:5px}.hp-line{font-size:8px;margin:1px 0 2px}.player-money{font-size:10px}.player-money small{font-size:8px}.turn-banner{top:82px;max-width:78%;font-size:11px;padding:6px 15px;border-width:1px;white-space:nowrap;box-shadow:0 3px 7px #12334d35}.turn-banner small{display:none}.map-controls{top:121px;right:8px;gap:7px}.map-controls button{width:33px;height:33px;font-size:18px}.map-tip{bottom:83px;font-size:9px;max-width:95%;padding:6px 11px}.location-tag{bottom:80px;left:10px;font-size:10px;display:none}.game-dock{min-height:185px;display:block;padding:10px 12px calc(14px + var(--safe));max-height:47dvh;overflow-y:auto;overscroll-behavior:contain}.dock-story{max-width:none;min-width:0;margin-bottom:9px}.dock-kicker{font-size:9px}.dock-story h2{font-size:18px;margin:3px 0}.dock-story p{font-size:10px;line-height:1.65;margin:3px 0}.dock-actions{justify-content:stretch;gap:8px;flex-wrap:nowrap}.action-big{flex:1;min-width:0;min-height:59px;font-size:18px;padding:10px}.action-big svg{width:24px;height:24px}.dock-actions .sub-action{min-height:59px;min-width:62px;flex:none;padding:7px 10px;font-size:10px;gap:3px}.dock-actions .sub-action svg{width:21px;height:21px}.dock-actions>.btn.small{flex:1;font-size:12px;min-height:45px}.dest-list{max-width:100%;width:100%;padding:2px 2px 6px;gap:7px}.dest-btn{min-width:93px;padding:7px 8px;font-size:10px;min-height:57px}.dice-value{width:50px;height:50px;font-size:28px;border-radius:11px}.battle-plate{top:49px;left:4%;width:43%;padding:9px 10px;border-radius:10px}.battle-plate.right{right:4%}.battle-plate strong{font-size:12px}.battle-plate .hp-line{font-size:9px;margin:4px 0 2px}.battle-plate .hp-track{height:7px}.battle-heading{top:9px;font-size:10px;padding:6px 19px}.battle-role{font-size:9px;padding:3px 6px;margin-bottom:4px}.battle-actor{width:46vw;height:46vw;left:2%;bottom:18%;max-width:240px;max-height:240px}.battle-actor.right{right:2%;left:auto}.battle-actor .monster-art{width:88%}.battle-vs{font-size:35px;top:53%}.battle-last{bottom:11px;font-size:10px;white-space:normal;width:92%;padding:7px 11px;line-height:1.6}.battle-commands{width:100%;gap:7px}.command{min-height:53px;font-size:12px;padding:7px 10px;gap:9px}.command small{font-size:8px;line-height:1.4}.command svg{width:22px;height:22px}.damage-number{font-size:41px;-webkit-text-stroke-width:1px}.inventory-grid{gap:8px;grid-template-columns:1fr}.item-card{padding:10px 12px;min-height:70px}.item-card strong{font-size:12px}.item-card small{font-size:10px}.rank-row{gap:7px}.rank-worth{font-size:14px}.rank-info strong{font-size:12px}.rank-info small{font-size:10px}.rank-num{font-size:20px;width:26px}.rank-row .hero-art{width:50px}.profile-head .hero-art{width:110px}.profile-head h2{font-size:22px}.stats-grid{gap:6px}.stat{font-size:10px;padding:9px 5px}.stat strong{font-size:18px}.result-scene{padding:18px 13px}.result-scene h1{font-size:26px;margin:8px 0}.result-scene>.hero-art{width:130px;min-height:100px;flex:none}.result-scene .rank-list{padding:4px 12px}.result-actions .btn{font-size:12px;padding:10px 13px}.result-scene .eyebrow{font-size:10px}.result-scene .rank-row .hero-art{width:32px}.result-scene .rank-row{gap:7px;padding:4px 0}.result-scene .rank-info small{font-size:9px}#toast{font-size:12px;padding:11px 16px;width:max-content;max-width:91vw;bottom:calc(20px + var(--safe))}.hotseat-cover .hero-art{width:150px}.hotseat-cover h2{font-size:22px}}
@media(max-height:600px) and (min-width:601px){.game-top{height:43px}.game-dock{min-height:118px;padding:8px 16px}.player-card{min-height:68px;height:70px;padding-top:5px;padding-bottom:5px}.player-portrait{width:60px;height:60px;top:5px}.player-lv{margin:2px 0}.turn-banner{font-size:11px}.battle-plate{top:41px;padding:7px 12px}.battle-actor{height:200px;width:200px;bottom:7%}.battle-last{bottom:5px;padding:5px 14px}.dock-story h2{font-size:18px}.dock-story p{font-size:10px}.command{min-height:45px;font-size:12px;padding:6px 10px}.command small{font-size:8px}.title-copy{padding-top:15px;padding-bottom:40px}.game-logo{font-size:40px}.game-logo span{display:inline;font-size:1.15em}.eyebrow{font-size:11px}.title-tagline{font-size:12px;margin:15px}.title-menu{margin:15px auto;gap:8px}.title-menu>.btn{min-height:42px;padding:9px;font-size:15px}.title-note{display:none}.map-controls{top:90px}.location-tag{bottom:86px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}

/* Story, guardian sprites, combat results and responsive polish. */
.boss-art{background-image:url('bosses-spaced.webp');background-size:300% 300%;background-repeat:no-repeat;width:100%;aspect-ratio:1;filter:drop-shadow(0 12px 4px #19334b40)}
.boss-art.art0{background-position:0 0}.boss-art.art1{background-position:50% 0}.boss-art.art2{background-position:100% 0}.boss-art.art3{background-position:0 50%}.boss-art.art4{background-position:50% 50%}.boss-art.art5{background-position:100% 50%}.boss-art.art6{background-position:0 100%}.boss-art.art7{background-position:50% 100%}.boss-art.art8{background-position:100% 100%}

.battle-actor.boss{transform:none;width:min(36vw,350px);height:min(36vw,350px);bottom:7%}.battle-actor.boss.right{right:10%}.battle-actor .boss-art{height:100%}
.story-wrap{display:flex;gap:20px;align-items:center}.story-wrap .boss-art{width:190px;flex:none}.story-dialogue{flex:1;min-width:0}.story-dialogue p{font-size:14px;line-height:2}.story-chapter{font-size:11px;letter-spacing:.16em;color:#947030;font-weight:900}.story-tip{background:#e9e0cb;border-radius:8px;padding:11px 13px;font-size:12px;color:#5c605f;line-height:1.7;margin-top:15px}.reward-view{text-align:center}.reward-view .hero-art{width:170px;margin:0 auto}.reward-view h2{margin:10px 0}.reward-label{font-size:36px;font-weight:1000;color:#a17625;letter-spacing:.03em;text-shadow:0 2px 0 #eac576}.reward-label.loss{color:#66788e;text-shadow:0 2px 0 #ced8df}.reward-gains{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin:15px 0}.reward-gains span{background:#eee2c9;padding:10px 15px;border-radius:9px;font-size:13px;font-weight:800}.battle-stats{font-size:10px;color:#596877;margin-top:5px}.battle-scene[data-region='1']{filter:none;background-color:#84c7dc}.chapter-objective{font-size:11px;color:#fbe29e}.timer-note{font-size:10px;color:#7e714c}.reaction-row{display:flex;gap:9px;flex-wrap:wrap}.reaction-row button{flex:1;min-width:130px}.hero-art{background-image:url('heroes.webp')}.monster-art{background-image:url('monsters.webp')}
@media(max-width:600px){.story-wrap{display:block}.story-wrap>.boss-art{width:130px;float:left;margin:0 10px 4px -10px}.story-dialogue p{font-size:12px;line-height:1.95}.story-tip{clear:both;font-size:11px}.battle-actor.boss{width:51vw;height:51vw;max-width:270px;max-height:270px;bottom:15%}.battle-actor.boss.right{right:0}.battle-stats{font-size:8px}.reward-view .hero-art{width:145px}.reward-label{font-size:31px}.reward-gains{gap:8px}.reward-gains span{font-size:12px;padding:9px 13px}.story-dialogue h2{font-size:21px;line-height:1.5}}

.btn{color:var(--ink)}.btn.blue,.btn.danger{color:#fff}.btn.primary{color:#382d27}

.hero-art.advanced{background-image:url(advanced.webp)}

.battle-backdrop{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.local-player[hidden]{display:none}

/* Directional command cross mirrors the familiar console battle controls. */
.battle-commands{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,48px);gap:5px 9px;width:min(530px,100%);position:relative}
.battle-commands:before{content:attr(data-role);grid-column:2;grid-row:2;place-self:center;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:2px solid #bd9b51;box-shadow:inset 0 0 0 3px #fff6d9;background:#e4ca8e;color:#6e542c;font-size:11px;font-weight:900}
.battle-commands .command{min-height:0;display:block;padding:5px 9px;text-align:center;font-size:13px;line-height:1.2;border-radius:10px;box-shadow:0 3px 0 #18304e}
.battle-commands .command svg{display:none}.battle-commands .command small{font-size:9px;line-height:1.3;margin-top:3px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.battle-commands .attack,.battle-commands .guard{grid-column:2;grid-row:1}.battle-commands .strike,.battle-commands .counter{grid-column:1;grid-row:2}.battle-commands .magic,.battle-commands .ward{grid-column:3;grid-row:2}.battle-commands .skill,.battle-commands .surrender{grid-column:2;grid-row:3}
@media(max-width:600px){.battle-commands{grid-template-rows:repeat(3,47px);gap:4px 6px}.battle-commands .command{font-size:12px;padding:5px 6px}.battle-commands .command small{font-size:8px}.battle-commands:before{width:39px;height:39px;font-size:10px}.game-dock:has(.battle-commands){min-height:229px}.battle-stats .chip{font-size:8px;padding:1px 3px}}
@media(max-height:600px) and (min-width:601px){.battle-commands{grid-template-rows:repeat(3,35px);gap:3px 7px}.battle-commands .command{font-size:11px;padding:4px 6px}.battle-commands .command small{font-size:8px;-webkit-line-clamp:1;margin-top:2px}.battle-commands:before{height:29px;width:29px;font-size:9px}}

.battle-actor>.boss-art{transform:scale(1.22);transform-origin:50% 75%}.story-wrap>.boss-art{transform:scale(1.12)}

.game-shell{min-height:0}.battle-plate strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.battle-role{display:table}
@media(max-width:600px) and (max-height:700px){.battle-heading{top:6px;padding:5px 15px;font-size:9px}.battle-plate{top:37px;padding:6px 8px}.battle-role{font-size:8px;padding:2px 4px;margin-bottom:3px}.battle-plate strong{font-size:11px;line-height:1.3}.battle-plate .hp-line{font-size:8px;margin:3px 0 2px}.battle-plate .hp-track{height:5px}.battle-stats{font-size:7px;margin-top:4px}.battle-actor{width:min(46vw,calc(100dvh - 445px));height:min(46vw,calc(100dvh - 445px));bottom:10%}.battle-actor.boss{width:min(51vw,calc(100dvh - 430px));height:min(51vw,calc(100dvh - 430px));bottom:9%}.battle-last{font-size:8px;bottom:5px;padding:4px 8px}.battle-vs{font-size:28px;top:55%}.game-dock:has(.battle-commands){padding-top:7px;padding-bottom:10px;min-height:222px}.game-dock:has(.battle-commands) .dock-story{margin-bottom:5px}.game-dock:has(.battle-commands) .dock-story h2{font-size:16px}.game-dock:has(.battle-commands) .dock-story p{font-size:9px}.battle-commands{grid-template-rows:repeat(3,43px)}}
@media(max-height:600px) and (min-width:601px){.battle-heading{top:5px;font-size:9px;padding:5px 15px}.battle-plate{top:36px;padding:6px 9px;max-width:210px}.battle-plate strong{font-size:12px}.battle-role{font-size:8px;padding:2px 5px;margin-bottom:3px}.battle-plate .hp-line{font-size:9px;margin:3px 0 2px}.battle-plate .hp-track{height:5px}.battle-stats{font-size:8px;margin-top:3px}.battle-actor,.battle-actor.boss{height:32vh;width:32vh;bottom:3%;left:29%}.battle-actor.right,.battle-actor.boss.right{left:auto;right:29%}.battle-vs{font-size:30px;top:60%}.battle-last{max-width:80%;font-size:9px}.game-shell{min-height:0}}

.battle-backdrop{object-fit:cover}

.credits-link{background:none;border:0;color:inherit;font:inherit;padding:4px;text-decoration:underline;cursor:pointer}.audio-credits p{line-height:1.6}.audio-credits a{color:#2a5680}.sound-tool.active{color:#ffe3a0;border-color:#d9b664}
