@font-face{font-family:Manrope;src:url('./assets/font.woff2') format('woff2');font-weight:400 800;font-display:swap}
:root{font-family:Manrope,system-ui,sans-serif;color:#263f3c;background:#f5f5ed;font-synthesis:none;--ink:#263f3c;--muted:#7a8880;--coral:#e97555;--green:#31897d;--cream:#fffdf5;--border:#dde3d6}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:not-allowed}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #df9b38;outline-offset:4px}button{transition:background .18s,transform .15s,box-shadow .18s}button:active:not(:disabled){transform:translateY(2px)}[hidden]{display:none!important}button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}a{color:inherit}p{line-height:1.65}
.topbar{height:88px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 34px;background:#fafaf2;position:relative;z-index:5}.brand{display:flex;gap:12px;align-items:center;text-decoration:none;font-size:13px;font-weight:800;line-height:1.15;letter-spacing:1.8px}.brand-mark{width:44px;height:44px;background:var(--coral);border-radius:14px;color:#fff8df;display:grid;place-items:center;box-shadow:0 3px 0 #cb5e43}.brand-mark svg{width:30px;height:30px;transform:rotate(-4deg)}.brand-second{display:block;font-size:21px;letter-spacing:3px}.brand-dot{font-size:8px;vertical-align:top;letter-spacing:0;margin-left:2px}.top-message{font-size:12px;font-weight:600;color:#7a8981;display:flex;gap:9px;align-items:center}.live-dot,.status-dot,.save-dot{width:6px;height:6px;background:#6ea58a;border-radius:50%;display:inline-block}.tools{display:flex;gap:12px;align-items:center}.icon-btn{border:1px solid transparent;background:transparent;min-width:36px;height:36px;padding:8px;border-radius:10px;display:inline-flex;gap:8px;align-items:center;justify-content:center}.icon-btn:hover{background:#e9eee3}.tool-label{font-size:11px;font-weight:700;color:#6a7c71}#sound-icon{font-size:22px;line-height:1}main{display:grid;grid-template-columns:minmax(0,1fr) 340px;min-height:calc(100dvh - 88px)}.factory{min-height:700px;height:calc(100dvh - 88px);position:relative;overflow:hidden;background:radial-gradient(ellipse at 48% 44%,#f5f5e9 0%,#e5eddf 73%,#dae6d9 100%)}#world{position:absolute;inset:0;touch-action:none}#world canvas{display:block;width:100%;height:100%;outline:none}.factory-heading{position:absolute;top:30px;left:38px;z-index:2;pointer-events:none}.eyebrow{font-size:10px;font-weight:800;letter-spacing:1.65px;color:#7d8c7f}.factory-heading .eyebrow{display:flex;align-items:center;gap:8px}.tiny-line{width:22px;height:2px;background:#93a789}#stage-tag{margin-left:4px;font-size:9px;border:1px solid #ccd8c7;border-radius:4px;padding:2px 5px}.count-line{display:flex;gap:18px;align-items:center;margin-top:9px}.count-line h1{font-size:60px;line-height:1.08;letter-spacing:-3px;margin:0;font-weight:800;font-variant-numeric:tabular-nums}.count-unit{font-size:14px;line-height:1.75;font-weight:700}.count-unit #rate{font-size:11px;font-weight:500;color:#71846f}.scene-caption{position:absolute;top:41px;right:28px;display:flex;align-items:center;gap:7px;font-size:10px;font-weight:600;max-width:230px;color:#758873}.camera-tools{position:absolute;right:22px;bottom:179px;display:flex;flex-direction:column;gap:5px}.camera-tools .icon-btn{background:#fffdf2d9;border:1px solid #dbe2cf;box-shadow:0 3px 10px #3b6a4710}.scene-help{position:absolute;left:26px;bottom:182px;font-size:8px;letter-spacing:1.1px;font-weight:700;color:#899581;pointer-events:none}.scene-help span{padding:0 8px}.make-dock{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:13px;width:min(420px,90%)}.make-hint{font-size:11px;color:#7a8a72;font-weight:600}.make-button{border:0;border-radius:18px;background:#ee7e5d;box-shadow:0 6px 0 #c65d41,0 12px 25px #a56d342b,inset 0 2px 0 #ffb799;color:#fff9e9;width:100%;height:66px;display:flex;align-items:center;justify-content:center;gap:16px;font-size:18px;font-weight:800;letter-spacing:-.3px;position:relative}.make-button:hover:not(:disabled){background:#f38a67;transform:translateY(-2px);box-shadow:0 8px 0 #c65d41,0 15px 27px #a56d3435,inset 0 2px 0 #ffc0a5}.make-button:active:not(:disabled),.make-button.pressed{transform:translateY(4px);box-shadow:0 2px 0 #c65d41,0 4px 12px #a56d3435}.make-button:disabled{background:#b4bca9;box-shadow:0 4px 0 #8b9782;color:#eef1e6}.make-button svg{width:26px;height:30px;stroke-width:2.3}.make-button kbd{font:700 9px Manrope;letter-spacing:1px;background:#ba4e2d30;border:1px solid #ffffff30;padding:5px 7px;border-radius:5px;position:absolute;right:17px}.saving{font-size:9px;color:#8b9985;display:flex;gap:6px;align-items:center;margin-top:2px}.save-dot{width:4px;height:4px;background:#91a284}.dashboard{height:calc(100dvh - 88px);min-height:700px;overflow:auto;background:#fafbf4;border-left:1px solid #dce3d7;padding:28px 25px 18px;scrollbar-width:thin;scrollbar-color:#cbd8c5 transparent}.funds-value{font-size:38px;font-weight:800;letter-spacing:-1.5px;margin:5px 0 18px;font-variant-numeric:tabular-nums}.inventory{display:flex;justify-content:space-between;font-size:11px;color:#8a9588}.inventory strong{color:#516b59;font-size:12px}.funds-card{padding-bottom:23px}.tabs{display:flex;border-bottom:1px solid var(--border);margin:0 -1px 25px;gap:25px}.tabs button{background:none;border:0;padding:11px 0;font-size:11px;font-weight:700;color:#8c978a;position:relative;white-space:nowrap}.tabs button[aria-selected=true]{color:#2e6556}.tabs button[aria-selected=true]:after{content:'';position:absolute;bottom:-1px;height:2px;background:#4c8c6b;left:0;right:0}#project-badge{display:inline-block;font-size:8px;border-radius:4px;padding:1px 4px;margin-left:3px;background:#f1d98b;color:#776329}#project-badge:empty{display:none}.panel h2{font-size:15px;font-weight:800;letter-spacing:-.3px;line-height:1.5;margin:3px 0 6px}.resource-heading{display:flex;align-items:center;gap:11px}.resource-heading p{font-size:10px;color:#8d978a;margin:0}.resource-icon{width:37px;height:38px;display:grid;place-items:center;border-radius:10px;background:#eee8cb;color:#b19b52;font-size:33px;font-weight:800}.resource-value{display:flex;gap:8px;align-items:baseline;margin-top:20px}.resource-value strong{font-size:23px;letter-spacing:-.6px;font-variant-numeric:tabular-nums}.resource-value span{font-size:10px;color:#87937f}.wire-track{height:5px;border-radius:6px;background:#e8eddf;margin:10px 0 17px;overflow:hidden}.wire-track div{height:100%;background:#98b887;width:100%;border-radius:6px;transition:width .35s}#wire-fill.low{background:#e99563}.purchase{width:100%;border:1px solid #dce4d1;border-radius:10px;padding:13px 13px;background:#eef2e4;text-align:left;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;font-weight:700;color:#466446;min-height:44px}.purchase strong{font-size:12px;font-weight:800;font-variant-numeric:tabular-nums}.purchase small{display:block;font-size:9px;letter-spacing:.3px;font-weight:500;opacity:.7;margin-top:2px}.purchase:not(:disabled):hover{background:#dfebd4;border-color:#b7c9a8}.purchase:disabled{color:#a6ae9c;background:#f0f2e9;border-color:#e3e7da}.divider{height:1px;background:var(--border);margin:24px 0}.section-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.section-head h2{margin-top:6px}#crew-count{font-size:10px;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;background:#e6ecdf;border-radius:6px;margin-left:6px;color:#83917a}.crew-face{background:#f2c987;display:grid;place-items:center;border-radius:10px 10px 13px 13px;width:34px;height:29px;font-size:13px;letter-spacing:5px;padding-left:5px;color:#49624e;border-top:7px solid #e7af3b;transform:rotate(7deg)}.locked-note{display:flex;align-items:flex-start;gap:10px;background:#f1f1e5;padding:14px 12px;border-radius:10px;margin-top:12px}.locked-note strong{font-size:10px;font-weight:600;color:#7d8e71}.locked-note p{font-size:10px;color:#9aa18e;margin:5px 0 0}.lock-icon{font-size:20px;color:#aab495}.crew-description{font-size:11px;color:#87947e;margin:10px 0 17px;line-height:1.8}.crew-purchase{background:#e2edda}.small-stat{display:flex;justify-content:space-between;gap:10px;font-size:10px;margin-top:15px;color:#84917e}.small-stat strong{color:#58734f;font-weight:700;font-variant-numeric:tabular-nums}.note-card{position:relative;background:#f7efd4;padding:20px 18px 15px;margin-top:32px;transform:rotate(-2deg);border-radius:2px 2px 12px 2px;box-shadow:2px 4px 0 #e3dbc237;max-width:260px}.note-pin{position:absolute;width:38px;height:13px;top:-6px;left:45%;background:#cbdac8a3;transform:rotate(3deg)}.note-card p{font-size:13px;color:#84734c;line-height:1.6;font-weight:500;margin:0 0 12px}.note-card em{font-style:normal;font-weight:800}.note-card>span:last-child{font-size:8px;letter-spacing:1px;color:#aa9c72;font-weight:700}.dashboard-footer{display:flex;justify-content:space-between;gap:5px;font-size:8px;align-items:center;color:#a0aa95;margin-top:30px;white-space:nowrap}.text-button{font:inherit;border:0;padding:4px 0;background:transparent;text-decoration:underline;text-underline-offset:4px;color:#7a8b70}.text-button:hover{color:#275743}.price-control{display:flex;align-items:center;justify-content:space-between;background:#eff2e5;padding:12px;border:1px solid #e1e6d8;border-radius:12px}.price-control button{border:1px solid #d8e0cc;width:37px;height:37px;background:#fafbf3;border-radius:8px;font-size:22px}.price-control>div{text-align:center}.price-control div span{display:block;font-size:9px;color:#87977e}.price-control strong{display:block;font-size:25px;letter-spacing:-1px;margin-top:2px}.ops-count{display:flex;gap:8px;align-items:baseline;margin-top:15px}.ops-count strong{font-size:24px}.ops-count span{font-size:10px;color:#8a977e}.compute-controls{display:flex;gap:8px}.compute-controls button{display:flex;gap:6px;align-items:center;flex:1;border:1px solid #dce3d2;background:#eff4e4;border-radius:8px;padding:10px 8px;font-size:9px}.compute-controls button:disabled{color:#a0aa94}.compute-controls button strong{font-size:12px}.compute-controls button span{margin-left:auto}.project-card{width:100%;text-align:left;padding:12px;background:#eef4e5;border:1px solid #dbe6d0;border-radius:10px;margin-bottom:9px}.project-card strong{display:block;font-size:11px}.project-card .project-cost{font-size:9px;color:#679151;display:block;margin:5px 0}.project-card p{font-size:9px;color:#8b9980;margin:0}.project-card:disabled{background:#f3f4ed;color:#a3ad98}.project-card:disabled .project-cost{color:#a7af9c}#full-controls{font-size:10px;margin-top:12px}.empty-project{font-size:11px;color:#8b9980;line-height:1.7}dialog{border:1px solid #dce2cf;border-radius:20px;background:#fafbf1;color:var(--ink);padding:32px;width:min(440px,calc(100vw - 32px));box-shadow:0 30px 100px #24402f30;max-height:90dvh;overflow:auto}dialog::backdrop{background:#203c3a52;backdrop-filter:blur(5px)}dialog h2{font-size:25px;letter-spacing:-1px;margin:12px 0 20px}dialog p{font-size:12px;color:#7b8d70}dialog .close-dialog{position:absolute;right:15px;top:12px;border:0;background:none;font-size:26px;color:#829577;padding:3px 7px}.setting-row{display:flex;justify-content:space-between;align-items:center;margin:24px 0;font-size:12px}.setting-row select{font-size:11px;padding:8px;background:#edf2e4;border:1px solid #d4dfc7;border-radius:8px;color:#567045}.setting-row input{accent-color:#568c6a;width:17px;height:17px}.dialog-note{font-size:10px!important;line-height:1.8;margin-top:24px}.danger{font-size:10px;color:#bb7860}.destructive{background:#f3ddd1;color:#a04f35}.dialog-actions{display:flex;gap:10px;margin-top:25px}#original-dialog{width:min(1100px,95vw);height:85dvh;padding:0;overflow:hidden}.original-header{padding:18px 24px;border-bottom:1px solid var(--border);font-size:13px;font-weight:700;height:58px}#engine-slot{height:calc(100% - 58px);overflow:auto}#engine-home{position:absolute;left:-9999px;top:0;width:1100px;height:900px;overflow:hidden}#engine{width:100%;height:100%;border:0;background:white}#engine-home #engine{height:900px}#loading{position:absolute;inset:0;z-index:4;background:#edf1e5;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:13px;transition:opacity .5s;pointer-events:none}#loading strong{font-size:16px}#loading span:last-child{font-size:11px;color:#8b9b80}.loading-clip{font-size:65px;color:#e98861;animation:breathe 1.5s ease-in-out infinite}.ready #loading{opacity:0}#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:#2d5148;color:#f3f6e8;padding:13px 20px;border-radius:12px;font-size:12px;opacity:0;z-index:20;pointer-events:none;transition:opacity .2s,transform .3s;box-shadow:0 8px 30px #21473825;max-width:calc(100vw - 35px);text-align:center}#toast.show{opacity:1;transform:translate(-50%,0)}#float-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden}.float-clip{position:absolute;color:#398c74;font-weight:800;font-size:18px;animation:float-up 1.1s ease-out forwards;text-shadow:0 2px 2px #ffffd9}.error-message{position:absolute;inset:25%;text-align:center;line-height:1.8;background:#fff9eb;padding:25px;border-radius:20px;z-index:6}.diagnostics{position:absolute;left:20px;bottom:218px;font:10px monospace;color:#487b62;background:#ffffedcc;padding:6px 9px;border-radius:7px;z-index:3}@keyframes float-up{from{opacity:1;transform:translateY(0) scale(.85)}to{opacity:0;transform:translateY(-70px) scale(1.1)}}@keyframes breathe{50%{transform:translateY(-7px) rotate(6deg)}}
@media(min-width:1600px){main{grid-template-columns:minmax(0,1fr) 380px}.dashboard{padding:32px}.factory-heading{left:50px}.count-line h1{font-size:74px}.make-dock{bottom:35px}.scene-caption{right:40px}}
@media(max-width:1100px){main{grid-template-columns:minmax(0,1fr) 300px}.dashboard{padding:24px 20px}.factory-heading{left:24px;top:24px}.count-line h1{font-size:48px}.scene-caption{top:118px;left:26px;right:auto;max-width:90%}.count-unit{font-size:12px}.top-message{display:none}.make-dock{width:min(350px,88%)}.make-button{font-size:16px;gap:10px}.make-button kbd{display:none}.scene-help{font-size:7px;left:22px}.dashboard-footer{flex-wrap:wrap;justify-content:flex-start;gap:7px}}
@media(max-width:760px){.topbar{height:68px;padding:0 18px}.brand{font-size:10px;gap:9px}.brand-second{font-size:17px}.brand-mark{width:35px;height:35px;border-radius:10px}.brand-mark svg{width:25px;height:25px}.tool-label{display:none}.tools{gap:4px}main{display:flex;flex-direction:column;min-height:0}.factory{height:70dvh;min-height:520px;max-height:720px}.factory-heading{top:19px;left:22px}.count-line{gap:12px}.count-line h1{font-size:45px}.factory-heading .eyebrow{font-size:8px}.scene-caption{top:108px;font-size:9px;left:23px}.scene-help{bottom:150px;font-size:7px}.camera-tools{bottom:150px;right:15px}.make-dock{bottom:20px;gap:10px;width:min(340px,82%)}.make-button{height:56px}.make-hint{font-size:10px}.dashboard{height:auto;min-height:0;overflow:visible;border-left:0;border-top:1px solid var(--border);padding:25px 25px 30px;display:grid;grid-template-columns:1fr 1fr;gap:0 28px}.funds-card{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;align-items:center;padding-bottom:20px}.funds-card .eyebrow{grid-column:1}.funds-value{grid-column:1;margin:3px 0 0;font-size:30px}.inventory{grid-column:2;grid-row:1/3;flex-direction:column;gap:6px;align-items:flex-end}.tabs{grid-column:1/-1;gap:30px;margin-bottom:20px}.panel{grid-column:1/-1}.note-card{grid-column:1/-1;max-width:100%;margin-top:30px;padding:16px 20px;transform:rotate(-1deg)}.note-card p{font-size:12px}.note-card p br{display:none}.dashboard-footer{grid-column:1/-1;margin-top:23px}.funds-card .inventory strong{font-size:16px}.panel .purchase{font-size:12px;min-height:48px}.resource-heading p,.crew-description,.small-stat{font-size:12px}.locked-note strong,.locked-note p{font-size:11px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;transition-duration:.01ms!important}}
#original-dialog:not([open]){display:block;position:absolute;left:-9999px;top:0;width:1100px;height:900px;max-height:none;visibility:hidden;margin:0} #original-dialog[open]{visibility:visible}

.sound-setting{gap:20px}.sound-setting>span{min-width:110px}.sound-setting output{display:block;font-size:11px;font-variant-numeric:tabular-nums;color:#738a79;margin-top:3px}.setting-row input[type=range]{width:160px;max-width:50%;height:20px;accent-color:#276755;cursor:pointer}
