:root{color:#f8f2e9;font-synthesis:none;text-rendering:optimizelegibility;--ink:#211b17;--brown:#352a23;--cream:#f3ede4;--paper:#fffaf3;--gold:#d9963c;--amber:#ffbd62;background:#171310;font-family:Leelawadee UI,Noto Sans Thai,Tahoma,Arial,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh}button,input,textarea,select{font:inherit}.app-shell{background:#171310;min-height:100vh}.topbar{background:#211b17;border-bottom:1px solid #4b3d32;align-items:center;gap:12px;height:72px;padding:0 22px;display:flex;box-shadow:0 5px 24px #0d090733}.brand-mark{background:#d8cfc4;border:1px solid #d9963c80;border-radius:50%;width:44px;height:44px;overflow:hidden;box-shadow:0 0 20px #ffb74d2e}.brand-mark img{object-fit:cover;transform-origin:50% 24%;width:64px;height:64px;display:block;transform:translate(-10px,-4px)scale(1.22)}.brand-copy strong,.brand-copy span{display:block}.brand-copy strong{color:#fff9f0;letter-spacing:.01em;font-size:16px;font-weight:700}.brand-copy span{color:#c7b8a7;letter-spacing:.17em;margin-top:2px;font-size:9px;font-weight:600}.product-tabs{background:#171310;border:1px solid #5a493b;border-radius:12px;gap:4px;margin-left:auto;padding:4px;display:flex}.product-tabs button{color:#c9bbad;cursor:pointer;background:0 0;border:0;border-radius:8px;min-width:88px;height:34px;padding:0 15px;font-size:11px;font-weight:700}.product-tabs button:hover{color:#fff7ed;background:#332820}.product-tabs button.is-active{background:var(--gold);color:#21170e;box-shadow:0 4px 14px #0003}.build-status{color:#d8cbbd;border:1px solid #5a493b;border-radius:999px;align-items:center;gap:8px;margin-left:auto;padding:8px 13px;font-size:11px;display:flex}.build-status i,.stage-head i{background:var(--amber);border-radius:50%;width:7px;height:7px;box-shadow:0 0 12px #ffad42}.workspace{grid-template-columns:340px minmax(0,1fr);height:calc(100vh - 72px);display:grid}.controls{background:#29211c;border-right:1px solid #4b3d32;padding:26px 22px 40px;overflow:auto}.eyebrow{color:var(--amber);letter-spacing:.14em;margin:0 0 10px;font-size:10px;font-weight:700}.controls h1{color:#fffaf3;margin:0;font-size:24px;font-weight:700}.subhead{color:#b8aa9c;margin:7px 0 24px;font-size:12px;line-height:1.65}.controls label{margin-top:20px;display:block}.controls label>span{color:#e6dbcf;justify-content:space-between;margin-bottom:8px;font-size:12px;display:flex}.controls output{color:var(--amber);font-size:11px;font-weight:700}.controls textarea{resize:vertical;color:#fffaf3;background:#1d1815;border:1px solid #5b493b;border-radius:10px;outline:none;width:100%;min-height:84px;padding:12px;font-size:19px;font-weight:600;line-height:1.5}.controls textarea:focus{border-color:var(--gold);box-shadow:0 0 0 3px #d9963c20}.font-field select{color:#fffaf3;cursor:pointer;background:#1d1815;border:1px solid #5b493b;border-radius:10px;outline:none;width:100%;min-height:43px;padding:0 11px}.font-field select:focus{border-color:var(--gold);box-shadow:0 0 0 3px #d9963c20}.font-field small{color:#9e9082;margin-top:7px;font-size:9px;line-height:1.45;display:block}.range-field input{width:100%;accent-color:var(--gold)}.foundation-card{background:#352a23;border:1px solid #66513f;border-radius:12px;margin-top:28px;padding:16px}.foundation-card strong{color:var(--amber);font-size:11px;font-weight:700}.foundation-card ul{color:#c8bbad;margin:10px 0 0;padding-left:19px;font-size:11px;line-height:1.75}.export-panel{background:#1f1915;border:1px solid #66513f;border-radius:12px;margin-top:16px;padding:16px}.export-heading{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.export-heading strong,.export-heading span{display:block}.export-heading strong{color:#fff7ed;font-size:12px}.export-heading div>span{color:#ad9f91;margin-top:4px;font-size:9px;line-height:1.5}.export-badge{color:var(--amber);border:1px solid #d9963c80;border-radius:999px;padding:4px 7px;font-size:8px;font-weight:700}.export-actions{grid-template-columns:1fr 1fr;gap:8px;margin-top:13px;display:grid}.export-actions button{color:#21170e;cursor:pointer;background:#d9963c;border:1px solid #bd7c31;border-radius:8px;min-height:35px;font-size:10px;font-weight:700}.export-actions button:hover{background:#edaa52}.export-actions button:disabled{cursor:wait;opacity:.55}.export-actions .button-secondary{color:#e3d6c7;background:#30261f;border-color:#5f4d3f;grid-column:1/-1}.export-actions .button-secondary:hover{background:#3b2f27}.solidworks-note{color:#938678;margin:11px 0 0;font-size:9px;line-height:1.55}.stage{min-width:0;color:var(--ink);background:#e9e3da;grid-template-rows:52px minmax(0,1fr) 72px;display:grid;position:relative}.stage-head{background:var(--paper);border-bottom:1px solid #d6ccbf;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:0 18px;display:grid}.stage-title{white-space:nowrap;align-items:center;gap:8px;font-size:12px;font-weight:700;display:flex}.stage-summary{color:#776b60;white-space:nowrap;font-size:10px}.view-controls{background:#f5eee5;border:1px solid #d8cdbf;border-radius:9px;justify-self:center;align-items:center;display:flex;overflow:hidden;box-shadow:0 2px 8px #3b2c2012}.view-controls button{color:#6b5c50;cursor:pointer;background:0 0;border:0;border-right:1px solid #ddd2c5;min-width:38px;height:30px;padding:0 8px;font-size:9px;font-weight:700}.view-controls button:last-child{border-right:0}.view-controls button:hover{color:#9d5f20;background:#eadfd2}.view-controls button.is-active{background:var(--gold);color:#25180d}.view-controls button:focus-visible{z-index:1;outline-offset:-2px;outline:2px solid #9b5b1a;position:relative}.viewport{min-height:0;position:relative}.viewport canvas{width:100%;height:100%;display:block}.viewport-status{z-index:2;color:#5d5045;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;background:#fffaf3e8;border:1px solid #cfc3b5;border-radius:999px;align-items:center;gap:8px;max-width:calc(100% - 28px);padding:7px 11px;font-size:10px;display:flex;position:absolute;bottom:14px;left:14px;box-shadow:0 6px 20px #3b2c2018}.viewport-status i{background:#d9963c;border-radius:50%;flex:none;width:7px;height:7px}.viewport-status--loading i{animation:1s ease-in-out infinite status-pulse}.viewport-status--ready i{background:#4d9a70}.viewport-status--error{color:#8d3b32;border-color:#d6a7a1}.viewport-status--error i{background:#c65345}@keyframes status-pulse{50%{opacity:.35;transform:scale(.72)}}.metrics{background:var(--paper);border-top:1px solid #d6ccbf;grid-template-columns:repeat(3,1fr);display:grid}.metrics>div{border-right:1px solid #ded5ca;flex-direction:column;justify-content:center;padding:0 18px;display:flex}.metrics>div:last-child{border-right:0}.metrics span{color:#7d7166;font-size:9px}.metrics strong{color:#302721;margin-top:5px;font-size:11px;font-weight:700}.right-tools{z-index:8;pointer-events:none;flex-direction:row-reverse;align-items:flex-start;gap:10px;display:flex;position:absolute;top:64px;bottom:84px;right:14px}.tool-rail{pointer-events:auto;flex-direction:column;justify-content:space-between;gap:14px;width:48px;display:flex}.tool-group{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffaf3ee;border:1px solid #d0c5b8;border-radius:13px;overflow:hidden;box-shadow:0 9px 28px #35271d24}.tool-button{color:#493d34;cursor:pointer;background:0 0;border:0;border-bottom:1px solid #e0d7cc;place-items:center;width:46px;height:46px;display:grid}.tool-button:last-child{border-bottom:0}.tool-button:hover{color:#b56f24;background:#f2e8dc}.tool-button.is-active{background:var(--gold);color:#21170e}.tool-button svg{width:21px;height:21px}.tool-button-label{display:none}.tool-drawer{color:#2e251f;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);pointer-events:auto;background:#fffaf3f4;border:1px solid #d0c5b8;border-radius:15px;flex-direction:column;width:330px;max-height:100%;display:flex;overflow:hidden;box-shadow:0 12px 40px #35271d2e}.tool-drawer>header{border-bottom:1px solid #ded4c8;justify-content:space-between;align-items:center;min-height:64px;padding:12px 14px 11px 17px;display:flex}.tool-drawer>header span,.tool-drawer>header strong{display:block}.tool-drawer>header span{color:#a06c34;letter-spacing:.16em;font-size:8px;font-weight:800}.tool-drawer>header strong{margin-top:3px;font-size:15px}.tool-drawer>header button{color:#76685d;cursor:pointer;background:#efe5da;border:0;border-radius:50%;width:32px;height:32px;font-size:20px}.tool-drawer__body{min-height:0;padding:14px;overflow:auto}.tool-stack{gap:14px;display:grid}.drawer-section{background:#fffdf9;border:1px solid #dfd4c7;border-radius:12px;padding:14px}.drawer-section>strong{font-size:12px}.drawer-section>p,.tool-note{color:#87796e;margin:5px 0 11px;font-size:9px;line-height:1.55}.drawer-textarea,.drawer-input,.chat-compose input,.drawer-select select{color:#302721;background:#fff;border:1px solid #d1c3b4;border-radius:9px;outline:none;width:100%}.drawer-textarea{resize:vertical;min-height:76px;padding:10px;font-size:16px;font-weight:700}.drawer-input,.chat-compose input,.drawer-select select{min-height:39px;padding:0 10px;font-size:11px}.drawer-textarea:focus,.drawer-input:focus,.chat-compose input:focus,.drawer-select select:focus{border-color:var(--gold);box-shadow:0 0 0 3px #d9963c20}.drawer-action{background:var(--gold);color:#23170d;cursor:pointer;border:1px solid #ba782f;border-radius:9px;width:100%;min-height:38px;font-size:10px;font-weight:800}.style-grid{grid-template-columns:1fr 1fr;gap:9px;display:grid}.style-grid--single{grid-template-columns:1fr}.style-grid--single .style-card{min-height:168px}.style-grid--single .assembly-thumbnail{width:150px;height:92px}.style-card{color:#352b24;cursor:pointer;text-align:center;background:#fffdf9;border:1px solid #d4c8ba;border-radius:12px;min-height:136px;padding:10px 7px}.style-card:hover,.style-card.is-active{border-color:#c77c27;box-shadow:inset 0 0 0 1px #d9963c}.style-card strong,.style-card small{display:block}.style-card strong{margin-top:7px;font-size:10px}.style-card small{color:#8d7f72;margin-top:3px;font-size:8px;line-height:1.4}.assembly-thumbnail{filter:drop-shadow(0 5px 4px #6d5d4b26);width:116px;height:73px;margin:0 auto;display:block;overflow:visible}.assembly-thumbnail path,.assembly-thumbnail rect{vector-effect:non-scaling-stroke}.assembly-back{fill:none;stroke:#a8a29b;stroke-width:18px;stroke-linejoin:round}.assembly-back--solid{stroke:#c9c4bc;stroke-width:23px}.assembly-body{fill:none;stroke:#ded9d1;stroke-width:17px;stroke-linejoin:round}.assembly-face{fill:none;stroke:#4d70df;stroke-width:14px;stroke-linejoin:round}.assembly-cut{fill:none;stroke:#9bd800;stroke-width:2.5px}.assembly-base{fill:none;stroke:#7e7a75;stroke-width:5px}.assembly-support{fill:#8e8b87;stroke:#73706c;stroke-width:1.5px}.assembly-support--single{fill:#77736f;stroke:#5d5956}.assembly-rear-lip{fill:none;stroke:#6d7582;stroke-width:9px}.assembly-back--glow{stroke:#dbd6ce;filter:drop-shadow(0 0 6px #ffba57)}.assembly-body--solid-face{stroke:#b9b5ae;stroke-width:20px}.assembly-printed-face{fill:none;stroke:#e8e3db;stroke-width:14px}.assembly-pin{fill:#5573dc;stroke:#3856be;stroke-width:1px}.assembly-sign-body{fill:#343434;stroke:#171717;stroke-width:5px}.assembly-sign-face{fill:#fff2c7;stroke:#f5b64d;stroke-width:2px;filter:drop-shadow(0 0 6px #ffba57)}.assembly-sign-mark{fill:none;stroke:#4d70df;stroke-width:7px;stroke-linecap:round}.assembly-sign-glow{fill:none;stroke:#ffbd57;stroke-width:3px;opacity:.65}.piece-badge{color:#9e6428;border:1px solid #d7c8b8;border-radius:999px;margin-top:7px;padding:3px 7px;font-size:7px;font-weight:800;display:inline-block}.color-row{grid-column:1/-1;grid-template-columns:1fr 1fr;gap:8px;margin-top:3px;display:grid}.color-row label{border:1px solid #ddd1c4;border-radius:9px;justify-content:space-between;align-items:center;padding:8px;font-size:9px;display:flex}.color-row input{background:0 0;border:0;width:30px;height:26px;padding:0}.drawer-range{background:#fffdf9;border:1px solid #dfd4c7;border-radius:10px;padding:11px 12px;display:block}.drawer-range>span{color:#564940;justify-content:space-between;font-size:10px;display:flex}.drawer-range output{color:#b66d20;font-size:9px;font-weight:800}.drawer-range input{width:100%;accent-color:var(--gold);margin-top:8px}.drawer-select{background:#fffdf9;border:1px solid #dfd4c7;border-radius:10px;padding:10px 12px 12px;display:block}.drawer-select span{margin-bottom:7px;font-size:10px;display:block}.layer-list,.preset-list,.tutorial-list{gap:9px;display:grid}.assembly-summary{background:#efe4d8;border:1px solid #d7cabd;border-radius:10px;justify-content:space-between;align-items:center;padding:11px 12px;display:flex}.assembly-summary strong{font-size:10px}.assembly-summary span{color:#a26528;font-size:9px;font-weight:800}.layer-row{cursor:pointer;background:#fffdf9;border:1px solid #ded3c6;border-radius:11px;grid-template-columns:12px 1fr auto;align-items:center;gap:10px;padding:12px;display:grid}.layer-row i{border-radius:5px;width:12px;height:36px;box-shadow:inset 0 0 0 1px #0002}.layer-row strong,.layer-row small{display:block}.layer-row strong{font-size:11px}.layer-row small{color:#8b7d71;margin-top:3px;font-size:9px}.layer-row input{width:17px;height:17px;accent-color:var(--gold)}.preset-row{background:#fffdf9;border:1px solid #ded3c6;border-radius:10px;grid-template-columns:1fr auto auto;align-items:center;gap:6px;padding:10px;display:grid}.preset-row strong,.preset-row small{display:block}.preset-row strong{font-size:10px}.preset-row small{color:#8d7f73;margin-top:3px;font-size:8px}.preset-row button{cursor:pointer;background:#e9ddd0;border:0;border-radius:6px;padding:6px 8px;font-size:8px;font-weight:700}.preset-row button.danger{color:#9b4339}.empty-state{color:#918377;text-align:center;padding:25px 12px;font-size:10px}.tutorial-list article{background:#fffdf9;border:1px solid #ded3c6;border-radius:11px;grid-template-columns:34px 1fr;align-items:center;gap:10px;padding:12px;display:grid}.tutorial-list article>span{color:#ad6a27;background:#f0e1d0;border-radius:50%;place-items:center;width:34px;height:34px;font-size:10px;font-weight:800;display:grid}.tutorial-list strong,.tutorial-list small{display:block}.tutorial-list strong{font-size:10px}.tutorial-list small{color:#8c7e72;margin-top:3px;font-size:8px}.faq details{border-top:1px solid #e3d9ce;padding:9px 0}.faq details:first-child{border-top:0}.faq summary{cursor:pointer;font-size:10px;font-weight:700}.faq p{color:#76695f;font-size:9px;line-height:1.55}.chat-box{grid-template-rows:minmax(230px,1fr) auto;gap:10px;min-height:330px;display:grid}.chat-messages{background:#f7f0e8;border:1px solid #ded3c6;border-radius:12px;padding:10px;overflow:auto}.chat-messages p{background:#fff;border-radius:10px 10px 10px 3px;max-width:84%;margin:0 0 8px;padding:8px 10px;font-size:9px;line-height:1.5}.chat-messages p.is-user{color:#24180d;background:#d9963c;border-radius:10px 10px 3px;margin-left:auto}.chat-compose{grid-template-columns:1fr auto;gap:7px;display:grid}.chat-compose button{background:var(--gold);cursor:pointer;border:0;border-radius:8px;padding:0 13px;font-size:9px;font-weight:800}.tool-drawer .export-panel{background:#29211c;border-color:#ded3c6;margin-top:0}@media (max-width:820px){.controls{border-right:0;order:2}.stage{order:1;height:72vh;min-height:520px}.build-status{display:none}.product-tabs{margin-left:auto}.product-tabs button{min-width:68px;padding:0 10px}.metrics strong{font-size:9px}.right-tools{top:62px;bottom:78px;right:8px}.tool-drawer{width:min(320px,100vw - 74px)}.stage-head{grid-template-columns:auto minmax(0,1fr);gap:8px;padding:0 10px}.stage-summary{display:none}.view-controls{justify-self:end;max-width:100%;overflow-x:auto}.view-controls button{min-width:34px;padding:0 6px;font-size:8px}.topbar{z-index:30;gap:9px;height:60px;padding:0 12px;position:sticky;top:0;box-shadow:0 4px 18px #0d090755}.brand-mark{flex:none;width:38px;height:38px}.brand-mark img{width:56px;height:56px;transform:translate(-9px,-4px)scale(1.2)}.brand-copy strong{font-size:14px}.brand-copy span{font-size:7px}.product-tabs{border-radius:10px;margin-left:auto;padding:3px}.product-tabs button{min-width:72px;height:36px;padding:0 10px;font-size:11px}.workspace{flex-direction:column;height:auto;display:flex}.stage{border-bottom:1px solid #cfc2b4;order:1;grid-template-rows:78px minmax(0,1fr);height:min(650px,100svh - 60px);min-height:510px}.stage-head{grid-template-rows:auto auto;grid-template-columns:minmax(0,1fr);gap:6px;padding:7px 10px 8px}.stage-title{justify-content:center;font-size:11px}.view-controls{scrollbar-width:none;overscroll-behavior-x:contain;justify-self:stretch;width:100%;max-width:none;overflow-x:auto}.view-controls::-webkit-scrollbar{display:none}.view-controls button{flex:1 0 40px;min-width:44px;height:34px;padding:0 7px;font-size:9px}.metrics{display:none}.viewport-status{max-width:none;font-size:9px;bottom:62px;left:10px;right:10px}.right-tools{z-index:12;flex-direction:column-reverse;align-items:stretch;gap:8px;width:auto;max-height:calc(100% - 94px);inset:auto 8px 8px}.tool-rail{scrollbar-width:none;overscroll-behavior-x:contain;pointer-events:auto;flex-direction:row;justify-content:flex-start;gap:7px;width:100%;min-height:48px;overflow:auto hidden}.tool-rail::-webkit-scrollbar{display:none}.tool-group{border-radius:12px;flex:none;display:flex}.tool-button{touch-action:manipulation;border-bottom:0;border-right:1px solid #e0d7cc;flex-direction:column;flex:0 0 58px;justify-content:center;align-items:center;gap:2px;width:58px;height:54px;display:flex}.tool-button:last-child{border-right:0}.tool-button svg{width:21px;height:21px}.tool-button-label{white-space:nowrap;font-size:7px;line-height:1;display:block}.tool-drawer{border-radius:16px;width:100%;max-height:min(62vh,490px);box-shadow:0 -8px 35px #35271d40}.tool-drawer>header{min-height:56px}.tool-drawer>header button{width:40px;height:40px}.tool-drawer__body{padding:12px}.style-card{min-height:145px}.style-grid--single .style-card{min-height:160px}.drawer-range{padding:13px 12px}.drawer-range input{min-height:24px}.drawer-action{min-height:44px}.controls{padding:24px 18px max(42px, env(safe-area-inset-bottom));border-right:0;order:2;overflow:visible}.controls h1{font-size:22px}.subhead{margin-bottom:18px}.controls label{margin-top:17px}.controls textarea{min-height:72px;font-size:17px}.font-field select{min-height:48px}.range-field input{min-height:26px}.foundation-card,.export-panel{border-radius:14px}.export-actions button{min-height:44px}}@media (max-width:520px){.brand-copy{display:none}.product-tabs button{min-width:70px}.stage{height:min(620px,100svh - 60px);min-height:500px}.style-grid{grid-template-columns:1fr 1fr;gap:8px}.style-card{padding:8px 5px}.assembly-thumbnail{width:108px}}@media (max-width:370px){.topbar{padding-inline:9px}.product-tabs button{min-width:63px;padding-inline:7px;font-size:10px}.style-grid{grid-template-columns:1fr}.style-card{min-height:150px}.export-actions{grid-template-columns:1fr}.export-actions .button-secondary{grid-column:1}}
