:root{--ink:#263b39;--deep:#172b2d;--paper:#f6edd6;--cream:#fff9e9;--orange:#ed8151;--yellow:#ffce61;--lime:#a7ce59;--muted:#65756c;--line:#c7bda4}*{box-sizing:border-box}html{min-width:300px}body{margin:0;min-height:100vh;padding:24px 14px 42px;background:radial-gradient(circle at 10% 15%,#284848 0,transparent 33%),radial-gradient(circle at 90% 75%,#294037 0,transparent 38%),#172b2d;color:var(--ink);font-family:"Trebuchet MS",Verdana,Arial,sans-serif}body::before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.12;background-image:radial-gradient(#d8edc4 1px,transparent 1px);background-size:21px 21px;mask-image:linear-gradient(to bottom,#000,transparent 80%)}button{font:inherit;cursor:pointer}button:focus-visible,canvas:focus-visible{outline:3px solid #ed8151;outline-offset:3px}.app{position:relative;max-width:1160px;margin:0 auto;padding:22px 24px 15px;border:4px solid #122626;border-radius:22px;background:var(--paper);box-shadow:0 7px 0 #0e1e20,0 25px 70px #081b1f99;overflow:hidden}.app::before{content:"";position:absolute;inset:0 0 auto;height:9px;background:repeating-linear-gradient(115deg,#ed9458 0 19px,#263b39 19px 29px);opacity:.9}.masthead{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:8px 1px 22px}.brand{display:flex;align-items:flex-start;min-width:0;gap:13px}.mascot{width:68px;height:68px;flex:0 0 68px;border:3px solid var(--ink);border-radius:17px;background:#d5e8a5;transform:rotate(-5deg);box-shadow:3px 4px 0 #d8c9aa}.mascot svg{width:100%;height:100%;display:block}.brand-copy{min-width:0}.eyebrow{margin:0 0 6px;font-size:10px;font-weight:900;letter-spacing:.24em;color:#526861}.eyebrow-star{color:var(--orange);font-size:15px;vertical-align:-1px}h1,h2,p{margin-top:0}.brand h1{font-family:Impact,"Arial Black","Trebuchet MS",sans-serif;font-size:clamp(31px,4.45vw,58px);line-height:.96;letter-spacing:.012em;margin:0 0 8px;font-weight:900;white-space:nowrap}.brand h1 span{color:#d8754d;text-shadow:1px 1px 0 #b8593b}.subtitle{font-size:13px;line-height:1.4;margin:0;color:#576a5e;font-weight:700}.ticket{position:relative;flex:0 0 285px;min-height:118px;transform:rotate(1.5deg);background:#fff7e4;border:2px solid #38504a;border-radius:6px 11px 11px 6px;box-shadow:4px 5px 0 #cfbfa1;padding:10px 12px 9px;overflow:hidden}.ticket::after{content:"";position:absolute;top:0;right:0;width:63px;height:63px;border-radius:0 0 0 100%;background:#f5e7ca;opacity:.7;pointer-events:none}.ticket-top,.ticket-bottom{display:flex;justify-content:space-between;align-items:center;gap:5px;font-size:9px;font-weight:900;letter-spacing:.12em}.ticket-top{border-bottom:2px dashed #d6c7a9;padding-bottom:7px}.ticket-top strong{font-size:12px;color:#ce6949}.ticket-body{display:flex;align-items:center;gap:10px;padding:7px 0 5px}.ticket-stamp{display:grid;place-items:center;flex:0 0 39px;height:38px;border-radius:50%;background:#e8a073;border:2px solid #b96848;color:#fff7e1;font-family:Impact,"Arial Black",sans-serif;font-size:20px;transform:rotate(-12deg)}.ticket-kicker{display:block;color:#b0684e;letter-spacing:.11em;font-size:9px;font-weight:900}.ticket-name{display:block;font-size:14px;line-height:1.1;letter-spacing:.035em}.ticket-bottom{border-top:2px dashed #d6c7a9;padding-top:6px;color:#6b796a;font-size:9px;letter-spacing:.035em}.ticket-bottom b{font-size:13px;color:#c66c48}.workshop{position:relative}.statusbar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:61px;padding:10px 14px;background:#263c3a;border:3px solid #142929;border-bottom:0;border-radius:15px 15px 0 0;color:#fff8df}.phase{display:flex;align-items:center;gap:8px;white-space:nowrap;font-size:11px;font-weight:900;letter-spacing:.11em}.phase-light{width:10px;height:10px;border-radius:50%;background:#a7ce59;box-shadow:0 0 0 3px #a7ce5935;flex:none}.phase.testing .phase-light{background:#ffce61;box-shadow:0 0 0 3px #ffce6144;animation:pulse 1s infinite}.phase.finished .phase-light{background:#ffce61}.phase.failed .phase-light{background:#ee9068}@keyframes pulse{50%{box-shadow:0 0 0 7px #ffce6100}}.delivery-progress{display:flex;align-items:center;gap:6px;color:#deca9e}.progress-step{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:2px solid #91a49a;font-size:10px;font-weight:900;color:#91a49a}.progress-step.active{border-color:#f7cc6c;background:#f7cc6c;color:#243b38}.progress-step.done{border-color:#a7ce59;background:#a7ce59;color:#263b39}.progress-link{width:16px;border-top:2px dashed #879b8f}.progress-caption{font-size:9px;font-weight:900;letter-spacing:.12em;margin-left:5px}.status-numbers{display:flex;align-items:center;gap:9px}.safety,.budget{display:flex;align-items:center;gap:5px;padding:7px 9px;border-radius:8px;white-space:nowrap;font-size:10px;font-weight:900;letter-spacing:.04em}.safety{background:#f4d1ad;color:#804a32}.safety.safe{background:#d7e8b0;color:#365c35}.status-icon{display:grid;place-items:center;width:15px;height:15px;border:1.5px solid currentColor;transform:rotate(45deg);font-size:11px;line-height:1}.status-icon::first-letter{transform:rotate(-45deg)}.safety.safe .status-icon{border-radius:50%;transform:none}.budget{background:#fff2cc;color:#31483d;font-size:10px}.budget strong{font-size:17px;line-height:1}.budget small{color:#7a8472}.bolt-icon{color:#c27643;font-size:15px}.scene{height:clamp(340px,38vw,440px);position:relative;overflow:hidden;border:3px solid #142929;border-top:0;border-bottom:0;background:#efd2a2}.scene canvas{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}.toast{position:absolute;z-index:6;right:13px;top:13px;max-width:min(350px,calc(100% - 26px));padding:10px 13px;border:2px solid #182f2e;border-radius:9px;background:#304842;color:#fff6da;box-shadow:3px 4px 0 #1d312ead;font-weight:900;font-size:12px;line-height:1.3;opacity:0;transform:translateY(-9px);transition:opacity .15s,transform .15s;pointer-events:none}.toast.show{opacity:1;transform:translateY(0)}.toast.bad{background:#a45039}.result{position:absolute;z-index:5;top:7%;left:50%;width:min(470px,calc(100% - 24px));transform:translateX(-50%) rotate(-1deg);padding:15px 18px 16px;border:3px solid #263b39;border-radius:12px;background:#fff8e6;box-shadow:6px 7px 0 #243b39b0;animation:result-in .28s ease-out}.result[hidden]{display:none}.result.failure{background:#fff0df}.result.success{background:#edf7d8}.result::before,.result::after{content:"";position:absolute;top:-9px;width:49px;height:17px;background:#f9c76ea6;border:1px solid #e5ad59aa;transform:rotate(-8deg);z-index:1}.result::before{left:23px}.result::after{right:27px;transform:rotate(10deg)}@keyframes result-in{from{opacity:0;transform:translateX(-50%) translateY(-16px) rotate(2deg) scale(.96)}to{opacity:1;transform:translateX(-50%) rotate(-1deg) scale(1)}}.result-top{display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:.18em;font-weight:900;color:#9a6b49}.result-seal{position:absolute;right:19px;top:17px;display:grid;place-items:center;width:42px;height:42px;border:3px solid #a34d39;border-radius:50%;color:#a34d39;font-family:Impact,"Arial Black",sans-serif;font-size:24px;transform:rotate(16deg)}.success .result-seal{color:#5f8c3b;border-color:#5f8c3b}.result h2{font-family:Impact,"Arial Black","Trebuchet MS",sans-serif;letter-spacing:.035em;font-size:34px;line-height:1;margin:8px 42px 5px 0}.result p{font-size:13px;line-height:1.35;font-weight:700;color:#4d5b4d;margin:0 0 12px}.result-actions{display:flex;align-items:center;gap:12px}.result-primary{border:2px solid #243b39;border-radius:7px;background:#ffce61;box-shadow:3px 3px 0 #263b39;color:#203837;padding:9px 12px;font-size:12px;font-weight:900;letter-spacing:.055em}.result-primary:hover{background:#ffe086;transform:translateY(-2px)}.result-primary span{padding-left:8px;font-size:16px}.result-secondary{border:0;background:transparent;padding:7px 3px;color:#6a6a56;text-decoration:underline;text-underline-offset:3px;font-size:10px;font-weight:900;letter-spacing:.08em}.inspection{min-height:45px;display:flex;align-items:center;gap:9px;padding:9px 13px;border:3px solid #142929;border-top:2px dashed #667d70;border-radius:0 0 12px 12px;background:#fffae9;font-size:12px;font-weight:700;line-height:1.3;color:#53695b}.inspection.alert{color:#aa5c3c;background:#fff0de}.inspection.good{color:#477447;background:#f2f7dc}.inspection-bulb{display:grid;place-items:center;flex:0 0 23px;height:23px;border-radius:50%;background:#e5d7af;color:#52674f;font-size:17px}.bench{display:grid;grid-template-columns:minmax(0,1fr) 214px;gap:14px;margin-top:15px;padding:13px;border:2px solid #c4b89b;border-radius:15px;background:#eae0ca}.parts-area,.actions-area{min-width:0}.bench-heading{display:flex;justify-content:space-between;align-items:center;min-height:21px;gap:8px;margin-bottom:8px;font-size:11px;letter-spacing:.08em;font-weight:900}.bench-heading>div{display:flex;align-items:center;gap:7px;white-space:nowrap}.bench-heading>span{color:#71806d;font-size:10px;letter-spacing:0}.step-tag{display:inline-grid;place-items:center;background:#293f3b;border-radius:4px;color:#ffdb85;padding:3px 5px;font-size:10px}.parts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.part{position:relative;display:flex;align-items:center;gap:7px;min-width:0;min-height:69px;text-align:left;padding:13px 6px 7px;border:2px solid #b8af96;border-radius:9px;background:#fff7e6;color:#263b39;box-shadow:0 3px 0 #c2b49b;transition:transform .12s,box-shadow .12s,background .12s}.part:hover:not(:disabled){background:#fffdf3;transform:translateY(-2px);box-shadow:0 5px 0 #b7a88c}.part.selected{border-color:#344f45;background:#dff0b7;box-shadow:0 3px 0 #344f45}.part.selected:hover:not(:disabled){box-shadow:0 5px 0 #344f45}.part:disabled{opacity:.6;cursor:not-allowed}.part-words{display:block;min-width:0;padding-top:8px}.part-words strong{display:block;font-family:Impact,"Arial Black",sans-serif;font-size:15px;letter-spacing:.065em;white-space:nowrap}.part-words small{display:block;white-space:nowrap;font-size:9px;font-weight:900;color:#6c7869}.part-cost{position:absolute;right:6px;top:4px;padding:1px 4px;border-radius:4px;background:#e8d7b3;color:#784d36;white-space:nowrap;font-size:10px;font-weight:900}.part.selected .part-cost{background:#b9d885;color:#304639}.part-icon{display:block;position:relative;flex:0 0 34px;width:34px;height:33px;border:2px solid #c6b897;border-radius:7px;background:#f4ead2;overflow:hidden}.part-icon i{position:absolute;display:block}.icon-scrap i{left:3px;width:27px;height:7px;border:1.5px solid #593e30;border-radius:2px;background:#bd8050}.icon-scrap i:first-child{top:8px;transform:rotate(-7deg)}.icon-scrap i:last-child{top:17px;transform:rotate(4deg)}.icon-beam i:first-child{left:3px;top:9px;width:26px;height:14px;border:2px solid #594430;border-radius:3px;background:#a96d42}.icon-beam i:last-child{left:7px;top:5px;width:17px;height:22px;border-left:3px solid #e3ac65;border-right:3px solid #e3ac65;transform:skew(-19deg)}.icon-iron i:first-child{inset:7px 3px;border:2px solid #375e60;border-radius:3px;background:repeating-linear-gradient(135deg,#78aba9 0 4px,#568c8d 4px 7px)}.icon-iron i:last-child{inset:10px 7px;border-left:2px dotted #e1e8d0;border-right:2px dotted #e1e8d0}.icon-truss i:first-child{width:25px;height:21px;left:4px;top:4px;border-left:4px solid #789d5d;border-right:4px solid #789d5d;border-bottom:4px solid #789d5d;transform:rotate(45deg) scale(.78)}.icon-truss i:last-child{width:7px;height:7px;left:12px;top:19px;border:2px solid #456747;border-radius:50%;background:#eacb7e}.actions-area{display:flex;flex-direction:column}.test-button{width:100%;min-height:68px;display:flex;align-items:center;justify-content:space-between;gap:7px;padding:10px 10px 10px 13px;border:3px solid #263b39;border-radius:9px;background:#ffce61;color:#213735;box-shadow:0 4px 0 #b98d42;font-family:Impact,"Arial Black",sans-serif;font-size:19px;letter-spacing:.04em;text-align:left;transition:transform .12s,background .12s,box-shadow .12s}.test-button:hover:not(:disabled){background:#ffe18a;transform:translateY(-2px);box-shadow:0 6px 0 #b98d42}.test-button:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px 0 #b98d42}.test-button:disabled{opacity:.64;cursor:wait}.button-arrow{display:grid;place-items:center;flex:0 0 30px;height:30px;border-radius:50%;background:#263b39;color:#ffde91;font:23px Arial,sans-serif}.reset-button{align-self:center;margin-top:7px;border:0;background:transparent;color:#617268;font-size:10px;font-weight:900;letter-spacing:.07em;text-decoration:underline;text-underline-offset:3px}.reset-button:hover:not(:disabled){color:#b95d40}.reset-button:disabled{opacity:.45;cursor:not-allowed}.footer{display:flex;justify-content:space-between;gap:18px;padding:13px 2px 0;color:#778574;font-size:10px;line-height:1.4;font-weight:800}.footer-right{white-space:nowrap;color:#aa7151;letter-spacing:.08em}kbd{display:inline-grid;place-items:center;min-width:16px;padding:1px 3px;border:1px solid #a7a991;border-radius:3px;background:#f8f4e5;color:#5d6857;font:10px "Trebuchet MS",sans-serif}
@media(max-width:970px){.app{padding:19px 17px 14px}.masthead{gap:12px}.mascot{width:58px;height:58px;flex-basis:58px}.brand h1{font-size:clamp(31px,4vw,48px)}.ticket{flex-basis:248px}.bench{grid-template-columns:minmax(0,1fr) 190px;gap:10px}.part-icon{flex-basis:29px;width:29px}.part-words strong{font-size:13px}.part-words small{font-size:8px}.bench-heading>span{display:none}.progress-caption{display:none}}
@media(max-width:720px){body{padding:10px 7px 26px}.app{padding:17px 11px 12px;border-radius:15px}.masthead{flex-wrap:wrap;padding-bottom:14px}.mascot{width:53px;height:53px;flex-basis:53px}.eyebrow{font-size:9px;letter-spacing:.12em}.brand h1{font-size:clamp(27px,6.8vw,47px);white-space:normal}.subtitle{font-size:11px}.ticket{width:100%;flex:1 1 100%;min-height:0;transform:none;padding:7px 10px;box-shadow:2px 3px 0 #cfbfa1}.ticket-body{padding:4px 0}.ticket-stamp{width:31px;height:31px;flex-basis:31px;font-size:16px}.ticket-name{font-size:13px}.ticket-bottom{padding-top:4px}.statusbar{padding:8px 9px;flex-wrap:wrap;min-height:0}.phase{font-size:10px}.delivery-progress{order:3;width:100%;justify-content:center;padding:1px 0 0}.progress-caption{display:block}.status-numbers{margin-left:auto}.safety{padding:6px;font-size:9px}.budget{padding:5px;font-size:9px}.budget strong{font-size:15px}.scene{height:350px}.bench{display:flex;flex-direction:column}.bench-heading>span{display:inline}.actions-area{display:grid;grid-template-columns:1fr auto;align-items:end;column-gap:12px}.actions-area .bench-heading{grid-column:1 / -1}.test-button{min-height:58px}.reset-button{margin:0 4px 10px 0}.footer-right{display:none}}
@media(max-width:455px){.app{padding:16px 8px 11px}.brand{gap:8px}.mascot{width:47px;height:47px;flex-basis:47px}.brand h1{font-size:clamp(26px,7.6vw,35px)}.subtitle{font-size:10px}.statusbar{gap:6px}.phase{font-size:9px}.safety{font-size:8px}.budget{gap:3px}.budget small{display:none}.scene{height:328px}.inspection{font-size:11px;min-height:48px}.bench{margin-top:10px;padding:9px}.bench-heading{font-size:10px}.bench-heading>span{display:none}.parts{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.part{min-height:57px}.part-icon{width:34px;flex-basis:34px}.part-words strong{font-size:15px}.part-words small{font-size:9px}.test-button{font-size:16px}.result{top:3%;padding:12px 13px}.result h2{font-size:27px}.result p{font-size:11px;margin-bottom:9px}.result-primary{font-size:10px;padding:8px}.result-secondary{font-size:9px}.result-seal{width:34px;height:34px;font-size:20px}.footer{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
