:root{color-scheme:dark;--bg:#0b1022;--panel:#182039;--ink:#f3e4c9;--muted:#b2b7d0;--line:#46506b;--gold:#f6be60;--mint:#80d4bb;--red:#f495a7;font-family:'Hiragino Kaku Gothic ProN','Yu Gothic',sans-serif;font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);line-height:1.65}a{color:var(--gold)}header,footer{max-width:1180px;margin:auto;display:flex;justify-content:space-between;gap:16px;padding:20px 24px;flex-wrap:wrap}header{border-bottom:1px solid var(--line)}.brand{text-decoration:none;letter-spacing:.12em;font-size:.875rem}.brand span{display:block;color:var(--ink);font-size:1rem;letter-spacing:.04em}main{max-width:1180px;margin:auto;padding:24px}.intro{border-left:4px solid var(--gold);padding-left:20px;margin-bottom:24px}.eyebrow{font-size:.875rem;color:var(--gold);margin:0}h1{font-family:Georgia,'Yu Mincho',serif;font-size:2.4rem;margin:4px 0 8px}h2{font-size:1.3rem;margin:0 0 16px}h3{font-size:1.05rem;margin:0}p{margin:8px 0}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}.stat{background:var(--panel);padding:12px 16px;border:1px solid var(--line)}.stat small{display:block;color:var(--muted);font-size:.875rem}.stat strong{font-size:1.3rem;font-variant-numeric:tabular-nums}nav{display:flex;flex-wrap:wrap;gap:6px;border-bottom:2px solid var(--gold);padding-bottom:8px;margin-bottom:24px}button,select,input{font:inherit}button,select{background:#242d48;color:var(--ink);border:1px solid #68708a;min-height:44px;padding:8px 14px;cursor:pointer;border-radius:3px}button:hover:not(:disabled){background:#36435f;border-color:var(--gold)}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid var(--mint);outline-offset:3px}button:disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--gold);color:#182039;font-weight:700;border-color:var(--gold)}.primary:hover:not(:disabled){background:#ffcf81;color:#182039}.active{background:#4c3450;border-color:var(--gold)}.layout{display:grid;grid-template-columns:1.75fr 1fr;gap:20px}.panel{border:1px solid var(--line);background:var(--panel);padding:20px;min-width:0}.cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.card{background:#11192e;border:1px solid var(--line);padding:16px}.muted{color:var(--muted)}.tag{font-size:.875rem;color:var(--mint)}.row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}#notice{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#f6be60;color:#182039;padding:10px 16px;max-width:90vw;box-shadow:0 4px 24px #000;z-index:5;border-radius:4px}#notice:empty{display:none}footer{font-size:.875rem;color:var(--muted);border-top:1px solid var(--line);margin-top:24px}@media(max-width:760px){main{padding:16px}header,footer{padding:16px}.layout{grid-template-columns:1fr}.stats{grid-template-columns:repeat(2,1fr)}h1{font-size:1.9rem}.panel{padding:16px}}@media(max-width:440px){.cards{grid-template-columns:1fr}nav button{flex:1 1 30%;padding:8px}.stat{padding:10px}}
/* A small night market, surrounded by the dense pages of a merchant's ledger. */
header{align-items:center}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.toolbar button{font-size:.875rem;min-height:44px;padding:6px 12px}.market-scene{position:relative;isolation:isolate;min-height:240px;background:#10182d url('assets/market.png') center 45%/cover;border:1px solid #536083;margin-bottom:16px;display:flex;justify-content:space-between;flex-direction:column;padding:18px 20px}.market-scene:before{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#050816ad,transparent 50%,#050816dc)}.market-title p{font-size:.875rem;color:#ffdc93;margin:0;letter-spacing:.08em}.market-title h1{font-size:2.2rem;text-shadow:0 2px 8px #000;line-height:1.3}.market-controls{display:flex;justify-content:flex-end}.weather{background:#131a30db;padding:6px 10px;display:inline-block;color:#ffdc93;font-size:.875rem}#market-status{display:flex;gap:12px;align-items:flex-end;justify-content:space-between;flex-wrap:wrap}.stat strong span{font-size:.875rem}.stat small{min-height:1.6em}#save-status{font-size:.875rem;text-align:right;min-height:30px}.save-warning{background:#613741;color:#fff0db;text-align:left;padding:10px;margin-bottom:12px}nav button{flex:1;font-size:.9375rem;white-space:nowrap;padding:8px 12px}nav .active{background:#493249;color:#ffd18c}.panel{margin-bottom:20px;box-shadow:0 5px 12px #03081826}.item-title{display:flex;gap:14px;align-items:center;min-width:0}.item-title h3{line-height:1.4}.item-title p{margin:3px 0}.item-icon{display:block;flex:none;width:64px;height:64px;background-image:url('assets/items.png');background-size:600% 400%;background-position:var(--ix) var(--iy);image-rendering:pixelated;border:1px solid #414b67;border-radius:4px}.item-icon.large{width:80px;height:80px}.portrait{display:block;width:132px;aspect-ratio:3/4;flex:none;background-image:url('assets/customers.png');background-size:400% 200%;background-position:var(--px) var(--py);image-rendering:pixelated;border:1px solid #55566f;box-shadow:3px 3px 0 #081023}.portrait.small{width:48px;box-shadow:none}.goal{border:1px solid #98704c;background:#282237;padding:20px;margin-bottom:20px}.goal h2{margin:8px 0}.goal b{float:right;font-variant-numeric:tabular-nums}.goal progress{width:100%;height:8px;border:0;display:block;accent-color:var(--gold);margin:12px 0;background:#11192e}.goal progress::-webkit-progress-bar{background:#11192e}.goal progress::-webkit-progress-value{background:var(--gold)}.story{font-size:.9375rem;color:#d4bed3}.completed{border-color:var(--mint)}.wide{width:100%}.help ol{padding-left:24px}.help li{padding-bottom:6px}.forecast{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:16px}.customer-mini{display:flex;gap:12px;align-items:center;min-width:0}.customer-mini strong,.customer-mini span{display:block;font-size:.875rem}.customer-mini div{min-width:0}.customer{display:flex;gap:24px;align-items:center}.customer h2{margin-bottom:6px}.speech{font-family:'Yu Mincho',serif;font-size:1.125rem}.night-customer{border-top:3px solid var(--gold)}.night-customer>.row{border-top:1px solid var(--line);margin-top:20px;padding-top:16px}.offer-price{font-size:1.6rem;font-weight:700;color:var(--gold);margin:12px 0 4px}.offer-price small,.offer-price span{font-size:.875rem;font-weight:400}.offer-price span{display:block}.deal-note{font-size:.875rem;color:var(--muted);min-height:2.9em}.stock .card button{width:100%}.bad{color:var(--red)}.chain{color:var(--mint);font-size:.9375rem}.page-heading{margin-bottom:20px}.recipes,.supplies,.regions{grid-template-columns:repeat(3,1fr)}.recipes .item-title{align-items:flex-start}.recipes .item-icon.large{width:64px;height:64px}.recipes .parts{background:#19233c;padding:10px 12px;font-size:.875rem;line-height:1.9;min-height:7.4em}.recipes .card{display:flex;flex-direction:column}.recipes .card>.parts{margin-top:auto}.recipes .card>button{width:100%}.locked{opacity:.6;border-style:dashed}.route-options{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px}.route-options .card{display:flex;flex-direction:column}.route-options button{margin-top:auto}.route-options h3{margin:6px 0 12px}.bag-item{display:flex;gap:12px;align-items:center;margin:12px 0}.bag-item .item-icon{width:48px;height:48px}.region-number{font-family:Georgia,serif;font-size:2.1rem;color:#9b91ac}.regions .card>h3{font-size:1.25rem}.contracts{margin:12px 0 28px}.summary-stats{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:24px 0}.summary-stats>div{padding:12px;border:1px solid var(--line);background:#11192e}.summary-stats span{display:block;color:var(--muted);font-size:.875rem}.summary-stats strong{font-size:1.5rem;color:var(--gold);display:block}.table-wrap{max-width:100%;overflow:auto}table{border-collapse:collapse;width:100%;font-size:.9375rem;font-variant-numeric:tabular-nums}th,td{padding:10px 8px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}th:first-child,td:first-child{text-align:left}.journal{list-style:none;padding:0;font-size:.9375rem}.journal li{padding:10px 0;border-bottom:1px dashed var(--line)}.journal span{font-size:.875rem;display:block}.save-label{display:block;margin-top:16px;font-size:.875rem}textarea{font:inherit;width:100%;background:#0d1428;color:var(--ink);border:1px solid var(--line);padding:10px;resize:vertical}.catalog{grid-template-columns:repeat(3,1fr);margin-bottom:24px}.catalog .card p{font-size:.875rem}.customers{grid-template-columns:1fr 1fr}.titles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.titles .card{color:var(--muted);font-size:.875rem}.titles .earned{border-color:var(--gold);color:var(--gold)}dialog{max-width:660px;width:calc(100% - 32px);max-height:85dvh;overflow:auto;color:var(--ink);background:var(--panel);border:2px solid var(--gold);padding:24px;line-height:1.8}dialog::backdrop{background:#020616c9}dialog p{margin:16px 0}#notice{font-size:.9375rem;pointer-events:none;text-align:center}.empty{padding:20px;color:var(--muted)}
@media(min-width:761px){.layout>aside{align-self:start}.stock{grid-template-columns:repeat(2,1fr)}}
@media(max-width:960px){.recipes,.supplies,.regions,.catalog{grid-template-columns:repeat(2,1fr)}.titles{grid-template-columns:repeat(2,1fr)}nav button{flex:1 1 20%}.layout{grid-template-columns:1.4fr 1fr}.customer{gap:16px}.customer .portrait{width:100px}}
@media(max-width:760px){.market-scene{min-height:210px;padding:14px}.market-title h1{font-size:1.8rem}.layout{grid-template-columns:1fr}.layout>aside{display:grid;grid-template-columns:1fr 1fr;gap:16px}.layout>aside>.panel,.layout>aside>.goal{margin:0}.customer{align-items:flex-start}.customer .portrait{width:92px}.customer p{font-size:.9375rem}.toolbar a{font-size:.875rem}.forecast{gap:12px}}
@media(max-width:520px){.layout>aside{display:block}.layout>aside>.panel,.layout>aside>.goal{margin-bottom:20px}.recipes,.supplies,.regions,.catalog{grid-template-columns:1fr}.route-options{grid-template-columns:1fr}.customer{flex-wrap:wrap;gap:12px}.customer .portrait{width:84px}.customer>div{flex:1;min-width:150px}.customer h2{font-size:1.1rem}.forecast{grid-template-columns:1fr}.customers{grid-template-columns:1fr}.summary-stats{grid-template-columns:1fr}.toolbar{gap:6px}header{gap:10px}nav button{flex:1 1 20%;font-size:.875rem;padding:8px 7px}.weather{font-size:.8125rem}.market-scene{min-height:230px}.market-controls{width:100%}.market-controls button{width:100%}.goal b{float:none;display:block}.row.page-heading{display:block}.page-heading label{display:block}select{max-width:100%}main{padding:12px}.panel,.goal{padding:16px}.stock .card{padding:14px}.stat{min-width:0}.stat strong{font-size:1.15rem}.stat small{font-size:.875rem}.titles{grid-template-columns:1fr 1fr}.titles h3{font-size:.9375rem}.actions button{flex:1 1 auto}.offer-price span{margin-top:4px}}
@media(prefers-reduced-motion:no-preference){button{transition:background .12s,border-color .12s}.item-icon{transition:filter .15s}.card:focus-within .item-icon{filter:brightness(1.15)}}

.resale button{font-size:.875rem;color:var(--muted)}
.layout>*{min-width:0}.table-wrap{width:100%}
body[data-phase="night"] .market-scene,body[data-phase="explore"] .market-scene{min-height:88px;flex-direction:row;align-items:center;gap:12px;padding:10px 16px}body[data-phase="night"] .market-title p,body[data-phase="explore"] .market-title p{display:none}body[data-phase="night"] .market-title h1,body[data-phase="explore"] .market-title h1{font-size:1.5rem;margin:0}body[data-phase="night"] .weather,body[data-phase="explore"] .weather{display:none}.commerce{grid-template-columns:minmax(250px,1fr) minmax(0,2fr)}.commerce .customer{display:block}.commerce .customer .portrait{width:72px;margin-bottom:12px}.commerce .customer h2{font-size:1.1rem}.commerce .speech{font-size:1rem}.commerce .customer p{font-size:.9375rem}.commerce .night-customer>.row{display:block}.commerce .chain{margin:12px 0}.commerce select{width:100%;margin-top:8px}.commerce .stock .deal-note{min-height:0}.commerce .stock .card{padding:14px}
@media(max-width:760px){.commerce{grid-template-columns:1fr}.commerce .customer{display:flex}.commerce .customer .portrait{width:68px}.commerce .night-customer>.row{display:flex}.commerce select{width:auto;margin:0}.commerce .stock{grid-template-columns:1fr 1fr}.commerce>aside{display:block}body[data-phase="night"] .market-controls,body[data-phase="explore"] .market-controls{width:auto}}
@media(max-width:520px){.commerce .stock{grid-template-columns:1fr}body[data-phase="night"] .market-scene,body[data-phase="explore"] .market-scene{min-height:80px;flex-wrap:wrap}body[data-phase="night"] .market-title h1,body[data-phase="explore"] .market-title h1{font-size:1.2rem}.commerce .night-customer>.row{gap:8px}}
body[data-phase="night"] header,body[data-phase="explore"] header{padding-top:12px;padding-bottom:12px}body[data-phase="night"] .market-scene,body[data-phase="explore"] .market-scene{min-height:64px;padding:8px 16px}body[data-phase="night"] nav,body[data-phase="explore"] nav{margin-bottom:16px}
.commerce .price-heading{margin-bottom:14px}.commerce .price-heading h2{margin:0}.commerce .price-heading label{font-size:.875rem}.commerce .price-heading select{width:auto;margin:0}
