:root{color-scheme:dark;--bg:#070b12;--panel:#0f1726;--panel2:#151f31;--line:#263247;--text:#f4f7fb;--muted:#93a3ba;--accent:#67e8f9;--accent2:#38bdf8;--danger:#fb7185;--safe-top:env(safe-area-inset-top);--safe-bottom:env(safe-area-inset-bottom)}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;width:100%;height:100%;background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Noto Sans Thai",Arial,sans-serif;color:var(--text);overscroll-behavior:none}body{overflow:hidden}button,select,input{font:inherit}button{cursor:pointer;color:inherit}.hidden{display:none!important}
#app{height:100dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#0b1220 0%,#070b12 100%)}
.topbar{height:calc(62px + var(--safe-top));padding:var(--safe-top) 14px 0;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(255,255,255,.07);background:rgba(7,11,18,.9);backdrop-filter:blur(16px);z-index:10}.brand{display:flex;align-items:center;gap:10px}.brandmark{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;font-weight:900;background:linear-gradient(135deg,var(--accent2),#8b5cf6);box-shadow:0 7px 25px rgba(56,189,248,.2)}.brandtext{display:flex;flex-direction:column;line-height:1.05}.brandtext b{font-size:15px}.brandtext small{font-size:10px;color:var(--muted);margin-top:4px}.top-actions{display:flex;gap:8px}.primary,.secondary,.icon-btn{border:1px solid transparent;border-radius:12px;min-height:40px;font-weight:800}.primary{background:linear-gradient(135deg,var(--accent2),#2563eb);padding:0 15px}.secondary{background:var(--panel2);border-color:var(--line);padding:0 14px}.icon-btn{width:40px;background:var(--panel2);border-color:var(--line);font-size:22px}
main{height:calc(100dvh - 62px - var(--safe-top));display:grid;grid-template-rows:minmax(220px,1fr) 64px minmax(164px,31vh);overflow:hidden}.viewer-wrap{position:relative;min-height:0;overflow:hidden;background:radial-gradient(circle at 50% 40%,#17243a 0,#0b1220 42%,#070b12 100%)}#viewer{position:absolute;inset:0;touch-action:none}#viewer canvas{width:100%;height:100%;display:block;touch-action:none}.empty-state{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none;padding:24px}.cube{font-size:50px;color:var(--accent);filter:drop-shadow(0 0 16px rgba(103,232,249,.35))}.empty-state h1{font-size:22px;margin:6px 0}.empty-state p{margin:0 0 14px;color:var(--muted)}.chips{display:flex;gap:6px}.chips span,.badge{font-size:11px;font-weight:800;border:1px solid var(--line);background:rgba(15,23,38,.78);border-radius:999px;padding:5px 8px;color:#c9d8eb}.loading{position:absolute;inset:0;display:flex;flex-direction:column;gap:7px;align-items:center;justify-content:center;background:rgba(7,11,18,.74);backdrop-filter:blur(8px);z-index:6}.spinner{width:34px;height:34px;border:3px solid #334155;border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading small{color:var(--muted)}.hud{position:absolute;left:10px;top:10px;max-width:74%;display:flex;flex-direction:column;gap:3px;padding:7px 9px;border:1px solid rgba(255,255,255,.08);border-radius:10px;background:rgba(7,11,18,.6);backdrop-filter:blur(10px);font-size:10px;pointer-events:none}.hud div:first-child{font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hud div:last-child{color:var(--muted)}.view-pills{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);display:flex;gap:5px;padding:5px;border:1px solid rgba(255,255,255,.08);border-radius:14px;background:rgba(7,11,18,.66);backdrop-filter:blur(12px);max-width:calc(100% - 18px);overflow-x:auto}.view-pills button{border:0;border-radius:9px;background:transparent;color:#cbd5e1;height:32px;min-width:44px;padding:0 10px;font-size:11px;font-weight:800;white-space:nowrap}.view-pills button.active{background:#26364f;color:white}
.tabs{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#0b1220}.tabs button{border:0;background:transparent;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.tabs button span{font-size:20px;line-height:1}.tabs button small{font-size:10px;font-weight:700}.tabs button.active{color:var(--accent)}
.sheet{min-height:0;overflow:auto;padding:8px 14px calc(10px + var(--safe-bottom));background:var(--panel)}.sheet-handle{width:34px;height:4px;background:#334155;border-radius:999px;margin:0 auto 8px}.tabpane{display:none}.tabpane.active{display:block}.sheet-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.sheet-title>b{font-size:14px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.stats-grid>div{min-width:0;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:8px}.stats-grid small{display:block;color:var(--muted);font-size:9px;margin-bottom:3px}.stats-grid b{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.note{color:var(--muted);font-size:10px;line-height:1.45;margin:9px 1px 0}.setting{display:flex;align-items:center;justify-content:space-between;min-height:42px;border-bottom:1px solid rgba(255,255,255,.06);font-size:12px}.setting select{background:var(--panel2);color:var(--text);border:1px solid var(--line);border-radius:9px;padding:6px 8px}.setting input[type=range]{width:48%}.switchrow input{width:20px;height:20px;accent-color:var(--accent2)}.measure-box{padding:11px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);font-size:15px;font-weight:800;margin-bottom:9px}.action-row,.action-grid{display:grid;gap:8px}.action-row{grid-template-columns:1fr 1fr}.action-grid{grid-template-columns:1fr 1fr}.action-grid button,.action-row button{min-height:42px}.grow{width:100%}.full{width:100%}
.toast{position:fixed;left:50%;bottom:calc(12px + var(--safe-bottom));transform:translateX(-50%);z-index:40;max-width:90%;padding:10px 14px;border-radius:12px;background:#111c2d;border:1px solid #30405a;box-shadow:0 15px 40px rgba(0,0,0,.35);font-size:12px;font-weight:800;text-align:center}.modal{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.62);backdrop-filter:blur(8px);display:grid;place-items:end center;padding:14px 14px calc(14px + var(--safe-bottom))}.modal-card{position:relative;width:min(100%,480px);border:1px solid var(--line);border-radius:20px;background:#101827;padding:20px;box-shadow:0 22px 80px rgba(0,0,0,.5)}.modal-card h2{margin:0 0 12px}.modal-card ol{padding-left:22px;line-height:1.8;color:#d6e2f2}.modal-card p{color:var(--muted);font-size:12px}.modal-close{position:absolute;right:12px;top:10px;width:34px;height:34px;border:0;border-radius:50%;background:#1e293b;font-size:22px}
@media(min-width:700px){main{grid-template-columns:minmax(0,1fr) 330px;grid-template-rows:minmax(0,1fr) 64px}.viewer-wrap{grid-row:1/3}.tabs{grid-column:2}.sheet{grid-column:2;grid-row:1;padding-top:16px}.sheet-handle{display:none}.topbar{padding-left:20px;padding-right:20px}}

/* Standalone 2D inspection overlay (DXF + PDF-compatible Illustrator). */
.cad2d-stage{display:none;position:absolute;inset:0;z-index:5;background:#0b1220;color:#e9edf6;overflow:hidden;touch-action:none}
.cad2d-viewport{position:absolute;inset:0;overflow:hidden;pointer-events:none}
.cad2d-surface{position:absolute;left:50%;top:50%;transform-origin:center;pointer-events:none;will-change:transform}
.cad-dxf-svg{width:100%;height:100%;display:block;overflow:visible}
.cad-ai-canvas{width:100%;height:100%;display:block;background:white}
.cad2d-tools{position:absolute;right:10px;bottom:54px;display:flex;gap:5px;flex-wrap:wrap;max-width:95%;z-index:6}
.cad2d-tools button{color:#dbf8ff;background:#1b3040;border:1px solid #38576b;padding:8px 10px;border-radius:8px;font-size:12px;min-width:38px;box-shadow:0 2px 12px #0005}
.cad2d-caption{position:absolute;bottom:8px;left:10px;right:10px;max-height:36px;overflow:auto;font-size:10px;line-height:1.3;background:#101d29dc;padding:7px;border:1px solid #405465;border-radius:6px;pointer-events:none}
.cad2d-layer-panel{position:absolute;top:10px;right:10px;z-index:7;min-width:170px;width:55%;max-width:260px;max-height:52%;overflow:auto;background:#101e2cf5;border:1px solid #4a6676;border-radius:10px;padding:12px;box-shadow:0 6px 20px #0009;font-size:12px}
.cad2d-layer-panel strong{display:block;margin-bottom:10px;font-size:11px;color:#75e6ef}
.cad2d-layer-list{display:grid;gap:8px}
.cad-layer-row{display:flex;align-items:center;gap:9px;word-break:break-word}
.cad-layer-row input{width:17px;height:17px;accent-color:#4ddee9}
.cad2d-layer-panel.hidden{display:none}
.inspection-2d .view-pills{display:none}
.inspection-2d [data-pane="view"] .setting{display:none}
@media(max-width:410px){.cad2d-caption{font-size:9px;max-height:41px}.cad2d-tools{bottom:65px}}

.file-error{position:fixed;z-index:45;bottom:calc(12px + env(safe-area-inset-bottom));left:12px;right:12px;max-width:640px;margin:0 auto;color:#ffe0e5;background:#301922;border:1px solid #fb7185;border-radius:14px;padding:15px;box-shadow:0 12px 40px #000a}
.file-error strong{font-size:15px}.file-error p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.5;font-size:12px;margin:8px 0 12px}
.file-error-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.file-error-actions span{font-size:10px;color:#f6bac4}
