:root{--ink:#203e40;--deep:#143e42;--teal:#226967;--paper:#f7f0de;--gold:#d8af60;--muted:#627575;--line:#d5cfb9;--shadow:0 12px 45px #142d3526;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.45 'Segoe UI',Arial,sans-serif}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Georgia,'Times New Roman',serif;font-weight:normal}button,select,input{font:inherit}button,a,select,input{-webkit-tap-highlight-color:transparent}button{border:1px solid var(--line);border-radius:9px;background:#fffaf0;color:var(--ink);padding:10px 14px;min-height:44px;cursor:pointer;transition:background .15s,transform .15s}button:hover{background:#e9e5d3;border-color:#8f9a85}button:active{transform:translateY(1px)}button:disabled{opacity:.48;cursor:default}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,#viewport:focus-visible{outline:3px solid #ba760e;outline-offset:3px}.primary{background:var(--deep);color:#fff9e8;border-color:var(--deep)}.primary:hover{background:#256366;color:white}.topbar{height:58px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;background:var(--deep);color:#f7edcf;gap:16px}.return{color:#fff2ce;text-decoration:none;border-right:1px solid #74918a;padding-right:22px;font-size:13px;white-space:nowrap}.return:hover{text-decoration:underline}.wordmark{letter-spacing:2px;font-size:11px;flex:1}.topbar nav{display:flex;gap:6px}.topbar button{background:transparent;border-color:#547572;color:#fff2ce;padding:6px 11px;min-height:36px;font-size:12px}.topbar button:hover{background:#346267}.eyebrow{font-size:10px;font-weight:bold;letter-spacing:2px;color:var(--teal)}.welcome{display:grid;grid-template-columns:1.1fr 1fr;min-height:calc(100dvh - 58px)}.cover{position:relative;background:#164349 url('assets/cover.png') center/cover;min-height:700px;color:#fff4d5;overflow:hidden}.cover-shade{position:absolute;inset:0;background:linear-gradient(180deg,#072e39b8 0%,#17353822 60%,#112f4166)}.cover-copy{position:relative;padding:50px 48px}.cover .eyebrow{color:#f2d39a;letter-spacing:2.8px}.grandpa-title{font:26px Georgia;margin-top:24px;font-style:italic}.cover h1{font-size:clamp(48px,5.8vw,88px);line-height:.95;margin:10px 0 24px;letter-spacing:-3px;text-shadow:0 2px 15px #082f37}.subtitle{font:18px/1.5 Georgia;color:#fff2dc}.cover-badges{display:flex;gap:8px;margin-top:26px;flex-wrap:wrap}.cover-badges span{font-size:10px;letter-spacing:1px;padding:7px 10px;border:1px solid #f1d9a777;border-radius:20px;background:#11394066}.setup{padding:36px clamp(24px,5vw,76px);max-width:720px;align-self:center}.setup-title h2{font-size:38px;line-height:1.1;margin:12px 0}.setup-title p{font-size:14px;color:var(--muted);margin-bottom:23px}.setup-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:15px 0}.setup label{font-size:12px;color:#486264;display:block}select,input{display:block;width:100%;border:1px solid var(--line);background:#fffdf5;color:var(--ink);padding:10px;border-radius:8px;min-height:44px}select{margin-top:5px}.tiny{font-size:12px;color:var(--muted)}.player-row{display:grid;grid-template-columns:30px 1fr 110px;align-items:center;gap:9px;margin:10px 0}.player-row select{margin:0}.player-row input{font-size:14px}.player-dot{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;background:var(--pc);border:2px solid white;color:#17282d;font-weight:bold;box-shadow:0 0 0 1px #d5cfb9}.setup-note{font-size:11px;color:var(--muted);text-align:center;margin-top:20px}#resume{width:100%;margin-bottom:10px}#game{height:calc(100dvh - 58px);display:grid;grid-template-rows:auto auto minmax(0,1fr)}[hidden]{display:none!important}.scorebar{display:flex;align-items:stretch;gap:10px;padding:12px 20px;border-bottom:1px solid var(--line);background:#fcf8ed}.score{flex:1;max-width:320px;display:flex;align-items:center;gap:10px;border-radius:8px;border:1px solid transparent;padding:7px 12px}.score.active{background:#eae9d7;border-color:#769188}.score-name{font-size:13px;font-weight:600}.score-meta{font-size:10px;color:var(--muted)}.score-value{margin-left:auto;font-family:Georgia;font-size:22px;white-space:nowrap}.score-value small{font:10px 'Segoe UI',sans-serif}.chapterbar{padding:8px 22px;display:flex;justify-content:space-between;gap:15px;font-size:12px;background:#ecebdc;border-bottom:1px solid var(--line)}#modeBadge{margin-left:12px;color:var(--muted)}.lighthouse{display:flex;align-items:center;gap:10px}.lighthouse progress{width:125px;height:9px;accent-color:#b1832a}.playarea{display:grid;grid-template-columns:minmax(0,1fr) 345px;min-height:0}.map-panel{position:relative;min-height:0;overflow:hidden;background-color:#e7e4d1;background-image:radial-gradient(#9e998e33 .7px,transparent .7px);background-size:8px 8px}.map-tools{position:absolute;top:14px;left:16px;right:16px;z-index:2;display:flex;justify-content:space-between;align-items:center;gap:8px;pointer-events:none}.map-tools>*{pointer-events:auto}.map-label{font-size:10px;letter-spacing:2px;color:#667873;background:#f7f0decc;padding:8px;border-radius:5px}.map-tools>div{display:flex;align-items:center;background:#fff7e7ed;border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);padding:3px;gap:2px}.map-tools button{border:0;min-height:36px;padding:5px 10px;background:transparent;font-size:12px}.map-tools output{font-size:10px;min-width:30px;text-align:center}#viewport{width:100%;height:100%;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;cursor:grab;touch-action:pan-x pan-y}#viewport.dragging{cursor:grabbing;user-select:none}#mapSizer{position:relative}#world{width:1320px;height:1350px;transform-origin:0 0;position:absolute;left:0;top:0}#world svg.connections{position:absolute;inset:0;width:1320px;height:1350px;pointer-events:none}.tile{position:absolute;width:152px;height:154px;padding:0;border-radius:16px;overflow:visible;border:3px solid var(--tilecolor);box-shadow:0 4px 9px #38443b22;background:#faf5e5;transition:box-shadow .2s;animation:unfold .45s ease-out}.tile:hover{box-shadow:0 0 0 4px #fff9da,0 8px 24px #22383b55;background:#faf5e5}.tile.current{outline:4px solid #f8de77;outline-offset:4px}.tile.frontier{border:2px dashed #899787;background:#fff9e794;box-shadow:none;height:130px;margin-top:12px}.tile.frontier .unknown{font:38px Georgia;display:block;color:var(--tilecolor)}.tile.frontier small{font-size:11px;display:block}.tile.frontier.legal{border-color:#316c68;background:#fcf4d1}.tile .art{height:102px;width:100%;border-radius:12px 12px 0 0;background-image:url('assets/places.png');background-size:600% 500%;background-repeat:no-repeat}.tile .tile-name{height:46px;display:flex;align-items:center;justify-content:center;padding:3px 6px;line-height:1.15;font:13px Georgia}.tile .tokens{position:absolute;top:-13px;left:8px;display:flex;gap:3px}.tile .token{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--pc);border:2px solid #fffce6;color:#102e32;font-size:12px;font-weight:bold;box-shadow:0 2px 3px #173c4566}.tile .invention{position:absolute;right:-9px;top:67px;background:#143e42;color:#fff5d1;padding:4px 7px;border-radius:7px;font:12px 'Segoe UI',sans-serif;border:2px solid #fff0c8}.tile.workshop{border-color:#b6934c}.tile.workshop .art{background:url('assets/cover.png') center/cover}.map-inscription{position:absolute;font:italic 28px Georgia;opacity:.55;color:#506759;pointer-events:none}.regionbar{position:absolute;bottom:36px;left:15px;display:flex;gap:6px;z-index:2;flex-wrap:wrap;right:15px;pointer-events:none}.regionbar button{pointer-events:auto;background:#fffaecf2;font-size:10px;padding:5px 8px;min-height:32px;border-left:4px solid var(--rc);box-shadow:0 2px 5px #34434311}.map-hint{position:absolute;bottom:10px;width:100%;text-align:center;font-size:10px;color:#4f6763;pointer-events:none;text-shadow:0 1px 3px white}.turn-panel{background:#fcf8ed;border-left:1px solid var(--line);padding:24px;display:flex;flex-direction:column;gap:15px;overflow:auto}.turn-heading{display:flex;justify-content:space-between;align-items:center}.turn-heading b{font-size:11px;color:var(--teal)}#location{font-size:23px;line-height:1.2;min-height:55px}.handbar{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.handbar button{padding:8px 4px;background:#efece0;font-size:10px}.handbar strong{display:block;font:22px Georgia;color:var(--deep)}.action-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}.action-grid button{display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:10px 12px;min-height:65px}.action-grid button b{font-size:13px}.action-grid button small{font-size:10px;color:#677a75;margin-top:3px}.action-grid button .action-symbol{font-size:16px;margin-right:5px}.notice{font:italic 14px/1.5 Georgia;padding:14px 0;border-top:1px solid var(--line);color:#557270;flex:1}.turn-footer{display:flex;flex-direction:column;gap:8px}.journal-btn{background:transparent}.turn-footer button{font-size:12px}.modal-head{position:sticky;top:0;background:#fcf8ed;display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid var(--line);z-index:5;gap:16px}.modal-head h2{font-size:25px}.modal-head button{border:0;background:transparent;font-size:26px;min-width:44px;padding:0}dialog{border:1px solid #ddd3b8;border-radius:18px;background:#fcf8ed;color:var(--ink);box-shadow:0 25px 100px #091e3566;padding:0;max-width:720px;width:calc(100% - 32px);max-height:88dvh;overscroll-behavior:contain}dialog::backdrop{background:#0c2a38a8;backdrop-filter:blur(4px)}#modalBody{padding:22px 24px 28px}#modalBody>p{margin-bottom:15px}.dialog-list{display:grid;gap:9px}.dialog-list>button{display:flex;text-align:left;align-items:center;gap:12px;padding:13px}.dialog-list>button>span{flex:1}.dialog-list small{display:block;color:var(--muted);font-size:12px;margin-top:4px}.tag{font-size:10px;padding:3px 7px;border-radius:12px;background:#e2e9dd;display:inline-block}.modal-art{height:230px;background-image:url('assets/places.png');background-size:600% 500%;border-radius:12px;margin-bottom:18px}.modal-art.workshop{background:url('assets/cover.png') center/cover}.place-detail h3{font-size:24px;margin:10px 0}.place-detail p{margin:12px 0}.place-detail button{margin:4px}.card-list{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.idea-card{border:1px solid var(--line);border-radius:12px;padding:15px 12px;background:#fffdf4;text-align:center;box-shadow:0 2px 4px #2b514011}.idea-card .card-icon{font-size:32px;color:#9c722f;display:block;line-height:1.3}.idea-card b{font:17px Georgia;display:block;margin:7px 0}.idea-card small{font-size:11px;color:var(--muted)}.card-list .empty{grid-column:1/-1}.build-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.build-grid label{font-size:11px}.build-grid select{font-size:13px}.invention-preview{margin:20px 0;border:1px solid #b2bdab;border-radius:13px;padding:20px;background:linear-gradient(140deg,#e3eee3,#fbf3d9)}.invention-preview h3{font-size:26px;margin-bottom:12px}.invention-preview p{font-size:13px;margin:8px 0}.invention-preview .preview-icons{font-size:28px;letter-spacing:14px;color:#8d7137}.wide{width:100%;margin-top:14px}.wish-card{border:1px solid var(--line);border-left:5px solid var(--rc);background:#fffdf5;padding:16px;border-radius:12px;margin-bottom:12px}.wish-card h3{font-size:20px}.wish-card p{font-size:13px;margin:8px 0}.wish-card .condition{background:#eeeee1;padding:10px;border-radius:7px}.wish-card button{width:100%;margin-top:10px}.rule-section{margin:24px 0}.rule-section h3{font-size:24px;margin-bottom:10px}.rule-section p,.rule-section li{font-size:14px;margin:7px 0}.rule-section ul,.rule-section ol{padding-left:22px}.rule-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.rule-tile{background:#f0ecdf;border-radius:10px;overflow:hidden;font-size:11px;text-align:center;padding-bottom:8px}.rule-tile>div{height:100px;background-image:url('assets/places.png');background-size:600% 500%;margin-bottom:6px}.confirm-box{padding:20px;border-radius:12px;background:#e9eddd;margin:15px 0}.confirm-box p{margin:8px 0}.confirm-actions{display:flex;justify-content:flex-end;gap:10px}.journal-entry{border-bottom:1px solid var(--line);padding:10px 0;font-size:13px}.settings-row{display:flex;justify-content:space-between;gap:20px;align-items:center;margin:16px 0}.settings-row input{width:24px;height:24px;min-height:0;accent-color:var(--teal)}.settings-row small{display:block;color:var(--muted);font-size:11px}.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);z-index:20;background:var(--deep);color:#fff5d9;border-radius:9px;padding:12px 20px;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .2s;max-width:90vw;text-align:center}.toast.show{opacity:1}.tutorial-step{background:#e7efdf;border-left:4px solid #608b60;padding:14px;border-radius:8px;margin:10px 0}.tutorial-step b{display:block}.tutorial-banner{background:#e6efd8;padding:12px;border-radius:10px;margin-bottom:15px;font-size:13px}.end-art{height:220px;background:url('assets/cover.png') center/cover;border-radius:10px;margin-bottom:20px}.ending-title{font:32px Georgia;text-align:center;margin:14px 0}.result{display:flex;justify-content:space-between;align-items:center;padding:12px;background:#efeedd;border-radius:8px;margin:8px 0}.result b{font-size:14px}.result span{font:24px Georgia}.inventory-tabs{display:flex;gap:8px;margin-bottom:18px}.inventory-tabs button{flex:1;padding:8px;font-size:12px}.book-intro{font:italic 20px/1.5 Georgia;border-left:3px solid #c4a866;padding-left:20px;margin:20px 0}.ending-stats{display:flex;justify-content:center;gap:20px;text-align:center;margin:20px 0}.ending-stats b{display:block;font:28px Georgia}.ending-stats small{font-size:11px}.warning{background:#fff0d0;border:1px solid #dbc385;padding:10px;border-radius:8px;font-size:12px}.muted{color:var(--muted)}@keyframes unfold{from{opacity:0;transform:scale(.86) rotate(-4deg)}to{opacity:1;transform:scale(1) rotate(0)}}body.reduced *,body.reduced *:before,body.reduced *:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:1000px){.map-label{display:none}.playarea{grid-template-columns:minmax(0,1fr) 290px}.turn-panel{padding:16px;gap:11px}.scorebar{padding:8px 12px;gap:4px}.cover-copy{padding:32px}.wordmark{font-size:9px;letter-spacing:1px}.setup{padding:28px}.cover{min-height:720px}}
@media(max-width:700px){.topbar{height:46px;padding:0 10px;gap:6px}.return{font-size:11px;padding-right:8px}.wordmark{display:none}.topbar nav{gap:4px}.topbar button{min-height:34px;padding:4px 7px;font-size:10px}.welcome{display:block}.cover{min-height:390px;background-position:center 63%}.cover-copy{padding:25px}.cover h1{font-size:54px;margin:7px 0 15px}.grandpa-title{font-size:19px;margin-top:14px}.subtitle{font-size:15px}.cover .eyebrow{font-size:8px}.cover-badges{margin-top:17px}.setup{padding:26px 22px;max-width:none}.setup-title h2{font-size:32px}.setup-title h2 br{display:none}.setup-note{margin-top:15px}.player-row{grid-template-columns:26px 1fr 100px}#game{height:calc(100dvh - 46px)}.scorebar{padding:5px 6px;gap:3px}.score{padding:4px;gap:5px;min-width:0}.score .player-dot{width:22px;height:22px;font-size:10px;flex-shrink:0}.score-name{font-size:10px;max-width:67px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.score-meta{font-size:8px}.score-value{font-size:17px}.score-value small{display:none}.chapterbar{padding:5px 9px;font-size:10px;gap:6px}#modeBadge{display:none}.lighthouse{gap:5px}.lighthouse progress{width:58px;height:7px}.playarea{grid-template-columns:1fr;grid-template-rows:minmax(125px,1fr) auto}.map-tools{top:6px;right:7px;left:auto}.map-tools button{padding:3px 8px;min-height:33px;font-size:10px}.map-tools>div{padding:1px}.map-tools output{font-size:9px}.turn-panel{border-left:0;border-top:1px solid var(--line);padding:9px 12px 10px;gap:6px;overflow:visible}.turn-heading b{font-size:10px}.turn-heading .eyebrow{font-size:9px;letter-spacing:1px}#location{font-size:15px;min-height:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.handbar{gap:5px}.handbar button{padding:4px;min-height:35px;font-size:10px;display:flex;justify-content:center;align-items:center;gap:5px}.handbar strong{font-size:16px}.action-grid{grid-template-columns:repeat(3,1fr);gap:5px}.action-grid button{padding:5px 7px;min-height:45px;justify-content:center}.action-grid button b{font-size:11px}.action-grid button small{font-size:8px;margin:0}.action-grid button .action-symbol{font-size:12px;margin-right:2px}.notice{font:italic 11px/1.3 Georgia;padding:4px 0 0;min-height:30px;max-height:33px;overflow:hidden}.turn-footer{flex-direction:row;gap:7px}.turn-footer button{min-height:35px;padding:5px 12px;font-size:10px}.turn-footer .primary{flex:1}.regionbar{bottom:22px;left:6px;right:6px;gap:4px;flex-wrap:nowrap}.regionbar button{padding:3px 5px;font-size:8px;min-height:26px;flex:1;white-space:nowrap}.map-hint{bottom:5px;font-size:8px}.modal-head{padding:12px 16px}.modal-head h2{font-size:22px}#modalBody{padding:16px}.build-grid{grid-template-columns:1fr;gap:10px}.build-grid label{display:grid;grid-template-columns:75px 1fr;align-items:center}.build-grid select{margin:0}.card-list{grid-template-columns:repeat(2,1fr)}.modal-art{height:210px}.scorebar.four .score{display:grid;grid-template-columns:20px 1fr;gap:2px}.scorebar.four .score-value{grid-column:1/3;grid-row:2;text-align:center;font-size:13px;margin:0}.scorebar.four .score-meta{display:none}.scorebar.four .score .player-dot{width:19px;height:19px}.scorebar.four .score-name{max-width:55px;font-size:9px}.ending-stats{gap:14px}.ending-stats small{font-size:10px}}
@media(max-height:520px) and (orientation:landscape){.topbar{height:38px}.wordmark{display:none}#game{height:calc(100dvh - 38px)}.scorebar{padding:2px 7px}.score{padding:2px 6px}.score-name{font-size:10px}.score-meta{display:none}.score-value{font-size:16px}.score .player-dot{width:23px;height:23px}.chapterbar{padding:3px 10px;font-size:10px}.lighthouse progress{height:6px}.playarea{grid-template-columns:minmax(0,1fr) 285px;grid-template-rows:1fr}.turn-panel{padding:8px 10px;gap:5px;overflow:auto}#location{font-size:14px;min-height:0}.turn-heading .eyebrow{font-size:9px;letter-spacing:1px}.turn-heading b{font-size:9px}.handbar button{min-height:30px;display:flex;align-items:center;justify-content:center;gap:5px;padding:3px}.handbar strong{font-size:15px}.action-grid{grid-template-columns:repeat(3,1fr);gap:4px}.action-grid button{min-height:44px;padding:4px}.action-grid button b{font-size:10px}.action-grid button small{font-size:8px}.action-symbol{display:none}.notice{font-size:10px;line-height:1.3;padding:4px 0;max-height:34px;overflow:hidden;min-height:25px}.turn-footer{flex-direction:row}.turn-footer button{min-height:31px;padding:4px 7px;font-size:10px}.turn-footer .primary{flex:1}.regionbar{bottom:21px;left:5px;gap:3px}.regionbar button{font-size:8px;padding:3px 4px;min-height:25px}.map-hint{font-size:8px;bottom:4px}.map-tools{top:5px;right:5px}.map-tools button{min-height:30px;font-size:10px}.map-label{display:none}.topbar button{min-height:28px}}
@media print{.topbar,#welcome,#game,.modal-head button{display:none!important}dialog{position:static;display:block!important;max-height:none;max-width:none;width:100%;box-shadow:none;border:none}dialog::backdrop{display:none}#modalBody{padding:0}.rule-section{break-inside:avoid}button{display:none!important}}
.tile{animation:none}.tile.fresh{animation:unfold .45s ease-out}.idea-art{width:100%;height:118px;display:block;border-radius:8px;overflow:hidden;background:#f7edcf}.idea-card .card-icon{font-size:18px;margin-top:8px}.preview-art{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:13px}.preview-art .idea-art{height:100px}.preview-icons{display:none}@media(max-width:700px){.preview-art .idea-art{height:76px}.idea-art{height:112px}}
@media(min-width:701px){.player-row{grid-template-columns:30px 1fr 136px}}.idea-art{object-fit:cover}.preview-art svg{background:#efe3c4}
