.fancies-banner{padding:24px;border:1px solid #bfa66c;border-radius:14px;background:linear-gradient(120deg,#eee0b8,#d7e0b7);color:#294d40;margin-bottom:20px}.fancies-banner h2{font-size:clamp(22px,4vw,32px);line-height:1.2;margin:12px 0}.fancy-section{margin:24px 0;padding:22px;border:1px solid #9cae8b60;border-radius:14px;background:#ffffff08}.fancy-section h2{margin:8px 0 12px}.fancy-chapters{padding:16px;border:1px dashed #aeb28a;border-radius:10px}.fancy-chapters summary{cursor:pointer;font-weight:700}.fancy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px}.fancy-card{display:flex;flex-direction:column;gap:8px;padding:18px;border:1px solid #a9ac8460;border-radius:12px;background:#d3caab12}.fancy-card h3,.fancy-card p{margin:0}.fancy-card p{flex:1;line-height:1.55}.fancy-card button{margin-top:8px}.fancy-icon{font-size:38px}.fancy-locked{opacity:.65}.fancy-shelf{display:flex;gap:12px;flex-wrap:wrap;padding:12px 0}.fancy-shelf>div{display:flex;flex-direction:column;align-items:center;gap:8px;width:125px;text-align:center;padding:14px 8px;border-bottom:5px solid #9c7950;background:#d3caab12}.fancy-shelf span{font-size:38px}.fancy-shelf small{line-height:1.4}.fancy-section .book-actions{flex-wrap:wrap}.fancy-section .book-actions button{white-space:normal}.fancy-section p{line-height:1.55}@media(max-width:500px){.fancy-section{padding:14px}.fancy-grid{grid-template-columns:1fr}.fancies-banner{padding:16px}.fancy-section .district-list>div{flex-wrap:wrap;gap:8px}}:root{font-family:DM Sans,system-ui,sans-serif;color:#26453a;background:#243c32;font-synthesis:none;--cream:#f4f0df;--ink:#25483c;--green:#32624e;--gold:#e4b762;--muted:#76816e;--border:#dddcc8}*{box-sizing:border-box}html,body,#app{margin:0;width:100%;height:100%;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #cda64d;outline-offset:3px}#world{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;outline:none}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:Fraunces,Georgia,serif}button{border:0}#hud[hidden]{display:none}#hud{position:absolute;inset:0;pointer-events:none}#hud button{pointer-events:auto}.topbar{position:absolute;top:18px;left:22px;right:22px;height:76px;display:flex;align-items:center;padding:0 20px;gap:25px;background:var(--cream);border:1px solid #fff7e4;box-shadow:0 5px #28453733;pointer-events:auto;border-radius:4px}.brand{display:flex;align-items:center;gap:12px;font-family:Fraunces,Georgia,serif;font-size:23px;font-weight:800;letter-spacing:-1px}.brand-icon{width:40px;height:42px;border:2px solid #355844;background:#dfbb73;display:grid;place-items:center;font:700 30px Georgia}.brand small{font-size:12px;letter-spacing:0}.brand em{display:block;font:700 8px DM Sans,sans-serif;letter-spacing:2px;color:#858872;margin-top:4px}.stats{display:flex;gap:35px;align-items:center;margin-left:auto}.stats>div{min-width:87px}.stat-label{display:block;font-size:9px;letter-spacing:1.3px;font-weight:700;color:#7b8675;margin-bottom:4px}.stats strong{font-size:22px;font-family:Fraunces,Georgia,serif;font-weight:600}.money-stat strong{color:#38624b}.icon-button{background:#e5e6d5;border:1px solid #d4d8c2;width:38px;height:38px;font-size:22px;color:var(--ink)}.objective{position:absolute;top:113px;left:22px;width:295px;background:#f4f0dff2;border:1px solid #fff6dc;padding:18px 20px 13px;box-shadow:0 4px #2546392a;border-radius:3px}.eyebrow{font-size:9px;font-weight:700;letter-spacing:1.6px;color:#7d876e;margin-bottom:8px}.objective h2{font-size:22px;line-height:1.13;margin-bottom:8px}.objective p{font-size:12px;line-height:1.5;color:#647361;margin-bottom:10px}.text-button{background:none;color:#487455;padding:8px 0;text-align:left;font-size:11px;font-weight:700;letter-spacing:.3px}.text-button span{margin-left:8px}.objective .text-button{border-top:1px solid #dbddc6;width:100%;padding-top:10px}.progress-track,.assignment-bar{height:5px;background:#dedec6;margin:12px 0 7px;overflow:hidden}.progress-track i,.assignment-bar i{display:block;height:100%;background:#c7a153}.job-timing{display:flex;justify-content:space-between;font-size:9px;color:#607461;margin-bottom:10px}.job-timing .late{color:#b46646}.team-status{position:absolute;top:355px;left:22px;width:295px}.team-status>div{position:relative;background:#254e43eb;color:#ede7ce;padding:12px;font-size:11px;margin-bottom:6px;overflow:hidden}.team-status strong{float:right;font-size:10px;text-transform:uppercase;color:#d8be80}.team-status i{height:3px;position:absolute;left:0;bottom:0;background:#e2bc70}.minimap{position:absolute;bottom:93px;right:22px;background:var(--cream);width:214px;border:1px solid #fbf4dc;box-shadow:0 3px #1f433f33;padding:11px}.map-title{display:flex;align-items:center;justify-content:space-between;font-size:9px;font-weight:700;letter-spacing:.9px;margin-bottom:8px}.map-title span+span{font-size:8px;color:#7f8874;letter-spacing:0;font-weight:400}.minimap button{padding:0;border:3px solid #adb292;display:block;line-height:0;background:none}.minimap canvas{width:184px;height:137px;image-rendering:pixelated}.map-caption{display:flex;align-items:center;gap:4px;font-size:7px;letter-spacing:.5px;margin-top:9px}.dot{display:inline-block;border-radius:50%;width:6px;height:6px;background:#4f8668;margin-right:3px}.dot.gold{background:#cca758;margin-left:9px}kbd{font-family:DM Sans,sans-serif;font-size:9px;display:inline-grid;place-items:center;min-width:19px;height:20px;border:1px solid #c8cfb7;box-shadow:0 2px #c5cbb2;background:#f3f2e5;border-radius:2px;padding:0 4px;color:#557059;font-weight:700}.map-caption kbd{margin-left:auto;height:16px;font-size:8px}.energy{position:absolute;bottom:93px;left:22px;width:190px;background:#f4f0dfef;padding:10px 12px;display:flex;align-items:center;gap:9px;font-size:8px;font-weight:700;letter-spacing:.5px}.energy>div{height:5px;width:80px;background:#d9dcc7}.energy i{display:block;height:100%;background:#669775}.energy i.low{background:#bb784f}.energy small{color:#8c8a70;font-size:9px}.context{position:absolute;left:50%;bottom:101px;transform:translate(-50%);white-space:nowrap}.context button{display:flex;align-items:center;gap:12px;background:#234e42e8;box-shadow:0 4px #15382c42;padding:10px 15px;border:1px solid #52715b;color:#eee8cf;font-size:12px}.context:not(.available) button{background:#274b3eb8;color:#e1dec7}.context:not(.available) kbd{display:none}.context.available kbd{background:var(--gold);border-color:#ebcc81;color:#3e533f}.toolbar{position:absolute;bottom:18px;left:22px;right:22px;height:57px;display:flex;align-items:center;padding:0 18px;background:#f4f0dff5;gap:28px;border:1px solid #fff7e2;border-radius:3px;box-shadow:0 4px #21423833}.movement{display:flex;align-items:center;gap:4px}.movement span{font-size:8px;font-weight:700;color:#879178;margin:0 9px 0 5px;letter-spacing:.7px}.toolbar nav{display:flex;gap:22px}.toolbar nav button{display:flex;align-items:center;background:none;gap:8px;font-size:12px;color:#355b48;padding:6px 0}.toolbar nav button>span{font-size:22px;color:#718867}.toolbar nav kbd{margin-left:4px}.save-status{font-size:8px;letter-spacing:1px;color:#8c957c;margin-left:auto;white-space:nowrap}#notices{position:absolute;top:113px;right:22px;width:340px;pointer-events:none;z-index:12}.notice{background:#f4f0df;border:1px solid #e7dec5;border-left:4px solid #6d9475;padding:15px 17px;margin-bottom:8px;font-size:12px;line-height:1.5;box-shadow:0 3px #28423533;animation:toast-in .2s ease-out}.notice.good{border-left-color:#629a69}.notice.bad{border-left-color:#bb7656}.scrim{position:absolute;inset:0;background:#183d35a6;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px;z-index:10}.panel{width:min(610px,100%);max-height:calc(100dvh - 48px);overflow:auto;background:var(--cream);border:1px solid #fff3d4;box-shadow:0 10px #153b2d66,0 28px 65px #163f344a;border-radius:5px}.panel.wide{width:min(960px,100%)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:25px 30px 20px;border-bottom:1px solid var(--border)}.panel-header h1{font-size:29px;letter-spacing:-.7px;margin:0;line-height:1.12}.panel-header .eyebrow{color:#929273}.close-button{flex-shrink:0;align-self:flex-start;font-size:26px;color:#71846c;background:#e5e6d2;width:32px;height:32px;display:grid;place-items:center;padding-bottom:4px}.panel-body{padding:25px 30px}.panel-intro{color:#798271;font-size:13px;line-height:1.6;margin-bottom:22px}.button{display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:13px 19px;min-height:44px;border:1px solid #bcc5ac;background:#e9e8d4;color:var(--ink);font-weight:700;font-size:12px;line-height:1.4;border-radius:3px;transition:background .15s,transform .15s}.button:hover:not(:disabled){background:#dddfc7;transform:translateY(-1px)}.button.primary{background:#38664f;border:1px solid #2c5943;color:#f7eed1;box-shadow:0 3px #254b37}.button.primary:hover:not(:disabled){background:#487d5e}.button.secondary{background:#f2e9d0;color:#345341;border-color:#d9cead}.button.full{width:100%}.button.small{padding:8px;min-height:32px;font-size:10px}.danger{color:#a4674f!important}.button.danger{background:#ece0cf;border-color:#d2b9a2}.muted{font-size:11px;color:#859079;line-height:1.6;margin:14px 0 0}.callout{background:#e5e7d1;border:1px solid #d6d9be;padding:20px;margin-bottom:20px;font-size:13px;line-height:1.65}.callout p:last-child{margin-bottom:0}.intro-letter{display:flex;gap:20px;align-items:center;flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:20px;margin-bottom:21px}.intro-letter .letter-mark{font-family:Fraunces,Georgia,serif;font-size:48px;font-weight:600;color:#689375;float:left}.intro-letter p{font-size:13px;line-height:1.6;margin:0;flex:1;min-width:230px}.intro-letter p+p{flex-basis:100%;margin-top:0}.tutorial-steps{display:grid;gap:16px;margin-bottom:23px}.tutorial-steps>div{display:flex;gap:15px;align-items:flex-start}.tutorial-steps b{display:grid;place-items:center;width:32px;height:32px;background:#dedfc3;color:#788764;font-family:Fraunces,Georgia,serif}.tutorial-steps span{font-size:12px;line-height:1.55;color:#7a846f;flex:1}.tutorial-steps strong{display:block;color:#3b5b47;margin-bottom:3px;font-size:14px}.control-guide{display:flex;flex-wrap:wrap;gap:15px;font-size:10px;color:#7f8b75;align-items:center;padding:16px 0;border-top:1px solid var(--border)}.control-guide span{display:flex;align-items:center;gap:5px}.intro-letter+.tutorial-steps~.button{margin-top:20px}.job-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.job-card{padding:21px 18px;background:#ececd8;border:1px solid #d9dcc2;border-radius:3px;display:flex;flex-direction:column}.job-card-top{display:flex;align-items:center;gap:10px;margin-bottom:15px}.job-icon{font-size:30px;width:45px;height:45px;display:grid;place-items:center;background:#d5dbbf;color:#54784b}.job-icon.delivery{background:#e5d7b8;color:#a08249}.job-icon.cleaning{background:#ceded2;color:#568672}.contract-label{font-size:9px;letter-spacing:1.2px;color:#8b9276;font-weight:700}.job-card h2{font-size:23px;line-height:1.1;margin-bottom:12px}.job-card p{font-size:12px;line-height:1.6;color:#7b846e;flex:1}.job-pay{display:flex;align-items:center;gap:10px;margin:7px 0 20px}.job-pay strong{font-family:Fraunces,Georgia,serif;font-size:28px}.job-pay span{font-size:9px;color:#8e9379;line-height:1.5}.shop-list{display:grid;gap:12px}.shop-item{display:flex;align-items:center;gap:16px;padding:18px;background:#e8ead6;border:1px solid #d8ddc3}.shop-icon{display:grid;place-items:center;width:47px;height:47px;background:#d3ddc2;color:#6a8862;flex-shrink:0;font-size:29px}.shop-icon.owned{background:#b6cdae;color:#467652}.shop-item>div{flex:1}.shop-item h2{font-size:18px;margin-bottom:4px}.shop-item h2 small{font:700 8px DM Sans,sans-serif;letter-spacing:1px;color:#729568;margin-left:5px}.shop-item p{font-size:11px;color:#818b73;line-height:1.5;margin:0}.shop-item .button{min-width:70px;padding:10px}.shop-item .muted{display:block;margin-top:4px;font-size:9px}.licence{display:flex;gap:25px;align-items:center;padding:20px 0}.licence-seal{border:3px double #819574;flex-shrink:0;display:grid;place-items:center;width:85px;height:85px;border-radius:50%;font-family:Fraunces,Georgia,serif;color:#819574;font-size:21px;text-align:center}.licence h2{font-size:25px}.licence p{font-size:12px;line-height:1.6;color:#7a856e}.business-summary{display:flex;gap:50px;margin-bottom:14px}.business-summary strong{font:600 28px Fraunces,Georgia,serif}.staff-list{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin-top:22px}.staff-card{border:1px solid #d5dbc1;background:#e8ead6;padding:17px;display:flex;flex-direction:column}.staff-top{display:flex;align-items:center;gap:10px;margin-bottom:14px}.staff-avatar,.dialogue-portrait{background:var(--portrait);border:3px solid #f3eccf;box-shadow:0 2px #6b826044;width:42px;height:45px;display:grid;place-items:center;color:#f3e9c6;font:700 27px Fraunces,Georgia,serif}.staff-top h2{font-size:17px;margin:0 0 3px}.staff-top p{font-size:9px;margin:0;color:#828c73}.staff-cost{margin-left:auto;font:600 20px Fraunces,Georgia,serif}.staff-cost small{display:block;font:700 6px DM Sans,sans-serif;letter-spacing:.3px;color:#8b9378}.staff-card>p{font-size:11px;line-height:1.6;color:#77836b;min-height:50px}.staff-stats{display:flex;gap:10px;font-size:8px;margin:4px 0 18px;color:#92987c}.staff-stats b{display:block;font-size:13px;color:#668259;margin-top:3px}.staff-card>.button{margin-top:auto}.morale{font-size:10px;color:#73826c;position:relative;padding-top:10px;border-top:1px solid #d3d8bf}.morale b{float:right;color:#658455}.morale>div{height:4px;background:#cfd7b9;margin:8px 0 13px}.morale i{display:block;height:100%;background:#739966}.assignment{font-size:10px;margin-bottom:8px}.assignment>strong{font-size:9px;letter-spacing:.9px;color:#7b8a64;display:block;margin-bottom:8px}.assignment>span{font-size:8px;color:#859178;display:block;line-height:1.6}.assign-buttons{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:7px}.staff-card .text-button{font-size:9px}.manager-box{display:flex;gap:20px;margin-top:22px;padding:21px;background:#dfe4ca;border:1px solid #cbd5b3;align-items:center}.manager-box h2{font-size:22px;margin-bottom:6px}.manager-box p{font-size:11px;line-height:1.55;color:#78896b;margin:0}.manager-box .button{flex-shrink:0}.ledger{margin-top:23px;border-top:1px solid var(--border);font-size:12px;color:#6f8067}.ledger summary{padding:15px 0;cursor:pointer;font-weight:600}.ledger-row{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:10px 0;border-bottom:1px solid #dcdcc5;font-size:9px;color:#90967b}.ledger-row strong{display:block;font-size:11px;color:#60765b;margin-top:3px}.ledger-row b{font-size:13px}.positive{color:#598857}.negative{color:#b07a56}.empty-business{text-align:center;padding:30px 10px}.empty-business>span{display:block;font-size:65px;color:#b6c1a0;margin-bottom:12px}.empty-business h2{font-size:30px}.empty-business p{font-size:14px;line-height:1.6;color:#8a927b;max-width:440px;margin:0 auto 25px}.progress-milestones{display:flex;gap:25px;justify-content:center;font-size:11px;color:#7a906c;margin-bottom:25px}.full-map{border:5px solid #b2bd9b;line-height:0}.full-map canvas{width:100%;max-height:58dvh;object-fit:contain;background:#809a63;image-rendering:pixelated}.map-legend{display:flex;gap:10px;align-items:center;font-size:10px;color:#7c8a70;margin-top:15px}.map-legend>span:last-child{margin-left:auto}.dialogue-portrait{width:70px;height:80px;font-size:47px;margin:0 auto 20px}blockquote{font-family:Fraunces,Georgia,serif;font-size:26px;line-height:1.4;text-align:center;padding:10px 5px;margin:20px 0 28px;color:#496c54}blockquote cite{display:block;font:11px DM Sans,sans-serif;color:#90977f;margin-top:10px}.dialogue-actions{display:flex;justify-content:center;gap:10px}.event-art{background:#dbe3c8;color:#8ca265;width:75px;height:75px;font-size:52px;display:grid;place-items:center;border-radius:50%;margin:0 auto 25px}.event-copy{font-family:Fraunces,Georgia,serif;font-size:21px;line-height:1.5;text-align:center}.event-choices{display:grid;gap:10px;margin-top:26px}.pause-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.pause-grid>.primary:first-child{grid-column:1/-1}.settings{display:flex;flex-wrap:wrap;gap:20px;margin:26px 0;font-size:12px;color:#6e8268;align-items:center}.settings label{display:flex;align-items:center;gap:8px}.settings input{accent-color:#4e7958}.settings select{background:#e5e8d4;color:#577450;border:1px solid #c5cdb4;padding:5px}.main-menu{position:absolute;inset:0;color:#fff0c9;background:linear-gradient(90deg,#193d32f5,#1d4439e6 32%,#2249405e 70%,#193c332a);z-index:5;padding:37px 45px}.menu-top{display:flex;justify-content:space-between;color:#d3d5b6;font-size:9px;letter-spacing:2px}.edition{border:1px solid #8f9e7777;padding:9px 12px}.version{padding-top:9px}.title-block{position:absolute;left:7.5%;top:19%}.title-eyebrow{font-size:10px;font-weight:600;letter-spacing:2.4px;color:#bdc49e;display:flex;align-items:center;gap:10px;margin-bottom:20px}.title-eyebrow>span{height:2px;width:27px;background:#d2b771}.title-block h1{font-family:Fraunces,Georgia,serif;font-size:clamp(68px,8vw,125px);font-weight:900;line-height:.81;letter-spacing:-5px;margin:0 0 29px;text-shadow:4px 5px 0 #17372c}.title-to{display:block;font-size:30px;letter-spacing:0;line-height:.9;font-style:italic;color:#d4c799;margin:8px 0 8px 12px;font-weight:500}.mint{display:block;color:#e1bf72;position:relative}.title-star{font-size:51px;position:absolute;right:-55px;top:3px;color:#a3b380;transform:rotate(-10deg)}.title-block>p{font-size:17px;color:#cfd4b7;line-height:1.7;margin-bottom:28px;letter-spacing:.1px}.menu-actions{display:flex;gap:12px}.menu-actions .button{padding:16px 23px;font-size:13px}.menu-actions .primary{background:#e1bd70;border-color:#f0d18c;color:#2c4e39;box-shadow:0 4px #a0824c}.menu-actions .primary:hover{background:#edca81}.menu-actions .secondary{background:#365a48ab;color:#dde5bf;border-color:#668364}.menu-actions .secondary:hover{background:#4e7452}.title-block .save-summary{font-size:9px;letter-spacing:1.2px;margin:19px 0 -5px;color:#aaba91}.title-block .save-warning{font-size:11px;color:#e6c890;margin-top:16px;max-width:350px}.menu-tags{display:flex;gap:20px;margin-top:34px;font-size:8px;letter-spacing:1px;color:#9eaf88}.town-stamp{position:absolute;right:7%;bottom:17%;width:260px;text-align:center;padding:23px 18px;background:#eee3cbe8;border:2px solid #f7edcc;outline:1px solid #40583a99;outline-offset:-9px;color:#39553f;transform:rotate(-4deg);box-shadow:5px 6px #29453344}.town-stamp>span:first-child{font-size:9px;letter-spacing:3px;font-weight:700}.town-stamp strong{display:block;font:700 44px Fraunces,Georgia,serif;letter-spacing:-2px;margin-top:3px}.town-stamp p{font-size:11px;font-style:italic;color:#849071;margin-bottom:10px}.stamp-rule{display:block;width:80px;height:1px;background:#acb18d;margin:12px auto}.town-stamp small{font-size:7px;letter-spacing:1px}.menu-footer{position:absolute;bottom:33px;left:45px;right:45px;display:flex;justify-content:space-between;color:#aab896;font-size:8px;letter-spacing:1.3px}.small-screen-note,#touch-controls{display:none}@keyframes toast-in{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1050px){.brand{font-size:19px}.stats{gap:18px}.stats strong{font-size:20px}.toolbar{gap:10px}.movement span{display:none}.toolbar nav{gap:13px}.save-status{display:none}.staff-list{grid-template-columns:1fr}.staff-card>p{min-height:0}.staff-stats{gap:25px}.manager-box{display:block}.manager-box .button{margin-top:15px}.team-status{top:340px}.town-stamp{right:5%;width:225px}.title-block{left:7%;top:21%}}@media(max-width:700px){.topbar{top:10px;left:10px;right:10px;height:65px;padding:0 10px;gap:8px}.brand{font-size:14px;gap:5px}.brand-icon{width:29px;height:32px;font-size:23px}.brand em{font-size:6px;letter-spacing:1px}.stats{gap:11px}.stats>div{min-width:0}.stats .stat-label{font-size:6px;letter-spacing:.3px}.stats strong{font-size:15px}.stats>div:last-child .stat-label{max-width:70px}.icon-button{width:26px;height:28px;font-size:18px}.objective{top:86px;left:10px;width:215px;padding:12px 14px}.objective .eyebrow{font-size:7px}.objective h2{font-size:18px}.objective p{font-size:10px}.minimap{right:10px;bottom:76px;width:139px;padding:7px}.minimap canvas{width:117px;height:87px}.map-title{font-size:7px}.map-title span+span,.map-caption kbd{display:none}.map-caption{font-size:5px;gap:1px}.map-caption .gold{margin-left:4px}.toolbar{bottom:10px;left:10px;right:10px;height:48px;padding:0 12px;justify-content:center}.movement{display:none}.toolbar nav{width:100%;justify-content:space-around;gap:8px}.toolbar nav button{font-size:10px;gap:5px}.toolbar nav kbd{display:none}.energy{bottom:76px;left:10px;width:160px}.context{bottom:212px;max-width:96%;white-space:normal;width:max-content}.context button{font-size:10px}.context:not(.available){display:none}.team-status{top:300px;left:10px;width:215px}.team-status>div{font-size:9px;padding:8px}#notices{top:86px;right:10px;width:240px}.notice{font-size:10px;padding:10px}.scrim{padding:10px}.panel{max-height:calc(100dvh - 20px)}.panel-header{padding:19px 20px 15px}.panel-header h1{font-size:25px}.panel-body{padding:19px 20px}.job-cards{grid-template-columns:1fr}.job-card{padding:18px}.job-card p{font-size:12px}.job-card-top{margin-bottom:8px}.job-pay{margin:0 0 12px}.intro-letter p{min-width:185px}.pause-grid{grid-template-columns:1fr}.manager-box .button{width:100%}.map-legend{flex-wrap:wrap}.map-legend>span:last-child{margin-left:0}.shop-item{padding:13px;gap:10px}.shop-item h2{font-size:16px}.shop-icon{width:36px;height:40px;font-size:23px}.shop-item .button{min-width:56px;padding:8px}.business-summary{gap:20px}.business-summary strong{font-size:24px}.progress-milestones{gap:12px;font-size:9px}.main-menu{padding:20px}.menu-top{font-size:7px;letter-spacing:1px}.title-block{left:9%;top:20%}.title-block h1{font-size:85px;letter-spacing:-4px}.title-block>p{font-size:14px}.title-eyebrow{font-size:8px;letter-spacing:1.6px}.title-star{font-size:40px;right:-40px}.town-stamp{display:none}.menu-tags{font-size:6px;gap:11px}.menu-actions{flex-wrap:wrap;gap:10px}.menu-actions .button{font-size:11px;padding:14px 17px}.menu-footer{left:20px;right:20px;bottom:25px;font-size:6px}.menu-footer span+span{display:none}.version{font-size:6px}.small-screen-note{position:absolute;top:77px;left:10px;right:10px;font-size:8px;background:#f4efda;color:#6f7c60;text-align:center;z-index:2;display:none}#touch-controls{display:flex;position:absolute;bottom:126px;left:10px;right:10px;align-items:center;justify-content:space-between;pointer-events:none}.dpad{display:grid;grid-template-columns:34px 34px 34px;grid-template-rows:34px 34px;gap:4px}.dpad button:first-child{grid-column:2}.dpad button:nth-child(2){grid-column:1;grid-row:2}.dpad button:nth-child(3){grid-column:2;grid-row:2}.dpad button:nth-child(4){grid-column:3;grid-row:2}#touch-controls button{pointer-events:auto;touch-action:none;border:1px solid #c4ccb1;background:#f4efdaeb;color:#4f7955;font-size:13px;padding:0}#touch-controls>button{width:50px;height:50px;font-size:22px}body:has(.scrim) #touch-controls,body:has(.main-menu) #touch-controls{display:none}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}.district-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:20px}.district-list{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.district-list>div{padding:14px;background:#e2e6ce;border:1px solid #ccd6b8;font-size:12px}.district-list strong,.district-list span{display:block}.district-list span{font-size:10px;color:#7c896e;line-height:1.6;margin-top:6px}.unlock-note{font-size:10px!important;background:#dfdcc8;padding:10px;color:#85724f!important;line-height:1.5}.job-card.locked{opacity:.75}.milestone-list{display:grid;gap:12px}.milestone-card{display:flex;align-items:center;gap:17px;padding:18px;background:#e7ead4;border:1px solid #d0d8bc}.milestone-card>div{flex:1}.milestone-card h2{font-size:21px;margin:0 0 6px}.milestone-card p{font-size:12px;color:#7b876c;line-height:1.5;margin:0 0 12px}.milestone-card small{font-size:10px;color:#849373;display:block;margin-top:8px}.milestone-number{font:600 30px Georgia,serif;color:#97a783}.milestone-card.claimed{background:#dde6cf}.challenge-card{display:flex;gap:18px;align-items:center}.challenge-card>div{flex:1}.challenge-card h2{font-size:23px;margin:6px 0}.challenge-card p{font-size:12px}.challenge-card>.button{flex-shrink:0}.book-actions{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}.property-list{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.property-list .callout{margin:0;display:flex;flex-direction:column}.property-list .callout h2{font-size:23px;margin:8px 0}.property-list .callout p{font-size:12px}.property-list .button{margin-top:auto}.premium-assign{display:grid;gap:5px;margin-top:10px}.toolbar nav{gap:15px}.toolbar nav button{gap:5px}.toolbar nav small{background:#d9bd77;color:#385e48;min-width:15px;text-align:center;border-radius:50%;font-size:9px}.toolbar nav small:empty{display:none}@media(max-width:1050px){.movement{display:none}.district-list,.property-list{grid-template-columns:1fr}.toolbar nav{gap:16px}}@media(max-width:700px){.toolbar nav{gap:6px}.toolbar nav button{font-size:9px}.toolbar nav button>span{font-size:16px}.challenge-card{display:block}.challenge-card>.button{width:100%;margin-top:10px}.milestone-card{padding:13px;gap:10px;flex-wrap:wrap}.milestone-card>div{min-width:180px}.milestone-card>.button{width:100%}.milestone-number{font-size:24px}.milestone-card h2{font-size:20px}.district-list{gap:8px}}#objective-layer{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;pointer-events:none;z-index:13}.player-near{opacity:.25!important;transition:opacity .16s}.objective,.minimap,.team-status,.energy,.topbar{transition:opacity .16s}.team-status{top:auto;bottom:142px;width:auto;max-width:340px;pointer-events:auto}.team-compact{display:flex;align-items:center;gap:7px;background:#294f41e8;color:#eee4c8;border:1px solid #9da67a55;padding:9px 13px;font-size:11px;cursor:pointer}.team-compact small{color:#d5bb78;margin-left:8px}.doing-task .objective{padding:14px 18px;width:280px}.doing-task .objective h2{font-size:23px;margin:8px 0}.doing-task .objective .eyebrow{display:none}.doing-task .objective p{font-size:11px;margin:8px 0}.objective>.text-button{display:inline-flex;margin-right:12px;font-size:10px}.doing-task .minimap{opacity:.65}#notices:empty{display:none}.errand-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.errand-list h2{font-size:22px;margin-bottom:8px}.errand-offer{border-top:1px solid #ced5b8;margin-top:15px;padding-top:15px}@media(max-width:700px){.team-status{bottom:112px;top:auto;left:10px;max-width:215px}.team-compact{font-size:9px;padding:7px}.doing-task .objective{width:215px;padding:10px 13px}.doing-task .objective h2{font-size:18px}.errand-list{grid-template-columns:1fr}}.return-visits{margin-top:24px;border-top:1px solid #c9d1b7;padding-top:18px}.return-visits>h2{font-size:24px}.service-list{display:grid;gap:10px;margin:16px 0}.service-card{display:flex;gap:15px;align-items:center;padding:14px;background:#e2e7cf;border:1px solid #cbd5b8}.service-card>div{flex:1}.service-card p{font-size:11px;margin:6px 0 0;line-height:1.55}.service-card>.button{flex-shrink:0}.travel-book{margin-top:18px;font-size:12px}.travel-book summary{cursor:pointer;padding:12px;background:#dfe5ca}.travel-grid{display:flex;flex-wrap:wrap;gap:8px}.opponent-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.opponent-list .callout{margin:0}.opponent-list h2{font-size:23px}.opponent-portrait{width:40px;height:40px;display:grid;place-items:center;background:var(--portrait);color:#f7e8c4;font:700 26px Georgia,serif;margin-bottom:12px}.fight-stats{display:grid;grid-template-columns:1fr 1fr;gap:30px}.fight-stats strong,.fight-stats span{display:block}.fight-stats span{font-size:10px;margin:6px 0}.fight-stats .progress-track{height:9px}#fight-arena{width:100%;height:auto;image-rendering:pixelated;border:3px solid #8c9e77;margin:18px 0}.fight-stance{padding:15px;background:#dde5c7;border:1px solid #c5d3af}.fight-stance strong{font-size:12px}.fight-stance p{font-size:13px;line-height:1.6;margin:8px 0 0}.fight-moves{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0}.fight-moves .button{padding:14px}.fight-log{font-size:11px;line-height:1.7;color:#66785d;padding-left:17px}.incident-list h2{font-size:24px}.objective>.text-button{border:0;padding:4px 0;margin:0 10px 0 0}.objective>.text-button kbd{margin-left:4px}@media(max-width:700px){.opponent-list{grid-template-columns:1fr}.service-card{padding:10px;gap:8px}.fight-stats{gap:15px}.fight-stats strong{font-size:12px}.fight-moves .button{padding:11px;font-size:11px}.objective>.text-button{font-size:8px}.fight-stance strong{font-size:10px}}.build-plots{display:grid;grid-template-columns:repeat(3,1fr);gap:15px;margin:24px 0}.plot-card{background:#e5e8d0;border:1px solid #c9d3b3;padding:20px;display:flex;flex-direction:column}.plot-card h2{font-size:24px;margin:5px 0 12px}.plot-card p{font-size:12px;line-height:1.6;color:#728467}.plot-card>.button{margin-top:auto}.crew-picker{padding:20px;background:#e0e5cd;border:1px solid #c9d4b5;margin:20px 0}.crew-picker h2{font-size:23px;margin:0 0 10px}.crew-choice{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:11px 0;border-bottom:1px solid #c9d1b7}.crew-choice label{display:flex;align-items:center;gap:10px;flex:1;font-size:13px}.crew-choice input{width:18px;height:18px;accent-color:#4d7859}.crew-choice small{display:block;font-size:9px;color:#7a896e;line-height:1.6;margin-top:3px}.active-projects h2{font-size:25px;margin:8px 0}.rival-banner{background:#604851;color:#f3e7cb;padding:25px;border:1px solid #9d7c76}.rival-banner .eyebrow{color:#d0b79b}.rival-banner h2{font-size:28px;line-height:1.3;margin:10px 0 16px}.rival-banner p{font-size:12px;color:#d5c5ad;line-height:1.7;margin:0}.quote-control{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:20px;background:#dddcc1;font-size:13px;margin-bottom:20px}.quote-control input{flex:1;min-width:160px;accent-color:#507c59}.tender-list,.guild-goals{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}.tender-list .callout,.guild-goals .callout{margin:0}.tender-list h2{font-size:23px;line-height:1.25}.pipe-game{display:grid;grid-template-columns:45px minmax(0,280px) 55px;align-items:center;justify-content:center;gap:12px;margin:30px 0;padding:25px 12px;background:#263f3a;border:6px solid #a9b79a;box-shadow:0 4px #153b2c44}.pipe-port{font-size:11px;font-weight:700;color:#edd69a;text-align:center}.pipe-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.pipe-tile{aspect-ratio:1;background:#385a52;border:2px solid #577c6d;padding:0;border-radius:3px;display:grid;place-items:center}.pipe-tile:hover{background:#466f60}.pipe-tile svg{width:100%;height:100%;display:block}.pipe-tile:focus-visible{outline:3px solid #eed390;outline-offset:1px}.build-estimate{border-left:4px solid #b6a35f}.toolbar{gap:16px}.toolbar nav{gap:14px}.toolbar nav button{font-size:11px}.toolbar nav button>span{font-size:18px}@media(max-width:1100px){.movement,.save-status{display:none}.build-plots{grid-template-columns:1fr 1fr}.toolbar nav{width:100%;justify-content:space-around}}@media(max-width:700px){.build-plots,.tender-list,.guild-goals{grid-template-columns:1fr}.crew-picker{padding:14px}.pipe-game{grid-template-columns:28px minmax(0,210px) 35px;gap:5px;border-width:3px;padding:15px 5px}.pipe-port{font-size:8px}.rival-banner{padding:18px}.rival-banner h2{font-size:23px}.toolbar{padding:0 7px}.toolbar nav{gap:3px}.toolbar nav button{font-size:9px;gap:3px}.toolbar nav button>span{display:none}.crew-choice label{font-size:11px}.crew-choice small{font-size:8px}.crew-choice .button{padding:6px;font-size:9px}}#objective-toggle,.touch-guide{display:none}@media(max-width:700px),(pointer:coarse){html,body,#app{height:100dvh;overscroll-behavior:none}#world,#touch-controls{touch-action:none;-webkit-user-select:none;user-select:none}.dpad{pointer-events:auto;touch-action:none}.touch-guide{display:block;font-size:13px;line-height:1.65;padding:14px;background:#e3e7d0;border-radius:8px}.control-guide{display:none}.panel-header{position:sticky;top:0;z-index:2;background:var(--cream)}.panel{overscroll-behavior:contain}.panel .settings label{min-height:44px}#objective-layer{clip-path:inset(0 0 calc(54px + env(safe-area-inset-bottom)) 0)}.topbar{top:env(safe-area-inset-top,0px);left:0;right:0;height:60px;padding:0 max(8px,env(safe-area-inset-right));gap:8px;border-radius:0}.brand{font-size:14px;gap:5px}.brand-icon{display:none}.brand em{font-size:6px;letter-spacing:.5px}.stats{gap:10px;margin-left:auto}.stats>div{min-width:0}.stats strong{font-size:15px}.stats .stat-label{font-size:7px;letter-spacing:0}.topbar .icon-button{width:44px;height:44px;flex-shrink:0}.objective,.doing-task .objective{top:calc(68px + env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));width:min(310px,calc(100vw - 16px));padding:10px 12px;max-height:40dvh;overflow-y:auto;pointer-events:auto}.objective h2,.doing-task .objective h2{font-size:17px;margin:2px 65px 4px 0}.objective .eyebrow,.objective:not(.expanded) p,.objective:not(.expanded)>.text-button{display:none}.objective.expanded p{font-size:12px;line-height:1.5}.objective>.text-button{font-size:12px;min-height:44px}#objective-toggle{display:block;position:absolute;right:4px;top:0;min-width:64px;min-height:44px;background:transparent;color:var(--ink);font-size:11px}.objective kbd,.toolbar kbd,.movement,.save-status,.minimap,.team-status{display:none}.toolbar{bottom:0;left:0;right:0;height:calc(54px + env(safe-area-inset-bottom));padding:0 8px env(safe-area-inset-bottom);border-radius:0}.toolbar nav{display:flex;overflow-x:auto;justify-content:flex-start;gap:14px;width:100%;scrollbar-width:none}.toolbar nav button{min-height:48px;flex-shrink:0;font-size:12px;gap:4px}#touch-controls{display:flex;position:absolute;z-index:14;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:calc(66px + env(safe-area-inset-bottom));align-items:flex-end;justify-content:space-between;pointer-events:none}.dpad{display:grid;grid-template-columns:repeat(3,48px);grid-template-rows:repeat(3,48px);gap:3px}.dpad button:first-child{grid-column:2;grid-row:1}.dpad button:nth-child(2){grid-column:1;grid-row:2}.dpad button:nth-child(3){grid-column:2;grid-row:3}.dpad button:nth-child(4){grid-column:3;grid-row:2}#touch-controls button{pointer-events:auto;touch-action:none;border:1px solid #b4c09b;background:#f4efdaeb;color:#315b43;border-radius:12px;font-size:18px;padding:0;box-shadow:0 3px #203d3155}#touch-controls button.held{background:#e1bd70;transform:translateY(2px)}.touch-actions{display:flex;flex-direction:column;align-items:flex-end;gap:12px}.touch-actions button{width:84px;min-height:48px}.touch-actions button:last-child{height:68px;font-weight:700;font-size:15px!important}.touch-actions small{display:block;font-size:10px;font-weight:400;margin-top:5px}.energy{left:auto;right:12px;bottom:calc(207px + env(safe-area-inset-bottom));width:120px;font-size:9px}.context{bottom:calc(231px + env(safe-area-inset-bottom));max-width:calc(100% - 20px);width:max-content;white-space:normal}.context button{min-height:44px;font-size:12px}.context kbd{display:none}.context:not(.available){display:none}#notices{top:calc(145px + env(safe-area-inset-top));right:8px;width:min(280px,calc(100% - 16px));pointer-events:none}.notice{font-size:12px;padding:10px}.scrim{padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}.panel{max-height:100%;max-width:100%}.panel-header{padding:14px}.panel-header h1{font-size:24px}.panel-body{padding:16px}.panel button,.panel summary{min-height:44px;touch-action:manipulation}.close-button{min-width:44px}.panel input,.panel select{font-size:16px}.main-menu{overflow-y:auto;padding:20px;padding-top:max(20px,env(safe-area-inset-top))}.title-block{position:relative;left:auto;top:auto;margin:32px 10px 70px}.title-block h1{font-size:78px}.title-block>p{font-size:14px}.town-stamp,.menu-tags,.menu-footer{display:none}.menu-actions{flex-wrap:wrap}.menu-actions .button{min-height:48px}.version,.menu-top{font-size:7px}body:has(.scrim) #touch-controls,body:has(.main-menu) #touch-controls{display:none}.stats strong{white-space:nowrap}}@media(max-width:360px){.brand{font-size:12px;max-width:80px}.stats{gap:6px}.stats .stat-label{font-size:6px}.stats>div:last-child .stat-label{max-width:64px;white-space:nowrap;overflow:hidden}.topbar{gap:6px}.stats strong{font-size:14px}}@media(pointer:coarse)and (orientation:landscape){.topbar{height:48px}.objective,.doing-task .objective{top:calc(54px + env(safe-area-inset-top));width:240px}.objective h2{font-size:14px}.context{bottom:calc(66px + env(safe-area-inset-bottom));max-width:calc(100% - 370px)}.energy{bottom:calc(206px + env(safe-area-inset-bottom))}#notices{top:54px;width:240px}.title-block{margin:18px 10px 20px}.title-block h1{font-size:55px}.title-block>p{margin-bottom:14px}.title-eyebrow{display:none}}@media(max-width:700px),(pointer:coarse){.joystick{width:150px;height:150px;border-radius:50%;position:relative;display:grid;place-items:center;pointer-events:auto;touch-action:none;background:radial-gradient(circle,#f4efdad9 0 40%,#72876460 42% 65%,#f4efdaaa 67%);border:2px solid #718568;box-shadow:0 4px 16px #203d3140}.joystick-knob{width:54px;height:54px;border-radius:50%;background:#e1bd70;border:3px solid #fff5d8;box-shadow:0 3px 8px #203d3170;pointer-events:none}.joystick-label{position:absolute;bottom:8px;font-size:9px;font-weight:700;color:#315b43;pointer-events:none}.joystick.held .joystick-knob{background:#f5cf7a}.money-stat strong{font-size:13px}}.game-links{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.game-links .button{min-height:44px}#update-status{font-size:14px;line-height:1.5;max-width:420px}.game-links .button{width:auto}
