:root{--paper:#f6f7f9;--card:#fff;--ink:#1b1f24;--ink-2:#5b6470;--steel:#8a929c;--hair:#dfe2e7;--hair-2:#eceef1;--blue:#1f5fae;--blue-soft:#eaf1fa;--amber:#b45309;--amber-soft:#fdf3e3;--cyan:#0e7490;--cyan-faint:#dceef2;--grid:#c9dde4;--ok:#15803d;--warn:#b45309;--shadow:0 1px 2px #141e2d0d, 0 8px 24px #141e2d0f;--mono:"IBM Plex Mono", ui-monospace, monospace;--thai:"IBM Plex Sans Thai", "IBM Plex Sans", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--paper);color:var(--ink);font-family:var(--thai);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}.wrap{max-width:1180px;margin:0 auto;padding:22px 20px 60px}header.app{border-bottom:2px solid var(--ink);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:18px;margin-bottom:22px;padding-bottom:14px;display:flex}.titleblock h1{font-family:var(--thai);letter-spacing:-.2px;margin:0;font-size:22px;font-weight:700}.titleblock .sub{color:var(--ink-2);margin-top:3px;font-size:12.5px}.titleblock .tag{font-family:var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--cyan);border:1px solid var(--cyan);border-radius:3px;margin-top:9px;padding:2px 7px;font-size:10.5px;display:inline-block}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}button.tool{font-family:var(--thai);cursor:pointer;background:var(--card);color:var(--ink);border:1px solid var(--hair);box-shadow:var(--shadow);border-radius:7px;align-items:center;gap:6px;padding:8px 13px;font-size:12.5px;font-weight:500;transition:all .12s;display:inline-flex}button.tool:hover{border-color:var(--steel)}button.tool.primary{background:var(--ink);color:#fff;border-color:var(--ink)}button.tool.primary:hover{background:#000}button.tool svg{flex:none;width:15px;height:15px}.grid{grid-template-columns:minmax(0,1fr) minmax(0,1.02fr);align-items:start;gap:22px;display:grid}@media (width<=919px){.grid{grid-template-columns:1fr}}.panel{background:var(--card);border:1px solid var(--hair);box-shadow:var(--shadow);border-radius:12px;margin-bottom:18px;overflow:hidden}.panel>.head{border-bottom:1px solid var(--hair-2);align-items:center;gap:9px;padding:13px 16px 11px;display:flex}.panel>.head .n{font-family:var(--mono);color:var(--blue);border:1px solid var(--blue);border-radius:50%;flex:none;place-items:center;width:22px;height:22px;font-size:11px;font-weight:600;display:grid}.panel>.head h2{margin:0;font-size:14.5px;font-weight:600}.panel>.head .hint{color:var(--steel);margin-left:auto;font-size:11.5px}.panel .body{padding:14px 16px 16px}.row{grid-template-columns:1fr 1fr;gap:11px 13px;display:grid}.row.three{grid-template-columns:1fr 1fr 1fr}.row.full{grid-template-columns:1fr}@media (width<=480px){.row,.row.three{grid-template-columns:1fr 1fr}}.field{flex-direction:column;gap:4px;display:flex}.field.span2{grid-column:span 2}label{color:var(--ink-2);align-items:center;gap:5px;font-size:12px;font-weight:500;display:flex}.unit-tag{font-family:var(--mono);color:var(--steel);margin-left:auto;font-size:10px}input[type=number],input[type=text],select{font-family:var(--mono);color:var(--ink);border:1px solid var(--hair);background:#fff;border-radius:7px;width:100%;padding:8px 10px;font-size:13.5px;transition:border-color .12s,box-shadow .12s}select{font-family:var(--thai);font-size:13px}input:focus,select:focus{border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-soft);outline:none}input.calc{background:var(--hair-2);color:var(--ink-2);border-style:dashed}.seg{border:1px solid var(--hair);border-radius:7px;display:flex;overflow:hidden}.seg button{font-family:var(--thai);cursor:pointer;color:var(--ink-2);border:0;border-right:1px solid var(--hair);background:#fff;flex:1;padding:7px 4px;font-size:12px}.seg button:last-child{border-right:0}.seg button.on{background:var(--blue);color:#fff;font-weight:600}.check{color:var(--ink);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-size:12.5px;display:flex}.check input{width:16px;height:16px;accent-color:var(--blue);cursor:pointer}.member-sub{color:var(--steel);align-items:center;gap:8px;margin:14px 0 8px;font-size:11px;display:flex}.member-sub:before{content:"";background:var(--steel);width:14px;height:2px;display:inline-block}.total-card{background:linear-gradient(180deg, #fff, var(--amber-soft));box-shadow:var(--shadow);border:1px solid #f0d8ae;border-radius:12px;margin-bottom:18px;padding:18px 20px}.total-card .lbl{color:var(--amber);letter-spacing:.02em;font-size:12px;font-weight:600}.total-card .big{font-family:var(--mono);color:var(--ink);letter-spacing:-1px;margin:4px 0 2px;font-size:40px;font-weight:600;line-height:1.05}.total-card .big small{color:var(--ink-2);margin-left:4px;font-size:16px;font-weight:500}.total-card .perm2{font-family:var(--mono);color:var(--ink-2);font-size:12.5px}.total-card .perm2 b{color:var(--ink)}.stat-grid{background:var(--hair);border:1px solid var(--hair);border-radius:10px;grid-template-columns:1fr 1fr 1fr;gap:1px;margin-bottom:18px;display:grid;overflow:hidden}@media (width<=480px){.stat-grid{grid-template-columns:1fr 1fr}}.stat{background:#fff;padding:11px 13px}.stat .k{color:var(--steel);text-transform:uppercase;letter-spacing:.06em;font-size:10.5px;font-family:var(--mono)}.stat .v{font-family:var(--mono);margin-top:3px;font-size:17px;font-weight:600}.stat .v small{color:var(--ink-2);font-size:11px;font-weight:400}.diagram-wrap{padding:6px 6px 2px}.diagram-wrap svg{border-radius:8px;width:100%;height:auto;display:block}.legend{color:var(--ink-2);flex-wrap:wrap;gap:12px;padding:8px 12px 12px;font-size:11px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i{border-top-style:solid;border-top-width:2px;width:16px;height:0;display:inline-block}table.boq{border-collapse:collapse;width:100%;font-size:12.5px}table.boq th,table.boq td{border-bottom:1px solid var(--hair-2);text-align:right;padding:8px 10px}table.boq th{font-size:10.5px;font-family:var(--mono);text-transform:uppercase;letter-spacing:.05em;color:var(--steel);border-bottom:1px solid var(--hair);text-align:right;font-weight:600}table.boq th:first-child,table.boq td:first-child{text-align:left}table.boq td.item{font-family:var(--thai)}table.boq td.item .spec{color:var(--steel);font-size:11px;font-family:var(--mono);display:block}table.boq td.num{font-family:var(--mono)}table.boq tr.group td{background:var(--hair-2);color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600;font-family:var(--mono);text-align:left}table.boq tr.total td{border-top:2px solid var(--ink);font-weight:700;font-family:var(--mono);border-bottom:none;padding-top:11px}table.boq tr.total td:first-child{font-family:var(--thai)}.notes{color:var(--ink-2);font-size:11.5px;line-height:1.6}.notes b{color:var(--ink)}.notes ul{margin:6px 0 0;padding-left:18px}.notes li{margin:3px 0}.warnbox{background:var(--amber-soft);color:var(--amber);border:1px solid #f0d8ae;border-radius:8px;margin-top:10px;padding:9px 12px;font-size:12px;display:none}.warnbox.show{display:block}.gl{border-bottom:1.5px dotted var(--blue);cursor:help;color:inherit;position:relative}.gl:hover:after,.gl.open:after{content:attr(data-tip);z-index:40;background:var(--ink);color:#fff;width:max-content;max-width:260px;font-family:var(--thai);white-space:normal;border-radius:7px;padding:8px 11px;font-size:11.5px;font-weight:400;line-height:1.45;position:absolute;bottom:130%;left:0;box-shadow:0 6px 20px #00000038}.gl:hover:before,.gl.open:before{content:"";background:var(--ink);z-index:41;width:8px;height:8px;position:absolute;bottom:130%;left:14px;transform:translateY(50%)rotate(45deg)}footer.app{border-top:1px solid var(--hair);color:var(--steel);flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:24px;padding-top:14px;font-size:11px;display:flex}.print-head{display:none}.table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}@media (width>=1240px){.wrap{max-width:1280px}.grid{gap:28px}}@media (width<=600px){.wrap{padding:16px 14px 84px}.row,.row.three{grid-template-columns:1fr}.stat-grid{grid-template-columns:1fr 1fr}input[type=number],input[type=text],select{min-height:44px;font-size:16px}button.tool{min-height:44px}.seg button{min-height:44px;font-size:13px}.check input{width:20px;height:20px}.titleblock h1{font-size:19px}}@media (width<=380px){.stat-grid{grid-template-columns:1fr}}.config-switcher{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.config-switcher .cfg-name{width:auto;min-width:160px}.total-peek{display:none}@media (width<=919px){.wrap{padding-bottom:78px}.total-peek{z-index:45;background:var(--ink);color:#fff;align-items:baseline;gap:10px;padding:9px 16px;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #141e2d2e}.total-peek .pk-label{font-family:var(--thai);color:#aeb7c2;font-size:11px}.total-peek .pk-val{font-family:var(--mono);font-size:18px;font-weight:600;line-height:1}.total-peek .pk-val small{color:#aeb7c2;font-size:11px;font-weight:400}.total-peek .pk-m2{font-family:var(--mono);color:#aeb7c2;margin-left:auto;font-size:12px}}@media (width<=600px){header.app{display:contents}.titleblock{margin-bottom:12px}.toolbar{z-index:30;background:var(--paper);border-bottom:1px solid var(--hair);gap:6px;margin:0 -14px 14px;padding:8px 14px;position:sticky;top:0}.toolbar .tool-label{display:none}.config-switcher{width:100%}.config-switcher .cfg-name{flex:1;min-width:0}}@media print{@page{size:A4;margin:14mm 12mm}body{background:#fff;font-size:11px}.wrap{max-width:none;padding:0}.no-print,header.app .toolbar,.seg,footer.app{display:none!important}.print-head{margin-bottom:10px;display:block}.print-head .row1{border-bottom:2px solid #000;justify-content:space-between;align-items:flex-end;padding-bottom:6px;display:flex}.print-head h1{margin:0;font-size:16px}.print-head .meta{font-family:var(--mono);text-align:right;color:#333;font-size:10px}header.app{display:none}.grid{grid-template-columns:1fr;gap:0}.panel{box-shadow:none;break-inside:avoid;border:1px solid #bbb;margin-bottom:10px}.panel.input-only{display:none}.total-card{box-shadow:none;-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#faf4e8!important}.stat-grid,.boq,.diagram-wrap{-webkit-print-color-adjust:exact;print-color-adjust:exact}.diagram-wrap{break-inside:avoid}table.boq{break-inside:auto}table.boq tr{break-inside:avoid}.gl{border-bottom:none}}
