@font-face{font-family:Outfit;src:url(/fonts/Outfit-Regular.ttf) format("truetype");font-weight:400;font-display:swap}@font-face{font-family:Outfit;src:url(/fonts/Outfit-Bold.ttf) format("truetype");font-weight:600 800;font-display:swap}:root{font-family:Outfit,PingFang SC,Microsoft YaHei,sans-serif;color:#253a3a;background:#eae7de;font-synthesis:none;--ink:#253a3a;--muted:#7b8881;--paper:#f7f4eb;--cream:#eae7de;--line:rgba(48,72,65,.15);--green:#377b67;--mint:#8cc6a5;--orange:#df7953;--yellow:#edbd61;--shadow:0 18px 55px rgba(48,60,50,.13)}*{box-sizing:border-box}html,body{width:100%;height:100%;min-width:320px;margin:0;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible{outline:2px solid var(--green);outline-offset:3px}button:disabled{cursor:default;opacity:.42}#game-canvas{position:fixed;top:0;right:0;bottom:0;left:0}#game-canvas canvas{display:block;width:100%;height:100%;outline:0}.topbar{position:fixed;z-index:40;top:0;left:0;right:0;height:78px;padding:0 34px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);pointer-events:none}.brand{display:flex;align-items:center;gap:12px}.brand-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--green);color:#fff;font-size:20px;transform:rotate(-5deg)}.brand>div{display:flex;flex-direction:column}.brand strong{font-size:13px;letter-spacing:.1em}.brand span:not(.brand-icon){margin-top:2px;color:var(--muted);font-size:8px;letter-spacing:.19em}.top-actions{display:flex;gap:8px;pointer-events:auto}.round-button{display:grid;place-items:center;width:34px;height:34px;border:1px solid var(--line);border-radius:50%;background:#f7f4ebd9;font-size:13px}.round-button:hover{background:#fff}.game-only{display:none}body:not([data-state=menu]) .game-only{display:grid}.screen{position:fixed;z-index:20;top:0;right:0;bottom:0;left:0;visibility:hidden;opacity:0;pointer-events:none;transition:opacity .25s,visibility .25s}body[data-state=menu] #menu-screen,body[data-state=paused] #pause-screen,body[data-state=victory] #result-screen,body[data-state=defeat] #result-screen{visibility:visible;opacity:1;pointer-events:auto}.menu-screen{padding:105px 6vw 35px;background:linear-gradient(90deg,#efece1f7,#efece1e0 38%,#efece10d 75%)}.menu-panel{position:relative;z-index:1;width:490px}.eyebrow{margin:0;color:var(--green);font-size:9px;font-weight:700;letter-spacing:.2em}.menu-panel h1{margin:20px 0 0;font-size:clamp(58px,6vw,86px);line-height:1.04;letter-spacing:-.06em}.menu-panel h1 span{color:var(--orange)}.lead{margin:25px 0 0;color:#697a72;font-size:13px;line-height:1.95}.difficulty-select{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:27px}.difficulty{padding:14px 16px;text-align:left;border:1px solid var(--line);border-radius:9px;background:#f7f4eb99}.difficulty strong,.difficulty span{display:block}.difficulty strong{font-size:12px}.difficulty span{margin-top:4px;color:var(--muted);font-size:9px}.difficulty.active{border-color:var(--green);background:#f8f5ec;box-shadow:inset 0 0 0 1px var(--green)}.primary-button{min-height:50px;padding:0 20px;border:1px solid var(--green);border-radius:7px;background:var(--green);color:#fff;font-size:12px;font-weight:700;transition:transform .15s,background .15s}.primary-button:hover:not(:disabled){transform:translateY(-2px);background:#2b6b58}.menu-panel>.primary-button{width:100%;margin-top:14px;display:flex;align-items:center;justify-content:space-between}.record{display:flex;justify-content:space-between;margin-top:16px;color:var(--muted);font-size:9px}.record strong{color:var(--green);font-weight:400}.brief-card{position:absolute;right:7vw;top:50%;width:310px;padding:28px;transform:translateY(-47%) rotate(2deg);background:#f9f5e9;box-shadow:var(--shadow);border:1px solid rgba(80,90,70,.1)}.brief-card:before{content:"";position:absolute;top:-10px;left:40px;width:85px;height:25px;background:#d3c59e8c;transform:rotate(-4deg)}.brief-card h2{margin:18px 0;font-size:22px}.brief-card ul{list-style:none;margin:0;padding:0}.brief-card li{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px dashed var(--line);font-size:11px}.brief-card li span{color:var(--orange);font-size:9px}.brief-note{margin-top:22px;color:var(--muted);font-size:10px;line-height:1.9}.stamp{position:absolute;right:20px;bottom:23px;padding:8px;border:2px solid rgba(200,98,65,.6);border-radius:4px;color:#c86241a6;font-size:11px;font-weight:700;line-height:1.1;text-align:center;transform:rotate(-12deg)}.menu-footer{position:absolute;left:6vw;right:6vw;bottom:25px;display:flex;justify-content:space-between;color:#829087;font-size:8px;letter-spacing:.12em}.hud{position:fixed;z-index:10;top:0;right:0;bottom:0;left:0;visibility:hidden;opacity:0;pointer-events:none;transition:opacity .2s}.hud button{pointer-events:auto}body:not([data-state=menu]) .hud{visibility:visible;opacity:1}.status-card{position:absolute;top:22px;left:50%;display:flex;align-items:center;gap:20px;width:330px;padding:11px 15px;transform:translate(-50%);border:1px solid var(--line);border-radius:10px;background:#f8f5eced;box-shadow:0 5px 20px #32413712}.status-label{display:flex;flex-direction:column;min-width:54px}.status-label span,.budget span{color:var(--muted);font-size:8px}.status-label strong{font-size:20px}.energy-track{flex:1;height:8px;border-radius:5px;background:#dedfd4;overflow:hidden}.energy-track i{display:block;width:100%;height:100%;border-radius:5px;background:linear-gradient(90deg,#e0a854,#76af89);transform-origin:left;transition:transform .2s}.budget{min-width:65px;padding-left:15px;border-left:1px solid var(--line)}.budget strong{display:block;color:var(--green);font-size:16px}.budget strong b{font-weight:700}.clock-card{position:absolute;top:95px;left:26px;width:170px;padding:17px;border:1px solid var(--line);border-radius:10px;background:#f8f5ecf0;box-shadow:var(--shadow)}.clock-card>span{color:var(--muted);font-size:8px;letter-spacing:.1em}.clock-card>strong{display:block;margin:4px 0 10px;font-size:30px;letter-spacing:-.04em}.clock-card>div{display:flex;justify-content:space-between;padding-top:9px;border-top:1px solid var(--line);color:var(--green);font-size:8px}.clock-card>div span:last-child{color:var(--muted)}.hud-actions{position:absolute;top:95px;right:25px;display:flex;flex-direction:column;align-items:flex-end;gap:10px}.small-button{padding:8px 12px;border:1px solid var(--line);border-radius:7px;background:#f8f5eced;font-size:9px}.small-button kbd{margin-left:6px;color:var(--muted);font-family:inherit;font-size:8px}.coffee-button{display:flex;align-items:center;gap:10px;padding:11px 14px;border:1px solid #d9b877;border-radius:9px;background:#fff1cf;box-shadow:0 5px 20px #785a1e14;text-align:left}.coffee-button>span{font-size:23px}.coffee-button strong,.coffee-button small{display:block}.coffee-button strong{font-size:11px}.coffee-button small{margin-top:3px;color:#907748;font-size:8px}.coffee-button.active{background:#e9ba62;animation:coffeePulse 1s infinite alternate}@keyframes coffeePulse{to{box-shadow:0 0 25px #edb955b3}}.route-notice{position:absolute;left:27px;top:200px;color:#708078;font-size:9px}.boss-panel{position:absolute;top:95px;left:50%;width:350px;padding:12px 18px;opacity:0;transform:translate(-50%);border-radius:8px;background:#563b37;color:#fae8d4;transition:opacity .2s}.boss-panel.visible{opacity:1}.boss-panel>div:first-child{display:flex;justify-content:space-between;font-size:10px}.boss-panel span{color:#dcab8b;font-size:7px;letter-spacing:.15em}.boss-panel>div:last-child{height:6px;margin-top:9px;background:#342b29;border-radius:5px;overflow:hidden}.boss-panel i{display:block;width:100%;height:100%;background:#de8c5d;transform-origin:left}.tower-dock{position:absolute;left:50%;bottom:27px;width:min(690px,calc(100vw - 380px));padding:12px;transform:translate(-50%);border:1px solid var(--line);border-radius:13px;background:#f8f5ecf2;box-shadow:var(--shadow);pointer-events:auto}.dock-heading{display:flex;justify-content:space-between;padding:0 4px 9px;font-size:10px}.dock-heading small{color:var(--muted);font-size:8px}.tower-list{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.tower-card{position:relative;display:grid;grid-template-columns:32px 1fr;gap:8px;min-height:65px;padding:10px 8px;text-align:left;border:1px solid transparent;border-radius:8px;background:#eeeee5}.tower-card:hover{background:#e4e9df}.tower-card.active{border-color:var(--green);background:#e1ebdf;box-shadow:inset 0 0 0 1px var(--green)}.tower-card.unaffordable{opacity:.48}.portrait{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#e6b565;color:#fff;font-size:12px;font-weight:700}.portrait.developer{background:#668ad8}.portrait.designer{background:#e88362}.portrait.admin{background:#54a594}.tower-info strong,.tower-info small{display:block}.tower-info strong{font-size:10px}.tower-info small{margin-top:4px;color:var(--muted);font-size:7px;white-space:nowrap}.tower-card>b{position:absolute;bottom:7px;right:8px;color:var(--green);font-size:9px}.tower-key{position:absolute;top:3px;left:4px;color:#8d978d;font-size:7px}.wave-control{position:absolute;right:25px;bottom:32px;width:215px;padding:15px;border:1px solid var(--line);border-radius:11px;background:#f8f5ecf2;box-shadow:var(--shadow);pointer-events:auto}.wave-control span{color:var(--muted);font-size:8px}.wave-control strong{display:block;margin-top:4px;font-size:11px}.wave-control button{width:100%;margin-top:12px;padding:10px;border:0;border-radius:6px;background:var(--orange);color:#fff;font-size:10px}.wave-control button span{margin-left:5px;color:#ffe5c8}.help-line{position:absolute;left:26px;bottom:35px;display:flex;flex-direction:column;gap:6px;color:#6f8178;font-size:8px}.tower-panel{position:absolute;z-index:14;top:215px;right:25px;width:245px;padding:22px;visibility:hidden;opacity:0;transform:translate(15px);border:1px solid var(--line);border-radius:11px;background:#f8f5ec;box-shadow:var(--shadow);transition:opacity .2s,transform .2s;pointer-events:auto}.tower-panel.visible{visibility:visible;opacity:1;transform:translate(0)}#close-tower-panel{position:absolute;top:10px;right:11px;border:0;background:transparent;color:var(--muted);font-size:18px}.selected-heading{display:flex;align-items:center;gap:12px;margin-top:16px}.selected-heading h2{margin:0;font-size:18px}.selected-heading div>span{color:var(--green);font-size:9px}.tower-panel>p:not(.eyebrow){min-height:45px;color:var(--muted);font-size:9px;line-height:1.7}.stat-grid{display:grid;grid-template-columns:1fr 1fr;margin:16px 0;padding:13px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.stat-grid div{display:flex;flex-direction:column}.stat-grid div+div{padding-left:15px;border-left:1px solid var(--line)}.stat-grid span{color:var(--muted);font-size:8px}.stat-grid strong{margin-top:3px;font-size:16px}.tower-panel .primary-button{width:100%;display:flex;justify-content:space-between;font-size:10px}.text-button{border:0;background:transparent;color:var(--muted);font-size:9px}.tower-panel>.text-button{width:100%;margin-top:13px}.secondary-button{min-height:45px;border:1px solid var(--line);border-radius:7px;background:#eceee5;font-size:11px}.full{width:100%;margin-top:12px}.wave-banner{position:fixed;z-index:16;top:22%;left:50%;display:flex;flex-direction:column;align-items:center;min-width:330px;padding:20px 35px;opacity:0;transform:translate(-50%,15px);pointer-events:none;background:#f8f5ecf0;border-top:2px solid var(--green);box-shadow:var(--shadow)}.wave-banner.show{animation:banner 3s ease both}.wave-banner span{color:var(--orange);font-size:8px;letter-spacing:.2em}.wave-banner strong{margin-top:6px;font-size:23px}.wave-banner p{margin:5px 0 0;color:var(--muted);font-size:10px}@keyframes banner{0%{opacity:0;transform:translate(-50%,15px)}12%,72%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,-10px)}}.toast{position:fixed;z-index:19;top:95px;left:50%;display:flex;align-items:center;gap:12px;min-width:260px;padding:13px 18px;opacity:0;transform:translate(-50%,-10px);border-radius:9px;background:#294a40;color:#f3f3e9;box-shadow:var(--shadow);transition:opacity .2s,transform .2s;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%)}.toast>span{font-size:19px;color:#aad7ae}.toast strong{font-size:11px}.toast p{margin:3px 0 0;color:#b9c9bd;font-size:8px}.modal-screen{display:grid;place-items:center;padding:90px 20px 25px;background:#29393259;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.modal-card{width:min(400px,100%);padding:35px;text-align:center;border:1px solid rgba(255,255,255,.5);border-radius:15px;background:#f7f4e9;box-shadow:0 25px 90px #1e322833}.modal-card h2{margin:12px 0 0;font-size:30px;letter-spacing:-.04em}.modal-card>p:not(.eyebrow){color:var(--muted);font-size:11px;line-height:1.8}.modal-card>.text-button{margin-top:18px}.result-icon{display:grid;place-items:center;width:62px;height:62px;margin:0 auto 20px;border-radius:50%;background:#d9ead7;color:var(--green);font-size:31px}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);margin:23px 0 10px;padding:18px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.result-stats>div{display:flex;flex-direction:column;border-right:1px solid var(--line)}.result-stats>div:last-child{border:0}.result-stats strong{font-size:20px}.result-stats span{margin-top:4px;color:var(--muted);font-size:8px}@media(max-width:1150px){.brief-card{right:4vw;width:280px}.tower-dock{width:600px;left:47%}.help-line{display:none}.wave-control{width:190px}.status-card{width:300px}.clock-card{left:18px}.hud-actions,.tower-panel{right:18px}}@media(max-width:850px){.brief-card{display:none}.menu-panel{width:min(480px,100%)}.menu-screen{background:#efece1d9}.status-card{left:18px;transform:none;width:270px}.clock-card{top:90px;width:145px}.boss-panel{top:175px;width:310px}.tower-dock{left:18px;right:18px;bottom:18px;width:auto;transform:none}.wave-control{right:18px;bottom:145px}.hud-actions{right:18px}.tower-panel{top:180px}.route-notice{display:none}}@media(max-width:560px){.topbar{height:62px;padding:0 15px}.menu-screen{padding:85px 22px 25px}.menu-panel h1{font-size:53px}.menu-footer{display:none}.lead{font-size:11px}.status-card{top:10px;left:12px;width:250px}.clock-card{top:78px;left:12px}.hud-actions{top:78px;right:12px}.coffee-button{padding:9px}.coffee-button small{max-width:100px}.tower-dock{left:8px;right:8px;bottom:8px;padding:8px}.tower-list{gap:4px}.tower-card{grid-template-columns:1fr;padding:8px 4px;min-height:74px}.tower-card .portrait{width:28px;height:28px}.tower-info small{display:none}.tower-info strong{font-size:9px}.tower-card>b{font-size:8px}.dock-heading small{display:none}.wave-control{bottom:136px;right:8px;width:170px}.tower-panel{right:8px;top:175px;width:225px}.boss-panel{top:175px;width:280px}.toast{top:75px;min-width:240px}.brand strong{font-size:11px}}
