:root{--bg: #f6efe4;--panel: rgba(251, 247, 240, .94);--panel-solid: #fbf7f0;--ink: #3a2e26;--ink-2: #6f6057;--line: #e4d8c7;--accent: #b5793f;--accent-2: #d9a76a;--accent-ink: #fff;--ok: #3f8f63;--bad: #c7493f;--warn: #c98a2b;--radius: 14px;--shadow: 0 10px 30px rgba(60, 40, 20, .16);--font: "Noto Sans Thai", "Sarabun", system-ui, -apple-system, Segoe UI, Roboto, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font);color:var(--ink);background:#2b2420;overflow:hidden;-webkit-tap-highlight-color:transparent;font-size:14px}button,input,select{font-family:inherit;font-size:inherit;color:inherit}button{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:10px;padding:6px 10px;transition:background .15s,border-color .15s,transform .1s}button:hover{background:#fff8ec;border-color:var(--accent-2)}button:active{transform:translateY(1px)}button:disabled{opacity:.45;cursor:default}button.on{background:var(--accent);color:#fff;border-color:var(--accent)}input[type=text],input:not([type]),select{border:1px solid var(--line);border-radius:10px;padding:7px 10px;background:#fff;width:100%}input[type=range]{width:100%;accent-color:var(--accent)}input[type=color]{width:36px;height:30px;border:1px solid var(--line);border-radius:8px;padding:2px;background:#fff}h3,h4{margin:0;font-weight:600}h4{font-size:13px;color:var(--ink-2);margin:10px 0 6px;letter-spacing:.2px}small{color:var(--ink-2);font-size:12px}.row{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.kv{display:flex;justify-content:space-between;gap:8px;font-size:13px;padding:3px 0}.kv span{color:var(--ink-2)}.hint{font-size:12px;color:var(--ink-2);margin:6px 0;line-height:1.5}.empty{color:var(--ink-2);text-align:center;padding:20px;font-size:13px}.btn{padding:8px 12px;border-radius:10px;font-weight:500}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{background:#a46a33}.btn.ghost{background:transparent}.btn.danger{color:var(--bad);border-color:#efc9c5}.btn.danger:hover{background:#fff1ef}.btn.tiny{padding:4px 8px;font-size:12px;border-radius:8px}.btn.big{padding:14px 18px;font-size:16px;border-radius:14px;text-align:left}.chk{display:flex;align-items:center;gap:6px;font-size:13px}.app{position:fixed;top:0;right:0;bottom:0;left:0}.viewport{position:absolute;top:0;right:0;bottom:0;left:0}.viewport canvas{display:block;touch-action:none}.topbar{position:absolute;top:10px;left:10px;right:10px;display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);z-index:20;flex-wrap:wrap}.brand{display:flex;align-items:center;gap:8px;cursor:pointer;padding-right:8px;border-right:1px solid var(--line)}.brand .logo,.menu-brand .logo{font-size:22px;color:var(--accent)}.brand b{display:block;font-size:14px;line-height:1.1}.brand small{display:block;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff}.seg button{border:0;border-radius:0;padding:6px 10px;background:transparent}.seg button+button{border-left:1px solid var(--line)}.seg button.on{background:var(--accent);color:#fff}.seg.icons button{min-width:34px;font-size:15px}.time{display:flex;flex-direction:column;gap:0;width:150px;font-size:12px}.time span{white-space:nowrap}.time input{margin:0}.budget{margin-left:auto;text-align:right;line-height:1.1;padding:2px 10px;border-radius:10px;cursor:pointer}.budget:hover{background:#fff8ec}.budget b{display:block;font-size:16px;color:var(--accent)}.budget.over b{color:var(--bad)}.mode-badge{position:absolute;top:66px;left:12px;background:var(--warn);color:#fff;padding:4px 10px;border-radius:999px;font-size:12px;z-index:19;cursor:pointer;box-shadow:var(--shadow)}.sidebar{position:absolute;top:70px;right:10px;bottom:10px;width:380px;display:flex;z-index:18;pointer-events:none}.sidebar .tabs{display:flex;flex-direction:column;gap:4px;pointer-events:auto;margin-right:6px}.sidebar .tabs button{width:56px;height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;background:var(--panel);border-radius:12px;box-shadow:var(--shadow)}.sidebar .tabs button span{font-size:17px}.sidebar .tabs button.on{background:var(--accent);color:#fff;border-color:var(--accent)}.panel-wrap{flex:1;min-width:0;background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden;display:none;pointer-events:auto}.sidebar.open .panel-wrap{display:block}.panel{height:100%;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px;scrollbar-width:thin}.panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px;border-bottom:1px solid var(--line);padding-bottom:8px}.panel section{border-top:1px dashed var(--line);padding-top:4px}.filters{display:flex;flex-direction:column;gap:6px}.filters .row>*{flex:1;min-width:0}.chips{display:flex;gap:4px;flex-wrap:wrap}.chips button{padding:3px 9px;font-size:12px;border-radius:999px}.chips.small button{font-size:11px;border-width:2px}.ranges label{font-size:12px;color:var(--ink-2);display:flex;flex-direction:column}.items{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.item-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;text-align:left;padding:10px;gap:2px;border-radius:12px;min-height:100px}.item-card .ico{font-size:26px}.item-card .nm{font-weight:600;font-size:13px;line-height:1.25}.item-card .meta{font-size:11px;color:var(--ink-2)}.item-card .price{font-weight:600;color:var(--accent);font-size:13px;margin-top:auto}.item-card.placing{background:#e9f6ee;border-color:var(--ok);box-shadow:0 0 0 2px #cfe9d8}.item-card .offstyle{position:absolute;top:8px;right:8px;font-size:10px;background:#f1e9dd;color:var(--ink-2);padding:1px 6px;border-radius:999px}.minimap{background:#fff;border:1px solid var(--line);border-radius:12px;padding:6px}.minimap svg{width:100%;aspect-ratio:26 / 20;display:block}.minimap.compact svg{aspect-ratio:26 / 20}.mm-room rect{fill:#efe6d6;stroke:#a08f78;stroke-width:.08;cursor:pointer;transition:fill .15s}.mm-room.outdoor rect{fill:#dde8d2}.mm-room:hover rect{fill:#f8e8cf}.mm-room.active rect{fill:var(--accent-2);stroke:var(--accent);stroke-width:.14}.mm-room text{fill:var(--ink);font-size:.75px;pointer-events:none;font-weight:600}.mm-room text.cnt{fill:var(--accent);font-weight:700}.mm-title{fill:var(--ink-2);font-weight:600}.mm-floors{display:flex;gap:4px;justify-content:center;margin-top:4px}.mm-floors button{padding:3px 12px;font-size:12px;border-radius:999px}.room-info h4{color:var(--ink);font-size:15px;margin:6px 0 2px}.mat-picker{margin:6px 0}.mat-picker .lbl{font-size:12px;color:var(--ink-2);margin-bottom:4px}.swatches{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.sw{width:24px;height:24px;border-radius:7px;border:2px solid #fff;box-shadow:0 0 0 1px var(--line);padding:0}.sw.on{box-shadow:0 0 0 2px var(--accent);transform:scale(1.08)}.styles{display:grid;grid-template-columns:1fr 1fr;gap:6px}.style-card{border:1px solid var(--line);background:#fff;border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:3px;text-align:left}.style-card.on{border-color:var(--accent);box-shadow:0 0 0 2px #f1dcbf}.style-card small{font-size:11px;line-height:1.3}.inspector{position:absolute;left:10px;bottom:10px;width:340px;max-height:60vh;overflow-y:auto;background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:12px;z-index:18;display:flex;flex-direction:column;gap:8px}.insp-head{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.insp-head b{font-size:15px;display:block}.insp-head .x{border:0;background:transparent;font-size:16px}.tools{display:flex;gap:10px;align-items:flex-start}.tools .grp{display:flex;flex-direction:column;gap:4px}.dpad{display:flex;flex-direction:column;align-items:center;gap:2px}.dpad button{width:34px;height:28px;padding:0}.dpad div{display:flex;gap:36px}.color-row{margin:4px 0}.color-row small{display:block;margin-bottom:3px}.actions{justify-content:space-between}.total-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}.total-card>b{font-size:24px;color:var(--accent)}.bar{position:relative;height:22px;background:#efe6d6;border-radius:999px;overflow:hidden;font-size:11px}.bar i{position:absolute;left:0;top:0;bottom:0;background:linear-gradient(90deg,#7fc9a0,#3f8f63);border-radius:999px;transition:width .3s}.bar.over i{background:linear-gradient(90deg,#e8907f,var(--bad))}.bar span{position:relative;display:block;line-height:22px;text-align:center;font-weight:600;color:var(--ink)}.room-cost{background:#fff;border:1px solid var(--line);border-radius:10px;padding:0 10px}.room-cost summary{position:relative;display:flex;justify-content:space-between;padding:8px 0;cursor:pointer;list-style:none;font-size:13px}.room-cost summary i{position:absolute;left:0;bottom:2px;height:3px;background:var(--accent-2);border-radius:2px}.room-cost ul{list-style:none;margin:0;padding:0 0 8px;font-size:12px}.room-cost li{display:flex;justify-content:space-between;padding:2px 0;color:var(--ink-2)}.save-form{display:flex;flex-direction:column;gap:6px}.save-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.save-list li{display:flex;justify-content:space-between;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 10px}.save-list li.current{border-color:var(--accent)}.save-list .meta{display:flex;flex-direction:column;min-width:0}.save-list .meta b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.contract-list{display:flex;flex-direction:column;gap:8px}.contract-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:2px;text-align:left;padding:12px;border-radius:12px}.contract-card .scope{position:absolute;right:10px;top:10px;font-size:11px;background:#f1e9dd;padding:1px 8px;border-radius:999px}.contract-card b{font-size:14px;padding-right:80px}.contract-card .life{font-size:11px;line-height:1.3}.contract-card .bud{color:var(--accent);font-weight:600;margin-top:4px}.brief{font-style:italic;color:var(--ink-2);margin:4px 0;line-height:1.5}.needs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.needs li{display:flex;align-items:center;gap:8px;padding:6px 8px;background:#fff;border:1px solid var(--line);border-radius:10px;cursor:pointer;font-size:13px}.needs li span:nth-child(2){flex:1;display:flex;flex-direction:column}.needs li small{font-size:11px}.needs li .ck{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#eee5d7;font-size:12px}.needs li.ok{border-color:#cfe9d8}.needs li.ok .ck{background:var(--ok);color:#fff}.eval{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px;margin-top:6px}.eval .score{display:flex;align-items:baseline;gap:4px}.eval .score b{font-size:42px;color:var(--accent);line-height:1}.eval .grade{margin-left:auto;font-size:28px;font-weight:700;padding:2px 14px;border-radius:10px;background:#f1e9dd}.eval.grade-A .grade{background:#dff3e6;color:var(--ok)}.eval.grade-F .grade,.eval.grade-D .grade{background:#fbe3e0;color:var(--bad)}.eval .parts,.eval .advice,.eval .rooms{list-style:none;margin:0;padding:0;font-size:13px}.eval .parts li{display:flex;justify-content:space-between;padding:2px 0}.eval .advice li{padding:4px 0 4px 18px;position:relative;line-height:1.4}.eval .advice li:before{content:"•";position:absolute;left:6px;color:var(--accent)}.eval .rooms li{display:flex;flex-direction:column;padding:3px 0}.help ul{margin:4px 0;padding-left:18px;font-size:13px;line-height:1.6}.placing-bar{position:absolute;left:50%;transform:translate(-50%);bottom:24px;display:flex;gap:10px;align-items:center;padding:8px 14px;background:var(--panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--line);border-radius:999px;box-shadow:var(--shadow);z-index:19;max-width:calc(100vw - 20px);font-size:13px}.placing-bar.ok{border-color:#9fd6b8}.placing-bar.bad{border-color:#efb3ad}.placing-bar.bad span{color:var(--bad)}.toast{position:absolute;left:50%;bottom:24px;transform:translate(-50%);background:#3a2e26;color:#fff;padding:10px 16px;border-radius:999px;z-index:50;font-size:13px;box-shadow:var(--shadow);animation:pop .2s ease-out}.toast.err{background:var(--bad)}.toast.ok{background:var(--ok)}.toast.warn{background:var(--warn)}@keyframes pop{0%{transform:translate(-50%) translateY(10px);opacity:0}}.floating-map{position:absolute;right:76px;bottom:10px;width:230px;z-index:17;opacity:.92}.room-tag{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:4px 8px;display:flex;flex-direction:column;align-items:center;line-height:1.2;white-space:nowrap;box-shadow:var(--shadow)}.room-tag b{font-size:12px}.room-tag span{font-size:10px;color:var(--ink-2)}.room-tag.active{background:var(--accent);color:#fff;border-color:var(--accent)}.room-tag.active span{color:#fff6e8}.dim-tag{background:#3a2e26d9;color:#fff;font-size:11px;padding:3px 7px;border-radius:8px;white-space:nowrap;text-align:center;line-height:1.3}.dim-tag span{color:#f0d8b8}.dim-tag.sel{background:var(--accent)}.clear-tag{background:#ffffffe6;color:var(--ink);font-size:11px;padding:2px 6px;border-radius:6px;white-space:nowrap;border:1px solid #9fd6b8}.clear-tag.tight{border-color:var(--bad);color:var(--bad)}.walk-hud{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:15}.walk-top{position:absolute;bottom:24px;left:50%;transform:translate(-50%);display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:6px 14px;font-size:12px;pointer-events:auto;box-shadow:var(--shadow);max-width:calc(100vw - 20px)}.stick{position:absolute;left:30px;bottom:40px;width:120px;height:120px;border-radius:50%;background:#ffffff40;border:2px solid rgba(255,255,255,.5);pointer-events:auto;touch-action:none;display:grid;place-items:center}.stick .knob{width:50px;height:50px;border-radius:50%;background:#ffffffd9;box-shadow:var(--shadow)}.stick small{position:absolute;bottom:-20px;color:#fff;text-shadow:0 1px 3px #000}.look-pad{position:absolute;right:0;top:120px;bottom:0;width:55%;pointer-events:auto;touch-action:none}.walk-btns{position:absolute;right:20px;bottom:50px;pointer-events:auto}.app.walking .viewport canvas{cursor:crosshair}.photo-hud{position:absolute;bottom:20px;left:50%;transform:translate(-50%);display:flex;gap:8px;z-index:30}.menu{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:radial-gradient(ellipse at 30% 20%,rgba(255,230,200,.35),transparent 50%),#281e188c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:40;padding:16px;overflow:auto}.menu-card{width:min(640px,100%);background:var(--panel-solid);border-radius:22px;box-shadow:0 30px 80px #0006;padding:28px;display:flex;flex-direction:column;gap:16px;max-height:100%;overflow:auto}.menu-brand{text-align:center}.menu-brand .logo{font-size:42px}.menu-brand h1{margin:4px 0;font-weight:700;letter-spacing:.5px}.menu-brand p{color:var(--ink-2);margin:0;line-height:1.5}.menu-actions{display:flex;flex-direction:column;gap:8px}.menu-new,.menu-contract{display:flex;flex-direction:column;gap:10px}.menu-new label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--ink-2)}.menu-new .styles{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}@media (max-width: 900px){body{font-size:13px}.topbar{left:6px;right:6px;top:6px;gap:5px;padding:5px 6px}.brand small,.brand b,.time,.budget small{display:none}.brand{padding-right:4px}.seg button{padding:5px 7px}.seg.toggles button{min-width:28px;padding:5px 4px;font-size:13px}.seg.icons:last-child button:nth-child(3),.seg.icons:last-child button:nth-child(4){display:none}.budget b{font-size:14px}.toast{bottom:140px}.mode-badge{top:100px}.sidebar{top:auto;left:6px;right:6px;bottom:6px;width:auto;flex-direction:column-reverse;max-height:58vh}.sidebar .tabs{flex-direction:row;justify-content:space-between;margin:6px 0 0}.sidebar .tabs button{flex:1;height:48px;width:auto;font-size:10px}.panel-wrap{max-height:50vh}.items{grid-template-columns:repeat(2,1fr)}.inspector{left:6px;right:6px;width:auto;bottom:66px;max-height:45vh}.app.has-sel .sidebar .panel-wrap{display:none}.floating-map{right:6px;bottom:66px;width:170px}.placing-bar{bottom:70px;flex-wrap:wrap;justify-content:center;border-radius:14px}.walk-top{bottom:150px;font-size:11px}.styles{grid-template-columns:1fr}}@media (max-width: 480px){.items{grid-template-columns:1fr 1fr}}
