:root{--ink:#183d32;--muted:#6a7a72;--green:#245c45;--orange:#e7a842;--paper:#f6f7f2;--line:#dfe5dd;--white:#fff;--shadow:0 8px 24px #173b2510}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:'Segoe UI',Arial,sans-serif;font-size:16px}button,input,select{font:inherit}button{cursor:pointer}button,a,input,select{touch-action:manipulation}button{color:inherit;border:0;background:none}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #ebad43;outline-offset:4px}button:disabled{opacity:.4;cursor:default}button:hover:not(:disabled){filter:brightness(.96)}a{color:inherit}h1,h2,p{margin:0}h1{font-family:Georgia,serif;font-weight:normal;font-size:36px;letter-spacing:-1.2px;line-height:1.15}h2{font-family:Georgia,serif;font-size:25px;font-weight:normal;letter-spacing:-.5px}.app-header{min-height:94px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:20px 3.2%;gap:20px}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-family:Georgia,serif;font-size:27px;letter-spacing:-.6px;font-weight:bold}.brand small{display:block;font:10px 'Segoe UI',sans-serif;letter-spacing:2.1px;margin-top:5px;font-weight:700}.brand-mark{background:var(--ink);color:#fff;display:flex;align-items:center;justify-content:center;width:45px;height:49px;border-radius:15px 15px 15px 4px;font-size:40px;position:relative;padding-bottom:9px}.brand-mark span{position:absolute;color:var(--orange);right:6px;top:0;font-size:25px}.header-actions{display:flex;gap:14px;align-items:center}.privacy{font-size:13px;white-space:nowrap}.lock{font-size:18px;margin-right:3px}.quiet{font-size:14px;padding:10px 4px}.primary{background:var(--green);color:#fff;border:1px solid var(--green);border-radius:9px;padding:12px 17px;font-size:14px;font-weight:650;box-shadow:0 3px 0 #113523}.primary span{margin-right:5px;font-size:18px}main{max-width:1800px;margin:auto;padding:28px 3.2% 12px}.season-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;gap:20px}.eyebrow{font-size:11px;font-weight:750;letter-spacing:1.55px}.season-bar .eyebrow{color:#738378;margin-bottom:8px}.season-bar p{font-size:14px;color:var(--muted);margin-top:9px}.season-controls{display:flex;gap:6px;align-items:center}.season-controls select{border:1px solid var(--line);border-radius:8px;background:#fff;padding:11px 30px 11px 13px;max-width:230px;font-size:14px;color:var(--ink)}.arrow{border:1px solid var(--line);background:#fff;border-radius:8px;font-size:24px;width:35px;height:40px}.score-strip{display:grid;grid-template-columns:repeat(4,1fr);background:white;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);margin-bottom:24px;padding:20px 0}.score-strip>div{padding:0 24px;border-right:1px solid var(--line)}.score-strip>div:last-child{border:0}.stat-label{font-size:13px;color:#52675b;display:block}.score-strip strong{display:block;font-size:28px;font-weight:600;letter-spacing:-.9px;margin:6px 0 3px;font-variant-numeric:tabular-nums}.score-strip small{font-size:11px;color:var(--muted)}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 316px;gap:22px;align-items:start}.board-shell{border:1px solid #cbd8c8;border-radius:14px;overflow:hidden;background:#fff;box-shadow:var(--shadow)}.board-top{display:flex;justify-content:space-between;align-items:center;padding:13px 19px;font-size:11px;font-weight:700;letter-spacing:1.6px}.tiny-leaf{color:#678f4f;margin-right:7px}.board-info{font-size:12px;letter-spacing:0;font-weight:400;color:var(--muted)}.map-viewport{overflow:auto}.map{position:relative;aspect-ratio:1.5;isolation:isolate;overflow:hidden;min-width:620px;background:#457949}.terrain{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-3}.map-shade{position:absolute;inset:0;z-index:-2;background:linear-gradient(180deg,#132b2410,transparent 35%,#19392b17)}.compass{position:absolute;top:4%;right:3.7%;font-size:17px;color:#fff;text-align:center;line-height:1.1;text-shadow:0 1px 5px #000}.route-svg,.tiles{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.route-svg path{fill:none;stroke-linejoin:round;stroke-linecap:round}#routeShadow{stroke:#29392b45;stroke-width:20}#routeLine{stroke:#eee6c5b8;stroke-width:12;stroke-dasharray:2 8}.tile{position:absolute;transform:translate(-50%,-50%);width:3.7%;min-width:28px;aspect-ratio:1;border-radius:7px;background:#fff8e9;border:1px solid #d6cbaa;box-shadow:0 3px 0 #aeab83,0 4px 7px #1227195c;pointer-events:auto;font-size:clamp(11px,1.05vw,17px);font-weight:750;padding:0;color:#304932;display:flex;align-items:center;justify-content:center;transition:background .2s,transform .2s;z-index:2}.tile.active{background:#ffd769;border-color:#fae7a3;box-shadow:0 3px 0 #ae7932,0 0 0 4px #fff4cd8c;transform:translate(-50%,-50%) scale(1.13)}.tile.future{opacity:.68}.pawn{position:absolute;transform:translate(-50%,-95%);pointer-events:none;z-index:5;transition:left .45s ease,top .45s ease;filter:drop-shadow(1px 4px 2px #17311f88)}.pawn span{display:block;color:#ffd363;font-size:45px;line-height:1;text-shadow:-1px -1px 0 #fff3bc,1px 1px 0 #825518;-webkit-text-stroke:.6px #9b742f}.pin{position:absolute;transform:translate(-50%,-50%);z-index:4;background:#fffdf6f2;box-shadow:0 3px 0 #d4d7bf,0 5px 13px #0c2b2555;border:1px solid #fff;border-radius:7px;padding:7px 10px;max-width:190px;text-align:left;min-width:110px}.pin::after{content:'';position:absolute;bottom:-7px;left:50%;width:10px;height:10px;background:#eeeddd;transform:rotate(45deg);z-index:-1}.pin small{display:block;font-size:9px;letter-spacing:1px;font-weight:750;color:#6f7d69;margin-bottom:2px}.pin strong{display:block;font-size:12px;line-height:1.2;max-width:155px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pin span{font-size:12px;color:#57735c;font-variant-numeric:tabular-nums}.pin.harbor{background:#e4f4f6ed}.swamp-sign{position:absolute;left:3%;top:69%;width:20%;background:#153d36ed;color:#fff;border:1px solid #628776;border-radius:8px;box-shadow:0 4px 0 #102e26,0 8px 20px #001a1b55;padding:10px 8px;z-index:4;transform:rotate(-3deg)}.swamp-sign .mire-title{display:block;letter-spacing:1.4px;font-size:9px;color:#bce1b7;font-weight:700}.swamp-sign strong{display:block;font-family:Georgia,serif;font-size:clamp(14px,1.6vw,24px);margin:5px 0}.swamp-sign small{display:block;font-size:10px;color:#c0d7cc;line-height:1.25}.swamp-glow{position:absolute;left:0;top:52%;width:23%;height:42%;pointer-events:none;background:radial-gradient(ellipse,#c8e45950,transparent 67%);mix-blend-mode:screen;opacity:.5}.map-caption{position:absolute;bottom:10px;right:13px;font-size:10px;background:#14392ac2;color:#eef6e9;padding:5px 8px;border-radius:4px}.welcome-card{position:absolute;top:22%;left:50%;transform:translateX(-50%);width:360px;text-align:center;background:#fffdf4f5;backdrop-filter:blur(8px);border:1px solid #fff;border-radius:15px;padding:26px 27px;box-shadow:0 15px 45px #07291666;z-index:8}.welcome-icon{color:#b9842e;font-size:29px}.welcome-card h2{font-size:29px;margin:7px 0 11px}.welcome-card p{font-size:14px;line-height:1.5;margin-bottom:20px;color:#536c5b}.welcome-card small{display:block;font-size:11px;line-height:1.5;margin-top:17px;color:var(--muted)}.welcome-card .text-button{display:block;margin:16px auto 0}.trail-controls{display:flex;gap:15px;align-items:center;padding:17px 20px 13px}.play-button{background:var(--green);color:#fff;width:41px;height:41px;border-radius:50%;font-size:15px;flex-shrink:0}.scrubber{flex:1;min-width:0}.scrubber>div{display:flex;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:13px}.scrubber strong{font-weight:650}.scrubber span{color:var(--muted);font-size:11px}.scrubber input{display:block;width:100%;accent-color:var(--green);height:5px;cursor:pointer}.end-button{font-size:12px;white-space:nowrap;color:#4d6c59}.board-legend{display:flex;gap:18px;padding:8px 20px 16px;font-size:10px;color:#637765;align-items:center}.legend-dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:5px}.spent{background:#bc9854}.income{background:#4c9369}.idle{background:#dadccb}.tip{margin-left:auto}.sidebar{display:flex;flex-direction:column;gap:16px}.budget-card,.day-card{border:1px solid var(--line);border-radius:12px;padding:21px;background:#fff;box-shadow:var(--shadow)}.budget-card{background:#eef3e8;border-color:#d8e1ce}.card-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:15px}.card-heading .eyebrow{font-size:10px;letter-spacing:1.3px}.text-button{color:var(--green);font-size:12px;padding:0;font-weight:600}.budget-card h2{font-size:29px;letter-spacing:-.9px}.budget-card p{font-size:12px;color:#60715d;margin-top:7px;line-height:1.5}.coins{display:grid;grid-template-columns:repeat(10,1fr);gap:7px;margin:19px 0}.coin{aspect-ratio:1;border-radius:50%;background:linear-gradient(135deg,#fce29b,#e9b948);border:1px solid #d9ac45;box-shadow:inset 0 0 0 3px #f5d26b,0 2px 0 #bd9238;display:flex;align-items:center;justify-content:center;font-size:11px;color:#a67c2a;font-family:Georgia,serif;font-weight:700}.coin.used{background:#dde3d6;border:1px dashed #aeba9e;box-shadow:none;color:#a9b19e}.budget-foot{display:flex;justify-content:space-between;font-size:11px;gap:6px;color:#61735c}.budget-progress{height:5px;background:#d4dec9;border-radius:5px;overflow:hidden;margin:11px 0}.budget-progress span{display:block;height:100%;width:0;background:#5b8451;transition:width .3s}.budget-card>small{font-size:10px;color:#75826a;line-height:1.4;display:block}.day-card{padding-bottom:13px}.count-pill{border-radius:5px;background:#f0f2ed;color:#60775f;font-size:10px;padding:4px 6px;white-space:nowrap}.day-card h2{font-size:25px}.day-summary{margin:8px 0 13px}.day-summary>span{font-size:14px;font-weight:600;display:block}.day-summary small{font-size:10px;color:var(--muted);display:block;margin-top:4px}.day-transactions{max-height:186px;overflow:auto}.mini-tx{display:flex;justify-content:space-between;gap:10px;padding:10px 0;border-top:1px solid #edf0e9;font-size:11px}.mini-tx strong{font-weight:600;display:block;max-width:169px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mini-tx small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.mini-tx>span{white-space:nowrap;align-self:center}.mini-tx button{text-align:left;padding:0;min-width:0}.full{display:block;text-align:center;margin:14px auto 0;padding-top:10px;border-top:1px solid var(--line);width:100%}.swamp-card{display:flex;align-items:center;text-align:left;gap:13px;border-radius:11px;background:#143e35;color:#fff;padding:17px 15px;box-shadow:var(--shadow)}.swamp-symbol{font-family:Georgia,serif;color:#adc778;font-size:38px;line-height:1}.swamp-card strong{font-family:Georgia,serif;font-size:19px;font-weight:400;display:block}.swamp-card small{font-size:10px;line-height:1.45;color:#bdd3c5;display:block;margin-top:5px}.swamp-card>span:last-child{margin-left:auto}.below-board{display:grid;grid-template-columns:1.4fr 1fr;gap:22px;margin-top:25px}.district-card,.history-card{border:1px solid var(--line);background:#fff;border-radius:12px;padding:23px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px}.section-heading h2{margin-top:7px;font-size:26px}.section-heading .eyebrow{font-size:10px;color:var(--muted)}.section-heading>span{font-size:11px;color:var(--muted)}.category-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.category-item{text-align:left;background:#f6f8f3;border-radius:8px;padding:12px;position:relative;overflow:hidden}.category-item>span{display:block;font-size:11px;color:#536c57}.category-item strong{display:block;font-size:17px;font-weight:600;margin-top:5px}.category-item i{display:block;height:3px;position:absolute;bottom:0;left:0;width:var(--width);background:var(--color)}.history-row{display:grid;grid-template-columns:65px 1fr 80px;align-items:center;gap:12px;font-size:12px;margin:18px 0;text-align:left;width:100%;padding:0}.history-row>div{height:15px;border-radius:4px;background:#f0f3ec;overflow:hidden}.history-row i{display:block;height:100%;width:var(--width);background:#bccdb0;border-radius:4px}.history-row.active i{background:#527b52}.history-row strong{text-align:right;font-weight:550;font-size:12px}.history-card>small{font-size:10px;color:var(--muted)}footer{display:flex;justify-content:space-between;gap:16px;padding:24px 2px 7px;color:#7b897d;font-size:10px}.muted{color:var(--muted);font-size:14px;line-height:1.6}.notice{padding:12px 16px;border:1px solid #e8d4a5;background:#fff5da;border-radius:8px;font-size:13px;margin-bottom:20px;line-height:1.5}.notice.success{background:#eaf3e5;border-color:#c4d8bd}dialog{border:1px solid #d9e2d4;border-radius:16px;color:var(--ink);box-shadow:0 25px 120px #05211655;max-height:90vh;padding:28px}dialog::backdrop{background:#102c2466;backdrop-filter:blur(3px)}.drawer{width:min(960px,94vw)}.small-dialog{width:min(470px,94vw)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}.dialog-head h2{font-size:29px;margin-top:5px}.close{font-size:30px;line-height:1;border:1px solid var(--line);width:36px;height:36px;border-radius:50%;flex-shrink:0}.small-dialog p{font-size:14px;line-height:1.6;margin-bottom:22px}.small-dialog label{display:block;font-size:14px;font-weight:600;margin-bottom:8px}.small-dialog input{width:100%;font-size:25px;padding:12px;border:1px solid #b6c6b1;border-radius:8px;margin-bottom:16px}.small-dialog .primary{width:100%}#drawerIntro{font-size:14px;line-height:1.6;color:#607565;margin-bottom:18px}#drawerBody h3{font-size:16px;margin:25px 0 9px}#drawerBody p,#drawerBody li{font-size:14px;line-height:1.7}#drawerBody a{color:#306d4d}.tx-tools{display:flex;gap:12px;margin-bottom:16px}.tx-tools input{flex:1;min-width:0}.tx-tools input,.tx-tools select{padding:10px 12px;border:1px solid var(--line);border-radius:7px;font-size:14px;background:white;color:var(--ink)}.tx-table{width:100%;border-collapse:collapse;font-size:13px}.tx-table th{font-size:11px;text-transform:uppercase;letter-spacing:1px;text-align:left;padding:11px 8px;border-bottom:1px solid var(--line);color:var(--muted)}.tx-table td{padding:12px 8px;border-bottom:1px solid #e8eee4;vertical-align:top}.tx-table td small{display:block;color:var(--muted);font-size:11px;margin-top:5px}.tx-table .amount{text-align:right;white-space:nowrap;font-weight:650}.tx-table select{font-size:11px;max-width:155px;border:1px solid var(--line);border-radius:5px;padding:5px;background:#fff;color:var(--ink);display:block;margin-bottom:5px}.swamp-toggle{font-size:11px;white-space:nowrap;border:1px solid #c9d5bf;border-radius:6px;padding:7px 8px}.swamp-toggle.flagged{background:#e8eecb}.check-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.check-item{padding:12px;border:1px solid var(--line);border-radius:8px;font-size:13px}.check-item strong{display:block;font-size:16px;margin-bottom:4px}.import-overlay{position:fixed;inset:0;background:#eff4e9ed;backdrop-filter:blur(12px);display:grid;place-items:center;z-index:100;text-align:center}.import-overlay[hidden]{display:none}.import-overlay p{font-size:14px;margin-top:15px}.import-overlay small{display:block;color:var(--muted);font-size:12px;margin-top:20px}.spinner{margin:0 auto 28px;width:45px;height:45px;border:3px solid #d8e3cd;border-top-color:#4c7547;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}[hidden]{display:none!important}.over-budget{color:#a64e36}.good{color:#367b52}.swamp-math{padding:17px;background:#eef3e4;border-radius:8px;margin-bottom:18px}.swamp-math input{vertical-align:middle;width:150px;accent-color:var(--green)}.swamp-math strong{font-size:22px;font-family:Georgia,serif}.review-note{background:#f6f4eb;padding:12px 15px;border-radius:7px;font-size:12px;line-height:1.6}.table-scroll{overflow:auto}.empty-district{font-size:13px;color:var(--muted)}
@media(min-width:1550px){.game-layout{grid-template-columns:minmax(0,1fr) 345px}.day-transactions{max-height:240px}.sidebar{gap:22px}.budget-card,.day-card{padding:25px}.pin strong,.pin span{font-size:14px}.pin small{font-size:10px}.board-top{padding:16px 20px}.tile{border-radius:9px}.pawn span{font-size:53px}}
@media(max-width:1100px){.game-layout{grid-template-columns:minmax(0,1fr) 275px;gap:16px}.privacy{display:none}.app-header{padding:17px 3%}.header-actions{gap:9px}.brand{font-size:23px}.sidebar .eyebrow{font-size:9px}.budget-card,.day-card{padding:17px}.budget-card h2{font-size:26px}.coins{gap:5px}.below-board{grid-template-columns:1fr 1fr}.score-strip>div{padding:0 16px}.score-strip strong{font-size:25px}.score-strip small{font-size:10px}.board-legend{gap:10px}.tip{display:none}.season-controls select{max-width:190px}.pin{padding:6px 8px;min-width:95px;max-width:140px}.pin strong{max-width:115px}.board-info{font-size:11px}.board-top{font-size:10px}.swamp-sign small{font-size:9px}}
@media(max-width:900px){.game-layout{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1fr 1fr;gap:18px}.swamp-card{grid-column:1/-1}.day-transactions{max-height:130px}.map{min-width:0}.pin strong,.pin span{font-size:12px}.below-board{grid-template-columns:1fr}.category-grid{grid-template-columns:repeat(3,1fr)}.score-strip{margin-bottom:20px}.header-actions .quiet{display:none}.score-strip small{line-height:1.5;display:block}.score-strip strong{font-size:23px}.board-legend{font-size:11px}.tip{display:inline}.season-bar h1{font-size:32px}}
@media(max-width:600px){.app-header{min-height:75px;padding:14px 4%}.brand{font-size:20px;gap:8px}.brand small{font-size:8px;letter-spacing:1.4px}.brand-mark{width:34px;height:39px;font-size:31px;border-radius:11px 11px 11px 3px}.brand-mark span{font-size:20px;right:4px}.header-actions .primary{font-size:12px;padding:10px}.header-actions .primary span{display:none}main{padding:21px 4% 10px}.season-bar{display:block;margin-bottom:18px}.season-bar h1{font-size:31px}.season-bar p{font-size:12px}.season-controls{margin-top:15px;justify-content:flex-start}.season-controls select{flex:1;max-width:none}.score-strip{grid-template-columns:1fr 1fr;padding:0}.score-strip>div{padding:15px;border-bottom:1px solid var(--line)}.score-strip>div:nth-child(2){border-right:0}.score-strip>div:nth-child(3){border-bottom:0}.score-strip>div:last-child{padding:15px}.stat-label{font-size:11px}.score-strip strong{font-size:25px}.map{min-width:650px}.map-viewport{max-height:435px;overflow:auto}.board-top{padding:12px;font-size:9px;letter-spacing:1px}.board-info{font-size:10px}.trail-controls{padding:16px 13px;gap:10px}.scrubber>div{font-size:12px;display:block}.scrubber span{display:block;margin-top:4px}.scrubber input{height:8px}.end-button{font-size:11px}.board-legend{font-size:9px;gap:12px;padding:0 13px 13px;flex-wrap:wrap}.tip{width:100%;margin:0}.sidebar{display:flex}.budget-card,.day-card{padding:21px}.coins{gap:8px;max-width:330px}.coin{font-size:14px}.budget-card h2{font-size:30px}.day-transactions{max-height:220px}.mini-tx{font-size:13px}.mini-tx strong{max-width:240px}.mini-tx small{font-size:11px}.category-grid{grid-template-columns:1fr 1fr}.district-card,.history-card{padding:20px}.section-heading{align-items:start}.section-heading>span{display:none}.section-heading h2{font-size:25px}footer{flex-wrap:wrap;font-size:10px;padding-top:20px}footer>span:first-child{width:100%}.welcome-card{left:29%;transform:translateX(-40%);width:300px;top:17%;padding:21px}.welcome-card h2{font-size:25px}.welcome-card p{font-size:13px}.swamp-sign{width:18%}.pin strong{max-width:118px}.check-grid{grid-template-columns:1fr}.tx-tools{flex-direction:column}dialog{padding:19px}.tx-table{min-width:650px}.drawer{width:96vw}.dialog-head h2{font-size:25px}.swamp-math input{width:100%}}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) *,html:not([data-motion="on"]) *::before,html:not([data-motion="on"]) *::after{transition:none!important;animation:none!important}}


