/* Child-friendly type, flat map and generous touch targets. */
:root{font-size:20px;font-family:ui-sans-serif,system-ui,-apple-system,"Noto Sans TC",sans-serif;color:#203f45;background:#b2dfde;font-synthesis:none}
body{background:linear-gradient(180deg,#b7e5ed,#c8e8bb 70%,#aed49f);color:#203f45;line-height:1.55}button,input,select{font:inherit}button{touch-action:manipulation;min-height:52px;line-height:1.35;font-size:20px!important;letter-spacing:0!important}button:disabled{opacity:.55}button:focus-visible,input:focus-visible,select:focus-visible{outline:4px solid #244b90;outline-offset:4px}.app{max-width:1580px;padding:24px 28px 40px}.top{margin-bottom:24px}.brand{gap:14px}.brand h1{font-size:32px;color:#214d54;text-shadow:2px 2px #fff8d9;letter-spacing:.04em}.brand small{font-size:16px;color:#335f65;letter-spacing:0}.brand .mark{width:54px;height:54px;border:3px solid #345963;background:#ffd76b;color:#345963;box-shadow:4px 4px #6ba5a3}.top-actions{gap:10px;flex-wrap:wrap}.badge{font-size:16px;background:#fff6d8;border-color:#486e64;color:#284e51}.ghost{color:#25494d;background:#f7f8e8;border:2px solid #487c77;box-shadow:3px 3px #719d91;padding:8px 14px}.ghost:hover{background:#fff4bd;color:#25494d}.layout{grid-template-columns:minmax(650px,1fr) 380px;gap:24px;align-items:start}.table-wrap{border:4px solid #426f57;border-radius:16px;padding:10px;background:#88b967;box-shadow:0 7px #416445;overflow:hidden}.board-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:2px 4px 12px;color:#163d35}.board-toolbar p{font-size:16px;font-weight:800;margin:0}.board-toolbar button{font-size:18px!important;min-height:48px;padding:8px 13px;background:#fff7ce;color:#244b42;border:2px solid #426e55;border-radius:9px}.scene{overflow:auto;max-height:850px;border-radius:8px;background:#84b469;scrollbar-width:thin;scrollbar-color:#427859 #c9e29d;overscroll-behavior:contain;touch-action:pan-x pan-y}.board{width:100%;min-width:728px;aspect-ratio:1;position:relative;gap:6px;padding:8px;border:0;border-radius:0;background:#99c779;box-shadow:none;overflow:visible;transform:none!important}.tile{padding:0;border:2px solid #456e5e;border-radius:9px;overflow:visible;box-shadow:0 3px #51794f!important;cursor:pointer;min-width:0;isolation:isolate}.tile:before{height:7px;border-radius:6px 6px 0 0}.tile .num{display:none}.tile-content{padding:8px 2px 34px;gap:2px;justify-content:center;min-height:100%;width:100%;pointer-events:none}.tile .ico{display:block;width:48px;height:42px;font-size:24px;line-height:1}.tile strong{font-size:16px!important;line-height:1.25;letter-spacing:0;overflow-wrap:normal;text-shadow:none;color:#173d3a;max-width:100%;font-weight:850}.tile .home-tag{font-size:14px!important;line-height:1.1;padding:1px 6px;border-radius:4px;color:#1e3f3e;background:#fffbec;border:1px solid #426e64}.tile.active{outline:4px solid #e7a329;outline-offset:1px;z-index:4;box-shadow:0 0 0 7px #fff6b4,0 5px #568355!important}.tile.destination-white,.tile.destination-green{z-index:5;outline-width:5px;outline-offset:-3px}.tile .tokens{bottom:0;gap:0;left:0;right:0;justify-content:center}.tile .pawn{--pawn-size:38px;height:40px;margin:0 -3px;z-index:2}.pawn-number{font-size:14px!important;line-height:16px;width:20px;height:20px;border:2px solid #325d56;background:#fff5cc;right:-3px;bottom:0;border-radius:6px;color:#193e3d}.pawn.current:before{content:"";position:absolute;left:2px;right:2px;bottom:0;height:9px;border:3px solid #ffcb35;background:#fff492;border-radius:50%;z-index:-1}.pawn.current .pawn-sprite{animation:idleHop 2.6s ease-in-out infinite}.board.is-moving .tile.active .pawn-sprite{animation:walkStep .15s ease-in-out infinite alternate}.tile.active .pawn.current{animation:arrival .3s ease-out}.player-id .pawn,.avatar .pawn{--pawn-size:48px;width:48px;height:54px;flex:none}.avatar{width:60px;height:64px;border-radius:10px}.pawn-sprite{image-rendering:pixelated}.sprite-art{display:block;background-image:url('assets/sprites.png');background-size:400% 300%;background-repeat:no-repeat;image-rendering:pixelated;width:100%;height:100%;background-position:var(--sx) var(--sy)}.dream-art{display:block;width:100%;aspect-ratio:1.5;height:auto;background-image:url('assets/dreams.png');background-size:300% 200%;background-repeat:no-repeat;background-position:var(--dx) var(--dy);image-rendering:pixelated;border-radius:7px;border:2px solid #9aaf91}.map-decor{background:#a0cf8b url('assets/town.png') center/cover;image-rendering:pixelated}.map-decor>*{display:none}.map-decor:after{display:none}.center{border:2px solid #639664;border-radius:10px;box-shadow:none;background:#a4d18b}.center-face{width:80%;height:auto;max-height:none;border:3px solid #54825c;border-radius:13px;background:#fffbedf0;box-shadow:5px 5px #37583d66;padding:18px;color:#284c40}.center .eyebrow{font-size:16px;letter-spacing:0;color:#456b51}.center h2{font-size:40px;line-height:1.3;color:#245948;text-shadow:none;margin:4px 0}.center p{font-size:18px;line-height:1.6;color:#365f4d;margin:8px 0}.center .card-stacks{margin:14px 0;gap:18px}.center .life-deck{width:75px;height:94px}.life-deck-inner strong{font-size:16px}.life-deck-inner span{width:30px;height:30px;font-size:22px}.life-deck-inner small{display:none}.deck-label,.deck-label b{font-size:18px;color:#3b614c}.market-pill{font-size:18px;color:#264942;padding:8px 12px;border-radius:8px;border:2px solid #67856a;box-shadow:2px 2px #b5c195}.market-pill:not(:first-child){display:none}.market-pill b{color:#81452b}.rail{gap:20px}.panel{padding:20px;background:#fffbea;color:#204749;border:3px solid #55877b;border-radius:14px;box-shadow:4px 5px #699988}.section-title{font-size:18px;color:#355e52;margin-bottom:12px;letter-spacing:0}.turn-head h2{font-size:28px;color:#213f43;overflow-wrap:anywhere}.turn-head p{font-size:18px;color:#345854}.money{margin:16px 0;gap:9px;grid-template-columns:1fr 1fr}.stat{padding:12px 9px;border-radius:10px;background:#edf4df!important;border:1px solid #95b098}.stat small{font-size:16px;color:#345647;line-height:1.4}.stat strong,.investment-stat strong{font-size:28px;color:#7c412e;line-height:1.35;overflow-wrap:anywhere}.asset-stat{grid-column:1/-1}.asset-stat strong{color:#2a674e}.dream{font-size:18px;line-height:1.6;color:#264a43;padding:9px 0 9px 12px}.dream b{color:#784f1c}.dream small{font-size:16px;color:#345b51}.phase-note{font-size:18px;color:#30534c;line-height:1.6}.primary{font-size:22px!important;background:#ffcf62;color:#293f36;border:2px solid #7a5a28;border-radius:10px;box-shadow:0 4px #ae782d;padding:14px;font-weight:850}.secondary{background:#e4f0df;color:#234d44;border:2px solid #63856b;border-radius:9px;padding:12px;font-size:18px!important}.action-row{flex-wrap:wrap}.player-row{padding:12px;align-items:flex-start;border-radius:10px;font-size:20px}.player-id{align-items:flex-start;min-width:0}.player-id>span:last-child{min-width:0;overflow-wrap:anywhere}.player-balances{font-size:16px;color:#31554c;line-height:1.6;display:block}.player-row>strong{font-size:18px;white-space:nowrap}.log{font-size:18px;color:#34564e;max-height:250px}.log div{padding:10px 0}.fine{font-size:16px;color:#3f6056;line-height:1.6}.dice{font-size:18px;flex-wrap:wrap;color:#31584d}.die{width:44px;height:44px;font-size:28px}.modal{width:min(100%,720px);padding:28px;border:4px solid #487d71;border-radius:18px;background:#fffbed;color:#203f43;max-height:92dvh;box-shadow:0 9px #295d54,0 18px 50px #173b4855;font-size:20px;overscroll-behavior:contain}.modal h2{font-size:30px;line-height:1.35;color:#254e48;margin-bottom:12px}.modal p,.modal .sub{font-size:20px!important;line-height:1.65;color:#34574f}.modal label{font-size:20px}.modal input,.modal select{min-height:56px;font-size:22px;padding:12px;color:#204a43;border:2px solid #839f8e}.modal .primary{margin-top:18px}.card-face{padding:20px;border-radius:12px;border-color:#bfa873;margin:20px 0}.card-face h3{font-size:28px;line-height:1.4}.card-face .category{font-size:16px;color:#645238;letter-spacing:0}.card-face p{font-size:20px}.choice-list{gap:14px}.choice-list button{padding:17px;color:#204a40;background:#eaf4e3;border:2px solid #7b9f7c}.trade-row{grid-template-columns:1fr 1fr;gap:10px;padding:14px}.trade-row>span{grid-column:1/-1}.trade-row small{display:block;font-size:18px;color:#416355}.trade-row button{font-size:20px!important;min-height:52px}.rule-list{font-size:20px;line-height:1.75}.rule-list li{margin:12px 0}.life-card-modal{width:100%}.life-card-modal h2{font-size:26px;letter-spacing:0}.life-card{max-width:440px;min-height:0;margin-bottom:22px;border-radius:12px;box-shadow:5px 6px #b99576;padding:8px}.life-card-inner{min-height:430px;border-radius:6px}.life-card-top{font-size:18px;letter-spacing:0}.life-card-top span:last-child{display:none}.life-card-symbol{width:108px;height:108px;font-size:58px;margin:6px 0 14px}.life-card-number{font-size:18px;letter-spacing:0}.life-card-body{padding:12px 18px 20px}.life-card-body h3{font-size:28px}.life-card-body p{font-size:22px!important;color:#284d45;line-height:1.7}.life-card-effect{font-size:18px;gap:8px}.life-card-effect strong{font-size:26px}.life-card-foot{font-size:16px;letter-spacing:0}.life-card-hint{font-size:18px!important}.landing-option{padding:18px;gap:10px;border-radius:10px}.option-head{font-size:20px}.landing-name{font-size:26px}.landing-effect,.pass-start{font-size:18px;line-height:1.6}.option-hint{font-size:18px!important}.dream-pick-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;padding:10px 4px}.dream-pick{height:225px;border-radius:10px;min-width:0}.dream-face{border-radius:10px;padding:12px;gap:8px}.dream-back span{font-size:22px}.dream-back b{font-size:48px}.dream-back small{font-size:16px}.dream-front-head{font-size:16px}.dream-front strong{font-size:20px;line-height:1.3}.dream-front small,.dream-front em{font-size:16px;line-height:1.3}.dream-reveal{font-size:20px;padding:16px}.dream-reveal h3{font-size:26px;line-height:1.4}.dream-reveal p{font-size:20px!important}.draw-choice-grid{gap:16px;padding:20px 4px;grid-template-columns:repeat(3,minmax(0,1fr))}.draw-choice .draw-deck-back{width:100%;height:205px;border-radius:10px;padding:15px 8px;box-shadow:3px 4px #9c6755;transition:transform .25s}.draw-choice .draw-deck-back span{font-size:20px;line-height:1.4}.draw-choice .draw-deck-back strong{font-size:44px;width:66px;height:66px}.draw-choice .draw-deck-back small{font-size:18px}.draw-choice:hover .draw-deck-back{transform:translateY(-6px)}.draw-choice.picked{animation:chosenCard .38s ease both}.draw-reveal{animation:revealCard .5s ease both}.supplement-title{font-size:18px}.supplement-card{height:180px}.supplement-face{padding:8px 4px;border-radius:7px}.supp-top{font-size:16px;gap:4px}.supp-top b{width:26px;height:26px;font-size:16px}.supp-art{font-size:30px}.supp-back .supp-art{font-size:22px}.supplement-face small{font-size:16px;line-height:1.5}.supplement-note{font-size:16px;line-height:1.6}.supplement-hand{padding:12px;border-radius:10px}.roll-result{font-size:22px!important}.dice-arena{min-height:280px;border-radius:14px;padding:12px;position:relative;overflow:hidden}.dice-arena canvas{width:100%;height:280px;display:block;touch-action:none}.dice-arena.has-webgl{display:block}.dice-arena.has-webgl>.cube-space{display:none}.roll-modal .sub{margin-bottom:8px}.mobile-dock{display:none}.money-pop{position:fixed;right:24px;top:110px;z-index:30;pointer-events:none;font-size:26px;font-weight:900;color:#fff;border:3px solid #fff8da;border-radius:10px;background:#286a49;padding:10px 18px;box-shadow:3px 4px #163e3066;animation:moneyPop 1.5s ease both}.money-pop.loss{background:#a54b35}.tile-info-art{width:120px;height:120px;margin:auto}.sound-btn[aria-pressed=true]{background:#ffd876}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes idleHop{0%,85%,100%{transform:translateY(0)}92%{transform:translateY(-3px)}}@keyframes walkStep{from{transform:translateY(0) rotate(-4deg)}to{transform:translateY(-5px) rotate(4deg)}}@keyframes arrival{0%{transform:translateY(-8px)}70%{transform:translateY(2px)}100%{transform:translateY(0)}}@keyframes chosenCard{to{transform:translateY(-16px) scale(1.08)}}@keyframes revealCard{from{opacity:0;transform:perspective(900px) rotateY(-65deg) translateY(10px)}to{opacity:1;transform:perspective(900px) rotateY(0) translateY(0)}}@keyframes moneyPop{0%{opacity:0;transform:translateY(15px) scale(.9)}15%,75%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-20px)}}
@media(max-width:1100px){.layout{display:flex;flex-direction:column}.rail{display:contents}.rail>.panel:first-child{order:0;width:100%}.table-wrap{order:1;width:100%}.rail>.panel:nth-child(2){order:2;width:100%}.rail>.panel:nth-child(3){order:3;width:100%}.app{padding:16px 16px 155px}.top{margin-bottom:16px;align-items:flex-start}.brand h1{font-size:28px}.brand small{font-size:16px}.top-actions .badge{display:none}.top-actions{justify-content:flex-end}.top-actions .ghost{font-size:18px!important;min-height:48px}.top-actions #restartBtn{display:none}#turnPanel{padding:14px;border-radius:12px;box-shadow:3px 4px #6d9a87}#turnPanel>.section-title{font-size:16px;margin-bottom:8px}#turnPanel .turn-head{gap:12px}#turnPanel .turn-head h2{font-size:26px}#turnPanel .turn-head p{font-size:18px;margin:0}#turnPanel .money{margin:12px 0 0}#turnPanel .stat small{font-size:16px}#turnPanel .stat strong{font-size:27px}#turnPanel .asset-stat,#turnPanel>.supplement-hand,#turnPanel>.dream,#turnPanel>.dice,#turnPanel>.phase-note,#turnPanel>.turn-actions{display:none}.mobile-dock{display:block;position:fixed;bottom:0;left:0;right:0;z-index:8;background:#fffbedf5;backdrop-filter:blur(12px);border-top:3px solid #527d69;padding:10px max(12px,env(safe-area-inset-left)) calc(12px + env(safe-area-inset-bottom));box-shadow:0 -5px 20px #254f4620}.mobile-dock-inner{max-width:720px;margin:auto;display:grid;grid-template-columns:1fr 1.5fr;gap:10px}.mobile-dock .primary{margin:0;min-height:58px;font-size:22px!important}.mobile-dock .secondary{margin:0;font-size:18px!important;padding:10px}.mobile-dock .action-row{grid-column:1/-1;margin:0}.mobile-dock .action-row button{font-size:18px!important;min-height:48px}.scene{max-height:480px}.board{min-width:728px}.table-wrap{padding:7px}.board-toolbar{padding:2px 3px 9px}.player-list{grid-template-columns:repeat(2,minmax(0,1fr))}.player-row{flex-direction:column}.overlay{padding:14px;z-index:20}.modal{max-height:94dvh}.tile strong{font-size:16px!important}.tile .ico{display:block}.tile-content{padding:8px 2px 34px}.center-face{padding:18px;width:80%}.center h2{font-size:36px}.center p{font-size:18px;line-height:1.6}.center .eyebrow{font-size:16px}.center .card-stacks{margin:14px 0}.center .market-strip{gap:8px}.market-pill{font-size:18px}.pawn-number{font-size:14px!important}.tile .pawn{--pawn-size:38px;height:40px}.brand .mark{width:46px;height:46px}.fine{font-size:16px}}
@media(max-width:600px){.app{padding:12px 10px 155px}.top{gap:10px}.brand{gap:9px}.brand h1{font-size:25px}.brand small{font-size:16px}.brand .mark{display:none}.top-actions{gap:7px}.top-actions .ghost{padding:8px 10px;font-size:16px!important}.layout{gap:17px}.scene{max-height:430px}.board{min-width:728px;gap:6px;padding:8px;border:0}.board-toolbar p{font-size:16px}.board-toolbar button{font-size:18px!important}.panel{padding:16px}.player-list{grid-template-columns:1fr}.player-row{flex-direction:row}.player-row>strong{font-size:18px}.player-id .pawn{--pawn-size:42px;width:42px;height:48px}.overlay{padding:10px}.modal{padding:20px 16px;border-width:3px;border-radius:14px;max-height:94dvh}.modal h2{font-size:28px}.modal p,.modal .sub{font-size:20px!important}.dream-pick-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:8px 2px}.dream-pick{height:214px}.dream-front strong{font-size:20px}.dream-back span{font-size:22px}.dream-front small,.dream-front em{font-size:16px}.draw-choice-grid{gap:10px;padding:16px 0}.draw-choice .draw-deck-back{height:178px;padding:12px 3px;border-width:3px}.draw-choice .draw-deck-back span{font-size:18px}.draw-choice .draw-deck-back strong{font-size:34px;width:48px;height:48px;border-width:3px}.draw-choice .draw-deck-back small{font-size:16px}.life-card{padding:6px;border-width:3px;box-shadow:3px 4px #ac9676}.life-card-inner{min-height:0}.life-card-top{font-size:18px}.life-card-body{padding:12px 12px 18px}.life-card-body h3{font-size:27px}.life-card-body p{font-size:22px!important}.life-card-effect{font-size:18px;margin:0 8px 12px;padding:8px}.life-card-effect strong{font-size:25px}.life-card-foot{font-size:16px;padding:8px}.landing-options{grid-template-columns:1fr}.landing-name{font-size:26px}.landing-effect,.pass-start{font-size:18px}.option-head{font-size:20px}.supplement-cards{gap:8px}.supplement-card{height:174px}.supplement-title{font-size:18px;align-items:flex-start}.supp-top{font-size:16px;flex-direction:column;line-height:1.25}.supplement-face small{font-size:16px;line-height:1.35}.supplement-face{padding:6px 3px}.supp-back .supp-art{font-size:18px}.supplement-note{font-size:16px}.supplement-hand{padding:10px 7px}.dice-arena{min-height:250px;margin:14px -4px;padding:5px}.dice-arena canvas{height:250px}.roll-result{font-size:22px!important}.action-row{gap:10px}.action-row>button{flex-basis:130px}.trade-row{grid-template-columns:1fr 1fr}.money-pop{right:14px;top:100px;font-size:24px}.map-decor .pixel-cottage{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.001ms!important;transition-duration:.001ms!important}.pawn.current .pawn-sprite{animation:none}.money-pop{animation:moneyPop 1.5s linear!important}}
.life-card-symbol.life-illustration{border:0;background:transparent;box-shadow:none;width:140px;height:125px;text-shadow:none}.news-illustration{max-width:280px;margin:14px auto}.news-illustration .dream-art{aspect-ratio:1.5}.dream-art{background-color:#f8f2dd}.map-decor{background-color:#a0cf8b}
/* Keep labels and player markers separate even on the smallest map viewport. */
.board{aspect-ratio:auto;grid-template-rows:repeat(7,112px)}.tile .ico{width:44px;height:34px}.tile-content{padding-top:6px;padding-bottom:32px}.tile.kind-start .ico{height:23px}.tile .tokens .pawn{margin:0 -6px}.dream-front .dream-art{flex:0 0 76px;height:76px;min-height:0;aspect-ratio:auto}.dream-front{justify-content:flex-start}.dream-front-head{display:none}.dream-front em{margin-top:auto}.dream-reveal .primary{position:static}.overlay:has(.dream-draw-modal) .modal{width:min(100%,760px)}
@media(min-width:1200px){.board{grid-template-rows:repeat(7,minmax(112px,1fr))}}
@media(max-width:600px){.top{flex-wrap:wrap}.top-actions{margin-left:auto}}