/* The Midnight Realm: dark wood, aged brass, hand-painted miniatures. */
:root{color-scheme:dark;--ink:#f0e4ca;--muted:#a3adb5;--green:#bc9559;--orange:#edc477;--paper:#0d1119;--line:#323843;--white:#151b25;--shadow:0 9px 28px #0005;--sprite-atlas:none}
body{background:radial-gradient(ellipse at 22% 0%,#25223680,transparent 48%),#0d1119;color:var(--ink)}
.app-header{background:#11151ee8;border-color:#544734;min-height:83px}.brand{color:#e7cf99}.brand-mark{background:linear-gradient(135deg,#59462d,#272631);border:1px solid #95754d;color:#f6e5bc;box-shadow:inset 0 0 0 3px #171822}.brand-mark span{color:#f8c568}.brand small{color:#a99883}.privacy{color:#a4b6b1}.primary{background:linear-gradient(135deg,#b28748,#735332);border:1px solid #c3a063;box-shadow:0 3px 0 #3c2a1c;color:#fff6df}.quiet{color:#c5c1b7}.primary:hover{box-shadow:0 3px 0 #3c2a1c,0 0 18px #ccac4728}.season-bar .eyebrow{color:#b99b68}.season-controls select,.arrow{background:#1a202c;border-color:#4a4541;color:#e5d8c0}h1{color:#f5e4bd}main{padding-top:25px}.season-bar{margin-bottom:22px}.score-strip{background:linear-gradient(115deg,#1d222e,#151c24);border-color:#3c3f46;box-shadow:inset 0 1px 0 #ffffff05,var(--shadow);padding:18px 0}.stat-label{color:#c1b8a6;font-size:14px}.score-strip small{font-size:12px;color:#9ca8af}.score-strip strong{color:#f5e2b7}.score-strip>div{border-color:#383e48}.notice{background:#342e21;border-color:#695636;color:#e9d3a0}.notice.success{background:#1a2c28;border-color:#365045;color:#b7d4bf}.board-shell{background:#151922;border:1px solid #746044;border-radius:10px;box-shadow:0 0 0 4px #13151d,0 0 0 5px #343036,0 18px 35px #0005}.board-top{background:linear-gradient(#2c2630,#1c2029);color:#dac08d;padding:11px 17px;min-height:58px;gap:12px;letter-spacing:1.4px}.tiny-leaf{color:#e1ba69}.board-tools{display:flex;align-items:center;gap:15px}.board-info{color:#c1b8ac;font-size:12px;padding:7px 0;white-space:nowrap}.calendar-tabs{display:flex;border:1px solid #625339;border-radius:5px;overflow:hidden;flex-shrink:0}.calendar-tabs:empty{display:none}.calendar-tab{padding:6px 11px;font-size:12px;color:#a8a7a5;letter-spacing:0;background:#151b25}.calendar-tab.selected{background:#9a7a45;color:#fff3d1;box-shadow:inset 0 1px 0 #efd2933d}.map{background:#101b20}.map-shade{background:radial-gradient(ellipse at 52% 52%,transparent 40%,#060b1259 100%)}.compass{right:4.3%;top:7%;font-size:15px;color:#c8b58d}#routeShadow{stroke:#10151880;stroke-width:16}#routeLine{stroke:#d6bd78a8;stroke-width:5;stroke-dasharray:1 10}.tile{border:1px solid #a09374;background:linear-gradient(145deg,#c8b891,#938566);color:#28282a;border-radius:6px;box-shadow:inset 0 1px 1px #fff9cc80,inset 0 -2px 1px #5b5042,0 3px 0 #413d37,0 5px 7px #0008;font-family:Georgia,serif;font-size:17px}.tile.future{opacity:1;background:linear-gradient(145deg,#b5a582,#7e7967)}.tile.income{background:linear-gradient(145deg,#bad0a3,#7c9a81);border-color:#b0c29c}.tile.active{background:linear-gradient(#ffe4a3,#ce994a);border-color:#f4d98e;box-shadow:inset 0 0 0 2px #f3ca74,0 3px 0 #6f502a,0 0 0 3px #caa55780,0 0 24px #f7c56165}.tile.unavailable,.tile.unavailable:hover{background:linear-gradient(145deg,#4b5058,#2f343d);border-color:#666a72;color:#989aa0;opacity:.72;box-shadow:inset 0 1px 0 #ffffff15,0 3px 0 #1a1d25,0 5px 7px #0005;cursor:not-allowed;filter:grayscale(1);transform:translate(-50%,-50%)}.locked-mark{position:absolute;right:3px;bottom:0;font:9px 'Segoe UI',sans-serif;color:#b9bdc5}.sprite{display:block;flex-shrink:0;background-image:var(--sprite-atlas);background-size:400% 300%;background-position:var(--sx) var(--sy);background-repeat:no-repeat;width:90px;height:80px;pointer-events:none;filter:drop-shadow(0 5px 2px #0008)}.pawn{width:53px;height:61px;transform:translate(-50%,-90%);z-index:8;filter:drop-shadow(1px 4px 2px #06060699);transition:left .48s ease,top .48s ease}.pawn .adventurer{width:58px;height:51.555px;position:absolute;bottom:4px;left:-2px;background-color:transparent;-webkit-text-stroke:0;filter:drop-shadow(0 0 5px #e7b14a77);animation:traveler-breathe 3.5s ease-in-out infinite}.lantern-glow{position:absolute;left:8px;bottom:17px;width:12px;height:12px;border-radius:50%;background:#ffe6a4;filter:blur(5px);mix-blend-mode:screen;animation:lantern-flicker 3s ease-in-out infinite}.realm-pin{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;padding:0;z-index:4;min-width:95px;max-width:158px;text-align:center;filter:none!important}.miniature{position:relative;display:block;isolation:isolate;transition:transform .22s;pointer-events:none}.miniature>.sprite{width:100px;height:88.8889px}.realm-pin:hover .miniature,.realm-pin:focus-visible .miniature{transform:translateY(-4px) scale(1.1)}.realm-pin.visited .miniature>.sprite{filter:drop-shadow(0 0 12px #ffe3a5dd) drop-shadow(0 0 22px #efb94a88) drop-shadow(0 5px 3px #0009)}.realm-plaque{display:block;min-width:112px;max-width:154px;background:linear-gradient(135deg,#191d26f5,#262531f5);border:1px solid #8c7754;box-shadow:0 2px 0 #080e13,0 4px 8px #0008;border-radius:5px;padding:6px 8px;margin-top:-4px;z-index:1}.realm-plaque>strong{display:block;color:#f0ddb6;font:14px Georgia,serif;white-space:nowrap}.realm-plaque>small{display:block;color:#aab6bd;font-size:9px;letter-spacing:.7px;margin-top:3px}.realm-plaque>span{display:block;font-size:12px;color:#d4bea0;margin-top:4px;font-variant-numeric:tabular-nums}.realm-pin.harbor{transform:translate(-50%,-25%)}.realm-pin.harbor .miniature>.sprite{width:86px;height:76.444px;animation:ferry-rock 5s ease-in-out infinite}.realm-pin.harbor .realm-plaque{min-width:180px}.realm-pin.harbor .realm-plaque>span{font-size:10px}.realm-pin.outskirts,.realm-pin.stables{max-width:130px}.realm-pin.outskirts .realm-plaque,.realm-pin.stables .realm-plaque{min-width:100px}.realm-pin.outskirts .realm-plaque strong,.realm-pin.stables .realm-plaque strong{font-size:12px}.realm-pin.outskirts .miniature>.sprite{animation:portal-glow 4s ease-in-out infinite}.realm-pin.tower .miniature>.sprite{animation:crystal-glow 4s ease-in-out infinite}.swamp-sign{left:2%;top:67%;width:19%;padding:10px 8px;transform:rotate(-3deg);background:linear-gradient(130deg,#152a29f5,#192527f5);border-color:#7e9563;box-shadow:0 3px 0 #07181c,0 8px 20px #0006;color:#e1e9b8}.swamp-sign .mire-sprite{position:absolute;width:94px;height:83.555px;bottom:calc(100% - 12px);left:calc(50% - 47px);filter:drop-shadow(0 0 10px #86b65066) drop-shadow(0 5px 2px #0008);animation:mire-breathe 5s ease-in-out infinite}.swamp-sign .mire-title{color:#cedba5;letter-spacing:1.5px;font-size:10px}.swamp-sign strong{color:#ecf4cc}.swamp-sign small{font-size:10px;color:#b5c1a6}.swamp-glow{left:0;top:53%;width:24%;height:36%;background:radial-gradient(ellipse,#a2dd4760,transparent 67%);animation:mire-glow 6s ease-in-out infinite;pointer-events:none}.mire-bubbles{position:absolute;left:3%;top:57%;width:16%;height:22%;pointer-events:none;z-index:3}.mire-bubbles i{position:absolute;bottom:0;left:12%;width:12px;height:12px;border:1px solid #c3ed81a8;border-radius:50%;background:#789a5440;box-shadow:inset 0 -2px 4px #c1ef4a80,0 0 9px #b6ef4660;animation:bubble-pop 4.3s ease-in infinite;opacity:0}.mire-bubbles i:nth-child(2){left:37%;animation-delay:-1.2s;width:17px;height:17px}.mire-bubbles i:nth-child(3){left:73%;animation-delay:-2.7s}.mire-bubbles i:nth-child(4){left:57%;animation-delay:-.6s;width:8px;height:8px}.mire-bubbles i:nth-child(5){left:89%;animation-delay:-3.4s;width:9px;height:9px}.mire-bubbles i:nth-child(6){left:23%;animation-delay:-2s;width:20px;height:20px}.realm-effect{position:absolute;inset:0;pointer-events:none}.realm-effect i{position:absolute;display:block;opacity:0;left:calc(24% + var(--i)*9%);bottom:55%;animation-delay:calc(var(--i)*-.9s)!important}.steam i,.smoke i{width:20px;height:31px;border-radius:50%;background:radial-gradient(ellipse,#f9e1bab3,#e0d9d733 50%,transparent 70%);filter:blur(2px);animation:steam-rise 4.3s linear infinite}.smoke i{width:15px;height:30px;background:radial-gradient(ellipse,#b4afb596,transparent 65%);left:calc(15% + var(--i)*4%)}.sparkles i,.embers i,.portal i{width:3px;height:3px;background:#f4cf7b;border-radius:50%;box-shadow:0 0 7px #f4d283;animation:magic-rise 4s ease-out infinite}.portal i{background:#be9aff;box-shadow:0 0 10px #9c74ef;animation-duration:3s}.sparkles i{background:#d5b8ff;box-shadow:0 0 8px #b498ff}.realm-effect.ripples{inset:auto;left:36%;top:64.5%;width:36%;height:9%;clip-path:ellipse(50% 50% at 50% 50%)}.ripples i{inset:0;width:100%;height:100%;border:1px solid #9ddfcd;border-radius:50%;animation:water-ripple 3s ease-out infinite}.fireflies{position:absolute;inset:0;pointer-events:none;z-index:2}.fireflies i{position:absolute;left:34%;top:36%;width:3px;height:3px;border-radius:50%;background:#c3e6ae;box-shadow:0 0 8px #dcefae;animation:firefly-wander 12s ease-in-out infinite}.fireflies i:nth-child(2){left:58%;top:45%;animation-delay:-2s}.fireflies i:nth-child(3){left:74%;top:59%;animation-delay:-6s}.fireflies i:nth-child(4){left:23%;top:66%;animation-delay:-4s}.fireflies i:nth-child(5){left:51%;top:78%;animation-delay:-8s}.fireflies i:nth-child(6){left:71%;top:24%;animation-delay:-1s}.fireflies i:nth-child(7){left:39%;top:51%;animation-delay:-10s}.fireflies i:nth-child(8){left:89%;top:35%;animation-delay:-3s}.map-caption{background:#09121bd9;color:#c7c3b6;font-size:11px}.welcome-card{background:#19232cef;color:#efe2c3;border:1px solid #ae915e;box-shadow:0 0 0 4px #0d141a88,0 15px 45px #0009;top:26%;z-index:10}.welcome-card h2{color:#f2dcaf}.welcome-card p{color:#c0c6c2}.welcome-card small{color:#a2b0ad}.welcome-icon{color:#e3b96e}.trail-controls{border-top:1px solid #635136;background:linear-gradient(#23222a,#191e27);padding:17px 20px}.play-button{background:linear-gradient(135deg,#c5a161,#7d603a);color:#f9edcb;border:1px solid #e2bd7b;box-shadow:0 2px 0 #392b22}.scrubber input{accent-color:#d5ad6b}.scrubber strong{color:#e8d1a7;font-size:14px}.end-button{color:#d6c19a}.board-legend{color:#b2b6ad;padding-top:8px;background:#191e27;font-size:11px;flex-wrap:wrap}.legend-dot.spent{background:#d7b578}.legend-dot.income{background:#92c0a6}.legend-dot.idle{background:#a69472}.unavailable-dot{background:#646a77;border:1px solid #989aa4}.board-legend .tip{font-size:10px}.budget-card,.day-card{background:linear-gradient(145deg,#222531,#181f29);border-color:#42434b;box-shadow:var(--shadow)}.budget-card{background:linear-gradient(135deg,#302b26,#20232b);border-color:#796342}.card-heading .eyebrow{color:#c9b791}.budget-card p,.budget-foot{color:#b7b4a8}.budget-card>small{color:#a49d92;font-size:11px}.budget-progress{background:#464135}.budget-progress span{background:#c5a361!important}.budget-card h2{color:#edd8ac}.coin{background:linear-gradient(135deg,#f4dca0,#b48336);border-color:#cfad65;box-shadow:inset 0 0 0 3px #d4ad60,0 2px 0 #6c4b2b;color:#70552f}.coin.used{background:#37363b;border:1px dashed #6e6658;box-shadow:inset 0 1px 4px #0005;color:#746d63}.count-pill{background:#33363b;color:#cab991}.mini-tx{border-color:#343a42;font-size:12px}.mini-tx small{font-size:11px}.day-summary small{font-size:11px}.text-button{color:#d7b677}.full{border-color:#404048}.swamp-card{background:linear-gradient(135deg,#253b32,#152a29);border:1px solid #54694e;color:#dce7bd}.swamp-card small{color:#afc1a8;font-size:11px}.swamp-card strong{color:#e2ecc4}.swamp-symbol{color:#b0cb7d}.district-card,.history-card{background:#181f29;border-color:#3c424b}.category-grid{gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.category-item{background:linear-gradient(135deg,#262934,#1f2730);border:1px solid #41434a;padding:15px 10px 12px 60px;min-height:91px;overflow:hidden}.category-item .category-sprite{position:absolute;left:4px;top:13px;width:53px;height:47.111px}.category-item>span:not(.sprite){color:#c0c1bc;font-size:12px}.category-item strong{color:#f0dbb7;font-size:18px}.category-item>small{display:block;color:#9b9fa7;font-size:10px;margin-top:5px}.category-item i{opacity:.8}.section-heading .eyebrow{color:#a9a59b}.history-row>div{background:#2b333d}.history-row i{background:#73604b}.history-row.active i{background:linear-gradient(90deg,#826845,#cfab6c)}.history-row strong{color:#e0d0af}.history-card>small{color:#9fa9b0;font-size:11px}footer{color:#969b9e}dialog{background:linear-gradient(135deg,#242734,#151f29);border:1px solid #8b7049;color:#e9dec8;box-shadow:0 25px 120px #000a}dialog::backdrop{background:#070b14bb;backdrop-filter:blur(5px)}.close{border-color:#5a5249;color:#d9c49e}.tx-tools input,.tx-tools select,.tx-table select,.small-dialog input{background:#151e28;border-color:#4a4c52;color:#e6dccb}.tx-table th{color:#c5b795;border-color:#585042}.tx-table td{border-color:#363f48}.tx-table td small{color:#a4aeb8}.tx-table .amount{color:#edcf9f}.tx-table .amount.good{color:#9cceb0}.swamp-toggle{border-color:#6a7357;color:#d0d8b4}.swamp-toggle.flagged{background:#334337;color:#e0e6b4}.review-note{background:#302e29;color:#cac1b0}.check-item{border-color:#464d52;background:#19232d}.swamp-math{background:#22382e;color:#d4dec1}.swamp-math input{accent-color:#b5ca83}#drawerIntro{color:#b1b9bc}.realm-guide{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:24px}.realm-guide>div{display:flex;align-items:center;gap:9px;background:#1a2430;border:1px solid #414755;border-radius:8px;padding:7px 10px}.realm-guide .sprite{width:75px;height:66.6667px}.realm-guide strong,.realm-guide small{display:block}.realm-guide strong{font:18px Georgia,serif;color:#e1c797}.realm-guide small{font-size:12px;color:#a9b7bd;margin-top:7px}.good{color:#9bc5a6}.over-budget,.budget-card .over-budget{color:#e9a086}.import-overlay{background:#101721ef;color:#e9d8b5}.spinner{border-color:#3b3740;border-top-color:#d3ab67}
@keyframes steam-rise{0%{transform:translate(0,8px) scale(.5);opacity:0}20%{opacity:.7}75%{opacity:.2}100%{transform:translate(12px,-48px) scale(1.8);opacity:0}}
@keyframes bubble-pop{0%{transform:translateY(0) scale(.1);opacity:0}25%{opacity:.7}80%{transform:translateY(-80px) scale(1.15);opacity:.45}94%{transform:translateY(-87px) scale(1.7);opacity:0}100%{opacity:0}}
@keyframes magic-rise{0%{transform:translate(0,10px) scale(.2);opacity:0}30%{opacity:.95}100%{transform:translate(12px,-60px) scale(.2);opacity:0}}
@keyframes water-ripple{0%{transform:scale(.2);opacity:0}25%{opacity:.75}100%{transform:scale(1);opacity:0}}
@keyframes firefly-wander{0%,100%{transform:translate(0,0);opacity:.15}30%{transform:translate(19px,-12px);opacity:.8}70%{transform:translate(-10px,-26px);opacity:.2}}
@keyframes ferry-rock{0%,100%{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(3deg) translateY(-3px)}}
@keyframes mire-breathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-2px) scale(1.035)}}
@keyframes mire-glow{0%,100%{filter:brightness(.8)}50%{filter:brightness(1.35)}}
@keyframes portal-glow{0%,100%{filter:drop-shadow(0 0 4px #9464bc88)}50%{filter:drop-shadow(0 0 12px #b689f4bb)}}
@keyframes crystal-glow{0%,100%{filter:drop-shadow(0 0 3px #b299da66)}50%{filter:drop-shadow(0 0 10px #d0baf4aa)}}
@keyframes traveler-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
@keyframes lantern-flicker{0%,100%{opacity:.6}50%{opacity:.9}70%{opacity:.7}}
html[data-motion="off"] .map *,html[data-motion="off"] .map *::before,html[data-motion="off"] .map *::after{animation-play-state:paused!important;transition:none!important}
html[data-motion="off"] .realm-effect,html[data-motion="off"] .mire-bubbles,html[data-motion="off"] .fireflies{opacity:.3}
@media(min-width:1550px){.miniature>.sprite{width:116px;height:103.111px}.realm-plaque>strong{font-size:15px}.realm-plaque>small{font-size:10px}.realm-plaque>span{font-size:13px}.pawn{width:66px;height:72px}.pawn .adventurer{width:70px;height:62.222px}}
@media(max-width:1250px){.board-tools{gap:8px}.board-top{padding:10px 12px;font-size:10px}.realm-plaque{min-width:96px;padding:5px;max-width:134px}.realm-plaque>strong{font-size:12px}.realm-plaque>small{font-size:8px;letter-spacing:.4px}.realm-plaque>span{font-size:11px}.miniature>.sprite{width:76px;height:67.5556px}.realm-pin.harbor .miniature>.sprite{width:64px;height:56.8889px}.realm-pin.harbor .realm-plaque{min-width:156px}.realm-pin.outskirts .realm-plaque,.realm-pin.stables .realm-plaque{min-width:78px;max-width:108px}.realm-pin.outskirts .realm-plaque strong,.realm-pin.stables .realm-plaque strong{font-size:10px}.realm-pin.outskirts .realm-plaque small,.realm-pin.stables .realm-plaque small{font-size:7px}.tile{font-size:14px}.swamp-sign .mire-title{font-size:9px}.swamp-sign small{font-size:9px}.category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.board-legend .tip{width:100%;margin-left:0}.score-strip small{font-size:11px}.stat-label{font-size:12px}}
@media(max-width:1000px){.board-tools{gap:6px}.calendar-tab{padding:5px 7px}.board-top{letter-spacing:.7px}.board-info{font-size:10px}.game-layout{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:1fr 1fr}.swamp-card{grid-column:1/-1}.miniature>.sprite{width:98px;height:87.111px}.realm-plaque>strong{font-size:14px}.realm-plaque>small{font-size:9px}.realm-plaque>span{font-size:12px}.below-board{grid-template-columns:1fr 1fr}.realm-pin.harbor .miniature>.sprite{width:75px;height:66.6667px}}
@media(max-width:700px){.below-board{grid-template-columns:1fr}.map{min-width:800px}.map-viewport{max-height:535px}.miniature>.sprite{width:82px;height:72.8889px}.realm-plaque>strong{font-size:12px}.realm-plaque>small{font-size:8px}.realm-plaque>span{font-size:11px}.board-top{align-items:flex-start;flex-direction:column;gap:5px;min-height:73px}.board-top>span{font-size:11px;letter-spacing:1.5px}.board-tools{width:100%;justify-content:space-between;gap:10px}.board-info{font-size:12px}.calendar-tab{font-size:12px;padding:6px 12px}.board-legend{font-size:10px;gap:12px}.board-legend .tip{font-size:10px}.realm-guide{grid-template-columns:1fr}.tile{font-size:14px}.welcome-card{left:29%;top:22%;width:295px}.score-strip .stat-label{font-size:12px}.score-strip small{font-size:11px}.category-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.brand small{color:#b49a74}}
@media(max-width:600px){.sidebar{display:flex}.board-legend{padding-top:4px}.score-strip{background:#1a202a}.score-strip>div{border-bottom-color:#383e48}.budget-card,.day-card{padding:20px}.category-item{padding-left:56px}.category-item .category-sprite{width:49px;height:43.5556px}.category-item>small{font-size:9px}.realm-guide strong{font-size:16px}}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) .map *{animation:none!important;transition:none!important}}
.realm-pin.harbor{flex-direction:row;max-width:265px;gap:0;top:9%!important;left:27%!important;transform:translate(-50%,-50%)}
.realm-pin.harbor .realm-plaque{min-width:158px;margin-left:-10px}
.realm-pin.harbor .miniature>.sprite{width:80px;height:71.111px}
.realm-pin.harbor{top:7%!important;left:24%!important}
@media(max-width:1250px){.miniature>.sprite{width:76px;height:67.5556px}}
@media(max-width:1000px){.miniature>.sprite{width:80px;height:71.111px}}

/* Generated prop sprites: brazier, flame, dragon cave and smoke. */
.prop-sprite{display:block;background-image:var(--prop-atlas);background-size:200% 200%;background-repeat:no-repeat;width:64px;height:64px;pointer-events:none}
.path-torches{position:absolute;inset:0;pointer-events:none;z-index:2}
.path-torch{position:absolute;display:block;width:48px;height:48px;transform:translate(-50%,-70%);pointer-events:none}
.torch-body{position:absolute;inset:0;width:48px;height:48px;background-position:0 0;filter:drop-shadow(1px 3px 2px #05060399)}
.torch-flame{position:absolute;top:-7px;left:10px;width:28px;height:28px;background-position:100% 0;transform-origin:50% 90%;filter:drop-shadow(0 0 5px #ffb449);animation:torch-flutter var(--flicker,2.7s) ease-in-out infinite;animation-delay:var(--phase,0s)}
.torch-pool{position:absolute;left:50%;top:25%;width:105px;height:82px;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(ellipse,#ffc76566 0%,#e99c302e 32%,#e8801810 50%,transparent 70%);mix-blend-mode:screen;filter:blur(2px);animation:torch-light var(--flicker,2.7s) ease-in-out infinite;animation-delay:var(--phase,0s)}
.torch-embers{position:absolute;left:11px;top:-10px;width:27px;height:30px;pointer-events:none}
.torch-embers i,.dragon-embers i{position:absolute;left:42%;bottom:0;width:2px;height:2px;border-radius:50%;background:#ffd497;box-shadow:0 0 4px #ffb151;opacity:0;animation:torch-ember 3.2s ease-out infinite;animation-delay:var(--phase,0s)}
.torch-embers i:nth-child(2){left:63%;animation-delay:calc(var(--phase,0s) - 1.1s)}
.torch-embers i:nth-child(3){left:23%;animation-delay:calc(var(--phase,0s) - 2.3s)}
.path-torch.dormant .torch-flame,.path-torch.dormant .torch-pool,.path-torch.dormant .torch-embers{display:none}
.path-torch.dormant .torch-body{filter:grayscale(.8) brightness(.65)}
.debt-dragon{position:absolute;left:80%;top:1.5%;width:24%;max-width:270px;display:flex;align-items:center;gap:0;transform:translateX(-50%);z-index:4;padding:0;text-align:center;filter:none!important}
.dragon-miniature{position:relative;display:block;width:40%;aspect-ratio:1;flex-shrink:0;isolation:isolate}
.dragon-cave{background-position:0 100%;width:100%;height:100%;filter:drop-shadow(0 4px 3px #050608aa)}
.dragon-miniature>.dragon-cave{animation:dragon-cave-light 5.7s ease-in-out infinite}
.dragon-firelight{position:absolute;left:23%;top:38%;width:56%;height:48%;border-radius:50%;background:radial-gradient(ellipse,#ffe096a1 0%,#ffad3a69 28%,#ed662120 57%,transparent 75%);mix-blend-mode:screen;filter:blur(2px);opacity:.65;animation:dragon-firelight 4.8s ease-in-out infinite;pointer-events:none}
.dragon-smoke{position:absolute;width:54%;height:54%;left:29%;top:2%;background-position:100% 100%;opacity:0;transform-origin:50% 100%;animation:dragon-smoke 7.5s linear infinite;filter:brightness(1.4);z-index:2}
.dragon-smoke.smoke-two{animation-delay:-2.5s;left:34%;width:48%;height:48%}
.dragon-smoke.smoke-three{animation-delay:-5s;left:20%;width:59%;height:59%}
.dragon-embers{position:absolute;left:35%;top:24%;width:40%;height:48%;pointer-events:none}
.dragon-embers i{animation-duration:4.1s;width:2px;height:2px}
.dragon-embers i:nth-child(2){left:60%;animation-delay:-1.7s}
.dragon-embers i:nth-child(3){left:30%;animation-delay:-2.8s}
.dragon-plaque{width:60%;min-width:0;margin-left:-5%;max-width:none;padding:6px 7px;border-color:#93623d;background:linear-gradient(135deg,#29232aee,#211d27f5);box-shadow:0 2px 0 #160e0c,0 3px 13px #e49a2919}
.dragon-plaque>strong{color:#f4ce91;font-size:15px}.dragon-plaque>small{font-size:9px;letter-spacing:.9px;color:#d3a87c}.dragon-plaque>span{font-size:12px;color:#e6c39b}
.debt-dragon:hover .dragon-cave,.debt-dragon:focus-visible .dragon-cave{filter:drop-shadow(0 0 7px #e9b158bb)}
.realm-guide .guide-cave{width:75px;height:75px;flex-shrink:0}
@keyframes torch-flutter{0%,100%{transform:scale(.97,1.03) skewX(-3deg);opacity:.92}17%{transform:scale(1.06,.88) skewX(4deg);opacity:.8}34%{transform:scale(.91,1.09) skewX(-5deg);opacity:1}53%{transform:scale(1.02,.94) skewX(2deg);opacity:.86}72%{transform:scale(.94,1.05) skewX(-1deg);opacity:.98}87%{transform:scale(1.01,.91) skewX(3deg);opacity:.85}}
@keyframes torch-light{0%,100%{opacity:.8;filter:blur(2px) brightness(1)}23%{opacity:.57;filter:blur(3px) brightness(.9)}44%{opacity:.9;filter:blur(2px) brightness(1.1)}68%{opacity:.63;filter:blur(2px) brightness(.95)}84%{opacity:.83;filter:blur(3px) brightness(1.05)}}
@keyframes torch-ember{0%{opacity:0;transform:translate(0,0) scale(.5)}18%{opacity:.8}65%{opacity:.35}100%{opacity:0;transform:translate(8px,-30px) scale(.3)}}
@keyframes dragon-cave-light{0%,100%{filter:drop-shadow(0 4px 3px #050608aa) brightness(1)}19%{filter:drop-shadow(0 4px 3px #050608aa) brightness(1.06)}43%{filter:drop-shadow(0 4px 3px #050608aa) brightness(.96)}68%{filter:drop-shadow(0 4px 3px #050608aa) brightness(1.08)}85%{filter:drop-shadow(0 4px 3px #050608aa) brightness(.99)}}
@keyframes dragon-firelight{0%,100%{opacity:.62;transform:scale(.95)}18%{opacity:.82;transform:scale(1.04)}37%{opacity:.48;transform:scale(.9)}57%{opacity:.76;transform:scale(1.01)}73%{opacity:.55;transform:scale(.94)}88%{opacity:.72;transform:scale(1.03)}}
@keyframes dragon-smoke{0%{opacity:0;transform:translate(0,10%) scale(.55) rotate(-7deg)}20%{opacity:.48}60%{opacity:.3}100%{opacity:0;transform:translate(45%,-55%) scale(1.35) rotate(9deg)}}
@media(max-width:1250px){.dragon-plaque{padding:5px}.dragon-plaque>strong{font-size:12px}.dragon-plaque>small{font-size:7px;letter-spacing:.4px}.dragon-plaque>span{font-size:10px}.path-torch{width:42px;height:42px}.torch-body{width:42px;height:42px}.torch-flame{width:25px;height:25px;left:8px;top:-7px}.torch-pool{width:86px;height:70px}}
@media(max-width:700px){.debt-dragon{width:25%;left:81%}.dragon-plaque>strong{font-size:13px}.dragon-plaque>small{font-size:8px}.dragon-plaque>span{font-size:11px}}
.torch-flame{top:-18px}.torch-embers{top:-25px}
@media(max-width:1250px){.torch-flame{top:-16px}.torch-embers{top:-23px}}


.memory-strip{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:-7px 0 18px;font-size:13px;color:#b8b2a2}
.memory-strip>button{font-size:14px;color:#e9ce94;border:1px solid #65543c;border-radius:7px;padding:8px 12px;background:#28242c}
.memory-strip #ruleCount{font-size:12px;color:#aaa18d;margin-left:8px}
.memory-strip .save-error{color:#ffc393}
.memory-actions{display:flex;gap:10px;flex-wrap:wrap;margin:15px 0}
.memory-button{padding:9px 12px;border:1px solid #786647;border-radius:6px;color:#e8ce99;font-size:14px;background:#2c2830;flex-shrink:0}
.rule-search-label{display:block;margin:20px 0 8px;font-size:14px;color:#d6c6a6}
.rule-search{width:100%;padding:11px;border:1px solid #645744;border-radius:6px;background:#171820;color:#eee3cd;font-size:14px}
.saved-rule{display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid #49413b;padding:16px 0;font-size:14px}
.saved-rule>div{min-width:0;overflow-wrap:anywhere}.saved-rule small{display:block;margin-top:6px;line-height:1.5;color:#bbae95;font-size:12px}
@media(max-width:600px){.memory-strip{gap:8px}.memory-strip #rulesStatus{width:100%;line-height:1.5}.saved-rule{align-items:flex-start}.memory-actions .primary,.memory-button{font-size:13px}}



/* Selected-day visits: a clear golden halo and rising generated stardust. */
.realm-pin.visited .miniature::before{content:"";position:absolute;inset:-22% -28% -15%;z-index:-1;pointer-events:none;border-radius:50%;background:radial-gradient(ellipse at 50% 58%,#fff0b8b8 0%,#f6cc727d 29%,#f4bd474d 49%,transparent 73%);filter:blur(3px);animation:day-visit-glow 3.8s ease-in-out infinite}
.realm-pin.visited .realm-plaque{border-color:#e4c176;box-shadow:0 2px 0 #080e13,0 0 12px #ffd17155}
.day-visit-sparkles{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:visible}
.day-visit-spark{position:absolute;display:block;width:var(--size);height:var(--size);opacity:0;pointer-events:none;animation:day-visit-rise var(--cycle) linear infinite;animation-delay:var(--phase)}
.day-visit-spark .scene-sprite{filter:sepia(1) saturate(2.7) brightness(1.9) drop-shadow(0 0 3px #ffe6a4aa)}
@keyframes day-visit-glow{0%,100%{opacity:.8;transform:scale(.97)}50%{opacity:1;transform:scale(1.05)}}
@keyframes day-visit-rise{0%{opacity:0;transform:translate(0,5px) scale(.3) rotate(0)}18%{opacity:.9}45%{opacity:.8;transform:translate(calc(var(--drift)*.45),calc(var(--rise)*.45)) scale(1) rotate(25deg)}70%{opacity:.6}100%{opacity:0;transform:translate(var(--drift),var(--rise)) scale(.35) rotate(65deg)}}
html[data-motion="off"] .realm-pin.visited .miniature::before{animation:none!important;opacity:.9;transform:none}
html[data-motion="off"] .day-visit-sparkles{display:none}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) .realm-pin.visited .miniature::before{animation:none!important;opacity:.9;transform:none}html:not([data-motion="on"]) .day-visit-sparkles{display:none}}

/* Real generated raster surfaces; HTML supplies the readable, editable ledger. */
.drawer-artwork{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;pointer-events:none;user-select:none}
.encounter-dialog{--paper-gutter:15%;--paper-ink:#392616;--paper-muted:#64503a;color:var(--paper-ink);padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:hidden;max-width:none;max-height:calc(100dvh - 24px);filter:drop-shadow(0 20px 35px #000b);animation:encounter-arrive .3s ease-out both;color-scheme:light}
.encounter-dialog::backdrop{background:#08090dd9;backdrop-filter:blur(5px)}
.encounter-scroll{width:min(1152px,98vw,calc((100dvh - 24px)*1.5));height:min(768px,65.333vw,calc(100dvh - 24px))}
.encounter-dialog .drawer-surface{position:absolute;display:flex;flex-direction:column;min-width:0;min-height:0;inset:16% var(--paper-gutter) 15%;isolation:isolate}
.encounter-dialog .dialog-head{flex-shrink:0;gap:14px;margin:0 0 12px;padding-bottom:10px;border-bottom:1px solid #805e3b66;align-items:flex-start}
.encounter-dialog .dialog-head>div{min-width:0}
.encounter-dialog .dialog-head h2{font-family:Georgia,'Times New Roman',serif;font-size:clamp(25px,2.5vw,34px);font-weight:normal;line-height:1.12;letter-spacing:-.6px;color:#372014;margin-top:5px;overflow-wrap:anywhere}
.encounter-dialog .eyebrow{font-size:10px;letter-spacing:1.8px;color:#74502b}
.encounter-dialog .close{width:38px;height:38px;color:#4a2b16;border:1px solid #78533277;border-radius:5px;background:#fff4ce30;line-height:1;flex-shrink:0;font-size:26px}
.encounter-dialog button:focus-visible,.encounter-dialog select:focus-visible,.encounter-dialog input:focus-visible{outline-color:#754018;outline-offset:2px}
.encounter-dialog #drawerContent{flex:1;min-height:0;min-width:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#8c653a66 transparent;padding:3px 5px}
.encounter-identity{display:flex;align-items:center;gap:14px;min-height:76px;margin:0 0 8px}
.encounter-identity .encounter-emblem{width:82px;height:72.889px;flex-shrink:0;filter:drop-shadow(0 3px 2px #42260b44)}
.encounter-identity .prop-sprite.encounter-emblem{height:82px}
.encounter-identity>div{min-width:0}
.encounter-identity strong{font:normal 22px/1.15 Georgia,serif;color:#4c2e18;display:block}
.encounter-identity span:not(.sprite):not(.prop-sprite){display:block;font-size:12px;line-height:1.45;color:var(--paper-muted);margin-top:5px}
.encounter-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,100px),1fr));border-block:1px solid #96714855;padding:10px 0;margin:10px 0 12px;gap:9px}
.encounter-stats>div{min-width:0}
.encounter-stats span{display:block;font-size:10px;color:var(--paper-muted);letter-spacing:.8px;text-transform:uppercase}
.encounter-stats strong{display:block;font:normal 23px/1.3 Georgia,serif;letter-spacing:-.6px;color:#392413;overflow-wrap:anywhere;margin-top:3px;font-variant-numeric:tabular-nums}
.encounter-dialog #drawerIntro{font-size:13px;line-height:1.5;color:#533d29;margin:0 0 16px}
.encounter-dialog #encounterFootnote{flex-shrink:0;margin-top:8px;padding-top:6px;border-top:1px solid #987b4b55;font-size:9px;letter-spacing:.6px;text-align:center;color:#62432b;line-height:1.5}
.encounter-scroll .encounter-identity{min-height:66px}
.encounter-scroll .encounter-identity .encounter-emblem{width:70px;height:62.222px}
.encounter-scroll .encounter-stats{padding:7px 0;margin:8px 0 10px}
.encounter-dialog .tx-tools{gap:8px;margin-bottom:9px}
.encounter-dialog #encounterMemoryNote{font-size:11px;line-height:1.5;color:#685131;margin:0 0 12px}
.encounter-dialog .tx-tools input,.encounter-dialog .tx-tools select,.encounter-dialog .tx-table select{background:#fffae64d;color:#3e2b1b;border:1px solid #916d4666;border-radius:4px;font-size:12px;padding:9px 10px;min-width:0;max-width:none;width:100%}
.encounter-dialog .tx-tools input::placeholder{color:#77614b;opacity:1}
.encounter-dialog .tx-tools select{flex:0 1 210px}
.encounter-dialog #txSummary{color:#72573b;font-size:11px;line-height:1.5;margin:0 0 5px}
.encounter-dialog .table-scroll{overflow:visible}
.encounter-dialog .tx-table{width:100%;min-width:0;display:block;font-size:13px}
.encounter-dialog .tx-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.encounter-dialog .tx-table tbody{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}
.encounter-dialog .tx-table tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 10px;border-bottom:1px solid #96714855;padding:15px 0;min-width:0;align-content:start}
.encounter-dialog .tx-table td{border:0;padding:0;min-width:0;color:#3d2818}
.encounter-dialog .tx-date{grid-column:1;grid-row:1;font-size:11px;color:#725438!important}
.encounter-dialog .tx-date small{display:inline;margin:0 0 0 6px;font-size:9px}
.encounter-dialog .tx-table .amount{grid-column:2;grid-row:1;font-size:15px;font-weight:650}
.encounter-dialog .tx-table .amount.good{color:#285f36}
.encounter-dialog .tx-merchant{grid-column:1/-1;grid-row:2;overflow-wrap:anywhere;font-weight:600;line-height:1.4}
.encounter-dialog .tx-table td small{color:#725c44;font-weight:400;line-height:1.4}
.encounter-dialog .tx-merchant small{margin:3px 0 2px;font-size:10px}
.encounter-dialog .tx-editors{grid-column:1/-1;grid-row:3;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:7px}
.encounter-dialog .tx-table select{font-size:11px;margin:0;padding:7px 5px;min-height:32px}
.encounter-dialog .tx-rescue{grid-column:1/-1;grid-row:4}
.encounter-dialog .swamp-toggle{background:#fff8de33;border:1px solid #8a72485c;color:#725034;font-size:11px;padding:7px 9px;white-space:normal;text-align:left}
.encounter-dialog .swamp-toggle.flagged{background:#5e713419;border-color:#5b663958;color:#385029}
.encounter-dialog .empty-encounters{grid-column:1/-1;text-align:center;padding:30px 10px;font:italic 20px/1.5 Georgia,serif}
.encounter-dialog .empty-encounters td{grid-column:1/-1;color:#725438}
.encounter-dialog .swamp-math{color:#463019;background:#f7e4b53d;border:1px solid #896c4255;border-radius:4px;padding:12px;font-size:12px}
.encounter-dialog .swamp-math input{width:100%;accent-color:#715a2e;margin:13px 0}
.encounter-dialog .swamp-math strong{display:block;font-size:22px}
.encounter-dialog .swamp-math .muted{font-size:11px!important;line-height:1.5!important;color:#725c44;margin-top:5px}
@keyframes encounter-arrive{from{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
html[data-motion="off"] .encounter-dialog{animation:none}
@media(max-width:700px){
 .encounter-dialog{--paper-gutter:17.5%;width:min(98vw,460px);height:min(94dvh,710px);max-height:94dvh}
 .encounter-dialog .drawer-surface{inset:12% var(--paper-gutter) 13.5%}
 .encounter-dialog .dialog-head{gap:8px;margin-bottom:9px;padding-bottom:9px}
 .encounter-dialog .dialog-head h2{font-size:25px}
 .encounter-dialog .eyebrow{font-size:8px;letter-spacing:1.3px}
 .encounter-dialog .close{width:34px;height:34px}
 .encounter-dialog #drawerContent{padding-right:5px}
 .encounter-dialog .encounter-identity{gap:9px;min-height:60px}
 .encounter-dialog .encounter-emblem{width:64px;height:56.889px}
 .encounter-dialog .prop-sprite.encounter-emblem{height:64px}
 .encounter-dialog .encounter-identity strong{font-size:19px}
 .encounter-dialog .encounter-identity span:not(.sprite):not(.prop-sprite){font-size:10px}
 .encounter-dialog .encounter-stats{gap:5px}
 .encounter-dialog .encounter-stats strong{font-size:19px}
 .encounter-dialog .encounter-stats span{font-size:8px;letter-spacing:.3px}
 .encounter-dialog .tx-tools{flex-direction:column}
 .encounter-dialog .tx-tools select{flex:auto}
 .encounter-dialog .tx-table tbody{grid-template-columns:1fr}
 .encounter-dialog .tx-tools input,.encounter-dialog .tx-tools select{min-height:40px;font-size:12px}
 .encounter-dialog .tx-editors{grid-template-columns:1fr}
 .encounter-dialog .tx-table select{font-size:12px;min-height:36px}
 .encounter-dialog .swamp-toggle{min-height:36px}
 .encounter-dialog #encounterFootnote{font-size:8px;letter-spacing:.1px}
}

/* Zoom controls use a generated brass spyglass; the range remains a native control. */
.zoom-toolbar{display:flex;align-items:center;gap:10px;padding:7px 15px;background:#211f27;border-block:1px solid #6e5838;color:#e8cc91;min-height:60px}
.scene-sprite{display:block;background-image:var(--location-effects);background-size:400% 200%;background-position:var(--fx-x,0%) var(--fx-y,0%);background-repeat:no-repeat;pointer-events:none;width:100%;height:100%}
.spyglass-icon{width:59px;height:46px;flex-shrink:0;filter:drop-shadow(0 2px 2px #0008)}
.spyglass-icon .scene-sprite{width:59px;height:59px;margin-top:-6px}
.zoom-controls{display:flex;align-items:center;gap:8px;flex:1;max-width:330px}
.zoom-controls button,.zoom-fit{border:1px solid #927342;border-radius:5px;background:#302a26;color:#f1d498;min-height:32px;min-width:32px;padding:3px 7px;font-size:19px}
.zoom-controls input{width:100%;min-width:60px;accent-color:#d8ad58;height:24px;cursor:pointer}
.zoom-controls input::-webkit-slider-runnable-track{height:7px;border:1px solid #a18450;border-radius:8px;background:linear-gradient(90deg,#7e5d2e,#eccb7c,#836030)}
.zoom-controls input::-webkit-slider-thumb{margin-top:-5px}
.zoom-fit{font-size:12px;white-space:nowrap}.zoom-toolbar output{font-size:12px;min-width:57px;font-variant-numeric:tabular-nums}.zoom-hint{margin-left:auto;font-size:11px;color:#b7ac96;line-height:1.4;text-align:right}
.map-viewport{position:relative;height:480px;max-height:none!important;overflow:auto;background:#0e1820;scrollbar-width:thin;scrollbar-color:#a0804a #172027;scrollbar-gutter:stable;overscroll-behavior-x:contain}
.map-stage{position:relative;overflow:hidden;margin-inline:auto;width:1000px;height:667px}
.map-stage>.map{position:absolute;inset:0 auto auto 0;width:1000px;height:667px;min-width:0!important;aspect-ratio:auto;transform-origin:0 0}
.map-viewport.zoomed{cursor:grab}.map-viewport.panning,.map-viewport.panning *{cursor:grabbing!important;user-select:none}
.map-stage .tile{font-size:17px;min-width:0}.map-stage .welcome-card{left:50%;top:22%;transform:translateX(-50%);width:360px}
.map-stage .map-caption{font-size:12px}.map-stage .realm-plaque>strong{font-size:13px}
.encounter-sheet{position:static}
.encounter-dialog.is-closing{animation:encounter-depart .24s ease-in both;pointer-events:none}
.encounter-dialog.is-closing::backdrop{animation:realm-backdrop-out .24s ease-in both}
@keyframes encounter-depart{to{opacity:0;transform:translateY(7px) scale(.985)}}
@keyframes realm-backdrop-out{to{background-color:transparent;backdrop-filter:blur(0px)}}
/* Scenes are generated raster paintings. Masks only soften the edge into the board. */
body.realm-open{overflow:hidden}
.location-view{--paper-gutter:18%;position:fixed;inset:0;margin:0;padding:0;width:100vw!important;height:100dvh!important;max-width:none;max-height:none;overflow:hidden;background:transparent!important;filter:none;animation:realm-arrive .5s ease both}
.location-view::backdrop{background:#07101966;backdrop-filter:blur(1px);animation:realm-backdrop-in .5s ease both}
.realm-scene{position:absolute;inset:6vh 4vw;width:92vw;height:88vh;isolation:isolate;pointer-events:none;mask-image:radial-gradient(ellipse 71% 73% at 48% 50%,#000 49%,#000b 65%,transparent 79%);-webkit-mask-image:radial-gradient(ellipse 71% 73% at 48% 50%,#000 49%,#000b 65%,transparent 79%);opacity:0;transition:opacity .5s}
.realm-scene.ready{opacity:1}
.realm-scene>img{position:absolute;width:100%;height:100%;object-fit:cover;object-position:40% 50%;animation:scene-breathe 16s ease-in-out infinite alternate}
.realm-scene .scene-light{position:absolute;inset:0;background:radial-gradient(ellipse at 32% 65%,#eebf4b22,transparent 58%);mix-blend-mode:screen;animation:scene-lantern 5s ease-in-out infinite}
.realm-scene[data-realm="swamp"] .scene-light,.realm-scene[data-realm="well"] .scene-light{background:radial-gradient(ellipse at 32% 64%,#b1f59427,transparent 60%)}
.realm-scene[data-realm="tower"] .scene-light,.realm-scene[data-realm="outskirts"] .scene-light{background:radial-gradient(ellipse at 34% 50%,#b38aff2b,transparent 60%)}
.realm-scene[data-realm="debt"] .scene-light{background:radial-gradient(ellipse at 29% 60%,#ffac5439,transparent 57%);animation-duration:2.9s}
.scene-particles{position:absolute;inset:0;overflow:hidden}
.scene-particle{position:absolute;width:var(--size);height:var(--size);animation:scene-drift var(--duration) ease-in-out infinite alternate;animation-delay:var(--phase);filter:drop-shadow(0 0 7px #ffe4ad45)}
.scene-particle .scene-sprite{animation:scene-wing 1.1s ease-in-out infinite;animation-delay:var(--phase)}
.scene-particle.mist{animation:scene-mist var(--duration) linear infinite;animation-delay:var(--phase);opacity:0;filter:blur(.5px)}
.scene-particle.mist .scene-sprite,.scene-particle.bubble .scene-sprite,.scene-particle.ember .scene-sprite{animation:none}
.scene-particle.bubble{animation:scene-bubble var(--duration) ease-in infinite;animation-delay:var(--phase);opacity:0;filter:drop-shadow(0 0 9px #9de96955)}
.scene-particle.ember{animation:scene-mist 6s linear infinite;animation-delay:var(--phase);opacity:0}
.scene-particle.coin .scene-sprite{animation:scene-coin 7s ease-in-out infinite;animation-delay:var(--phase)}
.scene-particle.mote .scene-sprite{animation:scene-glint 3.4s ease-in-out infinite;animation-delay:var(--phase)}
.realm-return{position:absolute;top:3vh;left:5vw;z-index:3;display:flex;gap:10px;align-items:center}
.realm-return button{border:1px solid #ae8c55;border-radius:6px;background:#151d26df;backdrop-filter:blur(7px);padding:11px 16px;color:#f2dfb5;font-size:14px;box-shadow:0 3px 12px #0005}
.realm-return button:last-child{font-size:12px;color:#d5c9b3}
.realm-return #backToBoard{display:grid;place-items:center;width:46px;height:44px;min-width:44px;padding:0;border-radius:8px}
#backToBoard img{display:block;width:29px;height:38px;max-width:none;object-fit:contain;transform:rotate(90deg);pointer-events:none;filter:drop-shadow(0 1px 2px #0009)}
#backToBoard:hover{border-color:#e1bc72;filter:brightness(1.18)}#backToBoard:focus-visible{outline:2px solid #efd18c;outline-offset:3px}
.realm-caption{position:absolute;left:8vw;bottom:11vh;width:45vw;color:#ffedcc;pointer-events:none;text-shadow:0 3px 14px #000,0 1px 4px #000}
.realm-caption>span{font-size:11px;letter-spacing:3px;color:#e6c685}.realm-caption h2{font:normal clamp(34px,4.3vw,69px)/1.05 Georgia,serif;margin:10px 0 12px;letter-spacing:-1.5px}.realm-caption p{font:italic 17px/1.5 Georgia,serif;max-width:400px}
.location-view .encounter-sheet{position:absolute;right:3vw;top:5vh;width:38vw;height:90vh;max-width:650px;min-width:390px;filter:drop-shadow(0 16px 24px #0009);animation:parchment-float-in .65s ease both}
.location-view .drawer-artwork{opacity:.88;visibility:visible!important;object-fit:fill}
.location-view .drawer-surface{inset:14% var(--paper-gutter) 14%;color:#352518}
.location-view .dialog-head{margin-bottom:9px;padding-bottom:9px;gap:7px}
.location-view .dialog-head h2{font-size:clamp(23px,2.3vw,34px)}
.location-view .encounter-identity{gap:9px;min-height:56px;margin-bottom:4px}
.location-view .encounter-identity .encounter-emblem{width:62px;height:55.11px}
.location-view .encounter-identity .prop-sprite{height:62px}
.location-view .encounter-identity strong{font-size:19px}.location-view .encounter-identity span:not(.sprite):not(.prop-sprite){font-size:11px}
.location-view .encounter-stats{padding:7px 0;margin:8px 0}.location-view .encounter-stats strong{font-size:20px}.location-view .encounter-stats span{font-size:9px;letter-spacing:.2px}
.location-view .tx-tools{flex-direction:column}.location-view .tx-tools select{flex:auto}.location-view .tx-table tbody{grid-template-columns:1fr}
.location-view .tx-editors{grid-template-columns:1fr}.location-view .swamp-toggle{min-height:35px;font-size:12px}
.location-view.is-closing{animation:realm-depart .28s ease both}.location-view.is-closing .encounter-sheet{animation:parchment-float-out .28s ease both}
@keyframes realm-arrive{from{opacity:0}to{opacity:1}}
@keyframes realm-depart{to{opacity:0}}
@keyframes realm-backdrop-in{from{background-color:transparent;backdrop-filter:blur(0)}to{background-color:#07101966;backdrop-filter:blur(1px)}}
@keyframes parchment-float-in{from{opacity:0;transform:translate(35px,9px)}to{opacity:1;transform:translate(0,0)}}
@keyframes parchment-float-out{to{opacity:0;transform:translate(20px,5px)}}
@keyframes scene-breathe{from{transform:scale(1)}to{transform:scale(1.035) translate(-.5%,.2%)}}
@keyframes scene-lantern{0%,100%{opacity:.8}27%{opacity:.45}42%{opacity:.9}63%{opacity:.59}81%{opacity:.86}}
@keyframes scene-drift{from{transform:translate(-9px,8px)}to{transform:translate(var(--drift),-35px)}}
@keyframes scene-wing{0%,100%{transform:scaleX(1) rotate(-5deg)}50%{transform:scaleX(.7) rotate(7deg)}}
@keyframes scene-mist{0%{opacity:0;transform:translate(0,15px) scale(.65)}20%{opacity:.35}70%{opacity:.23}100%{opacity:0;transform:translate(var(--drift),-150px) scale(1.6)}}
@keyframes scene-bubble{0%{opacity:0;transform:translate(0,25px) scale(.4)}18%{opacity:.65}75%{opacity:.5}95%{opacity:.35;transform:translate(var(--drift),-140px) scale(1.2)}100%{opacity:0;transform:translate(var(--drift),-145px) scale(1.6)}}
@keyframes scene-coin{0%,100%{transform:rotate(-8deg) scaleX(.8)}50%{transform:rotate(14deg) scaleX(1)}}
@keyframes scene-glint{0%,100%{opacity:.3;transform:scale(.7) rotate(0)}50%{opacity:.95;transform:scale(1.05) rotate(24deg)}}
html[data-motion="off"] .realm-scene *,html[data-motion="off"] .realm-scene{animation-play-state:paused!important;transition:none!important}
html[data-motion="off"] .location-view,html[data-motion="off"] .location-view .encounter-sheet,html[data-motion="off"] .location-view::backdrop,html[data-motion="off"] .encounter-dialog.is-closing{animation:none!important}
@media(max-width:1150px){.zoom-hint{display:none}.location-view .encounter-sheet{right:1vw;width:43vw;min-width:350px}.realm-caption{left:6vw;width:45vw}.realm-caption h2{font-size:43px}}
@media(max-width:700px){
 .zoom-toolbar{gap:7px;padding:6px 9px}.spyglass-icon{width:38px}.spyglass-icon .scene-sprite{width:44px;height:44px;margin-top:0}.zoom-controls{gap:4px}.zoom-toolbar output{font-size:10px;min-width:44px}.zoom-fit{font-size:10px;padding:4px}.zoom-controls button{min-width:28px;font-size:18px}
 .location-view .realm-scene{inset:3vh 0 5vh;width:100vw;height:92vh;mask-image:linear-gradient(transparent,#000 8%,#000 85%,transparent);-webkit-mask-image:linear-gradient(transparent,#000 8%,#000 85%,transparent)}
 .realm-scene>img{object-position:30% 50%}.realm-caption{left:6vw;top:12vh;bottom:auto;width:84vw}.realm-caption h2{font-size:35px;margin-top:7px}.realm-caption p{font-size:14px;max-width:76vw}.realm-caption>span{font-size:9px;letter-spacing:2px}
 .realm-return{left:4vw;top:2vh;gap:7px}.realm-return button{font-size:12px;padding:9px 12px}.realm-return button:last-child{font-size:11px}
 .location-view .encounter-sheet{width:94vw;min-width:0;max-width:none;right:0;top:32vh;height:67vh}
 .location-view .drawer-surface{inset:14% var(--paper-gutter) 13%}.location-view .drawer-artwork{opacity:.91}.location-view .dialog-head h2{font-size:25px}.location-view .encounter-identity{display:none}.location-view #encounterFootnote{font-size:8px}
 .scene-particle{--size:36px!important}.scene-particle.mist{--size:95px!important}
}
@media(max-height:620px) and (min-width:701px){.location-view .encounter-sheet{width:43vw;min-width:340px;right:1vw;top:1vh;height:98vh}.location-view .encounter-identity{display:none}.location-view .drawer-surface{inset:13% var(--paper-gutter)}.realm-caption{bottom:10vh}.realm-caption h2{font-size:35px}}

/* Generated miniatures form a keyboard-accessible travel bar in the top layer. */
kbd{font:10px 'Segoe UI',sans-serif;border:1px solid #9c82546e;border-radius:4px;padding:2px 5px;margin-left:4px;color:#e3c68e;background:#0e141955}
.board-tools{flex-wrap:wrap;gap:9px}body.travel-open{overflow:hidden}
.location-shortcuts{position:fixed;inset:auto 0 5vh;margin:auto;width:min(1120px,94vw);max-height:90dvh;padding:22px 25px 16px;border:1px solid #ae8a4c;border-radius:14px;background:linear-gradient(145deg,#262531f5,#111f28fa);backdrop-filter:blur(15px);box-shadow:0 0 0 5px #15161d88,0 24px 80px #000c;animation:travel-bar-arrive .2s ease both}
.location-shortcuts::backdrop{background:#04091470;backdrop-filter:blur(3px)}
.shortcut-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:16px}.shortcut-heading .eyebrow{color:#c4a26a;font-size:10px}.shortcut-heading h2{font-size:29px;margin-top:5px;color:#f0ddb5}
.shortcut-locations{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.shortcut-location{min-width:0;min-height:117px;border:1px solid #5f5849;border-radius:8px;background:#151e29bf;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:7px 7px 10px;color:#e9d7b4;transition:background .15s,border-color .15s,transform .15s}
.shortcut-location .sprite{width:70px;height:62.222px}.shortcut-location .prop-sprite{width:67px;height:67px;flex-shrink:0}.shortcut-location>span:last-child{font:14px/1.25 Georgia,serif}
.shortcut-location:hover,.shortcut-location.current{border-color:#cfab65;background:#51412d88;transform:translateY(-2px)}
.shortcut-location:focus-visible{outline:2px solid #edc16c;outline-offset:2px}
#shortcutHint{color:#b7b2a4;font-size:12px;line-height:1.5;margin-top:14px;text-align:center}
.location-view.is-switching{animation:realm-depart .21s ease both}.location-view.is-switching .encounter-sheet{animation:parchment-float-out .21s ease both}
@keyframes travel-bar-arrive{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
/* Currency-responsive particles reuse the generated transparent effects atlas. */
.financial-emitter{position:absolute;pointer-events:none;isolation:isolate;--strength:0}
.financial-emitter .emission{position:absolute;display:block;width:var(--size);height:var(--size);pointer-events:none;opacity:0;animation:mire-omen-rise var(--cycle,7s) linear infinite;animation-delay:var(--phase);transform-origin:center}
.financial-emitter .scene-sprite{background-image:var(--location-effects);pointer-events:none}
.mire-omen{left:0;top:48%;width:25%;height:39%;z-index:3;overflow:visible}
.mire-omen .scene-sprite,.realm-omen .scene-sprite{filter:sepia(1) saturate(5) hue-rotate(49deg) brightness(.8) drop-shadow(0 0 5px #7fea5166)}
.mire-omen .omen-mote,.realm-omen .omen-mote{animation-name:mire-mote-rise}
.mire-omen .omen-mote .scene-sprite,.realm-omen .omen-mote .scene-sprite{filter:sepia(1) saturate(5) hue-rotate(49deg) brightness(1.15) drop-shadow(0 0 4px #9adb5355)}
.realm-omen{left:0;top:18%;width:62%;height:77%;z-index:2;overflow:visible}
.realm-omen .emission{width:calc(var(--size)*1.5);height:calc(var(--size)*1.5)}
.budget-balance-magic{position:relative;isolation:isolate}
.budget-balance-magic>h2{position:relative;z-index:2;text-shadow:0 0 15px rgb(255 213 117 / calc(var(--gold-strength,0)*.5))}
.balance-sparkles{inset:-17px -8px -22px;z-index:1;overflow:visible}
.balance-sparkles .emission{animation-name:budget-gold-glimmer}
.balance-sparkles .scene-sprite{filter:sepia(1) saturate(4) brightness(1.7) drop-shadow(0 0 3px #ffd966bb)}
@keyframes mire-omen-rise{0%{opacity:0;transform:translate(0,9px) scale(.5)}15%{opacity:calc(.2 + var(--strength)*.28)}65%{opacity:calc(.1 + var(--strength)*.23)}100%{opacity:0;transform:translate(var(--drift),-215px) scale(2.25)}}
@keyframes mire-mote-rise{0%{opacity:0;transform:translate(0,0) scale(.4)}20%{opacity:calc(.35 + var(--strength)*.4)}75%{opacity:.35}100%{opacity:0;transform:translate(var(--drift),-190px) scale(.15)}}
@keyframes budget-gold-glimmer{0%,100%{opacity:0;transform:translate(0,7px) scale(.25) rotate(0)}32%{opacity:calc(.3 + var(--strength)*.65);transform:translate(4px,-4px) scale(1) rotate(25deg)}68%{opacity:calc(.12 + var(--strength)*.3);transform:translate(-3px,-12px) scale(.6) rotate(60deg)}}
html[data-motion="off"] .financial-emitter .emission{animation:none!important;opacity:calc(.12 + var(--strength)*.35);transform:none}
html[data-motion="off"] .location-shortcuts,html[data-motion="off"] .location-view.is-switching,html[data-motion="off"] .location-view.is-switching .encounter-sheet{animation:none!important}
html[data-motion="off"] .shortcut-location{transition:none}
@media(max-width:850px){.shortcut-locations{grid-template-columns:repeat(4,minmax(0,1fr))}.location-shortcuts{bottom:3vh}.shortcut-location{min-height:100px}.shortcut-location .sprite{width:59px;height:52.444px}.shortcut-location .prop-sprite{width:56px;height:56px}}
@media(max-width:500px){.location-shortcuts{padding:17px 13px 12px}.shortcut-locations{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.shortcut-location{min-height:98px;padding:5px}.shortcut-location>span:last-child{font-size:12px}.shortcut-heading h2{font-size:25px}.shortcut-heading{gap:8px}.shortcut-heading .eyebrow{font-size:9px}.realm-return{gap:5px}.realm-return button{padding:9px 8px;font-size:11px}.realm-return kbd{font-size:8px;padding:2px 3px}.realm-omen .emission{width:var(--size);height:var(--size)}}

/* Generated pan-flute sprite; CSS supplies only the button and playback state. */
.app-header{padding-right:170px}
.corner-controls{position:fixed;right:22px;top:13px;z-index:110;display:flex;align-items:center;gap:8px;isolation:isolate}
.music-dock,.privacy-dock{position:relative;isolation:isolate}
#loadBtn{display:flex;gap:6px;align-items:center}.load-short{display:none}
#loadBtn .load-label,#loadBtn .load-short{font-size:inherit;white-space:nowrap}.brand>span:last-child{white-space:nowrap}
.music-toggle{position:relative;width:61px;height:59px;border:1px solid #a1844c;border-radius:13px;background:linear-gradient(145deg,#3b3023,#121b25);box-shadow:inset 0 0 0 3px #161a20,0 4px 18px #0008;padding:4px;display:grid;place-items:center}
.music-toggle img{width:48px;height:48px;object-fit:contain;filter:saturate(.58) brightness(.8);transition:filter .2s,transform .2s;pointer-events:none}
.music-toggle:hover img,.music-toggle:focus-visible img{filter:saturate(1) brightness(1.2);transform:rotate(-5deg)}
.music-toggle:focus-visible{outline:2px solid #efd18c;outline-offset:4px}
.music-toggle::after{content:'';position:absolute;right:5px;bottom:5px;width:8px;height:8px;border-radius:50%;border:1px solid #9f8d71;background:#5f6264}
.music-dock[data-state="playing"] .music-toggle{border-color:#e1ba68;box-shadow:inset 0 0 0 3px #26201a,0 0 17px #d6a34436}
.music-dock[data-state="playing"] .music-toggle img{filter:brightness(1.12) saturate(1.1)}
.music-dock[data-state="playing"] .music-toggle::after{background:#d7b159;box-shadow:0 0 6px #f0c95d}
.music-dock[data-state="loading"] .music-toggle::after{background:#b2bfff}
.music-dock[data-state="muted"] .music-toggle::before,.music-dock[data-state="error"] .music-toggle::before{content:'';position:absolute;z-index:1;height:2px;width:43px;background:#d1bb99;box-shadow:0 1px 2px #0b101a;transform:rotate(-43deg);opacity:.85;pointer-events:none}
.music-tooltip{position:absolute;right:0;top:calc(100% + 10px);width:235px;padding:12px 14px;border:1px solid #8d764d;border-radius:8px;background:#121b27fa;box-shadow:0 9px 30px #0009;color:#ead4a7;pointer-events:none;opacity:0;visibility:hidden;transition:opacity .15s;font:14px/1.35 Georgia,serif;text-align:left;z-index:1}
.music-tooltip span{display:block;font:11px/1.4 'Segoe UI',sans-serif;color:#aaa997;margin-top:5px}
.music-dock:hover .music-tooltip,.music-dock:focus-within .music-tooltip,.privacy-dock:hover .music-tooltip,.privacy-dock:focus-within .music-tooltip{opacity:1;visibility:visible}
dialog>.corner-controls{position:absolute;right:74px;top:22px}
dialog>.corner-controls .music-toggle{width:38px;height:38px;border-radius:9px;padding:2px}
dialog>.corner-controls .music-toggle img{width:30px;height:30px}
dialog>.corner-controls .music-toggle::before{width:29px}
dialog>.corner-controls .music-toggle::after{width:6px;height:6px;bottom:3px;right:3px}
.location-view>.corner-controls{position:fixed;right:22px;top:13px}
.location-view>.corner-controls .music-toggle{width:61px;height:59px}
.location-view>.corner-controls .music-toggle img{width:48px;height:48px}
.location-view>.corner-controls .music-toggle::before{width:43px}
#locationShortcuts .shortcut-heading{padding-right:100px}
#locationShortcuts .shortcut-heading>.close{position:absolute;right:25px;top:29px}
.privacy-toggle img{filter:saturate(1) brightness(1)}
.privacy-toggle::after{display:none}
.privacy-key{position:absolute;right:3px;bottom:3px;min-width:14px;height:14px;border:1px solid #ad9261;border-radius:3px;background:#151c23;color:#e5c789;font:9px/12px 'Segoe UI',sans-serif}
.privacy-dock[data-hidden="true"] .privacy-toggle{border-color:#91c4a8;box-shadow:inset 0 0 0 3px #172822,0 0 16px #91c4a825}
.privacy-dock[data-hidden="true"] .privacy-toggle img{filter:saturate(.48) brightness(.75)}
.privacy-dock[data-hidden="true"] .privacy-key{background:#a9d3b7;color:#12251c;border-color:#b9dec4}
.privacy-status{position:fixed;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;pointer-events:none}
#budgetDialog .dialog-head{padding-top:49px}#budgetDialog #closeBudget{position:absolute;right:28px;top:23px}
.budget-private-note{border:1px solid #8b7954;border-radius:8px;padding:18px;color:#d8c7a6;background:#1a2630}
html[data-amounts-hidden="true"] #budgetForm{display:none!important}
@media(max-width:700px){.app-header{padding-right:126px;padding-left:14px;gap:8px}.corner-controls,.location-view>.corner-controls{right:12px;top:14px}.music-toggle,.location-view>.corner-controls .music-toggle{width:45px;height:45px;border-radius:10px}.music-toggle img,.location-view>.corner-controls .music-toggle img{width:36px;height:36px}.music-toggle::before,.location-view>.corner-controls .music-toggle::before{width:33px}.location-view>.corner-controls{top:72px}.brand{font-size:16.5px;gap:6px}.brand-mark{width:28px;height:34px;font-size:28px}.brand small{font-size:6.5px}.header-actions .primary{font-size:10px;padding:9px 7px}.header-actions{gap:5px}#loadBtn .load-plus,#loadBtn .load-label{display:none}#loadBtn .load-short{display:inline}.music-tooltip{width:210px}dialog>.corner-controls{right:66px;top:18px}#locationShortcuts .shortcut-heading{padding-right:133px}#locationShortcuts .shortcut-heading>.close{right:13px;top:20px}#locationShortcuts .shortcut-heading h2{font-size:22px}#budgetDialog #closeBudget{right:19px;top:19px}}
@media(max-width:360px){.brand{font-size:14px}.brand small{display:none}#loadBtn .load-short{display:none}#loadBtn .load-plus{display:inline;font-size:19px}#loadBtn{min-width:32px;height:35px}}
@media(max-width:700px){.game-layout{grid-template-columns:minmax(0,1fr)}.board-shell,.sidebar{min-width:0}.zoom-toolbar{flex-wrap:wrap}}
html[data-motion="off"] .music-toggle img,html[data-motion="off"] .music-tooltip{transition:none}

/* A compact golden skip arrow travels with mute and privacy into every view. */
.music-next{display:grid;place-items:center;flex:0 0 auto;width:34px;height:59px;padding:0;border:1px solid #a1844c;border-radius:7px;background:linear-gradient(145deg,#3b3023,#121b25);color:#f0cc78;font:26px/1 'Segoe UI Symbol','Segoe UI',sans-serif;box-shadow:inset 0 0 0 2px #171b20,0 3px 12px #0007;text-shadow:0 1px 2px #1d1008,0 0 7px #e6b65e55}
.music-next>span{pointer-events:none}
.music-next:hover:not(:disabled){color:#ffe8af;border-color:#e1bc72;filter:brightness(1.18)}
.music-next:focus-visible{outline:2px solid #efd18c;outline-offset:3px}
.music-next:disabled{opacity:.38;cursor:default}
dialog>.corner-controls .music-next{width:28px;height:38px;font-size:23px}
.location-view>.corner-controls .music-next{width:34px;height:59px;font-size:26px}
#locationShortcuts .shortcut-heading{padding-right:136px}
@media(max-width:700px){.location-view>.corner-controls .music-next{width:30px;height:45px}#locationShortcuts .shortcut-heading{padding-right:163px}}

/* One command row. Every expanded control stays above the board. */
.app-header.command-bar{display:block;position:relative;min-height:0;padding:5px 14px;background:#10151ef5;border-bottom:1px solid #82673e;z-index:15}
.command-line{display:flex;align-items:center;gap:9px;min-height:61px;width:100%}
.command-line .ancient-brand{display:block;flex:0 0 206px;padding:0;margin:0;line-height:0}
.ancient-brand>img{display:block;width:206px;height:61px;object-fit:contain;filter:drop-shadow(0 2px 2px #0008)}
.command-line .season-controls{margin:0;gap:3px;flex-shrink:0}.command-line .season-controls select{width:142px;max-width:142px;padding:7px 5px;font-size:11px}.command-line .season-controls .arrow{width:22px;height:31px;font-size:19px}
.command-line .score-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));flex:1;min-width:260px;margin:0;padding:0;background:none;border:0;box-shadow:none;border-radius:0;gap:0;align-self:center}
.command-line .score-strip>div{padding:3px 8px;min-width:0;border-color:#484439}.command-line .score-strip strong{font-size:16px;line-height:1.4;white-space:nowrap;display:block}.command-line .score-strip .stat-label{font-size:9px;line-height:1.2;display:block}.command-line .score-strip small{display:none}
.command-line .header-actions{display:flex;gap:3px;align-items:center;margin:0;flex-shrink:0}
.command-line .header-art{display:block;position:relative;width:105px;height:43px;min-width:0;padding:0;border:0;background:none;box-shadow:none;flex-shrink:0;transition:filter .15s,transform .15s;border-radius:5px;overflow:hidden}
.header-art>span{position:relative;display:block;width:100%;height:100%;overflow:hidden;background-image:url("assets/header-buttons.webp");background-size:208.7% 341.34%;background-repeat:no-repeat;background-position:2% 21.41%;pointer-events:none;clip-path:polygon(5% 0,95% 0,100% 13%,98% 23%,98% 77%,100% 87%,95% 100%,5% 100%,0 87%,2% 77%,2% 23%,0 13%)}
.header-art.help-art>span{background-position:98% 21.41%}.header-art.clear-art>span{background-position:2% 78.87%}.header-art.open-art>span{background-position:98% 78.87%}
.header-art:hover:not(:disabled){filter:brightness(1.25);transform:translateY(-1px)}.header-art:focus-visible{outline:2px solid #efca75;outline-offset:3px}.header-art:disabled{opacity:.42;cursor:default}
.command-line #musicHome{flex:0 0 138px;margin-left:auto}.command-line #musicHome .corner-controls{position:static;display:flex;gap:7px}.command-line .music-toggle{width:47px;height:45px;border-radius:9px}.command-line .music-toggle img{width:36px;height:36px}.command-line .music-toggle::before{width:32px}.command-line .privacy-key{font-size:8px}
.expand-header{width:27px;height:38px;flex:0 0 27px;border:1px solid #9d7a43;border-radius:6px;background:#272521;color:#e6c583;font-size:27px;line-height:1;padding:0}.expand-header span{display:block;transition:transform .18s}.expanded .expand-header span{transform:rotate(180deg)}
.header-details{border-top:1px solid #655339;margin-top:5px;padding:9px 3px 6px;display:grid;grid-template-columns:minmax(260px,1fr) minmax(300px,1fr);gap:8px 18px;max-height:60vh;overflow:auto}
.header-details .season-bar{margin:0;display:block}.header-details .season-bar h1{font-size:20px;margin:3px 0}.header-details .season-bar p{font-size:11px;margin:3px 0}.header-details .eyebrow{font-size:8px;letter-spacing:1px}
.header-details .memory-strip{margin:0;align-self:center;gap:7px;font-size:11px;flex-wrap:wrap}.header-details .memory-strip button{font-size:11px;padding:6px 9px}.header-details .notice{grid-column:1/-1;margin:0;padding:7px 10px;font-size:11px}
.command-tools{grid-column:1/-1;display:flex;gap:12px;align-items:center}.command-tools .board-top{padding:0;min-height:0;background:none;flex:1;gap:8px;border:0;flex-wrap:wrap}.command-tools .board-top>span{display:none}.command-tools .board-tools{width:auto;justify-content:flex-start;gap:11px}.command-tools .zoom-toolbar{flex:1.1;background:none;border:0;padding:0;min-height:40px;gap:7px}.command-tools .zoom-hint{display:none}.command-tools .spyglass-icon{width:40px}.command-tools .spyglass-icon .scene-sprite{width:45px;height:45px;margin:0}.command-tools .zoom-controls{min-width:100px;max-width:270px}.command-tools .zoom-toolbar output{min-width:45px;font-size:10px}.command-tools .zoom-fit{font-size:10px}

main{padding-top:10px!important}.board-shell{scroll-margin-top:10px}.game-layout{margin-top:0}.map-viewport{border-radius:8px 8px 0 0}
@media(max-width:1400px){.command-bar:not(.expanded) .score-strip{display:none}.command-bar.expanded .command-line{flex-wrap:wrap}.command-bar.expanded .score-strip{order:8;flex:1 0 100%;min-width:0;padding:6px 0}.command-bar.expanded .score-strip small{display:block;font-size:10px}.command-bar.expanded .score-strip strong{font-size:18px}.command-line .season-controls{margin-left:auto}.command-line #musicHome{margin-left:0}}
@media(max-width:1100px){.command-line{gap:6px}.command-line .ancient-brand{flex-basis:190px}.ancient-brand>img{width:190px}.command-line .header-art{width:91px;height:38px}.command-line .season-controls select{width:120px;max-width:120px}.command-line .season-controls .arrow{width:20px}}
@media(max-width:960px){.command-bar:not(.expanded) .header-actions{display:none}.command-bar.expanded .command-line{flex-wrap:wrap}.command-line .ancient-brand{order:1}.command-line .season-controls{order:2}.command-line #musicHome{order:3}.command-line .expand-header{order:4}.command-bar.expanded .header-actions{order:6;flex:1 0 100%;justify-content:center;padding-top:4px}.command-bar.expanded .header-art{width:112px;height:46px}.header-details{grid-template-columns:1fr}.header-details .memory-strip{grid-column:1}.command-tools{flex-wrap:wrap}.command-tools .board-top,.command-tools .zoom-toolbar{flex:1 0 100%}}
@media(max-width:600px){.app-header.command-bar{padding:4px 9px}.command-line{min-height:48px;gap:6px}.command-line .ancient-brand{flex:0 1 175px;min-width:0;margin-right:auto}.ancient-brand>img{width:100%;max-width:175px;height:51px}.command-bar:not(.expanded) .season-controls{display:none}.command-line #musicHome{flex-basis:124px}.command-line #musicHome .corner-controls{gap:5px}.command-line .music-toggle{width:43px;height:43px}.command-line .music-toggle img{width:34px;height:34px}.command-line .expand-header{width:25px;flex-basis:25px;height:34px}.command-bar.expanded .season-controls{order:5;flex:1 0 100%;justify-content:center;margin:0;padding-top:5px}.command-bar.expanded .season-controls select{max-width:none;width:220px}.command-bar.expanded .header-art{width:calc((100vw - 33px)/4);height:calc((100vw - 33px)/9.76)}.command-bar.expanded .score-strip{grid-template-columns:1fr 1fr;gap:5px}.command-bar.expanded .score-strip>div{border:0;padding:4px 7px}.header-details{max-height:55vh;gap:7px}.command-tools .board-tools{gap:9px;flex-wrap:wrap}.command-tools .board-info{font-size:11px}.command-tools .zoom-toolbar{flex-wrap:wrap}.command-tools .zoom-controls{min-width:80px}.command-tools .zoom-controls input{min-width:40px}.command-tools .zoom-controls button{min-width:25px}main{padding-top:8px!important}}
@media(max-width:360px){.command-line .ancient-brand{flex-basis:145px}.ancient-brand>img{width:100%;max-width:145px;height:45px}.command-line{gap:4px}}
html[data-motion="off"] .header-art,html[data-motion="off"] .expand-header span{transition:none}

.session-controls{grid-column:1/-1;display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:11px;color:#b3c5b2}.session-controls button{font-size:11px}.session-error{color:#f0b59a}

.command-line .music-next{width:42px;height:45px}
.command-line #musicHome{flex-basis:150px}
.music-next>img{display:block;width:27px;height:36px;max-width:none;object-fit:contain;transform:rotate(-90deg);pointer-events:none;filter:drop-shadow(0 1px 2px #0009)}
@media(max-width:600px){.command-line .music-next{width:38px;height:43px}.command-line #musicHome{flex-basis:134px}.music-next>img{width:25px;height:33px}}

/* The statement selector is part of the same gold-trimmed command set. */
#commandBar #seasonControls{gap:5px}
#commandBar #seasonControls :is(select,.arrow),#commandBar #expandHeader{height:var(--command-art-height,45px);border:1px solid #a1844c;border-radius:9px;background:linear-gradient(145deg,#3b3023,#121b25);box-shadow:inset 0 0 0 3px #161a20,0 4px 18px #0008;color:#eed5a0}
#commandBar #seasonControls select{padding:7px 7px;font-size:11px;color-scheme:dark}
#commandBar #seasonControls option{background:#17202a;color:#eed5a0}
#commandBar #seasonControls .arrow{width:28px;flex:0 0 28px;font:24px Georgia,serif}
#commandBar #seasonControls :is(select,.arrow):hover:not(:disabled),#commandBar #expandHeader:hover{border-color:#e1ba68;filter:brightness(1.12)}
#commandBar #seasonControls :is(select,.arrow):focus-visible,#commandBar #expandHeader:focus-visible{outline:2px solid #efd18c;outline-offset:3px}
#commandBar #expandHeader{width:34px;flex:0 0 34px;display:grid;place-items:center}
#expandHeader span{width:25px;height:37px;display:grid;place-items:center}
#expandHeader img{width:100%;height:100%;object-fit:contain;pointer-events:none;filter:drop-shadow(0 1px 2px #0009)}
@media(max-width:700px){#commandBar #seasonControls select{font-size:16px}}

/* The Budget Satchel overlays the board and begins closed on every launch. */
.game-layout{position:relative;grid-template-columns:minmax(0,1fr);gap:0}
.board-shell{position:relative;min-width:0}
.map-view-controls{position:absolute;top:10px;right:12px;z-index:35;display:flex;gap:7px;align-items:center}

.map-view-button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:37px;padding:4px 10px;border:1px solid #bc9453;border-radius:7px;background:linear-gradient(145deg,#302d26f5,#131e27f5);color:#f1d99e;box-shadow:inset 0 0 0 1px #69533466,0 3px 12px #0009;font-size:11px;line-height:1;backdrop-filter:blur(7px)}
.map-view-button>span:first-child{font:25px/1 Georgia,serif}.map-view-button:hover{filter:brightness(1.18)!important}.map-view-button[aria-pressed="true"],.map-view-button[aria-expanded="true"]{background:linear-gradient(145deg,#664a29,#242326);border-color:#f0ca79}.map-view-button:focus-visible{outline:2px solid #ffe09a;outline-offset:3px}

.map-side-panel{position:absolute;right:12px;top:58px;width:min(350px,calc(100% - 24px));max-height:min(720px,calc(100dvh - 165px));min-width:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;z-index:30;padding:12px;background:#131c27f5;border:1px solid #a4814d;border-radius:10px;box-shadow:0 14px 55px #000b;backdrop-filter:blur(12px);scrollbar-width:thin;scrollbar-color:#a0804a #172027;opacity:1;visibility:visible;transform:translateX(0);transition:opacity .2s ease,transform .22s ease,visibility 0s}
.map-side-panel>.sidebar{display:flex;flex-direction:column;gap:14px;width:auto;max-width:none;padding:0}
.ledger-panel-heading{position:sticky;top:-12px;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:10px;color:#d8bd84;font:12px Georgia,serif;min-height:40px;padding:0 0 12px;background:#131c27}
.ledger-panel-heading button{height:40px;width:40px;flex-shrink:0;display:grid;place-items:center;padding:0;border:1px solid #bc9453;border-radius:7px;background:linear-gradient(145deg,#302d26f5,#131e27f5);box-shadow:inset 0 0 0 1px #69533466,0 3px 12px #0007;color:#e7c786;font:29px/1 Georgia,serif}
.ledger-panel-heading button:hover{filter:brightness(1.18)}
.ledger-panel-heading button:focus-visible{outline:2px solid #ffe09a;outline-offset:3px}
.ledger-panel-heading button[aria-expanded="true"]{border-color:#f0ca79}
/* Collapse only the contents; each panel retains its single arrow at the map edge. */
.game-layout.panel-collapsed>.ledger-panel{width:40px;max-height:none;padding:0;border:0;background:transparent;box-shadow:none;backdrop-filter:none;overflow:visible}
.panel-collapsed .ledger-panel .ledger-panel-heading>span{display:none}
.panel-collapsed .ledger-panel .ledger-panel-heading{padding:0;background:transparent}
.map-side-panel>.sidebar[hidden]{display:none!important}
.map-side-panel .swamp-card{grid-column:auto}
.ledger-panel .coins{grid-template-columns:repeat(10,minmax(0,1fr));gap:5px}
.ledger-panel .coin{min-width:0;font-size:clamp(9px,1.2vw,14px)}
html:fullscreen{overflow-y:auto!important;background:#0d131c}
body.map-expanded main{max-width:none;padding:0!important}
body.map-expanded .board-shell{border-radius:0;border-left:0;border-right:0;scroll-margin-top:0}
body.map-expanded .map-viewport{border-radius:0;scrollbar-gutter:auto}
body.map-expanded .map-view-controls{position:fixed;top:12px;right:15px}

body.map-expanded .map-side-panel{position:fixed;right:15px;top:61px;width:min(350px,calc(100vw - 30px));max-height:calc(100dvh - 78px)}
body.map-expanded footer{margin-left:3.2%;margin-right:3.2%}
@media(max-width:600px){
 .map-view-controls{top:7px;right:7px;gap:5px}
 .map-view-button{gap:5px;padding:3px 8px;min-height:33px;font-size:10px}.map-view-button>span:first-child{font-size:23px}
 .map-view-controls .map-view-button>span:last-child{display:none}
 .map-side-panel{top:49px;max-height:calc(100dvh - 155px)}
 body.map-expanded .map-view-controls{top:9px;right:9px}
 body.map-expanded .map-side-panel{top:53px;max-height:calc(100dvh - 67px)}
 body.map-expanded .map-view-button{padding:3px 7px}
}
html[data-motion="off"] .map-side-panel{transition:none!important}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) .map-side-panel{transition:none!important}}
#mapCornerHome .corner-controls{position:static;display:flex;align-items:center;gap:5px}
#mapCornerHome .music-toggle{width:37px;height:37px;border-radius:7px}#mapCornerHome .music-toggle img{width:29px;height:29px}#mapCornerHome .privacy-key{font-size:8px}#mapCornerHome .music-toggle::before{width:28px}
@media(max-width:600px){#mapCornerHome .music-toggle{width:33px;height:33px}#mapCornerHome .music-toggle img{width:27px;height:27px}}

/* One original generated texture, mirrored at adjoining edges, stays behind the page. */
html{background:#19110c}
body{min-height:100dvh;isolation:isolate;background:none}
.ledger-table{position:fixed;inset:0;z-index:-1;display:grid;grid-auto-rows:900px;overflow:hidden;pointer-events:none;background:#19110c}
.ledger-table::after{content:"";position:absolute;inset:0;background:#08090b30;pointer-events:none}
.ledger-table-tile{display:block;width:900px;height:900px;background:url("assets/ledger-table.webp") 0 0/100% 100% no-repeat}
.map-surround{position:relative;isolation:isolate;overflow:hidden;background:#131b1b}
.map-backdrop{position:absolute;inset:0;z-index:0;overflow:hidden;pointer-events:none}
.map-backdrop img{position:absolute;left:0;top:0;max-width:none;filter:blur(20px) brightness(.4) saturate(.8);will-change:transform;pointer-events:none;user-select:none}
.map-surround>.map-viewport{z-index:1;background:transparent}

#mapCornerHome .music-next{width:27px;height:37px;font-size:23px}
@media(max-width:600px){#mapCornerHome .music-next{width:25px;height:33px;font-size:21px}}

:root{--ledger-header-height:72px;--popup-height:calc(100dvh - var(--ledger-header-height) - 24px)}
/* Applied only after detecting Silk; dimensions are measured in view-shell.mjs.
   Avoid a full-screen filtered/animated grid on Fire tablet compositors. */
dialog[data-silk-table="true"][open]{display:flex!important;align-items:center;justify-content:center;right:auto!important;bottom:auto!important;margin:0!important;max-width:none!important;max-height:none!important;animation:none!important;transform:none!important;filter:none!important;opacity:1!important;background:#090b10!important}
dialog[data-silk-table="true"]>.treasure-table{flex:none;min-width:0;min-height:0;filter:none!important;will-change:auto;isolation:auto}
html.silk-mini-game-open #drawer:not([data-over-header="true"]){visibility:hidden}
html.silk-mini-game-open #popupShade{-webkit-backdrop-filter:none;backdrop-filter:none}
.app-header.command-bar{position:sticky;top:0;z-index:150}
.header-art.open-art>span{background-image:url("assets/open-session-button.webp");background-size:100% 100%;background-position:center;clip-path:none}
.board-shell,body.map-expanded .board-shell{scroll-margin-top:var(--ledger-header-height)}
body.map-expanded .map-view-controls{top:calc(var(--ledger-header-height) + 12px)}
body.map-expanded .map-side-panel{top:calc(var(--ledger-header-height) + 61px);max-height:calc(100dvh - var(--ledger-header-height) - 78px)}
.game-layout.panel-collapsed>.ledger-panel{z-index:34}
body.popup-open{overflow:hidden}
#popupShade{position:fixed;inset:var(--ledger-header-height) 0 0;z-index:90;background:#08090dd9;backdrop-filter:blur(5px)}
body.realm-open #popupShade{background:#07101966;backdrop-filter:blur(1px)}
dialog[open]{position:fixed;inset:calc(var(--ledger-header-height) + 12px) 0 12px;margin:auto;max-height:var(--popup-height)}
.encounter-scroll[open]{width:min(1152px,98vw,calc(var(--popup-height)*1.5));height:min(768px,65.333vw,var(--popup-height))}
.location-view[open]{inset:var(--ledger-header-height) 0 0;margin:0;height:calc(100dvh - var(--ledger-header-height))!important;max-height:none}
.location-view .realm-scene{top:6%;bottom:6%;height:88%}
.location-view .encounter-sheet{top:5%;height:90%}
.realm-return{top:3%}.realm-caption{bottom:11%}
#locationShortcuts .shortcut-heading{padding-right:0}
#locationShortcuts .shortcut-heading>.close,#budgetDialog #closeBudget{position:static;flex-shrink:0}
#budgetDialog .dialog-head{padding-top:0;gap:12px}
.import-overlay{top:var(--ledger-header-height)}
.session-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}
.session-document{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid #73603c66}
.session-document>span{overflow-wrap:anywhere;min-width:0}.session-document button{flex-shrink:0}
.session-remove-confirm{padding:12px;border:1px solid #ab8350;border-radius:6px;margin-top:12px}
.session-note{font-size:13px;color:#c5baa6;line-height:1.6}
@media(max-width:800px){
 .game-layout:not(.panel-collapsed) .ledger-panel-heading{padding-left:44px}
}
@media(max-width:600px){
 body.map-expanded .map-view-controls{top:calc(var(--ledger-header-height) + 9px)}
 body.map-expanded .map-side-panel{top:calc(var(--ledger-header-height) + 53px);max-height:calc(100dvh - var(--ledger-header-height) - 67px)}
}
@media(max-width:700px){.location-view .encounter-sheet{top:32%;height:67%}.location-view .realm-caption{top:12%;bottom:auto}.location-view .realm-scene{top:3%;bottom:5%;height:92%}}
@media(max-height:620px) and (min-width:701px){.location-view .encounter-sheet{top:1%;height:98%}}

/* Keep the raster artwork at the same height as the flute and coin sack.
   Do not squeeze its lettering at tablet or phone breakpoints. */
.command-bar{--command-art-height:45px;--command-button-width:110px}
.command-bar .command-line{min-height:var(--command-art-height)}
.command-bar .command-line .ancient-brand{flex:0 0 calc(var(--command-art-height)*3);height:var(--command-art-height);min-width:0}
.command-bar .ancient-brand>img{width:100%;max-width:none;height:100%;object-fit:contain;image-rendering:auto;filter:none}
.command-bar .command-line .header-art,.command-bar.expanded .command-line .header-art{width:var(--command-button-width);height:var(--command-art-height);flex:0 0 var(--command-button-width)}
.command-bar .header-art>span{image-rendering:auto}
.command-bar #loadBtn{height:var(--command-art-height)}
.command-bar .ancient-brand{position:relative}
.command-bar canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.command-bar .header-art>.smooth-art-ready{background:none}
.command-bar .ancient-brand.smooth-art-ready>img{opacity:0}
.command-bar .header-art:hover:not(:disabled){transform:none}
.command-bar .command-line .music-toggle,.command-bar .command-line .music-next{height:var(--command-art-height)}
@media(max-width:600px){.command-bar{--command-art-height:43px;--command-button-width:105px}.command-bar.expanded .header-actions{flex-wrap:wrap;gap:6px;max-width:100%}}

/* Utility dialogs get a definite inner height. The heading and close button stay
   visible while long help, session and privacy content scrolls independently. */
#drawer:not(.encounter-dialog)[open]{height:min(760px,var(--popup-height));max-height:var(--popup-height);display:flex;flex-direction:column;overflow:hidden}
#drawer:not(.encounter-dialog)>.encounter-sheet{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;overflow:hidden}
#drawer:not(.encounter-dialog) .drawer-surface{display:flex;flex-direction:column;flex:1;min-height:0;min-width:0;overflow:hidden}
#drawer:not(.encounter-dialog) .dialog-head{flex:0 0 auto;align-items:flex-start}
#drawer:not(.encounter-dialog) .dialog-head>div{min-width:0;overflow-wrap:anywhere}
#drawer:not(.encounter-dialog) .close{position:static;flex-shrink:0}
#drawer:not(.encounter-dialog) #drawerContent{flex:1;min-height:0;min-width:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#ac8952 #15202a;padding:2px 10px 6px 2px;overflow-wrap:anywhere}
#drawerContent:focus-visible{outline:2px solid #bf9b5d;outline-offset:-2px}
@media(max-height:500px){#drawer:not(.encounter-dialog){padding:14px 19px}#drawer:not(.encounter-dialog) .dialog-head{margin-bottom:12px}#drawer:not(.encounter-dialog) .dialog-head h2{font-size:23px}}

/* Keep the Mire's crown and eyes below the controls. Top-align the painting
   on wide screens; a narrow screen keeps its full 3:2 composition. Lighting,
   bubbles and drifting sprites still animate without zooming the head away. */
.location-view .realm-scene[data-realm="swamp"]{top:64px;left:4vw;right:auto;bottom:24px;width:92vw;height:auto;overflow:hidden;mask-image:linear-gradient(transparent,#000 5%,#000 85%,transparent),linear-gradient(90deg,transparent,#000 7%,#000 85%,transparent);mask-composite:intersect;-webkit-mask-image:linear-gradient(transparent,#000 5%,#000 85%,transparent),linear-gradient(90deg,transparent,#000 7%,#000 85%,transparent);-webkit-mask-composite:source-in}
.realm-scene[data-realm="swamp"]>img{object-fit:cover;object-position:40% 0%;animation:none;transform:none}
@media(max-width:700px){.location-view .realm-scene[data-realm="swamp"]{bottom:auto;aspect-ratio:3/2}.realm-scene[data-realm="swamp"]>img{object-fit:contain;object-position:center}.location-view:has(.realm-scene[data-realm="swamp"]) .realm-caption{display:none}}

/* Import privacy copy stays readable above expanded Chronicle details. */
#importOverlay{overflow:auto;padding:22px 16px;place-items:start center}
#importOverlay>div{margin:auto;max-width:640px;width:100%}

/* The generated wood is a persistent nine-slice frame, outside the camera.
   Only window resizing changes its dimensions; no zoom/pan can move its rails. */
.map-surround{height:480px;--frame-edge:32px;--frame-base:76px;--legend-scale:1}
.map-window{position:absolute;inset:var(--frame-edge) var(--frame-edge) var(--frame-base);overflow:hidden;isolation:isolate;background:#101b20}
.map-window>.map-viewport{width:100%;height:100%;border-radius:0;background:transparent;z-index:1}
.board-surface{position:absolute;width:1000px;height:667px;transform-origin:0 0;isolation:isolate}
.board-surface>.map{position:absolute;inset:0 auto auto 0;width:1000px;height:667px;min-width:0!important;aspect-ratio:auto;transform:none!important;overflow:hidden}
.frame-extension{position:absolute;inset:0;z-index:22;pointer-events:none;border-style:solid;border-color:transparent;border-width:var(--frame-edge) var(--frame-edge) var(--frame-base);border-image-source:url("assets/frame-extension.webp");border-image-slice:80 80 152 80;border-image-width:1;border-image-repeat:stretch;filter:drop-shadow(0 3px 4px #0008)}
.board-legend-inlay{position:absolute;z-index:23;left:50%;bottom:var(--legend-bottom,7px);width:940px;height:62px;transform:translateX(-50%) scale(var(--legend-scale));transform-origin:center bottom;background:url("assets/board-legend.webp") center 46%/100% auto no-repeat;pointer-events:none;mask-image:linear-gradient(90deg,transparent,#000 2%,#000 98%,transparent)}
.map-stage{overflow:visible}
.map-viewport{scrollbar-gutter:auto;scrollbar-width:none}
.map-viewport::-webkit-scrollbar{display:none}
.board-shell{overflow:hidden}
main{padding-bottom:0!important}
/* The spyglass is the actual range thumb, at a constant screen size. */
.map-zoom-dock{position:absolute;z-index:26;display:flex;align-items:center;gap:6px;transform:translateX(-50%);width:258px;max-width:calc(100% - 74px);height:48px;padding:0 8px;border:1px solid #a78b4caa;border-radius:10px;background:linear-gradient(145deg,#171b20b8,#332a21b8);box-shadow:0 4px 14px #0007;backdrop-filter:blur(5px);color:#ecd19a;isolation:isolate}
.map-zoom-dock input{appearance:none;-webkit-appearance:none;flex:1;min-width:0;width:100%;height:44px;background:transparent;margin:0;cursor:grab;padding:0 20px;touch-action:none}
.map-zoom-dock input:active{cursor:grabbing}
.map-zoom-dock input::-webkit-slider-runnable-track{height:7px;background:linear-gradient(#5b3e18,#e6be64,#7f5521);border:1px solid #ae8845;border-radius:5px}
.map-zoom-dock input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:54px;height:54px;margin-top:-25px;border:0;border-radius:0;box-shadow:none;background-color:transparent;background-image:var(--location-effects);background-size:400% 200%;background-position:0 0;background-repeat:no-repeat;filter:drop-shadow(0 2px 2px #000b)}
.map-zoom-dock input::-moz-range-track{height:7px;background:linear-gradient(#5b3e18,#e6be64,#7f5521);border:1px solid #ae8845;border-radius:5px}
.map-zoom-dock input::-moz-range-thumb{width:54px;height:54px;border:0;border-radius:0;background:var(--location-effects) 0 0/400% 200% no-repeat;filter:drop-shadow(0 2px 2px #000b)}
.map-zoom-dock input:focus-visible{outline:1px solid #e7c777;outline-offset:0;border-radius:5px}
.map-zoom-dock output{font:10px/1.1 'Segoe UI',sans-serif;width:32px;text-align:center;flex-shrink:0}
.map-zoom-dock button{font:11px Georgia,serif;border:1px solid #b59150aa;border-radius:4px;padding:5px;color:#ebd29c;background:#292523;flex-shrink:0}
.header-details .trail-controls{grid-column:1/-1;display:flex;gap:12px;padding:9px 0;border-block:1px solid #66553955;background:transparent;min-width:0}
.header-details .play-button{width:36px;height:36px;flex-shrink:0;font-size:16px}
.header-details .scrubber{min-width:0;flex:1}.header-details .scrubber>div{gap:10px;flex-wrap:wrap}
.header-details .scrubber strong{font-size:12px}.header-details .scrubber span{font-size:10px}
.header-details .end-button{font-size:11px;flex-shrink:0}
.calendar-note{font-size:10px;color:#b7ac94;align-self:center}
:root{--popup-top:55px;--popup-height:calc(100dvh - var(--popup-top) - 24px)}
.command-line{position:relative;z-index:200;background:#10151e}
#headerDetails{position:relative;z-index:0}
#popupShade{top:var(--popup-top)}
dialog[open]{top:calc(var(--popup-top) + 12px)}
.location-view[open]{top:var(--popup-top);height:calc(100dvh - var(--popup-top))!important}
.import-overlay{top:var(--popup-top)}
.player-controls{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.player-controls>.eyebrow{font-size:9px;max-width:60px;line-height:1.5}
.player-choices{display:flex;gap:6px}
.player-choices button{display:flex;align-items:center;gap:2px;padding:2px 7px 2px 3px;border:1px solid #705b39;border-radius:6px;background:#121a22;color:#cbb686;font-size:10px}
.player-choices button[aria-pressed="true"]{background:#4d3a23;border-color:#e7c777;color:#fff0c5}
.player-choices button>.sprite{width:38px;height:34px}
.player-miniature{display:block;background-image:url("assets/player-pieces.webp");background-size:300% 100%;background-repeat:no-repeat;background-position:0 0;width:38px;height:38px;pointer-events:none}
.player-miniature.mage{background-position:50% 0}.player-miniature.guide{background-position:100% 0}
.pawn .player-miniature.adventurer{height:58px;width:58px;bottom:0}
.pawn[data-player="mage"] .lantern-glow{left:37px;bottom:33px;background:#b4d6ff}
.pawn[data-player="guide"] .lantern-glow{left:40px;bottom:24px}
@media(min-width:1550px){.pawn .player-miniature.adventurer{width:70px;height:70px}}
@media(max-width:600px){.player-controls{grid-column:1/-1}.player-choices button{padding-right:4px;font-size:9px}.player-choices{gap:4px}.player-choices button>.sprite,.player-choices .player-miniature{width:32px;height:32px}.player-controls>.eyebrow{max-width:none;width:100%}.header-details .trail-controls{gap:7px}.map-zoom-dock{width:240px;height:46px}.header-details .scrubber>div{gap:2px}.header-details .scrubber strong,.header-details .scrubber span{font-size:10px}}

/* Quiet location plaques; preserve the full location hit area and artwork. */
#map .realm-plaque,
#map .mire-plaque {
  opacity: .55;
  transform: scale(.7);
  transform-origin: top center;
  transition: opacity .24s ease, transform .24s ease;
}
#map .realm-pin:hover .realm-plaque,
#map .realm-pin:focus-visible .realm-plaque,
#map .debt-dragon:hover .realm-plaque,
#map .debt-dragon:focus-visible .realm-plaque,
#map .swamp-sign:hover .mire-plaque,
#map .swamp-sign:focus-visible .mire-plaque {
  opacity: 1;
  transform: scale(1);
}
#map .realm-plaque {background: linear-gradient(135deg, #191d26, #262531)}
#map .dragon-plaque {
  background: linear-gradient(135deg, #29232a, #211d27);
  transform-origin: left center;
}
#map .swamp-sign {padding: 0; border: 0; background: none; box-shadow: none}
#map .mire-plaque {
  display: block;
  padding: 10px 8px;
  border: 1px solid #7e9563;
  border-radius: 8px;
  background: linear-gradient(130deg, #152a29, #192527);
  box-shadow: 0 3px 0 #07181c, 0 8px 20px #0006;
}

/* Named drawer tabs keep their purpose visible while the contents are tucked away. */
.ledger-panel-heading .panel-tab-label {display: none}
.game-layout.panel-collapsed > .ledger-panel{
  width: 128px;
  max-width: calc(50% - 18px);
}
.panel-collapsed .ledger-panel .ledger-panel-heading{padding: 0}
.panel-collapsed .ledger-panel .ledger-panel-heading button{
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  width: 100%;
  padding: 4px 7px;
  min-height: 40px;
  height: auto;
}
.panel-collapsed .ledger-panel .panel-tab-label{
  display: block;
  font: 12px/1.2 Georgia, serif;
  color: #f0d7a3;
  text-align: center;
  min-width: 0;
}
.panel-tab-label small {
  display: block;
  margin-top: 2px;
  font: 10px/1.2 'Segoe UI', sans-serif;
  color: #c7b78f;
}
@media(max-width: 800px) {
  .game-layout:not(.panel-collapsed) .ledger-panel .ledger-panel-heading {padding-left: 128px}
.game-layout.panel-collapsed .ledger-panel .ledger-panel-heading{padding: 0}
}

.date-navigation-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.map-viewport:focus-visible{outline:1px solid #d5b668;outline-offset:-3px}

/* Local raster art; the support page is contacted only when this link is opened. */
.header-details .player-controls{grid-column:1/-1;min-width:0;width:100%}
.coffee-support{position:relative;display:block;flex:0 0 208px;width:208px;height:56px;margin-left:auto;overflow:hidden;border-radius:7px;transition:filter .15s ease,transform .15s ease}
.coffee-support img{position:absolute;left:0;top:50%;display:block;width:100%;max-width:none;height:auto;transform:translateY(-50%);pointer-events:none}
.coffee-support:hover{filter:brightness(1.2);transform:translateY(-1px)}
.coffee-support:focus-visible{outline:2px solid #efca75;outline-offset:3px}
@media(max-width:600px){.coffee-support{flex-basis:192px;width:192px;height:52px}}
html[data-motion="off"] .coffee-support{transition:none}
@media(prefers-reduced-motion:reduce){.coffee-support{transition:none}}

/* Keep the optional support/download group together at the right of the travelers. */
.community-actions{margin-left:auto;display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:3px 10px;flex:0 1 430px;width:430px;min-width:0;max-width:100%}
.community-actions .coffee-support{margin-left:0}
.download-zip{position:relative;display:block;flex:0 0 156px;width:156px;height:56px;border-radius:7px;transition:filter .15s ease,transform .15s ease}
.download-zip img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.download-zip:hover{filter:brightness(1.2);transform:translateY(-1px)}
.download-zip:focus-visible{outline:2px solid #efca75;outline-offset:3px}
.community-actions p,.community-actions small{flex:0 0 100%;text-align:right;line-height:1.45}
.community-actions p{font-size:11px;color:#d6c59f;margin:2px 0 0}
.community-actions small{font-size:10px;color:#b3aa98}
@media(max-width:600px){.community-actions{gap:3px 7px}.download-zip{flex-basis:145px;width:145px;height:52px}}
@media(max-width:360px){.community-actions{justify-content:center;gap:3px 5px}.community-actions .coffee-support{flex-basis:162px;width:162px;height:48px}.download-zip{flex-basis:125px;width:125px;height:48px}.community-actions p,.community-actions small{text-align:center}}
html[data-motion="off"] .download-zip{transition:none}
@media(prefers-reduced-motion:reduce){.download-zip{transition:none}}

.sage-card{border:1px solid #a68b4b;border-radius:10px;padding:15px;background:linear-gradient(140deg,#26342c,#171e24);color:#e5d7b8;box-shadow:inset 0 0 24px #997e2815}
.sage-open{display:flex;align-items:center;gap:10px;width:100%;text-align:left;color:#f3dca5;padding:0}
.sage-open img{width:80px;height:92px;object-fit:contain;filter:drop-shadow(0 3px 7px #d9b95033)}
.sage-open .eyebrow{color:#c4b48c;font-size:9px}.sage-open strong{display:block;font:24px/1.15 Georgia,serif;margin:5px 0}.sage-open small{font-size:11px;color:#d0c29e}
.sage-card p{font-size:12px;line-height:1.5;margin:10px 0}.sage-income{color:#bcb5a4}.sage-targets{display:grid;gap:7px;margin:12px 0}
.sage-targets>div{display:flex;align-items:baseline;justify-content:space-between;gap:8px;font-size:11px;border-bottom:1px solid #a48b4b33;padding-bottom:6px}.sage-targets b{font:17px Georgia,serif;color:#f2dba2;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.sage-card .sage-more{width:100%;border:1px solid #bfa16066;border-radius:5px;padding:8px;color:#f2dba2;background:#a7863f15;font-size:12px}
.sage-storm-status{color:#c9dba5}.sage-card[data-storm="Stormy"] .sage-storm-status,.sage-card[data-storm="Tempest"] .sage-storm-status{color:#b7ed8b}
.sage-simulator{margin-top:14px;border-top:1px solid #91ac6270;padding-top:12px}.sage-simulator[hidden]{display:none!important}
.sage-simulator>label{display:flex;align-items:center;gap:8px;font-size:12px;color:#e6d7b5;cursor:pointer}.sage-simulator input[type=checkbox]{accent-color:#90b86a;width:18px;height:18px;flex-shrink:0}
.sage-simulator p{font-size:10px;color:#bfc3ad}.sage-sim-controls label{font-size:11px;display:block}.sage-sim-controls input[type=range]{width:100%;accent-color:#98be68;margin:10px 0;touch-action:none}.sage-sim-controls output{display:block;font-size:12px;color:#e0edbf;line-height:1.5}
.sage-simulator button{font-size:11px;color:#f0d49a;text-decoration:underline;margin-top:8px}
.mire-simulation-badge{position:absolute;left:12px;top:12px;max-width:calc(100% - 90px);z-index:10;padding:7px 10px;background:#162919e8;border:1px solid #a4bd70;border-radius:5px;color:#d9e9b2;font:11px/1.3 'Segoe UI',sans-serif;pointer-events:none}
.sage-card-portrait{display:flex;align-items:center;gap:12px;margin:0 0 9px}.sage-card-portrait img{width:30%;height:82px;object-fit:contain;filter:drop-shadow(0 4px 4px #59341233)}.sage-card-portrait p{font:italic 14px/1.5 Georgia,serif;color:#624623}
.sage-dialog #drawerBody{font-size:13px;line-height:1.55;color:#49311d}.sage-dialog p{margin:10px 0}.sage-basis{padding:10px 0;border-block:1px solid #86654455}.sage-basis b{color:#352112;font-size:18px}
.sage-basis small{display:block;font-size:10px;font-weight:normal}.sage-cycle{font-size:11px}
.sage-guidelines{display:grid;gap:7px;margin:10px 0}.sage-guidelines section{background:#fff2ca30;border:1px solid #805b384a;border-radius:6px;padding:9px}.sage-guidelines section>div{display:grid;grid-template-columns:48px 1fr auto;align-items:center;gap:3px 9px}.sage-guidelines strong{font:26px Georgia,serif;color:#4b5b2c}.sage-guidelines h3{font:14px Georgia,serif;margin:0;color:#4d3119}.sage-guidelines section>div>b{font:18px Georgia,serif;color:#392310;overflow-wrap:anywhere}.sage-guidelines small{display:block;font-size:10px;line-height:1.45;color:#5f4931;margin-top:5px}
.sage-caution{padding:10px;background:#6e7b3512;border-left:2px solid #7c864c;font-size:11px}.sage-method{margin:14px 0;font-size:11px}.sage-method summary{font-size:12px;cursor:pointer;font-weight:600}.sage-method table{border-collapse:collapse;width:100%;font-size:10px;margin:10px 0}.sage-method th,.sage-method td{border-bottom:1px solid #79593444;padding:7px 3px;text-align:right;overflow-wrap:anywhere}.sage-method td:first-child,.sage-method th:first-child{text-align:left}.sage-method caption{text-align:left;margin:6px 0;font-weight:600}
.sage-actions{display:flex;flex-wrap:wrap;gap:7px}.sage-actions button{padding:8px;border:1px solid #82653e88;border-radius:4px;background:#fff2cd33;color:#51341d;font-size:11px}.sage-sources{font-size:10px;line-height:1.55;color:#705335}.sage-sources a{color:#405425;text-decoration:underline}
/* Generated mist, bubble and mote sprites travel from the Mire across the terrain. */
.mire-weather{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden;--storm:0;--wind-speed:1;isolation:isolate}
.mire-weather[hidden]{display:none!important}.mire-clouds,.mire-wind{position:absolute;inset:0;pointer-events:none}
.mire-clouds{opacity:calc(var(--storm)*.52);mix-blend-mode:multiply;transition:opacity .8s ease}
.mire-cloud{position:absolute;display:block;width:var(--cloud-size);height:calc(var(--cloud-size)*.67);top:var(--cloud-y);left:-38%;animation:mire-cloud-drift calc(var(--duration)/var(--wind-speed)) linear infinite;animation-delay:var(--phase)}
.mire-cloud .scene-sprite{filter:brightness(0) blur(16px);opacity:.8;transform:scale(1.6,1.2)}
.mire-gust{position:absolute;display:block;width:var(--size);height:var(--size);opacity:0;animation:mire-land-wind calc(var(--duration)/var(--wind-speed)) linear infinite;animation-delay:var(--phase)}
.mire-gust[hidden]{display:none}.mire-gust .scene-sprite{filter:sepia(1) saturate(5) hue-rotate(45deg) brightness(1.2) drop-shadow(0 0 4px #b1ed6660)}
.mire-gust.wind-wisp .scene-sprite{filter:sepia(1) saturate(3) hue-rotate(45deg) brightness(.55) blur(2px)}
.mire-gust.wind-bubble .scene-sprite{filter:sepia(1) saturate(4) hue-rotate(44deg) brightness(1.3) drop-shadow(0 0 3px #ade76088)}
#map .mire-bubbles i{animation-duration:var(--mire-bubble-cycle,6s);filter:brightness(calc(.8 + var(--mire-anger,0)*.65));box-shadow:inset 0 -2px 4px #c1ef4a80,0 0 calc(5px + var(--mire-anger,0)*15px) #a7ef6088}
#map .mire-sprite{filter:drop-shadow(0 0 calc(5px + var(--mire-anger,0)*16px) rgb(129 239 45 / calc(.2 + var(--mire-anger,0)*.65))) drop-shadow(0 5px 2px #0008)}
#map .swamp-glow{background:radial-gradient(ellipse,#99f52caa,transparent 67%);transition:opacity .8s ease;animation-duration:var(--mire-bubble-cycle,6s)}
@keyframes mire-land-wind{0%{opacity:0;transform:translate(0,0) scale(.45) rotate(-12deg)}12%{opacity:calc(.1 + var(--storm)*.6)}48%{transform:translate(calc(var(--travel-x)*.46),calc(var(--travel-y)*.55 - 30px)) scale(1.15) rotate(14deg)}80%{opacity:calc(var(--storm)*.45)}100%{opacity:0;transform:translate(var(--travel-x),var(--travel-y)) scale(.4) rotate(36deg)}}
@keyframes mire-cloud-drift{0%{transform:translate(-80px,80px) rotate(-12deg);opacity:0}16%,76%{opacity:1}100%{transform:translate(1450px,-260px) rotate(8deg);opacity:0}}
html[data-motion="off"] .mire-weather{display:none}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) .mire-weather{display:none}}
@media(max-width:600px){.sage-dialog[open]{height:var(--popup-height);width:98vw}.sage-card-portrait{gap:7px}.sage-card-portrait img{height:65px}.sage-card-portrait p{font-size:11px}.sage-guidelines section>div{grid-template-columns:48px 1fr;gap:1px 8px}.sage-guidelines strong{font-size:22px;grid-row:span 2}.sage-guidelines h3{font-size:11px}.sage-guidelines section>div>b{font-size:16px}.sage-guidelines section{padding:7px}.sage-guidelines small{font-size:9px}.sage-method table{font-size:9px}.mire-simulation-badge{font-size:10px}}

/* A few tiny inhabitants, scaled with the map itself instead of the screen. */
.map-wildlife{position:absolute;inset:0;z-index:7;pointer-events:none;overflow:hidden;contain:layout paint}
.map-wildlife *{pointer-events:none!important}
.board-insect{position:absolute;left:0;top:0;width:var(--insect-size);height:var(--insect-size);opacity:0;will-change:transform,opacity}
.insect-body{display:block;width:100%;height:100%;transform-origin:center;animation:board-insect-wings var(--wing-cycle) ease-in-out infinite;filter:drop-shadow(0 2px 1px #08110c88)}
.board-insect.butterfly .scene-sprite{filter:brightness(1.1) saturate(.8)}
.board-insect.dragonfly .insect-body{animation-name:board-dragonfly-wings;filter:drop-shadow(0 1px 1px #081a1570)}
.board-insect.firefly .insect-body{animation:board-firefly-blink var(--blink-cycle) ease-in-out infinite;animation-delay:var(--blink-phase);filter:none}
.board-insect.firefly .scene-sprite{filter:grayscale(1) sepia(1) saturate(2) brightness(1.8) drop-shadow(0 0 2px #eff9a5)}
.board-insect.firefly .insect-body::after{content:"";position:absolute;inset:-3px;border-radius:50%;background:radial-gradient(circle,#eaf8a666,transparent 68%);mix-blend-mode:screen}
@keyframes board-insect-wings{0%,100%{transform:scaleX(.95)}50%{transform:scaleX(.28)}}
@keyframes board-dragonfly-wings{0%,100%{transform:scaleY(.9)}50%{transform:scaleY(.56)}}
@keyframes board-firefly-blink{0%,16%,72%,100%{opacity:.06}36%{opacity:.9}48%{opacity:.35}57%{opacity:.75}}
html[data-motion="off"] .map-wildlife,body.popup-open .map-wildlife{display:none}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) .map-wildlife{display:none}}

/* Generated parchment, with its ink kept inside the torn edges. */
.day-preview{position:absolute;z-index:25;width:196px;height:131px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:27px 35px 30px;background:var(--scroll-art) center/100% 100% no-repeat;border:0;color:#422914;filter:drop-shadow(0 5px 9px #000a);text-align:center;transform-origin:50% 0;cursor:pointer;line-height:1.2}
.day-preview[hidden]{display:none}
.day-preview span{font:14px/1.15 Georgia,serif;white-space:nowrap}
.day-preview strong{font:600 21px/1.1 Georgia,serif;max-width:100%;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.day-preview:hover:not(:disabled){filter:drop-shadow(0 4px 10px #edc97688) brightness(1.06)}
.day-preview:focus-visible{outline:2px solid #efd08c;outline-offset:-22px;border-radius:35px}
.encounter-scroll.from-day-preview:not(.is-closing){animation:none}
.realm-scene.ready{animation:realm-camera-arrive .72s cubic-bezier(.16,1,.3,1) both}
@keyframes realm-camera-arrive{from{transform:translateY(18px) scale(.94)}to{transform:translateY(0) scale(1)}}
html[data-motion="off"] .realm-scene.ready{animation:none!important;transform:none}
@media(max-width:600px){.day-preview{width:174px;height:116px;padding:23px 30px 27px;gap:5px}.day-preview span{font-size:13px}.day-preview strong{font-size:19px}}

/* Compact, text-only channel choices beside Motion. The flute is the master mute. */
.command-tools .board-tools{flex-wrap:wrap}
.command-tools .sound-switches{display:inline-flex;align-items:center;flex-wrap:wrap;gap:11px}
.command-tools .sound-switches>.board-info{white-space:nowrap}
.sound-switches button[aria-pressed="false"]{color:#a39d91}
.header-details .audio-mixer{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:8px 20px;min-width:0;color:#d7c49f;font-size:11px}
.audio-mixer label{display:flex;align-items:center;gap:9px;min-width:0}
.audio-mixer label>span{white-space:nowrap}
.audio-mixer input{width:150px;max-width:30vw;margin:0;accent-color:#dbb86d;cursor:pointer;min-height:24px}
.audio-mixer output{min-width:30px;font-variant-numeric:tabular-nums;color:#eed6a4}
.audio-mixer .audio-save{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:#aaa69a;font-size:10px}
.audio-mixer #audioPrefsStatus[data-state="error"]{color:#edaf83}
.audio-mixer #retryAudioPrefs{padding:3px 7px;border:1px solid #977846;border-radius:4px;color:#e6c584}
.audio-mixer .audio-master-hint{color:#aaa69a;font-size:10px}
@media(max-width:600px){.header-details .audio-mixer{gap:5px 13px}.audio-mixer label{gap:6px}.audio-mixer input{width:130px;max-width:40vw}.command-tools .sound-switches{gap:9px}.audio-mixer .audio-save{flex-basis:100%}}

/* A generated cottage scene and torn parchment, below the always-accessible command row. */
#budgetDialog.sage-budget-view[open]{position:fixed;inset:var(--popup-top) 0 0;margin:0;padding:0;width:100vw;max-width:none;height:calc(100dvh - var(--popup-top));max-height:none;border:0;border-radius:0;background:#0d1510b3;box-shadow:none;color:#3e2915;overflow:hidden;isolation:isolate;animation:sage-arrive .48s ease-out both}
.sage-cottage-scene{position:absolute;inset:0;pointer-events:none;overflow:hidden;mask-image:radial-gradient(ellipse 82% 100% at 50% 50%,#000 49%,#000b 83%,transparent 100%)}
.sage-cottage-scene>.sage-art-backdrop{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:blur(18px) brightness(.56);transform:scale(1.04)}
.sage-cottage-scene>.sage-art-main{position:absolute;left:0;top:50%;width:80%;height:auto;transform:translateY(-50%);object-fit:contain;mask-image:linear-gradient(0deg,transparent,#000 10%,#000 92%,transparent)}
.sage-cottage-shade{position:absolute;inset:0;background:linear-gradient(90deg,#04130b11 35%,#07100711 60%,#070c0ca6)}
.sage-hearth-glow{position:absolute;left:38%;top:42%;width:16%;height:24%;border-radius:50%;background:radial-gradient(ellipse,#ffb04c66,transparent 67%);mix-blend-mode:screen;filter:blur(18px);animation:sage-hearth 4.7s ease-in-out infinite alternate}
.sage-window-light{position:absolute;inset:0;background:linear-gradient(125deg,transparent 10%,#fceab716 22%,transparent 38%,#fae7ae0a 44%,transparent 53%);mix-blend-mode:screen;animation:sage-window 8s ease-in-out infinite alternate}
.sage-magic{position:absolute;inset:0;overflow:hidden}
.sage-mote{position:absolute;left:var(--x);top:var(--y);width:var(--size);height:var(--size);opacity:0;filter:sepia(.8) saturate(1.7) brightness(1.8) drop-shadow(0 0 7px #ffd079b0);animation:sage-drift var(--duration) linear var(--delay) infinite}
.sage-mote:nth-child(4n){filter:sepia(.3) saturate(.5) brightness(2.2) drop-shadow(0 0 9px #d2f5b8);mix-blend-mode:screen}
.sage-cottage-caption{position:absolute;left:5%;bottom:6%;max-width:42%;color:#f9e3ad;text-shadow:0 2px 12px #000,0 2px 4px #000;pointer-events:none}
.sage-cottage-caption span{display:block;font:12px var(--sans,system-ui);letter-spacing:.22em;text-transform:uppercase;margin-bottom:10px}.sage-cottage-caption strong{font:clamp(28px,3.4vw,58px) Georgia,serif;font-weight:normal}.sage-cottage-caption p{margin:10px 0;font-size:15px;line-height:1.5;color:#f0dfbe}
.sage-budget-sheet{position:absolute;top:1.5%;right:1.2%;width:clamp(525px,43vw,800px);height:97%;filter:drop-shadow(-14px 10px 20px #0009)}
.sage-scroll-art{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;opacity:.94;pointer-events:none}
.sage-scroll-content{position:absolute;inset:10% 15.5% 12% 18%;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#987441 #d6b7806b;padding:0 7px 14px 0;text-shadow:0 1px #ffffff25;color:#422d19;font:13px/1.5 system-ui,sans-serif}
.sage-scroll-content .dialog-head{display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid #78542666;padding:0 0 10px;gap:5px!important}
.sage-scroll-content h2{font:clamp(25px,2.2vw,38px)/1.08 Georgia,serif;color:#3e2811;margin:4px 0 0}.sage-scroll-content .eyebrow{font-size:10px;letter-spacing:.17em;color:#77502d}
#budgetDialog #closeBudget{position:static;color:#49311b;background:#a1723324;border:1px solid #946b38;border-radius:5px;padding:2px 7px;font-size:23px;line-height:1.3;min-width:32px;height:36px;flex-shrink:0}
.sage-scroll-content p{margin:9px 0}.sage-budget-period{font-size:11px;color:#775a3c}.sage-scroll-content fieldset{border:0;padding:0;margin:0;min-width:0}.sage-scroll-content label{display:block;font-size:12px;font-weight:600;color:#52371d}
.sage-scroll-content input[type=number]{box-sizing:border-box;width:100%;min-width:0;color:#392510;background:#fce9bf80;border:1px solid #926b3c88;border-radius:5px;font:15px system-ui,sans-serif;padding:7px 9px;height:36px}
.sage-income-line{display:flex;align-items:center;gap:6px}.sage-income-line input{flex:1}.sage-scroll-content button{border:1px solid #8e662f;border-radius:5px;background:#b58c4230;color:#513918;padding:6px 9px;font:12px/1.4 system-ui,sans-serif;box-shadow:none;white-space:normal}.sage-scroll-content button:hover:not(:disabled){background:#e6c98b;transform:none}.sage-scroll-content button:focus-visible,.sage-scroll-content input:focus-visible{outline:3px solid #226676;outline-offset:3px}.sage-income-line button{flex:0 0 81px;padding:3px;font-size:10px}
.sage-help-text,.sage-scroll-content .sage-draft-note{font-size:11px;line-height:1.45;color:#715235}.sage-scroll-content .sage-reset{width:100%;margin:4px 0 10px;font-weight:650;background:#e4c58180}
.sage-allocation{margin:0 0 14px;padding-bottom:12px;border-bottom:1px solid #79542d40}.sage-allocation-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:5px}.sage-allocation-heading label{font:18px Georgia,serif}.sage-allocation-heading output{font-size:12px;font-weight:700;white-space:nowrap;padding-top:1px}.sage-guide-label{display:block;font-size:11px;color:#27714b;font-weight:650;margin:3px 0}
.sage-allocation[data-guide=review] .sage-guide-label{color:#984212}.sage-allocation[data-guide=unknown] .sage-guide-label{color:#765c3e}
.sage-range-wrap{position:relative;padding:8px 0 2px}.sage-scroll-content input[type=range]{width:100%;margin:0;appearance:none;-webkit-appearance:none;border:1px solid #5c4e2b70;height:9px;border-radius:8px;padding:0;background:linear-gradient(to right,#44795d 0 var(--sage-guide),#bb8741 var(--sage-guide) 100%);cursor:pointer;box-shadow:inset 0 1px 3px #0004}
.sage-allocation.future input[type=range]{background:linear-gradient(to right,#bb8741 0 var(--sage-guide),#44795d var(--sage-guide) 100%)}
.sage-scroll-content input[type=range]::-webkit-slider-thumb{appearance:none;width:19px;height:23px;border:2px solid #835d24;border-radius:45%;background:radial-gradient(ellipse at 35% 25%,#fff4bb,#d4a84c 58%,#78501b);box-shadow:0 1px 3px #341e0c99}
.sage-scroll-content input[type=range]::-moz-range-thumb{width:16px;height:20px;border:2px solid #835d24;border-radius:45%;background:#dfb455;box-shadow:0 1px 3px #341e0c99}
.sage-scroll-content input[type=range]:disabled{opacity:.45;cursor:default}.sage-guide-key{font-size:10px;color:#654a2d;display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}.sage-guide-key span:before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:#44795d;margin-right:4px}.sage-guide-key span+span:before{background:#bb8741}
.sage-scroll-content .sage-advice{font-size:11px;line-height:1.45;margin:4px 0}.sage-scroll-content .sage-actual{font-size:10px;color:#765635;line-height:1.4;margin:4px 0 0}.sage-scroll-content .sage-balance{padding:9px 11px;background:#416c4518;border-left:3px solid #597746;font-size:12px;font-weight:600}.sage-scroll-content .sage-balance[data-state=over]{background:#a53e241b;border-color:#a34c28;color:#823311}.sage-scroll-content .sage-balance[data-state=open]{border-color:#a3813c}.sage-budget-caution{font-size:11px;padding:7px 9px;border-left:3px solid #a3782f;background:#b3842820}
.sage-method-note{font-size:11px;border-top:1px solid #8c6f454d;margin:12px 0 10px;padding-top:8px}.sage-method-note summary{cursor:pointer;font-weight:650}.sage-method-note a{color:#235969;text-decoration:underline}.sage-scroll-content .sage-accept{width:100%;background:linear-gradient(#ac8346,#695026);border:1px solid #795824;color:#fff1c8;font-weight:700;font-size:13px;padding:11px 6px;box-shadow:0 2px 5px #56351633}.sage-scroll-content .sage-accept:hover:not(:disabled){background:#806030;color:#fff6dc}.sage-scroll-content button:disabled{opacity:.55;cursor:wait}.sage-save-status{font-size:12px;color:#744013;font-weight:650}.sage-save-status:empty{display:none}.sage-scroll-hint{font:10px system-ui;color:#745735;text-align:center;margin-top:9px}
#sageBlessing{position:fixed;inset:var(--popup-top) 0 0;z-index:160;overflow:hidden;pointer-events:none}#sageBlessing[hidden]{display:none}.sage-bloom{position:absolute;inset:-20%;background:radial-gradient(ellipse at 60% 48%,#fffbeccb,#ffe89e9e 18%,#edc85e52 42%,transparent 67%);opacity:0;mix-blend-mode:screen}.shine .sage-bloom{animation:sage-bloom 2.2s ease-out both}.sage-shower{position:absolute;left:var(--x);top:0;width:var(--size);height:var(--size);opacity:0;filter:sepia(.8) saturate(2) brightness(2) drop-shadow(0 0 9px #ffe596);animation:sage-shower var(--duration) cubic-bezier(.16,.55,.4,1) var(--delay) both}
#budgetDialog.sage-accepting{animation:sage-depart .6s ease-in both}
@keyframes sage-arrive{from{opacity:0;transform:scale(1.015)}to{opacity:1;transform:scale(1)}}
@keyframes sage-depart{to{opacity:0;transform:scale(1.025)}}
@keyframes sage-drift{0%{opacity:0;transform:translate(0,35px) scale(.4)}20%{opacity:.85}70%{opacity:.5}100%{opacity:0;transform:translate(var(--drift),-150px) scale(.8)}}
@keyframes sage-hearth{from{opacity:.3;transform:scale(.95)}to{opacity:.75;transform:scale(1.08)}}
@keyframes sage-window{from{opacity:.35}to{opacity:1}}
@keyframes sage-bloom{0%{opacity:0;transform:scale(.6)}24%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.3)}}
@keyframes sage-shower{0%{opacity:0;transform:translate(0,-30px) scale(.2)}15%{opacity:1}65%{opacity:.9}100%{opacity:0;transform:translate(var(--drift),80vh) scale(.5) rotate(80deg)}}
html[data-motion=off] .sage-mote,html[data-motion=off] .sage-hearth-glow,html[data-motion=off] .sage-window-light{animation:none;opacity:.35}html[data-motion=off] .sage-mote{display:none}html[data-motion=off] #budgetDialog{animation:none}html[data-motion=off] #sageBlessing{display:none}
@media(min-width:2000px){.sage-scroll-content{font-size:16px}.sage-scroll-content label{font-size:15px}.sage-scroll-content .sage-advice,.sage-help-text,.sage-scroll-content .sage-draft-note{font-size:14px}.sage-allocation-heading label{font-size:23px}.sage-allocation-heading output{font-size:16px}.sage-scroll-content .sage-actual,.sage-guide-label,.sage-guide-key{font-size:13px}.sage-scroll-content .sage-accept{font-size:17px}.sage-allocation{margin-bottom:19px;padding-bottom:17px}}
@media(max-width:900px) and (min-width:651px){.sage-budget-sheet{width:510px;right:-1%}.sage-cottage-scene>.sage-art-main{width:105%;left:-23%}.sage-cottage-caption{max-width:30%;left:3%}.sage-cottage-caption strong{font-size:30px}.sage-cottage-caption p{font-size:12px}}
@media(max-width:650px){.sage-budget-sheet{top:29%;height:71%;right:0;width:100%;min-width:0}.sage-scroll-content{inset:9% 15% 12% 17%;padding-right:4px}.sage-cottage-scene>.sage-art-main{top:0;width:100%;height:auto;transform:none;object-fit:contain;mask-image:linear-gradient(#000 75%,transparent)}.sage-cottage-caption{display:none}.sage-scroll-content h2{font-size:25px}.sage-allocation-heading{flex-wrap:wrap}.sage-allocation-heading output{font-size:11px}.sage-hearth-glow{top:9%;left:47%;height:16%}.sage-window-light{height:45%}}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) #budgetDialog.sage-budget-view[open]{animation:none}html:not([data-motion="on"]) .sage-mote,html:not([data-motion="on"]) #sageBlessing{display:none}html:not([data-motion="on"]) .sage-hearth-glow,html:not([data-motion="on"]) .sage-window-light{animation:none}}

.ferry-savings{padding:10px 0 15px;border-bottom:1px solid #79522e66;margin-bottom:15px;color:#573e25}.ferry-savings h3{font:23px/1.2 Georgia,serif;margin:6px 0 12px}.ferry-savings-total{display:flex;flex-wrap:wrap;gap:5px 14px;align-items:baseline;justify-content:space-between}.ferry-savings-total>strong{font:25px Georgia,serif;color:#43633a}.ferry-savings-account{margin:15px 0;padding-top:8px;border-top:1px solid #8e693d40}.ferry-savings-account h4{font:18px Georgia,serif;margin:0}.ferry-savings-account p,.ferry-savings-account small{font-size:11px}.ferry-savings-account dl{margin:8px 0}.ferry-savings-account dl>div{display:flex;flex-wrap:wrap;justify-content:space-between;gap:3px 12px;padding:3px 0;font-size:12px}.ferry-savings-account dd{margin:0;font-weight:650}.ferry-savings-note{font-size:11px;line-height:1.5}.realm-plaque>span{max-width:235px;white-space:normal}.realm-pin.harbor .realm-plaque small{max-width:230px;white-space:normal}
.scene-particle.ferry-secret{pointer-events:auto;cursor:pointer;touch-action:manipulation;min-width:44px;min-height:44px}.ferry-secret:focus-visible{outline:2px solid #f9df93;border-radius:50%;outline-offset:5px}.ferry-secret:hover{filter:brightness(1.5) drop-shadow(0 0 10px #f8dd84)}
#locationShortcuts[open]{overflow:auto;overscroll-behavior:contain;max-height:calc(100dvh - var(--popup-top) - 24px);scrollbar-width:thin;scrollbar-color:#b6975d #171d24}
#treasureGame[open]{position:fixed;inset:var(--popup-top) 0 0;margin:0;width:100vw;height:calc(100dvh - var(--popup-top));max-width:none;max-height:none;padding:20px;background:#090b10d9;border:0;border-radius:0;overflow:hidden;display:grid;place-items:center;animation:realm-arrive .35s ease both;box-sizing:border-box}
#treasureGame.departing{animation:encounter-depart .2s ease both;pointer-events:none}#treasureGame[open]{grid-template-rows:minmax(0,1fr)}.treasure-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.treasure-table{position:relative;width:min(100%,1400px);height:100%;max-height:950px;background:url('assets/treasure-table.webp') center / 100% 100% no-repeat;filter:drop-shadow(0 10px 25px #000b)}.treasure-surface{position:absolute;inset:9% 7%;touch-action:none;user-select:none;-webkit-user-select:none;overflow:hidden}
#treasureGame .treasure-piece{position:absolute;padding:0;width:var(--treasure-size);height:var(--treasure-size);min-width:0;border:0;border-radius:0;background-color:transparent!important;background-image:url('assets/treasure-pieces.webp');background-size:300% 200%;background-position:var(--piece-x) var(--piece-y);box-shadow:none;transform:translate(-50%,-50%) rotate(var(--piece-turn));filter:drop-shadow(1px 3px 2px #130a05bb);cursor:grab;touch-action:none;-webkit-appearance:none;appearance:none;transition:filter .15s;outline:0;outline-offset:2px;-webkit-tap-highlight-color:transparent}
#treasureGame .treasure-piece.held{cursor:grabbing;filter:drop-shadow(3px 9px 5px #130a0588) brightness(1.12)}#treasureGame .treasure-piece:focus-visible:not(.pointer-focus){outline:2px solid #ffe7b199;border-radius:50%}#treasureGame .treasure-piece.pointer-focus{outline:0}.treasure-close{position:absolute;z-index:1000;top:22px;right:25px;font:29px Georgia,serif;line-height:1;width:42px;height:42px;padding:0;border:1px solid #bba06a;background:#1b1410dd;color:#ffe4ac;border-radius:50%}
@media(max-width:600px){#treasureGame[open]{padding:10px 4px}.treasure-table{max-height:720px}.treasure-close{right:12px;top:14px}.treasure-surface{inset:10% 8%}}
html[data-motion=off] #treasureGame[open],html[data-motion=off] #treasureGame.departing{animation:none}html[data-motion=off] .treasure-piece{transition:none}
.treasure-instructions{flex:0 0 100%;margin:0;font:13px/1.45 'Segoe UI',sans-serif;text-align:center;color:#ffe8b4;text-shadow:0 2px 3px #000,0 0 8px #000;background:#1d1109b3;border:1px solid #b58a4b80;border-radius:7px;padding:6px 10px}
.treasure-save-state:empty{display:none}
@media(max-width:600px){.treasure-instructions{font-size:11px;line-height:1.4;padding:5px 7px}}
#scoreTotals.savings-summary{grid-template-columns:1fr}
.day-card .ferry-savings{color:inherit}

/* Only the board owns touch zoom; popups and the rest of the page scroll normally. */
.map-viewport{touch-action:none}
@media(pointer:coarse){.map-viewport,.map-viewport *{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}}
.treasure-record{position:absolute;z-index:2;left:5%;right:65px;top:1.8%;display:flex;align-items:center;justify-content:center;gap:8px 24px;flex-wrap:wrap;color:#f5dca5;font:14px Georgia,serif;text-shadow:0 2px 3px #000}
.treasure-record strong{font-variant-numeric:tabular-nums;font-weight:normal;margin-left:5px;white-space:nowrap}
.treasure-record small{font:11px 'Segoe UI',sans-serif}
.treasure-retry{font-size:11px;padding:4px 8px}
.treasure-congratulations:not([hidden]){position:absolute;z-index:1000;inset:0;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px;pointer-events:none;color:#fff0b2;text-shadow:0 0 9px #dd9d28,0 4px 12px #000,0 0 40px #120b00;background:radial-gradient(ellipse,#20140599,transparent 65%);animation:treasure-cheer 3.2s ease both}
.treasure-congratulations strong{font:clamp(30px,5vw,70px)/1.1 Georgia,serif}.treasure-congratulations span{font:22px Georgia,serif}
@keyframes treasure-cheer{0%{opacity:0;transform:scale(.9)}16%,72%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.04)}}
html[data-motion=off] .treasure-congratulations:not([hidden]){animation:none}
@media(max-width:700px), (max-height:500px) and (pointer:coarse){
 .app-header.command-bar{padding:4px 9px}
 .command-bar .command-line,.command-bar.expanded .command-line{min-height:48px;gap:6px;flex-wrap:nowrap}
 .command-line .ancient-brand{flex:0 1 175px;min-width:0;margin-right:auto}
 .ancient-brand>img{width:100%;max-width:175px;height:51px}
 .command-line #musicHome{flex:0 0 124px;margin-left:0}
 .command-line #musicHome .corner-controls{gap:5px}
 .command-line .expand-header{width:25px;flex-basis:25px;height:40px}
 .header-details{max-height:min(55dvh,calc(100dvh - 80px));overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;grid-template-columns:minmax(0,1fr)}
 .mobile-command-details{display:grid;grid-template-columns:minmax(0,1fr);grid-column:1/-1;min-width:0;gap:12px;padding:4px 0 8px}
 .mobile-command-details .season-controls{display:flex;gap:6px;justify-content:center;margin:0;padding:0}
 .mobile-command-details .season-controls select{width:calc(100% - 90px);max-width:300px;min-width:0;font-size:13px}
 .mobile-command-details .season-controls .arrow{width:38px;height:40px}
 .mobile-command-details .header-actions{display:grid;grid-template-columns:repeat(2,112px);justify-content:center;gap:8px 18px;margin:0;padding:0}
 .mobile-command-details .header-art,.command-bar.expanded .mobile-command-details .header-art{display:block;position:relative;width:112px;height:46px;min-width:0;padding:0;border:0;background:none;box-shadow:none;border-radius:5px;overflow:hidden}
 .mobile-command-details .score-strip,.command-bar.expanded .mobile-command-details .score-strip{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:0;padding:0;min-width:0;border:0;background:none;box-shadow:none}
 .mobile-command-details .score-strip>div{min-width:0;padding:4px 7px;border:0}
 .mobile-command-details .score-strip strong{display:block;font-size:18px;white-space:nowrap}
 .mobile-command-details .score-strip .stat-label{display:block;font-size:10px}
 .mobile-command-details .score-strip small{display:block;font-size:10px}
 #mapZoomDock{width:min(258px,calc(100% - 78px));height:46px;max-width:none}
 .map-view-controls{top:9px;right:8px}
 .map-view-controls .map-view-button>span:last-child{display:none}
 .map-view-button{min-height:40px;padding:3px 8px}
 .game-layout>.map-side-panel{top:66px;max-height:calc(var(--map-view-height,100dvh) - 80px)}
 body.map-expanded .game-layout>.map-side-panel{top:calc(var(--ledger-header-height) + 66px);max-height:calc(var(--map-view-height,100dvh) - 80px)}
 .treasure-record{font-size:12px;gap:5px 15px;left:7%;right:50px;top:2%}
 .treasure-record small{flex-basis:100%;text-align:center;font-size:10px}
 .treasure-record strong{margin-left:2px}
 /* Prevent iOS from zooming the whole document when a form field is focused. */
 #commandBar dialog :is(input,select,textarea),#mobileCommandDetails select{font-size:16px}
}
/* Phones keep the same tall parchment when rotated. */
@media(max-width:700px), (max-height:500px) and (pointer:coarse){
 .mobile-command-details .header-art{contain:layout paint}
 .mobile-command-details .header-art>span{min-width:0;max-width:100%}
 #drawer.encounter-dialog:not(.location-view)[open]{width:min(98vw,540px);height:var(--popup-height);max-height:var(--popup-height);background:none;--paper-gutter:18%}
 #drawer.encounter-dialog:not(.location-view)>.encounter-sheet{position:absolute;inset:0}
 #drawer.encounter-dialog:not(.location-view) .drawer-artwork{visibility:visible;content:url('assets/tall-scroll.webp')}
 #drawer.encounter-dialog:not(.location-view) .drawer-surface{inset:13% var(--paper-gutter) 14%}
 #drawer.encounter-dialog:not(.location-view) .tx-table tbody{grid-template-columns:1fr}
 #drawer.encounter-dialog:not(.location-view) .tx-tools{flex-direction:column}
 #drawer.encounter-dialog:not(.location-view) .tx-tools select{flex:auto}
}
@media(max-height:500px) and (pointer:coarse) and (orientation:landscape){
 #drawer.encounter-dialog:not(.location-view)[open]{width:min(760px,98vw)}
 #drawer.encounter-dialog:not(.location-view) .drawer-artwork{content:url('assets/scroll.webp')}
 #drawer.encounter-dialog:not(.location-view) .drawer-surface{inset:13% 16% 14%}
 #drawer.encounter-dialog:not(.location-view) .dialog-head{margin-bottom:5px;padding-bottom:5px}
 #drawer.encounter-dialog:not(.location-view) .dialog-head h2{font-size:24px;margin-top:2px}
 #drawer.encounter-dialog:not(.location-view) .eyebrow{font-size:8px}
 #drawer.encounter-dialog:not(.location-view) #encounterFootnote{font-size:8px;margin-top:3px;padding-top:3px}
}

/* Fade only generated paper pixels. Frames, ink, controls and hit areas remain
   independent; the source PNG/WebP artwork is unchanged in both editions. */
:root{
 --paper-fade-x:linear-gradient(90deg,#000 8%,transparent 18%,transparent 82%,#000 92%);
 --paper-fade-y:linear-gradient(#000 5%,rgba(0,0,0,.25) 16%,rgba(0,0,0,.25) 84%,#000 95%);
}
.encounter-dialog .drawer-artwork,.sage-scroll-art,
.day-preview::before{
 opacity:1;
 -webkit-mask-image:var(--paper-fade-x),var(--paper-fade-y);
 -webkit-mask-composite:source-over;
 mask-image:var(--paper-fade-x),var(--paper-fade-y);
 mask-composite:add;
}
.day-preview{background:none;isolation:isolate}
.day-preview::before{content:'';position:absolute;inset:0;background:var(--scroll-art) center/100% 100% no-repeat;z-index:-1;pointer-events:none}
/* Light, opaque ink stays legible against the revealed paintings. */
#drawer.encounter-dialog .drawer-surface,.sage-scroll-content,.day-preview{
 --paper-ink:#fff0cf;--paper-muted:#e1cfad;color:var(--paper-ink);text-shadow:0 1px 2px #170e05,0 0 4px #170e05;
}
#drawer.encounter-dialog .drawer-surface :is(h2,h3,h4,p,small,span,strong,b,li,td,th,dd,dt,label,a,summary),
#drawer.encounter-dialog :is(#drawerIntro,#encounterMemoryNote,#txSummary,#encounterFootnote),
#budgetDialog .sage-scroll-content :is(h2,p,small,span,strong,label,output,summary,a,div){color:inherit}
#drawer.encounter-dialog .tx-date{color:#ead8b7!important}
#drawer.encounter-dialog .tx-table .amount.good{color:#b3f2be}
#drawer.encounter-dialog :is(.close,.swamp-toggle,.sage-actions button),
#budgetDialog .sage-scroll-content button{color:#fff0cf;background-color:#201709a6;border-color:#d4b57599;text-shadow:0 1px 2px #170e05}
#drawer.encounter-dialog :is(input,select),#budgetDialog .sage-scroll-content input[type=number]{color:#fff0cf;background:#191e22d6;border-color:#c1a26899;text-shadow:none;color-scheme:dark}
#drawer.encounter-dialog input::placeholder{color:#e1cfad}
#drawer.encounter-dialog option{color:#fff0cf;background:#191e22}
#drawer.encounter-dialog .swamp-toggle.flagged{background:#203b29c7;color:#c6f0b8}
#drawer.encounter-dialog :is(.swamp-math,.review-note){background:#161d20a3;color:#fff0cf}
#drawer.encounter-dialog .ferry-savings{color:#fff0cf}
#budgetDialog #closeBudget{color:#fff0cf;background:#201709a6}
#budgetDialog .sage-scroll-content .sage-guide-label{color:#b4f2c9}
#budgetDialog .sage-allocation[data-guide=review] .sage-guide-label{color:#ffd29c}
#budgetDialog .sage-allocation[data-guide=unknown] .sage-guide-label{color:#e4d1ac}
#budgetDialog .sage-scroll-content .sage-balance{background:#182d1aaa;color:#c6f0b8}
#budgetDialog .sage-scroll-content .sage-balance[data-state=over]{background:#472116bb;color:#ffcfab}
#budgetDialog .sage-scroll-content .sage-reset{background:#332613bb}
#budgetDialog .sage-scroll-content button:hover:not(:disabled){background:#584127;color:#fff7dd}
#budgetDialog .sage-scroll-content .sage-accept{background:linear-gradient(#ac8346,#695026);color:#fff1c8}
#budgetDialog .sage-scroll-content .sage-save-status{color:#ffddac}

.statement-matcher[open]{display:flex;flex-direction:column;inset:calc(var(--popup-top,var(--ledger-header-height)) + 8px) 10px 10px;width:calc(100vw - 20px);max-width:1500px;height:calc(100dvh - var(--popup-top,var(--ledger-header-height)) - 18px);max-height:none;margin:0 auto;padding:0;border:1px solid #ac8d53;border-radius:12px;background:#111b24;color:#ece0c7;box-shadow:0 24px 80px #000d;overflow:hidden;font:14px/1.5 system-ui,sans-serif}
.matching-heading{display:flex;justify-content:space-between;gap:16px;padding:14px 22px;border-bottom:1px solid #655439;background:linear-gradient(115deg,#273038,#151d26);flex-shrink:0}.matching-heading h2{font:26px Georgia,serif;color:#f1d99d;margin:2px 0}.matching-heading small{font-size:10px;letter-spacing:.16em}.matching-heading p{margin:0;font-size:12px;overflow-wrap:anywhere}.matching-heading button{align-self:flex-start;font-size:24px;min-width:42px;min-height:42px}
.matching-content{overflow:auto;overscroll-behavior:contain;padding:16px 22px;min-height:0;flex:1}.matching-content p{margin:0 0 12px}.matching-intro{max-width:1000px;color:#c7c4bc}.matching-alert{color:#efbe81;font-size:13px}.matching-alert:empty{display:none}.matching-layout-choice,.matching-toolbar,.matching-save-fields{display:flex;align-items:end;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.matching-workspace{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(320px,1fr);gap:18px;align-items:start}.matching-document{min-width:0;position:sticky;top:0}.matching-toolbar{align-items:center;background:#111b24;padding:6px 0}.matching-toolbar label{display:flex;align-items:center;gap:10px;flex:1;font-size:12px}.matching-toolbar input{width:120px;max-width:150px}.matching-toolbar button{min-height:38px;min-width:38px}.matching-pick-hint{padding:9px 12px;border:1px solid #b99448;border-radius:6px;background:#4f402b;color:#ffedb5;min-height:42px}
.matching-pdf-scroll{overflow:auto;max-height:60vh;min-height:180px;overscroll-behavior:contain;border:1px solid #5b6570;background:#303943;border-radius:6px;touch-action:pan-x pan-y pinch-zoom}.matching-pdf-scroll:focus-within{outline:1px solid #b69956}#matchingPdfPage{position:relative;background:white;min-width:600px}#matchingCanvas{display:block;width:100%;height:auto}#matchingWords,#matchingBands{position:absolute;inset:0}#matchingBands{pointer-events:none;overflow:hidden}.matching-band{position:absolute;top:0;bottom:0;background:#20aee012;border:1px solid #3fa0c9}.matching-band b{position:sticky;top:0;display:block;font:10px system-ui;color:#fff;background:#215470;white-space:nowrap;padding:2px}#matchingWords button{position:absolute;border:0;border-radius:1px;background:transparent;padding:0;min-height:0;min-width:0;box-shadow:none;color:transparent}#matchingWords button:hover,#matchingWords button:focus-visible{background:#dea94166;outline:2px solid #ad7618;z-index:1}
.matching-controls details{border:1px solid #5f533c;border-radius:8px;padding:12px;margin-bottom:12px}.matching-controls summary{color:#f0d39b;cursor:pointer;font-weight:600;margin-bottom:10px}.matching-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.statement-matcher label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:#d8cdb7}.statement-matcher input:not([type=range]):not([type=checkbox]),.statement-matcher select{width:100%;min-width:0;min-height:38px;padding:7px;background:#1c2933;color:#fff3da;border:1px solid #746246;border-radius:5px;font-size:14px}.statement-matcher .matching-check{display:flex;flex-direction:row;align-items:center;gap:8px;margin:12px 0}.statement-matcher input[type=checkbox]{width:18px;height:18px;flex-shrink:0;accent-color:#d8b76b}.matching-picks{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.matching-picks button{font-size:12px;min-height:36px;padding:6px 10px}.matching-picks button[aria-pressed=true]{background:#7c6026;border-color:#ffe5a6;color:white}.matching-caption{font-size:11px;color:#c0baad;margin-top:10px!important}.matching-edge{display:grid;grid-template-columns:1fr 65px 65px 32px;gap:5px;align-items:center;font-size:12px;margin:6px 0}.matching-edge button{padding:2px;min-height:34px}
.matching-review{margin-top:20px;border-top:1px solid #746246;padding-top:16px}.matching-review h3{font:22px Georgia,serif;color:#f2d9a5;margin:0 0 12px}#matchingSummary{padding:10px;background:#54372d;border-radius:6px}#matchingSummary.is-balanced{background:#284b3d}.matching-row-head,.matching-row{display:grid;grid-template-columns:155px minmax(180px,1fr) 115px 105px 38px;gap:8px;align-items:start;padding:8px 0;border-bottom:1px solid #53606b66}.matching-row small{grid-column:1/-1;color:#b3b7b6;font-size:10px}.matching-row.needs-review{background:#a4582022}.matching-row button{min-height:38px;padding:4px}.matching-row-head{font-size:12px;color:#d6bb87}#matchingRows{max-height:440px;overflow:auto;overscroll-behavior:contain}.matching-save-fields{margin-top:18px}.matching-save-fields>label:first-child{min-width:240px;flex:1}.matching-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:12px 22px;border-top:1px solid #716143;background:#15202b;flex-shrink:0}.matching-actions button{min-height:42px}.matching-actions button:disabled{opacity:.5;cursor:not-allowed}.matching-private-note{display:none;padding:30px}.matching-content [hidden]{display:none!important}
.matching-guide{padding:10px;border:1px solid #89733e;border-radius:7px;background:#1c2830;margin-bottom:10px}.matching-guide .matching-pick-hint{margin:0;border:0;background:transparent;padding:4px 0;min-height:0}.matching-guide .matching-pick-result{margin:0 0 6px;color:#bde8bd;font-weight:600;overflow-wrap:anywhere}.matching-pick-result:empty{display:none}.matching-guide .matching-pick-result.is-error{color:#ffbdad}.matching-guide button{margin-top:8px;font-size:12px;min-height:38px;white-space:normal}.statement-matcher input.matching-target{outline:2px solid #efd286;outline-offset:2px}.statement-matcher input.matching-updated{box-shadow:0 0 0 2px #7fba8b}.statement-matcher input[aria-invalid=true],.statement-matcher select[aria-invalid=true]{border-color:#f2917f!important;background:#3d2729!important}.matching-band.is-target{border:2px solid #bc822b;background:#c29b2a18}#matchingWords button.was-picked{background:#6ebc9266;outline:2px solid #257844;z-index:1}.matching-row.needs-review small{color:#ffbdad}
html[data-amounts-hidden=true] .statement-matcher .matching-content,html[data-amounts-hidden=true] .statement-matcher .matching-actions{display:none}html[data-amounts-hidden=true] .statement-matcher .matching-private-note{display:block}
@media(max-width:800px){.matching-workspace{grid-template-columns:1fr}.matching-document{position:static}.matching-pdf-scroll{max-height:36vh}.matching-heading{padding:10px 12px}.matching-heading h2{font-size:22px}.matching-content{padding:12px}.matching-actions{padding:8px}.matching-actions button{font-size:12px;padding:8px}.matching-row-head{display:none}.matching-row{grid-template-columns:1fr 1fr 38px}.matching-row input[data-field=description]{grid-column:1/3;grid-row:2}.matching-row input[data-field=date]{grid-column:1}.matching-row input[data-field=value]{grid-column:2}.matching-row select{grid-row:3;grid-column:1/3}.matching-row button{grid-column:3;grid-row:1/3}.statement-matcher input:not([type=range]):not([type=checkbox]),.statement-matcher select{font-size:16px}.matching-fields{gap:8px}.matching-save-fields>label:first-child{min-width:180px}.matching-controls details{padding:9px}}
@media(max-height:500px){.matching-heading p,.matching-heading small{display:none}.matching-heading{padding:6px 12px}.matching-actions{padding:5px 12px}.matching-actions button{min-height:34px}.matching-pdf-scroll{max-height:55vh}}

.dragon-ledger{margin:16px 0 24px}.dragon-ledger h3{font:24px Georgia,serif;margin:18px 0 10px}.debt-account{border-top:1px solid #84622e66;padding:12px 0}.debt-account h4{font:20px Georgia,serif;margin:0 0 5px}.debt-account p,.debt-note{font-size:12px;line-height:1.55}.debt-account dl{margin:8px 0}.debt-account dl>div{display:flex;justify-content:space-between;gap:14px;margin:6px 0}.debt-account dd{margin:0;text-align:right;font-weight:bold}.debt-ratio{border:1px solid #647444;background:#60815430;border-radius:7px;padding:12px;display:flex;flex-direction:column;gap:6px}.debt-ratio.high{background:#a7452430;border-color:#a65c33}.debt-ratio strong{font:32px Georgia,serif}.debt-ratio span{font-size:13px}#debtProfileForm{display:grid;gap:12px}#debtProfileForm label{display:grid;gap:5px;font-size:13px}#debtProfileForm input{width:100%;min-width:0;min-height:40px;font-size:16px;color:#352617;background:#fff3d170;border:1px solid #8e703f;border-radius:5px;padding:8px}#debtProfileForm input[aria-invalid=true]{outline:2px solid #bb5737}#debtProfileForm small{font-size:12px;line-height:1.5}.debt-private-note{display:none}html[data-amounts-hidden=true] #debtProfileForm{display:none}html[data-amounts-hidden=true] .debt-private-note{display:block}
.debt-weather{position:absolute;inset:0;overflow:hidden;z-index:7;pointer-events:none;contain:layout paint;mix-blend-mode:screen}.debt-gust{position:absolute;width:var(--size);height:var(--size);opacity:0;animation:dragon-land-flow var(--duration) linear infinite;animation-delay:var(--phase);pointer-events:none}.debt-gust[hidden],.debt-weather[hidden]{display:none}.debt-spark .scene-sprite{filter:sepia(1) saturate(5) brightness(1.35) drop-shadow(0 0 5px #ffad35)}.debt-wisp .scene-sprite{filter:sepia(1) saturate(.65) brightness(.6) blur(3px)}#map .dragon-firelight{filter:brightness(calc(1 + var(--debt-anger,0)*2));box-shadow:0 0 calc(12px + var(--debt-anger,0)*40px) rgb(255 100 21 / calc(var(--debt-anger,0)*.85))}#map .dragon-cave{filter:drop-shadow(0 0 calc(var(--debt-anger,0)*18px) #fb853a)}
@keyframes dragon-land-flow{0%{opacity:0;transform:translate(0,0) scale(.35) rotate(0)}12%{opacity:calc(.2 + var(--debt-storm)*.65)}55%{transform:translate(calc(var(--travel-x)*.48 + 25px),calc(var(--travel-y)*.48)) scale(1.2) rotate(22deg)}80%{opacity:calc(var(--debt-storm)*.5)}100%{opacity:0;transform:translate(var(--travel-x),var(--travel-y)) scale(.7) rotate(-15deg)}}
html[data-motion=off] .debt-weather{display:none}@media(prefers-reduced-motion:reduce){html:not([data-motion=on]) .debt-weather{display:none}}

/* Only the permanent command row occupies page space. The details float over
   the board; opening them never changes the board's size, zoom, or position. */
:root{--ledger-panel-glass:rgba(12,19,28,.25)}
.command-bar.expanded .command-line{flex-wrap:nowrap}
#headerDetails{
 position:absolute;inset:100% 14px auto;margin:0;padding:13px 14px 12px;
 max-height:min(72dvh,calc(100dvh - var(--ledger-header-height) - 14px));
 overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
 z-index:180;background:var(--ledger-panel-glass);border:1px solid #b1915f99;
 border-radius:0 0 12px 12px;box-shadow:0 12px 28px #0004;
 -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
 text-shadow:0 1px 2px #000,0 0 4px #000;
}

/* Desktop overflow uses the same floating container as the phone controls. */
#mobileCommandDetails{display:grid;grid-template-columns:minmax(0,1fr);grid-column:1/-1;min-width:0;gap:10px;padding:0 0 8px}
#mobileCommandDetails>.season-controls{display:flex;justify-content:center;gap:6px;margin:0;padding:0;order:0;overflow:hidden}
#mobileCommandDetails .season-controls :focus-visible{outline-offset:-3px}
#mobileCommandDetails .season-controls select{flex:1 1 0;min-width:0;width:0;max-width:300px;padding-inline:7px}
#mobileCommandDetails .season-controls .arrow{flex:0 0 38px}
#mobileCommandDetails>.header-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 12px;margin:0;padding:0;order:0}
#mobileCommandDetails .header-art{display:block;position:relative;width:110px;height:45px;flex:0 0 110px;min-width:0;padding:0;border:0;background:none;box-shadow:none;border-radius:5px;overflow:hidden}
#mobileCommandDetails>.score-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;min-width:0;margin:0;padding:0;border:0;background:none;box-shadow:none;order:0}
#mobileCommandDetails .score-strip>div{min-width:0;padding:4px 7px;border-color:#a0825244}
#mobileCommandDetails .score-strip strong{display:block;font-size:18px;white-space:nowrap}
#mobileCommandDetails .score-strip .stat-label{display:block;font-size:10px}
#mobileCommandDetails .score-strip small{display:block;font-size:10px}
.header-details .scrubber input{display:block;max-width:100%;margin-inline:0}

/* A 25%-opaque backdrop means 75% transparency. Ink, sprites, graphs and
   controls remain fully visible; nested cards do not add opaque layers. */
.game-layout>.map-side-panel{
 background:var(--ledger-panel-glass);box-shadow:0 12px 28px #0004;
 -webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);
 text-shadow:0 1px 2px #000,0 0 4px #000;
}
.map-side-panel :is(.budget-card,.swamp-card,.sage-card){background:transparent;box-shadow:none}
.map-side-panel .ledger-panel-heading{background:transparent}
.game-layout.panel-collapsed>.ledger-panel{
 background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;
}

@media(max-width:700px), (max-height:500px) and (pointer:coarse){
 #headerDetails{left:9px;right:9px;padding:12px 10px;grid-template-columns:minmax(0,1fr)}
 #mobileCommandDetails>.header-actions{display:grid;grid-template-columns:repeat(2,112px);gap:8px 18px}
 #mobileCommandDetails .header-art{width:112px;height:46px}
 #mobileCommandDetails>.score-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}
 #mobileCommandDetails .score-strip>div{border:0}
}
@media(max-width:360px){#headerDetails{left:5px;right:5px;padding-inline:7px}}

/* One remaining map drawer, generated frog, and icon-only fullscreen control. */
#swampBtn .satchel-frog{flex:0 0 68px;width:68px;height:60.45px;filter:drop-shadow(0 2px 7px #8ddd5266)}
#mapFullscreen{width:42px;height:42px;padding:4px;gap:0}
#mapFullscreen #mapFullscreenArrow{display:block;position:relative;width:32px;height:32px;line-height:0}
#mapFullscreenArrow img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
#mapFullscreenArrow .map-restore-art,#mapFullscreen[aria-pressed="true"] .map-expand-art{display:none}
#mapFullscreen[aria-pressed="true"] .map-restore-art{display:block}
.scene-particle.debt-payment-coin{padding:0;background:none;border:0;box-shadow:none;border-radius:50%;min-width:44px;min-height:44px;pointer-events:auto;cursor:pointer;touch-action:manipulation;-webkit-appearance:none;appearance:none}
.debt-payment-coin:focus-visible{outline:2px solid #ffe4a0;outline-offset:4px}.debt-payment-coin:hover{filter:brightness(1.4) drop-shadow(0 0 12px #ffdf88)}
#debtGame[open]{position:fixed;inset:var(--popup-top) 0 0;margin:0;width:100vw;height:calc(100dvh - var(--popup-top));max-width:none;max-height:none;padding:16px;background:#090b10d9;border:0;border-radius:0;overflow:hidden;display:grid;grid-template-rows:minmax(0,1fr);place-items:center;box-sizing:border-box;animation:realm-arrive .3s ease both}
#debtGame.departing{animation:encounter-depart .18s ease both;pointer-events:none}
.debt-table{max-width:1200px;isolation:isolate}
.debt-scoreboard{position:absolute;z-index:2;top:2.2%;left:9%;right:9%;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:4px 24px;color:#ffedbe;font:16px Georgia,serif;text-shadow:0 2px 3px #000}
.debt-scoreboard strong{display:inline-block;min-width:1.4em;text-align:right;font-variant-numeric:tabular-nums}.debt-scoreboard small{font:11px 'Segoe UI',sans-serif}.debt-scoreboard button{font-size:11px;padding:4px 8px}
.hurry #debtGameTime{color:#ffb594;text-shadow:0 0 9px #d8461d}
.debt-surface{position:absolute;inset:12% 8% 9%;touch-action:none;user-select:none;-webkit-user-select:none}
.debt-problem{position:absolute;inset:0 0 58%;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1.2fr);align-items:center;gap:12px;color:#ffedbc;font:clamp(30px,6vw,78px)/1 Georgia,serif;text-shadow:0 2px 4px #120a00,0 0 16px #1d0c00}
#debtEquation{white-space:nowrap;text-align:center;font-variant-numeric:tabular-nums}
.debt-answer{height:100%;min-height:0;position:relative;border:2px dashed #e9c275b3;border-radius:16px;background:#3d250a40;box-shadow:inset 0 0 20px #e5b56225;box-sizing:border-box;transition:background .15s,box-shadow .15s}
.debt-answer.correct{border-color:#fff1ac;background:#dcbc4533;box-shadow:0 0 34px #ffda7daa,inset 0 0 20px #ffd34f66}
#debtCoinCount{position:absolute;bottom:6px;left:0;right:0;text-align:center;font:clamp(12px,2vw,18px) Georgia,serif}
.debt-hint{position:absolute;top:44%;left:0;right:0;text-align:center;margin:0;color:#ffedbe;font:14px/1.3 Georgia,serif;text-shadow:0 1px 3px #000;pointer-events:none}
.debt-hint span,.debt-hint small{display:block}.debt-hint small{font-size:11px;color:#edcf99;margin-top:3px}
.debt-bank{position:absolute;inset:55% 0 0;border-top:1px solid #b9985866;background:radial-gradient(ellipse at bottom,#e5b05b19,transparent 75%);pointer-events:none}
.debt-coins{position:absolute;inset:0;pointer-events:none}
#debtGame .debt-money{position:absolute;display:grid;place-items:center;padding:0;width:var(--coin-size);height:var(--coin-size);min-width:0;border:0;border-radius:0;background-color:transparent!important;background-image:url('assets/treasure-pieces.webp');background-size:300% 200%;background-position:0% 0%;box-shadow:none;transform:translate(-50%,-50%) rotate(var(--piece-turn));filter:drop-shadow(1px 3px 2px #130a05bb);cursor:grab;touch-action:none;-webkit-appearance:none;appearance:none;outline:0;-webkit-tap-highlight-color:transparent;pointer-events:auto}
#debtGame .debt-silver{background-position:50% 0%}
.debt-denomination{display:grid;place-items:center;width:52%;height:52%;border-radius:50%;background:radial-gradient(#eccc84ed,#c1923abb 72%,transparent);font:bold calc(var(--coin-size)*.43)/1 Georgia,serif;color:#3e280c;text-shadow:0 1px 0 #fff0ba;pointer-events:none;transform:rotate(calc(var(--piece-turn)*-1))}
.debt-silver .debt-denomination{background:radial-gradient(#e3e5e2ee,#a5a9a6cc 72%,transparent);color:#30343a;text-shadow:0 1px 0 #fff}
#debtGame .debt-money.held{cursor:grabbing;filter:drop-shadow(3px 8px 4px #130a0588) brightness(1.2)}
#debtGame .debt-money:focus-visible:not(.pointer-focus){outline:2px solid #ffe7b1;border-radius:50%;outline-offset:3px}
#debtSatchel{position:absolute;right:0;bottom:6%;width:clamp(76px,12vw,138px);height:33%;max-height:190px;min-height:64px;padding:0;border:0;border-radius:12px;background:none;box-shadow:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#ffecb2;z-index:2;touch-action:manipulation}
#debtSatchel img{display:block;width:100%;height:auto;max-height:calc(100% - 24px);object-fit:contain;filter:drop-shadow(0 5px 7px #0009);pointer-events:none;user-select:none;-webkit-user-select:none}
#debtSatchelFeedback{font:13px/1.2 Georgia,serif;white-space:nowrap;text-shadow:0 1px 3px #000;pointer-events:none}
#debtSatchel:hover:not(:disabled){filter:brightness(1.2)}#debtSatchel:disabled{opacity:1;cursor:default}#debtSatchel:focus-visible{outline:2px solid #ffe7b1;outline-offset:3px}
#debtSatchel.wrong #debtSatchelFeedback{color:#ffad87;font-weight:bold}
.debt-finish:not([hidden]){position:absolute;z-index:2000;inset:12% 8%;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:16px;padding:20px;background:#211405eb;color:#ffecb7;border:1px solid #dab976;border-radius:14px;box-shadow:0 0 50px #0008}
.debt-finish h2{font:clamp(28px,5vw,62px) Georgia,serif;margin:0}.debt-finish p{font:clamp(16px,2vw,26px) Georgia,serif;margin:0}.debt-finish button{background:#4b3518;color:#fff0b6;border:1px solid #e5c88a;padding:12px 18px;border-radius:6px}
@media(max-width:600px){#debtGame[open]{padding:8px 2px}.debt-table{max-height:none}.debt-scoreboard{left:7%;right:14%;gap:4px 12px;font-size:13px}.debt-problem{gap:6px;font-size:clamp(27px,8vw,43px)}.debt-hint{font-size:12px}.debt-answer{border-radius:10px}}
@media(max-height:500px) and (pointer:coarse){#debtGame[open]{padding:4px}.debt-scoreboard{font-size:13px;top:1.5%}.debt-surface{inset:14% 8% 8%}.debt-problem{font-size:34px}.debt-hint{font-size:10px;top:44%;line-height:1.1}.debt-hint small{font-size:9px;margin-top:0}.debt-hint span{display:inline;margin-right:8px}#debtSatchel{bottom:3%;width:85px;height:40%}#debtSatchelFeedback{font-size:11px}.debt-finish:not([hidden]){gap:8px;padding:10px}.debt-finish h2{font-size:28px}}
html[data-motion=off] #debtGame[open],html[data-motion=off] #debtGame.departing{animation:none}
html[data-motion=off] .debt-answer{transition:none}
.debt-game-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* Existing generated gem sprites echo the colored jewels on the wooden key. */
#tiles .tile{--tile-light:#c6bfae;--tile-dark:#918674;background:linear-gradient(145deg,var(--tile-light),var(--tile-dark));padding:2px 0 0 2px;transition:transform .2s cubic-bezier(.16,1,.3,1),filter .2s,box-shadow .2s}
#tiles .tile.spent{--tile-light:#f1cf84;--tile-dark:#b48846;border-color:#d7b16c}
#tiles .tile.income{--tile-light:#b9e2bb;--tile-dark:#699d76;border-color:#a6d4a7}
#tiles .tile.quiet{border-color:#b6ac98}
#tiles .tile.unavailable{--tile-light:#4b5058;--tile-dark:#2f343d}
#tiles .tile.active{transform:translate(-50%,-50%) scale(1.17)}
.tile-gem{position:absolute;left:1px;top:1px;width:36%;height:36%;background-image:url('assets/treasure-pieces.webp');background-size:300% 200%;background-position:100% 100%;filter:grayscale(1) brightness(1.7) drop-shadow(0 1px 1px #241b0d);pointer-events:none}
.tile.spent .tile-gem{filter:sepia(1) saturate(3.5) brightness(1.7) drop-shadow(0 1px 1px #422300)}
.tile.income .tile-gem{background-position:0% 100%;filter:brightness(1.15) saturate(.85) drop-shadow(0 1px 1px #072415)}
.tile.quiet .tile-gem{filter:sepia(.65) saturate(.7) brightness(2.4) drop-shadow(0 1px 1px #241b0d)}
.tile.unavailable .tile-gem{filter:grayscale(1) brightness(.8) drop-shadow(0 1px 1px #000)}
@media(hover:hover) and (pointer:fine){#tiles .tile:hover:not(:disabled){transform:translate(-50%,-50%) scale(1.23);filter:brightness(1.12);z-index:5}}
#tiles .tile:active:not(:disabled){transform:translate(-50%,-50%) scale(1.23);z-index:5}
html[data-motion=off] #tiles .tile{transition:none}

/* Utility panels are the deliberate exception to the Chronicle overlay. */
#clearSessionDialog[open]{width:min(480px,calc(100vw - 28px));height:fit-content;max-height:calc(100dvh - var(--popup-top) - 28px);inset:calc(var(--popup-top) + 14px) 0 14px;padding:24px;color:#eadab7;background:#131b25;border:1px solid #c39e58;border-radius:14px;overflow:auto;overscroll-behavior:contain;box-shadow:0 15px 65px #000c}
#clearSessionDialog h2{margin:0 0 12px;font-size:26px}#clearSessionDialog p{line-height:1.55}
#clearSessionDialog .session-actions{margin-bottom:0}
.session-picker{border:1px solid #ad894e88;border-radius:10px;padding:16px;margin:6px 0 24px;background:#101720aa}
.session-picker h3{margin:0 0 6px}.session-picker>p,.session-picker label{font-size:13px;line-height:1.55}
.session-picker label{display:block;margin:12px 0 5px}.session-picker details{margin-top:16px}
.session-picker-row{display:flex;gap:8px;align-items:stretch;min-width:0}
.session-picker-row input,.session-picker-row select{flex:1;min-width:0;width:0;max-width:100%;font-size:16px}
.session-picker-row button{flex:0 0 auto;white-space:nowrap}.session-picker details form{margin-top:10px}
#sessionPickerStatus{margin-bottom:0;overflow-wrap:anywhere}
@media(max-width:600px){.session-picker{padding:12px}.session-picker-row{gap:6px}.session-picker-row button{padding:9px 12px}.session-document{flex-wrap:wrap;gap:8px}.session-document>span{flex:1 1 100%}}

.scene-particle.bazaar-secret{pointer-events:auto;cursor:pointer;touch-action:manipulation;min-width:44px;min-height:44px}
.bazaar-secret:focus-visible{outline:2px solid #ffe7a5;border-radius:50%;outline-offset:5px}.bazaar-secret:hover{filter:brightness(1.5) drop-shadow(0 0 10px #ffd779)}
#trinketGame[open]{position:fixed;inset:var(--popup-top) 0 0;margin:0;width:100vw;height:calc(100dvh - var(--popup-top));max-width:none;max-height:none;padding:16px;background:#090b10d9;border:0;border-radius:0;overflow:hidden;display:grid;grid-template-rows:minmax(0,1fr);place-items:center;box-sizing:border-box;animation:realm-arrive .3s ease both}
#trinketGame.departing{animation:encounter-depart .18s ease both;pointer-events:none}
.trinket-table{max-width:1200px;max-height:950px;isolation:isolate}
.trinket-scoreboard{position:absolute;z-index:2;top:2.5%;left:8%;right:12%;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 24px;color:#ffeabb;font:17px Georgia,serif;text-shadow:0 2px 3px #000}
.trinket-scoreboard strong{display:inline-block;min-width:1.2em;font-variant-numeric:tabular-nums;text-align:right}.trinket-scoreboard small{font:11px 'Segoe UI',sans-serif}.trinket-scoreboard button{font-size:11px;padding:4px 8px}
.trinket-hint{position:absolute;top:8.5%;left:8%;right:8%;text-align:center;margin:0;color:#ffe9b9;font:15px/1.4 Georgia,serif;text-shadow:0 2px 3px #000}.trinket-hint span{display:block;font-size:12px;color:#e4c995}.trinket-hint b{font-weight:normal;font-variant-numeric:tabular-nums}
.trinket-surface{position:absolute;inset:17% 8% 9%;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overflow:hidden}
#trinketGame .trinket-piece{position:absolute;display:block;width:var(--trinket-size);height:var(--trinket-size);min-width:0;min-height:0;padding:0;margin:0;border:0;border-radius:0;background:none!important;box-shadow:none;transform:translate(-50%,-50%);touch-action:none;appearance:none;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;cursor:grab;outline:0}
.trinket-fragment,.trinket-repaired{display:block;width:var(--trinket-size);height:var(--trinket-size);background-image:url('assets/trinket-pieces.webp');background-size:500% 200%;background-position:var(--trinket-x) var(--trinket-y);background-repeat:no-repeat;pointer-events:none}
/* Complementary masks split the same generated raster. Exact pixel registration
   restores every illustration; the seam is a jagged fracture, never a drawn icon. */
.trinket-piece.left-half{clip-path:polygon(0 0,50% 0,49% 13%,51% 25%,48% 39%,51% 50%,49% 64%,51% 78%,49% 90%,50% 100%,0 100%)}
.trinket-piece.right-half{clip-path:polygon(50% 0,100% 0,100% 100%,50% 100%,49% 90%,51% 78%,49% 64%,51% 50%,48% 39%,51% 25%,49% 13%)}
#trinketGame .trinket-piece[hidden]{display:none}
#trinketGame .trinket-piece.held{cursor:grabbing;filter:brightness(1.2)}
#trinketGame .trinket-piece:focus-visible:not(.pointer-focus) .trinket-fragment{filter:drop-shadow(0 0 3px #fff8c6) brightness(1.3)}
.trinket-repaired{position:absolute;z-index:9000;transform:translate(-50%,-50%);filter:drop-shadow(0 0 8px #ffdf85);pointer-events:none}
.trinket-spark{position:absolute;z-index:9001;width:22px;height:22px;background:url('assets/effects.webp') 100% 100% / 400% 200%;pointer-events:none}
.trinket-next:not([hidden]){position:absolute;z-index:10000;inset:40% 8% auto;text-align:center;color:#fff1b4;font:clamp(22px,4vw,46px) Georgia,serif;text-shadow:0 0 12px #ba8728,0 3px 9px #000;pointer-events:none}.trinket-next small{display:block;margin-top:9px;font-size:16px}
.trinket-finish:not([hidden]){z-index:20000}.trinket-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.hurry #trinketTime{color:#ffb594;text-shadow:0 0 9px #d8461d}
@media(max-width:600px){#trinketGame[open]{padding:8px 2px}.trinket-table{max-height:none}.trinket-scoreboard{font-size:13px;gap:4px 10px;left:6%;right:15%;top:3%}.trinket-hint{top:10%;font-size:13px;left:7%;right:7%}.trinket-hint span{font-size:11px}.trinket-surface{inset:19% 7% 8%}}
@media(max-height:500px) and (pointer:coarse){#trinketGame[open]{padding:4px}.trinket-scoreboard{top:2%;font-size:13px;gap:4px 16px}.trinket-hint{top:10%;font-size:11px}.trinket-hint span{display:inline;margin-left:12px;font-size:10px}.trinket-surface{inset:19% 7% 8%}.trinket-finish:not([hidden]){gap:8px;padding:10px}.trinket-finish h2{font-size:28px}}
html[data-motion=off] #trinketGame[open],html[data-motion=off] #trinketGame.departing{animation:none}

/* Match the bottom inlay to the actual generated date-tile gems. */
.legend-jewel{position:absolute;top:9px;width:40px;height:44px;transform:translateX(-50%);background:transparent!important;border:0;box-shadow:none}
.legend-jewel .tile-gem{inset:0;width:100%;height:100%}
.legend-jewel.spent{left:3.9%}.legend-jewel.income{left:29.15%}.legend-jewel.quiet{left:55.87%}.legend-jewel.unavailable{left:77.3%}
.legend-jewel.spent .tile-gem{filter:sepia(1) saturate(3.5) brightness(1.7) drop-shadow(0 0 2px #cf9c3e)}
.legend-jewel.income .tile-gem{background-position:0% 100%;filter:brightness(1.15) saturate(.85) drop-shadow(0 0 2px #5ec997)}
.legend-jewel.quiet .tile-gem{filter:sepia(.65) saturate(.7) brightness(2.4) drop-shadow(0 0 2px #fce4ae)}
.legend-jewel.unavailable .tile-gem{filter:grayscale(1) brightness(.8) drop-shadow(0 1px 1px #000)}
.realm-magic-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;mix-blend-mode:screen;filter:sepia(1) saturate(2) brightness(2);z-index:1}
.realm-magic-canvas[data-effect=grove],.realm-magic-canvas[data-effect=keep],.realm-magic-canvas[data-effect=outskirts],.realm-magic-canvas[data-effect=swamp]{filter:none}
.realm-magic-canvas[data-effect=swamp]{mix-blend-mode:normal}
.realm-scene[data-realm=grove] .scene-particle.mote,.realm-scene[data-realm=outskirts] .scene-particle.mote{display:none}
.realm-scene .scene-particle.mire-bubble-popped{animation-name:none!important;opacity:0!important}
.realm-scene[data-realm=grove],.realm-scene[data-realm=keep],.realm-scene[data-realm=tower],.realm-scene[data-realm=outskirts],.realm-scene[data-realm=swamp],.realm-scene[data-realm=springs],.realm-scene[data-realm=well],.sage-cottage-scene{pointer-events:auto;touch-action:none}
.realm-scene>img,.sage-cottage-scene>*{pointer-events:none}
.tea-refraction{position:absolute;pointer-events:none;z-index:0}
.tea-refraction[hidden]{display:block!important;visibility:hidden}
.realm-scene[data-realm=well]>img,.realm-scene[data-realm=springs]>img{animation:none;transform:none}
.tea-magic{position:absolute;pointer-events:none;z-index:1}.tea-water{position:absolute;inset:0;clip-path:ellipse(50% 50% at 50% 50%);overflow:hidden}
.tea-ripple{position:absolute;width:25%;height:60%;border:1.5px solid #ffebbca6;border-radius:50%;animation:tea-ripple 6.5s linear var(--delay) infinite;box-shadow:0 0 4px #eddfb633}
.tea-bubble{position:absolute;width:var(--size);height:var(--size);background:url('assets/effects.webp') 33.333% 100% / 400% 200%;filter:sepia(.8) saturate(.5) brightness(1.4);animation:tea-bubble 5s ease-out var(--delay) infinite}
.tea-steam{position:absolute;bottom:45%;width:24%;height:320%;background:url('assets/effects.webp') 100% 0 / 400% 200%;filter:grayscale(.8) blur(3px);opacity:0;transform-origin:50% 100%;animation:tea-steam 8s ease-in-out var(--delay) infinite;mix-blend-mode:screen}
@keyframes tea-ripple{0%{opacity:0;transform:translate(-50%,-50%) scale(.1)}20%{opacity:.55}100%{opacity:0;transform:translate(-50%,-50%) scale(1.6)}}
@keyframes tea-bubble{0%,15%{opacity:0;transform:scale(.25) translateY(4px)}45%{opacity:.35}85%,100%{opacity:0;transform:scale(1.2) translateY(-15px)}}
@keyframes tea-steam{0%{opacity:0;transform:translate(0,15%) scale(.55,.65)}35%{opacity:.24}100%{opacity:0;transform:translate(var(--drift),-60%) scale(1.1,1.3)}}
#healingCrystal{position:absolute;z-index:4;transform:translate(-50%,-50%);padding:0;margin:0;min-width:44px;min-height:44px;background:radial-gradient(ellipse,#aaffcd33,transparent 65%);border:0;box-shadow:none;cursor:pointer;pointer-events:auto;touch-action:manipulation;border-radius:50%}
#healingCrystal:focus-visible{outline:0;filter:drop-shadow(0 0 12px #dbffc7)}#healingCrystal:hover{background:radial-gradient(ellipse,#ceffb86b,transparent 70%)}
.realm-scene :is(.ferry-secret,.bazaar-secret,.debt-payment-coin):focus-visible{outline:0;filter:brightness(1.5) drop-shadow(0 0 12px #ffe49b)}
.crystal-shine{position:absolute;left:15%;top:15%;width:70%;height:70%;background:url('assets/effects.webp') 100% 100% / 400% 200%;filter:sepia(1) saturate(2) hue-rotate(36deg) brightness(2.2);mix-blend-mode:screen;animation:crystal-glimmer 4s ease-in-out infinite}
@keyframes crystal-glimmer{0%,100%{opacity:.35;transform:scale(.65) rotate(0)}50%{opacity:1;transform:scale(1.05) rotate(15deg)}}
.well-breathing:not([hidden]){position:absolute;inset:0;z-index:6;pointer-events:auto;background:radial-gradient(ellipse at 38% 50%,transparent 20%,#060f1460);touch-action:manipulation}
.breathing-focus{position:absolute;transform:translate(-50%,-50%);width:210px;height:230px;pointer-events:none}
.breathing-orb{--breath-scale:.65;position:absolute;left:50%;top:50%;width:var(--orb-size,92px);height:var(--orb-size,92px);border-radius:50%;isolation:isolate;overflow:hidden;background:radial-gradient(circle at 35% 28%,#edffce,#68ed9a 23%,#189b62 52%,#064736 83%);box-shadow:0 0 24px #77ffada6,0 0 62px #35c97566,inset 0 0 17px #b7ffd899;transform:translate(-50%,calc(-50% + var(--breath-bob,0px))) scale(var(--breath-scale));filter:brightness(1.1)}
.breathing-orb::before{content:'';position:absolute;inset:-25%;border-radius:50%;background:repeating-conic-gradient(from 0deg,transparent 0deg,#c3ffdfb3 24deg,#17835122 48deg,transparent 90deg);filter:blur(4px);mix-blend-mode:screen;animation:breathing-swirl 16s linear infinite}
.breathing-orb::after{content:'';position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 30% 24%,#f5ffdcaa,transparent 26%),radial-gradient(circle at 42% 40%,transparent 42%,#003b365e 88%);pointer-events:none}
.breathing-gold{position:absolute;inset:0;pointer-events:none;transform:scaleY(var(--orbit-y,1))}.breathing-gold>span{position:absolute;inset:0;animation:breathing-swirl var(--orbit-time) linear var(--orbit-delay) infinite}.breathing-gold i{position:absolute;left:calc(50% - var(--spark-size)/2);top:calc(50% - var(--orbit));width:var(--spark-size);height:var(--spark-size);background:url('assets/effects.webp') 100% 100%/400% 200% no-repeat;filter:sepia(1) saturate(2.4) brightness(2) drop-shadow(0 0 4px #ffcc63);opacity:.9}.breathing-gold i::after{content:'';position:absolute;inset:30%;background:radial-gradient(ellipse,#fff7cc 0%,#ffdb74aa 15%,#efb82c33 40%,transparent 70%)}
@keyframes breathing-swirl{to{transform:rotate(360deg)}}
.breathing-words{position:absolute;top:calc(50% + 97px);left:50%;width:240px;transform:translateX(-50%);text-align:center;color:#fff0b4;text-shadow:0 2px 6px #000,0 0 14px #372709}.breathing-words strong{display:block;font:26px Georgia,serif;white-space:nowrap}.breathing-words span{display:block;font:30px/1.5 Georgia,serif;font-variant-numeric:tabular-nums}.breathing-words small{display:block;font:12px Georgia,serif}
.breathing-close{position:absolute;right:7%;top:8%;width:42px;height:42px;border:1px solid #bfa568;background:#151a1ad4;border-radius:50%;color:#ffe9b1;font:28px Georgia,serif;pointer-events:auto}
.breathing-active .encounter-sheet,.breathing-active .realm-caption{visibility:hidden;pointer-events:none}
.breathing-active .encounter-sheet{display:none!important}
html[data-motion=off] .tea-magic{display:none}html[data-motion=off] .crystal-shine{animation:none;opacity:.65}
html[data-motion=off] .breathing-orb::before,html[data-motion=off] .breathing-gold>span{animation:none}
@media(prefers-reduced-motion:reduce){html:not([data-motion=on]) .tea-magic{display:none}html:not([data-motion=on]) .crystal-shine{animation:none;opacity:.65}}
@media(prefers-reduced-motion:reduce){html:not([data-motion=on]) .breathing-orb::before,html:not([data-motion=on]) .breathing-gold>span{animation:none}}

/* Generated, alpha-cut miniature and cloth; the underlying painting is untouched. */
#map .realm-pin.keep:hover .miniature,#map .realm-pin.keep:focus-visible .miniature{transform:translateY(-2px)}
.keep-model{position:absolute;inset:0;display:block}
.keep-model>img{display:block;width:100%;height:100%;pointer-events:none}
.keep-banner{position:absolute;display:block;background-repeat:no-repeat;pointer-events:none;clip-path:polygon(0 0,100% 0,100% 100%,50% 80%,0 100%);-webkit-clip-path:polygon(0 0,100% 0,100% 100%,50% 80%,0 100%);opacity:0}
.keep-model .keep-banner-left{left:39%;top:48.5%;width:6.6%;height:20.8%}
.keep-model .keep-banner-right{left:65.6%;top:48.3%;width:5.55%;height:19.4%}
[data-keep-state="red"] .keep-banner{opacity:1;background-image:url('assets/keep-red.webp');background-size:1745.455% 328.205%;background-position:33.149% 43.539%}
[data-keep-state="orange"] .keep-banner{opacity:1;background-image:url('assets/keep-orange.webp');background-size:2603.39% 483.019%;background-position:33.311% 40.271%}
[data-keep-state="green"] .keep-banner{opacity:1;background-image:url('assets/keep-green.webp');background-size:1873.171% 360.563%;background-position:33.012% 41.351%}
[data-keep-state="gold"] .keep-banner{opacity:1;background-image:url('assets/keep-gold.webp');background-size:1269.421% 254.726%;background-position:32.791% 45.659%;animation:keep-gold-shine 4s ease-in-out infinite}
@keyframes keep-gold-shine{0%,100%{filter:brightness(1)}50%{filter:brightness(1.35)}}
.keep-scene-flags{position:absolute;inset:0;pointer-events:none;z-index:0;will-change:transform}
.keep-lantern-lights{position:absolute;inset:0;pointer-events:none;z-index:1;mix-blend-mode:screen;will-change:transform}
.keep-lantern-lights[hidden]{display:none}.keep-lantern-lights>i{position:absolute;pointer-events:none;background:radial-gradient(ellipse,#fff2b077 0%,#ffc65b4d 18%,#ee98381f 44%,transparent 72%);filter:blur(1.2px);opacity:.65;animation:keep-lantern-glow var(--glow-cycle) ease-in-out var(--glow-delay) infinite alternate}
@keyframes keep-lantern-glow{0%{opacity:.42;transform:scale(.96)}43%{opacity:.64}70%{opacity:.53}100%{opacity:.78;transform:scale(1.06)}}
.realm-scene[data-realm="keep"]>.scene-light{background:none;animation:none}
.realm-scene[data-realm="keep"]>#realmImage{z-index:0}
.realm-scene[data-realm="keep"]>.scene-light,.realm-scene[data-realm="keep"]>.scene-particles,.realm-scene[data-realm="keep"]>.realm-magic-canvas{z-index:2}
.keep-condition{border-block:1px solid #e5c47d66;padding:10px 0;margin:10px 0;color:#fff1d4}
.keep-condition>strong{display:block;border-left:5px solid var(--keep-color,#354865);padding-left:8px;font:600 17px Georgia,serif}
.keep-condition>small{display:block;margin:5px 0}.keep-condition p{font-size:12px;line-height:1.5}.keep-condition summary{font-size:12px;cursor:pointer}
[data-keep-state="red"]{--keep-color:#b82124;--keep-ink:#ffb29e}[data-keep-state="orange"]{--keep-color:#d88a20;--keep-ink:#ffd38a}[data-keep-state="green"]{--keep-color:#18794d;--keep-ink:#a8eac3}[data-keep-state="gold"]{--keep-color:#c8972b;--keep-ink:#ffe9a3}
#map .keep-signal{color:var(--keep-ink,#e6cca1);font-size:9px;background:#101924d9;padding:2px 5px;border-radius:3px}
html[data-motion="off"] .keep-banner{animation:none!important}
html[data-motion="off"] .keep-lantern-lights>i{animation:none!important}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) .keep-banner{animation:none!important}}
@media(prefers-reduced-motion:reduce){html:not([data-motion="on"]) .keep-lantern-lights>i{animation:none!important}}

/* The board is always 1000 x 667 logical pixels. Only boardSurface scales it.
   Window breakpoints must not change miniature, plaque or footprint dimensions. */
#map .realm-pin{min-width:112px;max-width:154px}
#map .realm-pin .miniature>.sprite{width:80px;height:71.1111px}
#map .realm-pin.keep{min-width:160px;max-width:160px}
#map .realm-pin.keep .miniature{width:160px;height:142.2222px}
#map .realm-pin.keep .realm-plaque{position:absolute;top:100%;margin-top:-4px}
#map .realm-pin.well .realm-plaque,#map .realm-pin.bazaar .realm-plaque{position:static;left:auto;top:auto;margin-top:-4px}
#map .realm-pin.harbor{min-width:238px;max-width:238px}
#map .realm-pin.harbor .realm-plaque{min-width:158px;max-width:158px}
#map .realm-pin.outskirts,#map .realm-pin.stables{min-width:112px;max-width:154px}
#map .debt-dragon{width:240px;max-width:240px;left:80%}
#map .realm-plaque{min-width:112px;max-width:154px;padding:6px 8px}
#map .realm-plaque>strong,#map .mire-plaque>.mire-title{display:block;margin:0;font:400 13px Georgia,serif;letter-spacing:0;white-space:nowrap;color:#f0ddb6}
#map .realm-plaque>small{font:400 8.5px 'Segoe UI',Arial,sans-serif;letter-spacing:.7px;line-height:1.25;margin-top:3px}
#map .realm-plaque>span{font:400 11.5px 'Segoe UI',Arial,sans-serif;font-variant-numeric:tabular-nums;letter-spacing:0;margin-top:4px}
#map .realm-pin.harbor .realm-plaque>span{font-size:10px}
#map .realm-plaque>.keep-signal{font-size:9px}
#map .mire-plaque{width:max-content;margin:0 auto;background:linear-gradient(130deg,#152a29,#192527)}
/* The frog sits above its button's label box; opt its visible hit area back in. */
#map .swamp-sign .mire-sprite{pointer-events:auto;cursor:pointer}

/* The same glass, scroll limits and fullscreen placement as the Budget Satchel. */
.game-layout>.journey-panel{left:12px;right:auto}
body.map-expanded .game-layout>.journey-panel{left:15px;right:auto}
.journey-panel .ledger-panel-heading{flex-direction:row-reverse;padding:0 0 12px}
.journey-panel .ledger-panel-heading>span{margin-right:auto}
.game-layout.journey-collapsed>.journey-panel{z-index:34;width:128px;max-width:calc(50% - 18px);max-height:none;padding:0;border:0;background:transparent;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;overflow:visible}
.journey-collapsed .journey-panel .ledger-panel-heading{padding:0;background:transparent}
.journey-collapsed .journey-panel .ledger-panel-heading>span{display:none}
.journey-collapsed .journey-panel .ledger-panel-heading button{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;padding:4px 7px;min-height:40px;height:auto}
.journey-collapsed .journey-panel .panel-tab-label{display:block;font:12px/1.2 Georgia,serif;color:#f0d7a3;text-align:center;min-width:0}
#journeyPanelContent[hidden]{display:none!important}
#journeyPanelContent{color:#f0dfbb;padding:0 3px 5px;touch-action:pan-y}
.journey-intro,.journey-note{font:11px/1.45 'Segoe UI',Arial,sans-serif;color:#d4c3a2}
#journeyPanelContent section{margin-top:17px}
#journeyPanelContent h3{font:18px/1.2 Georgia,serif;margin:0 0 8px;color:#ffe1a1}
#journeyPanelContent dl{margin:0}
#journeyPanelContent dl>div{padding:8px 0;border-bottom:1px solid #d0ae6938}
#journeyPanelContent dt{font:600 12px/1.45 'Segoe UI',Arial,sans-serif;color:#ffe7b6}
#journeyPanelContent dd{font:12px/1.5 'Segoe UI',Arial,sans-serif;margin:3px 0 0}
#journeyPanelContent kbd{display:inline-block;min-width:23px;padding:1px 5px;border:1px solid #aa8b4a;border-radius:4px;font:12px Georgia,serif;color:#ffe7b6;background:#101a22b3}
@media(max-width:600px){.game-layout>.journey-panel{left:12px;right:auto}body.map-expanded .game-layout>.journey-panel{left:9px;right:auto}}

/* Tabs sit just inside the fixed frame above its legend; drawers rise above them. */
.game-layout>.map-side-panel,body.map-expanded .game-layout>.map-side-panel{top:auto;bottom:calc(var(--map-frame-base,76px) + 10px);max-height:calc(var(--map-view-height,100dvh) - var(--map-frame-base,76px) - 80px);display:flex;flex-direction:column;overflow:visible}
.game-layout>.journey-panel,body.map-expanded .game-layout>.journey-panel{left:calc(var(--map-frame-edge,32px) + 8px);right:auto}
.game-layout>.ledger-panel,body.map-expanded .game-layout>.ledger-panel{right:calc(var(--map-frame-edge,32px) + 8px);left:auto}
.game-layout>.map-side-panel>.ledger-panel-heading{order:2;position:relative;top:auto;flex:0 0 auto;margin-top:8px;padding:6px 0 0;border-top:1px solid #aa8b4a55;background:transparent}
.game-layout>.map-side-panel>aside{order:1;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#a0804a #172027}
.game-layout.journey-collapsed>.journey-panel,.game-layout.panel-collapsed>.ledger-panel{max-height:none}
.journey-collapsed .journey-panel>.ledger-panel-heading,.panel-collapsed .ledger-panel>.ledger-panel-heading{padding:0;margin-top:0;border-top:0}
@media(max-width:760px){.game-layout>.map-side-panel{width:min(350px,calc(100% - var(--map-frame-edge,18px)*2 - 16px))}}

.license-page{max-width:900px;margin:0 auto;line-height:1.6;color:#f1dfba}
.license-page h3{font:25px/1.2 Georgia,serif;color:#ffe2a3;margin:28px 0 15px}
.license-page h4{font:21px/1.3 Georgia,serif;color:#ffe8b8;margin:0 0 6px}
.license-page p{margin:9px 0}.license-intro{font:18px/1.6 Georgia,serif}
.license-reviewed,.license-meta{font:12px/1.6 'Segoe UI',Arial,sans-serif;color:#c6b48f}
.license-entry{border-top:1px solid #b995534d;padding:17px 0}
.license-page a,#drawer .license-page a{color:#f7cf7a;text-underline-offset:3px;overflow-wrap:anywhere}
.license-page a:hover,#drawer .license-page a:hover{color:#fff1c6}
.license-notice{margin:12px 0;border:1px solid #b9955366;border-radius:7px;background:#070d123b}
.license-notice summary{padding:10px 12px;color:#ffdb98;cursor:pointer;overflow-wrap:anywhere}
.license-notice pre{padding:14px;margin:0;border-top:1px solid #b995534d;white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.55 Consolas,monospace;color:#e7ddca;text-shadow:none}
.license-audio{list-style:none;padding:0}.license-audio li{padding:15px 0;border-bottom:1px solid #b995534d;overflow-wrap:anywhere}
.license-audio strong{display:block;color:#ffe4ab}.license-status{display:inline-block;font:11px/1.5 'Segoe UI',Arial,sans-serif;border:1px solid #8a875b;border-radius:5px;padding:2px 7px;color:#c4e0ac}
.license-status.pending{border-color:#b19352;color:#efd293}.license-end{padding-top:18px;font-size:12px;color:#c6b48f}
#licensesBtn{justify-self:start;min-height:40px;padding:8px 14px;border:1px solid #a1844c;border-radius:8px;color:#f6db9e;background:linear-gradient(#282a29,#15202a);box-shadow:inset 0 0 0 3px #111820;cursor:pointer;font:15px Georgia,serif}
#licensesBtn:hover{border-color:#ffe2a3;color:#fff3d1}#licensesBtn:focus-visible,.license-page :focus-visible{outline:2px solid #ffe2a3;outline-offset:3px}
.standalone-licenses{margin:0;padding:30px 18px;background:#101923;color:#f1dfba;font:15px/1.6 'Segoe UI',Arial,sans-serif;color-scheme:dark}
.standalone-licenses main{max-width:900px;margin:auto}.standalone-licenses h1{font:36px Georgia,serif;color:#ffe2a3}.standalone-licenses a{color:#f7cf7a}
@media(max-width:600px){.license-page h3{font-size:22px}.license-page h4{font-size:19px}.license-notice pre{font-size:11px;padding:10px}.license-intro{font-size:16px}}

#stewGame[open]{position:fixed;inset:var(--popup-top) 0 0;margin:0;width:100vw;height:calc(100dvh - var(--popup-top));max-width:none;max-height:none;padding:16px;background:#090b10d9;border:0;border-radius:0;overflow:hidden;display:grid;grid-template-rows:minmax(0,1fr);place-items:center;box-sizing:border-box;animation:realm-arrive .3s ease both}
#stewGame.departing{animation:encounter-depart .18s ease both;pointer-events:none}
.stew-table{max-width:1200px;max-height:950px;isolation:isolate}
.stew-scoreboard{position:absolute;z-index:2;top:3%;left:8%;right:12%;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px 26px;color:#ffe8b8;font:18px Georgia,serif;text-shadow:0 2px 4px #000}
.stew-scoreboard>strong{font-weight:normal;color:#ffda91}.stew-scoreboard b{display:inline-block;min-width:1.3em;text-align:right;font-variant-numeric:tabular-nums}
.hurry #stewTime{color:#ffb594;text-shadow:0 0 9px #d8461d}
.stew-playfield{position:absolute;inset:11% 8% 9%;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;overflow:visible}
.stew-card{position:absolute;z-index:2;top:0;left:0;width:52%;height:45%;isolation:isolate;box-sizing:border-box;display:flex;padding:6% 5% 5%;color:#fff0cf;text-shadow:0 1px 3px #1c0f00,0 0 4px #1c0f00}
.stew-card::before{content:'';position:absolute;inset:0;background:url('assets/scroll.webp') center/100% 100% no-repeat;z-index:-1;pointer-events:none;-webkit-mask-image:var(--paper-fade-x),var(--paper-fade-y);-webkit-mask-composite:source-over;mask-image:var(--paper-fade-x),var(--paper-fade-y);mask-composite:add}
.stew-card-ink{width:100%;min-height:0;overflow:auto;scrollbar-width:thin;scrollbar-color:#caab69 transparent;touch-action:pan-y}
.stew-recipe-number{display:block;text-align:center;font:10px/1.3 'Segoe UI',sans-serif;letter-spacing:1.6px;color:#f5d795}
.stew-card h2{text-align:center;font:clamp(18px,2.3vw,29px)/1.15 Georgia,serif;margin:4px 0 10px;color:#fff0cf}
#stewRecipeList{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 12px;font:14px/1.2 Georgia,serif}
#stewRecipeList li{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:4px;min-width:0;padding:3px 0;border-bottom:1px solid #ffe2a439}
#stewRecipeList li.complete{color:#bcf29d}#stewRecipeList b{font-size:13px;font-weight:normal;white-space:nowrap;font-variant-numeric:tabular-nums}
.stew-recipe-icon{width:30px;height:30px;background:url('assets/stew-ingredients.webp') var(--stew-x) var(--stew-y)/400% 200% no-repeat;filter:drop-shadow(0 1px 2px #0008)}
#stewPot{position:absolute;z-index:2;right:-3%;top:-2%;width:min(60%,465px,calc(var(--stew-room,700px)*.68));aspect-ratio:1;padding:0;margin:0;min-width:0;min-height:0;border:0;border-radius:50%;background:none!important;box-shadow:none;appearance:none;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;cursor:pointer;touch-action:manipulation;color:#fff0bd;isolation:isolate}
.stew-pot-art{position:absolute;inset:0;background:url('assets/stew-ingredients.webp') 66.666667% 100%/400% 200%;pointer-events:none;filter:drop-shadow(0 5px 6px #120900aa)}
.stew-broth-window{position:absolute;left:16.5%;top:14.5%;width:64%;height:64%;border-radius:50%;overflow:hidden;pointer-events:none;mask-image:radial-gradient(#000 55%,transparent 72%);-webkit-mask-image:radial-gradient(#000 55%,transparent 72%)}
.stew-broth{position:absolute;inset:-22%;opacity:.5;background:url('assets/stew-ingredients.webp') 100% 100%/400% 200%;animation:stew-stir 8s linear infinite;pointer-events:none}
.stew-simmer{position:absolute;inset:0;pointer-events:none}.stew-simmer>i{position:absolute;width:var(--bubble-size);height:var(--bubble-size);transform:translate(-50%,-50%)}
.stew-bubble-skin{position:absolute;inset:0;border-radius:50%;background:radial-gradient(ellipse at 33% 25%,#edbc78da 0%,#a16529e0 22%,#48220ddb 58%,transparent 75%),url('assets/effects.webp') 33.333% 100%/400% 200%;animation:stew-bubble-rise var(--bubble-time) ease-in var(--bubble-delay) infinite}
.stew-bubble-pop{position:absolute;inset:-22%;opacity:0;background:radial-gradient(ellipse at 18% 24%,#b7894d 0 4%,transparent 8%),radial-gradient(ellipse at 80% 27%,#9b662e 0 5%,transparent 9%),radial-gradient(ellipse at 73% 80%,#603114 0 4%,transparent 8%),radial-gradient(ellipse at 23% 72%,#d2a063 0 3%,transparent 7%);animation:stew-bubble-pop var(--bubble-time) ease-out var(--bubble-delay) infinite}
@keyframes stew-bubble-rise{0%,12%{opacity:0;transform:scale(.12)}25%{opacity:.8}64%{opacity:.95;transform:scale(1)}70%{opacity:.55;transform:scale(1.15,.8)}76%,100%{opacity:0;transform:scale(1.3,.6)}}
@keyframes stew-bubble-pop{0%,66%{opacity:0;transform:scale(.45)}70%{opacity:.95}87%,100%{opacity:0;transform:scale(1.65)}}
.stew-splashes{position:absolute;inset:0;pointer-events:none;overflow:visible}.stew-splash-burst{position:absolute;left:48.5%;top:46.5%;width:0;height:0}.stew-splash-burst>i{position:absolute;left:0;top:0;width:var(--drop-size);height:calc(var(--drop-size)*1.35);border-radius:50% 50% 45% 45%;background:radial-gradient(ellipse at 32% 25%,#f2c482 0%,#b17735 22%,#6b3517 65%,#3f1e0b);opacity:0;animation:stew-drop .6s ease-out both}
@keyframes stew-drop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}8%{opacity:1}44%{opacity:1;transform:translate(calc(-50% + var(--splash-x)*.6),calc(-50% + var(--splash-y)*.6 + var(--splash-rise))) rotate(var(--drop-turn)) scale(1)}100%{opacity:0;transform:translate(calc(-50% + var(--splash-x)),calc(-50% + var(--splash-y))) rotate(var(--drop-turn)) scale(.25)}}
.stew-pot-glow{position:absolute;inset:18%;border-radius:50%;box-shadow:0 0 14px #eb963742;pointer-events:none}
.stew-steam{position:absolute;inset:0;pointer-events:none;mix-blend-mode:screen}
.stew-steam i{position:absolute;left:29%;top:23%;width:28%;height:35%;background:url('assets/effects.webp') 100% 0/400% 200% no-repeat;filter:grayscale(1) blur(1.3px);opacity:0;transform-origin:50% 100%;animation:stew-steam 5.8s ease-out infinite}
.stew-steam i:nth-child(2){left:42%;top:20%;animation-delay:-2s;--steam-drift:12%}.stew-steam i:nth-child(3){left:36%;top:28%;animation-delay:-4s;--steam-drift:-15%}
@keyframes stew-steam{0%{opacity:0;transform:translate(0,12%) scale(.65)}28%{opacity:.3}65%{opacity:.18}100%{opacity:0;transform:translate(var(--steam-drift,-8%),-90%) scale(1.2)}}
#stewPot.expecting .stew-pot-glow,#stewPot.over .stew-pot-glow{box-shadow:0 0 25px #ffe3a099,inset 0 0 15px #ffe6a860}
#stewPot:focus-visible{outline:0}#stewPot:focus-visible .stew-pot-art{filter:drop-shadow(0 0 12px #ffe3a1) brightness(1.15)}
#stewPot.splash .stew-pot-glow{animation:stew-splash .5s ease-out}
@keyframes stew-stir{to{transform:rotate(360deg)}}@keyframes stew-splash{0%{box-shadow:0 0 0 #ffe0a600}35%{box-shadow:0 0 30px #ffd18dad,inset 0 0 14px #ffdf9844}100%{box-shadow:0 0 12px #dc9b4333}}

.stew-bank{position:absolute;inset:64% 0 0;pointer-events:none;background:radial-gradient(ellipse at bottom,#e0ad3410,transparent 80%)}
.stew-items{position:absolute;z-index:1;inset:0;pointer-events:none;overflow:hidden}
.stew-items:focus-within{z-index:3}
.stew-air{position:absolute;z-index:4;inset:0;pointer-events:none;overflow:hidden}
#stewGame .stew-ingredient{position:absolute;display:block;width:var(--stew-piece-size);height:var(--stew-piece-size);min-width:0;min-height:0;padding:0;margin:0;border:0;border-radius:0;background-color:transparent!important;background-image:url('assets/stew-ingredients.webp');background-size:400% 200%;background-position:var(--stew-x) var(--stew-y);background-repeat:no-repeat;box-shadow:none;transform:translate(-50%,-50%) rotate(var(--stew-turn));touch-action:none;appearance:none;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;cursor:grab;outline:0;pointer-events:none}
#stewGame .stew-ingredient.selected,#stewGame .stew-ingredient:focus-visible{filter:drop-shadow(0 0 4px #ffe9a7) brightness(1.12)}#stewGame .stew-ingredient.held{cursor:grabbing;filter:drop-shadow(3px 6px 3px #160b0880) brightness(1.15)}
#stewGame .stew-ingredient.tossed{pointer-events:none;opacity:1}#stewGame .stew-ingredient[hidden]{display:none}
#stewFeedback{position:absolute;left:0;right:0;bottom:0;margin:0;text-align:center;color:#fff0b0;font:15px Georgia,serif;text-shadow:0 2px 4px #000,0 0 9px #000;pointer-events:none;z-index:2000;transform:translateY(3px)}
.stew-finish:not([hidden]){z-index:20000}
.tavern-pot-hotspots{position:absolute;inset:0;pointer-events:none;z-index:3}.tavern-pot-hotspots[hidden]{display:none}
.realm-scene .tavern-pot-secret{position:absolute;transform:translate(-50%,-50%);padding:0;margin:0;min-width:28px;min-height:28px;border:0;border-radius:50%;background:transparent!important;box-shadow:none;pointer-events:auto;touch-action:manipulation;cursor:pointer;appearance:none;-webkit-appearance:none;-webkit-tap-highlight-color:transparent}
.tavern-pot-secret>span{position:absolute;inset:20%;background:url('assets/effects.webp') 100% 100%/400% 200%;opacity:.2;animation:pot-invitation 4s ease-in-out infinite;pointer-events:none;filter:sepia(1) saturate(2)}
.tavern-pot-secret:hover,.tavern-pot-secret:focus-visible{outline:0;box-shadow:none!important;background:radial-gradient(ellipse,#ffe3a13d,transparent 70%)!important}.tavern-pot-secret:hover>span,.tavern-pot-secret:focus-visible>span{opacity:.9;filter:sepia(1) saturate(2) drop-shadow(0 0 8px #ffc774)}
@keyframes pot-invitation{0%,75%,100%{opacity:.08;transform:scale(.4)}86%{opacity:.65;transform:scale(.85)}}
@media(max-width:600px){#stewGame[open]{padding:8px 2px}.stew-table{max-height:none}.stew-scoreboard{font-size:14px;gap:4px 15px;left:7%;right:14%;top:3%}.stew-scoreboard>strong{flex-basis:100%;text-align:center;font-size:17px}.stew-playfield{inset:12% 7% 8%}.stew-card{width:43%;height:45%;padding:8% 3.5% 5%}.stew-card h2{font-size:16px;margin-bottom:6px}.stew-recipe-number{font-size:9px;letter-spacing:.8px}#stewRecipeList{grid-template-columns:1fr;gap:0;font-size:12px}#stewRecipeList li{grid-template-columns:24px minmax(0,1fr) auto;gap:3px;padding:2px 0}#stewRecipeList b{font-size:11px}.stew-recipe-icon{width:24px;height:24px}#stewPot{top:-2%;width:64.5%;right:-7%}.stew-bank{top:57%}#stewFeedback{font-size:12px}}
@media(max-height:500px){#stewGame[open]{padding:4px}.stew-scoreboard{font-size:13px;top:2%;gap:4px 20px}.stew-scoreboard>strong{flex-basis:auto;font-size:16px}.stew-playfield{inset:12% 7% 8%}.stew-card{width:58%;height:46%;padding:2.5% 5% 1.5%}.stew-card h2{font-size:18px;margin:1px 0 3px}.stew-recipe-number{font-size:8px}#stewRecipeList{grid-template-columns:repeat(3,minmax(0,1fr));gap:1px 8px;font-size:11px}#stewRecipeList li{grid-template-columns:18px minmax(0,1fr) auto;gap:2px;padding:1px 0}#stewRecipeList b{font-size:10px}.stew-recipe-icon{width:18px;height:18px}#stewPot{top:-2%;right:-2%;width:auto;height:64.5%;max-width:none}.stew-bank{top:68%}.stew-finish:not([hidden]){gap:8px;padding:10px}.stew-finish h2{font-size:28px}}
@media(max-width:600px) and (min-height:501px){.full-recipe .stew-card h2{font-size:15.5px;margin:3px 0 5px}.full-recipe #stewRecipeList{font-size:11px}.full-recipe #stewRecipeList li{grid-template-columns:18px minmax(0,1fr) auto;padding:0}.full-recipe .stew-recipe-icon{width:18px;height:18px}}
html[data-motion=off] #stewGame[open],html[data-motion=off] #stewGame.departing,html[data-motion=off] .stew-broth,html[data-motion=off] .stew-steam i,html[data-motion=off] .tavern-pot-secret>span,html[data-motion=off] #stewPot.splash .stew-pot-glow{animation:none}
html[data-motion=off] .stew-simmer,html[data-motion=off] .stew-splashes{display:none}
@media(prefers-reduced-motion:reduce){html:not([data-motion=on]) :is(#stewGame[open],#stewGame.departing,.stew-broth,.stew-steam i,.tavern-pot-secret>span,#stewPot.splash .stew-pot-glow){animation:none}}
@media(prefers-reduced-motion:reduce){html:not([data-motion=on]) .stew-simmer,html:not([data-motion=on]) .stew-splashes{display:none}}

.stew-playfield.dragging-ingredient{cursor:grabbing}
.stew-playfield.ingredient-under-pointer:not(.dragging-ingredient){cursor:grab}

/* A full-screen, art-only top layer. No financial UI or scene effects. */
#idleJourney{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;height:100dvh!important;max-width:none!important;max-height:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#090d11!important;overflow:hidden!important;opacity:0;transform:none!important;filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;transition:opacity .7s ease;animation:none!important;touch-action:none;cursor:none;outline:none;z-index:2147483647}
#idleJourney[open]{display:block!important}
#idleJourney.visible{opacity:1}
#idleJourney::backdrop{background:transparent;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
#idleJourney .idle-journey-slide{position:absolute;inset:0;overflow:hidden;opacity:0;transition:opacity .7s ease;pointer-events:none}
#idleJourney .idle-journey-slide.visible{opacity:1}
#idleJourney img{display:block;width:100%;height:100%;object-fit:cover;object-position:center;max-width:none;user-select:none;-webkit-user-select:none;transform-origin:center;will-change:transform}
html[data-ledger-idle="true"] body *{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){#idleJourney,#idleJourney .idle-journey-slide{transition-duration:.2s}}
