@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-thai-400-normal-C2DaJlKK.woff2)format("woff2"),url(/assets/sarabun-thai-400-normal-CH-UbWgg.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-vietnamese-400-normal-igdrzAGY.woff2)format("woff2"),url(/assets/sarabun-vietnamese-400-normal-DPfkSCMy.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-ext-400-normal-BbP7GpLL.woff2)format("woff2"),url(/assets/sarabun-latin-ext-400-normal-BsmTn0SS.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/sarabun-latin-400-normal-URPBxl-K.woff2)format("woff2"),url(/assets/sarabun-latin-400-normal-DmguIS-7.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-thai-600-normal-3dIAQ-_s.woff2)format("woff2"),url(/assets/sarabun-thai-600-normal-DWKeTe6a.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-vietnamese-600-normal-DkxrOlLB.woff2)format("woff2"),url(/assets/sarabun-vietnamese-600-normal-BMbOgAW-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-ext-600-normal-BRxjKUQ6.woff2)format("woff2"),url(/assets/sarabun-latin-ext-600-normal-0tXu9x_i.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/sarabun-latin-600-normal-DMD3TROr.woff2)format("woff2"),url(/assets/sarabun-latin-600-normal-9FonlkKx.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-thai-700-normal-CbuDipM3.woff2)format("woff2"),url(/assets/sarabun-thai-700-normal-CP2-p8e-.woff)format("woff");unicode-range:U+2D7,U+303,U+331,U+E01-E5B,U+200C-200D,U+25CC}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-vietnamese-700-normal-DrMy3BMX.woff2)format("woff2"),url(/assets/sarabun-vietnamese-700-normal-lN6N8XBT.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-ext-700-normal-CnQtP196.woff2)format("woff2"),url(/assets/sarabun-latin-ext-700-normal-ykw7DJpk.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Sarabun;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/sarabun-latin-700-normal-DQKyWxHq.woff2)format("woff2"),url(/assets/sarabun-latin-700-normal-DUuqj4Ju.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--brand:#1f2fc9;--brand-dark:#1622a0;--brand-soft:#e8ebff;--accent:#38d4e0;--bg:#f4f6fb;--surface:#fff;--text:#1b1f2a;--muted:#5f6677;--line:#dde1ea;--danger:#c62828;--danger-soft:#fdecec;--warn:#9a6200;--warn-soft:#fff4dc;--ok:#2e7d32;--ok-soft:#e7f5e8;--radius:12px;--shadow:0 1px 2px #141e3c0f, 0 2px 8px #141e3c0d;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;font-family:Sarabun,system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}h1,h2,h3{margin:0 0 .5rem;line-height:1.3}h1{font-size:1.35rem}h2{font-size:1.1rem}h3{font-size:1rem}p{margin:0 0 .75rem}a{color:var(--brand)}.topbar{z-index:20;background:var(--brand);color:#fff;padding:env(safe-area-inset-top) 0 0;position:sticky;top:0}.topbar-inner{align-items:center;gap:.75rem;max-width:1440px;min-height:52px;margin:0 auto;padding:.6rem 1rem;display:flex}.topbar a{color:#fff;text-decoration:none}.brand{white-space:nowrap;align-items:center;gap:.5rem;font-size:1.05rem;font-weight:700;display:flex}.brand img{background:#fff;border-radius:7px;width:30px;height:30px}.topnav{flex-wrap:wrap;gap:.25rem;margin-left:1rem;display:flex}.topnav a{opacity:.9;border-radius:8px;padding:.35rem .7rem;font-size:.95rem}.topnav a.active,.topnav a:hover{opacity:1;background:#ffffff29}.spacer{flex:1}.menu-button{color:#fff;font:inherit;cursor:pointer;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:1px solid #ffffff73;border-radius:8px;max-width:45vw;padding:.35rem .7rem;overflow:hidden}.menu{background:var(--surface);color:var(--text);border-radius:var(--radius);min-width:220px;position:absolute;top:calc(100% + 4px);right:1rem;overflow:hidden;box-shadow:0 8px 24px #141e3c2e}.menu a,.menu button{text-align:left;width:100%;font:inherit;color:var(--text);cursor:pointer;background:0 0;border:0;padding:.75rem 1rem;text-decoration:none;display:block}.menu a:hover,.menu button:hover{background:var(--brand-soft)}.menu .menu-head{border-bottom:1px solid var(--line);color:var(--muted);padding:.75rem 1rem;font-size:.9rem}.page{max-width:1440px;padding:1rem 1rem calc(2rem + env(safe-area-inset-bottom));margin:0 auto}.page.narrow{max-width:720px}.page-head{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.page-head h1{flex:1;min-width:12rem;margin:0}@media (width<=760px){.topnav{display:none}}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1rem;padding:1rem}.card>:last-child{margin-bottom:0}.card-link{color:inherit;text-decoration:none;display:block}.card-link:hover{outline:2px solid var(--brand-soft)}.section-title{color:var(--muted);margin:1.25rem 0 .5rem;font-size:.95rem;font-weight:600}.muted{color:var(--muted)}.small{font-size:.875rem}.pre{white-space:pre-wrap;overflow-wrap:anywhere}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.between{justify-content:space-between}.grid-2{grid-template-columns:1fr;gap:0 1rem;display:grid}@media (width>=640px){.grid-2{grid-template-columns:1fr 1fr}}.empty{text-align:center;color:var(--muted);padding:2rem 1rem}dl.details{margin:0}dl.details dt{color:var(--muted);margin-top:.85rem;font-size:.85rem;font-weight:600}dl.details dd{margin:.15rem 0 0}.field{margin-bottom:1rem}.field>label,.field>.label{margin-bottom:.35rem;font-weight:600;display:block}.field .hint{color:var(--muted);margin-top:.25rem;font-size:.85rem}.required:after{content:" *";color:var(--danger)}input[type=text],input[type=password],input[type=email],input[type=tel],input[type=number],input[type=date],input[type=search],select,textarea{width:100%;font:inherit;color:var(--text);border:1px solid var(--line);background:#fff;border-radius:10px;min-height:44px;padding:.65rem .75rem;font-size:16px}input:focus,select:focus,textarea:focus{outline:2px solid var(--brand);outline-offset:-1px;border-color:var(--brand)}textarea{resize:vertical;min-height:6rem}input[type=date]{appearance:none}.checkbox{cursor:pointer;align-items:center;gap:.6rem;min-height:44px;display:flex}.checkbox input{width:22px;height:22px;accent-color:var(--brand);flex-shrink:0}.btn{font:inherit;cursor:pointer;white-space:nowrap;background:var(--brand);color:#fff;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;min-height:44px;padding:.6rem 1rem;font-weight:600;text-decoration:none;display:inline-flex}.btn:hover{background:var(--brand-dark)}.btn:disabled{opacity:.55;cursor:default}.btn.secondary{color:var(--brand);border-color:var(--line);background:#fff}.btn.secondary:hover{background:var(--brand-soft)}.btn.danger{color:var(--danger);background:#fff;border-color:#f0c4c4}.btn.danger:hover{background:var(--danger-soft)}.btn.small{min-height:36px;padding:.3rem .7rem;font-size:.9rem}.btn.block{width:100%}.btn.big{min-height:56px;font-size:1.1rem}.link-button{font:inherit;color:var(--brand);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.form-actions{background:linear-gradient(to bottom, #f4f6fb00, var(--bg) 30%);padding:1rem 0 calc(.5rem + env(safe-area-inset-bottom));gap:.5rem;display:flex;position:sticky;bottom:0}.form-actions .btn{flex:1}.alert{background:var(--brand-soft);border-radius:10px;margin-bottom:1rem;padding:.75rem 1rem}.alert.error{background:var(--danger-soft);color:var(--danger)}.alert.warn{background:var(--warn-soft);color:var(--warn)}.alert.ok{background:var(--ok-soft);color:var(--ok)}.badge{white-space:nowrap;color:var(--muted);background:#eef0f4;border-radius:999px;padding:.1rem .55rem;font-size:.8rem;font-weight:600;display:inline-block}.badge.on{background:var(--ok-soft);color:var(--ok)}.badge.off{color:#6b7280;background:#eceef2}.table-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}table.table{border-collapse:collapse;background:var(--surface);width:100%;font-size:.95rem}.table th,.table td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:.55rem .6rem}.table th{color:var(--muted);white-space:nowrap;background:#f8f9fc;font-size:.85rem;font-weight:600}.table tr.dim td{color:var(--muted)}.tabs{background:#e7eaf2;border-radius:10px;gap:2px;padding:3px;display:inline-flex}.tabs button,.tabs a{font:inherit;cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:8px;min-height:38px;padding:.4rem .85rem;text-decoration:none}.tabs button.on,.tabs a.active{color:var(--text);box-shadow:var(--shadow);background:#fff;font-weight:600}.filters{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));align-items:end;gap:.5rem .75rem;margin-bottom:1rem;display:grid}.filters .field{margin-bottom:0}.stats{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;margin-bottom:1rem;display:grid}.stat{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:.75rem 1rem}.stat .value{font-size:1.4rem;font-weight:700}.stat .label{color:var(--muted);font-size:.85rem}.dialog-backdrop{z-index:40;background:#0f142873;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.dialog{background:var(--surface);width:100%;max-width:560px;max-height:92vh;padding:1.25rem 1rem calc(1rem + env(safe-area-inset-bottom));border-radius:16px 16px 0 0;overflow-y:auto}@media (width>=640px){.dialog-backdrop{align-items:center}.dialog{border-radius:16px}}.login{max-width:400px;padding:calc(2rem + env(safe-area-inset-top)) 1rem 2rem;margin:0 auto}.login-logo{width:88px;height:88px;box-shadow:var(--shadow);border-radius:20px;margin:0 auto .75rem;display:block}.spinner{color:var(--muted);justify-content:center;padding:3rem 1rem;display:flex}.tabs.full{grid-template-columns:1fr 1fr;width:100%;display:grid}.tabs.full button{min-height:44px;font-size:1rem}.password-field{position:relative}.password-field input{padding-right:3rem}.password-field button{width:3rem;height:100%;color:var(--muted);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:flex;position:absolute;top:0;right:0}.subnav{margin-bottom:1rem}.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.table th.num,.table td.num{text-align:right}.loss{color:var(--danger);font-weight:600}.toolbar{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-bottom:1rem;display:flex}.toolbar input[type=search],.toolbar select{width:auto}.toolbar .checkbox{min-height:0}.grid-3{grid-template-columns:repeat(3,1fr);gap:0 .75rem;display:grid}.dialog.wide{max-width:760px}:root{--nonstd:#b45309;--nonstd-soft:#fff1dc;--nonstd-line:#f0a030}.boq-editor{padding-bottom:7rem}.boq-header{grid-template-columns:1fr;gap:1rem;margin-bottom:1rem;display:grid}@media (width>=1100px){.boq-header{grid-template-columns:1fr 1fr}}.boq-header .card{margin-bottom:0}.boq-header .field{margin-bottom:.6rem}.boq-section-head{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:.5rem;display:flex}.boq-section-head h2{margin:0}input.section-title{max-width:28rem;min-height:36px;padding:.3rem .6rem;font-size:1.05rem;font-weight:700}.boq-table{min-width:1240px;font-size:.9rem}.boq-table th,.boq-table td{vertical-align:middle;padding:.25rem .3rem}.boq-table .col-toggle{width:2.6rem}.boq-table .col-no{text-align:center;width:2.2rem}.boq-table .col-part{width:6rem}.boq-table .col-kind{width:4.8rem}.boq-table .col-qty{width:5rem}.boq-table .col-unit{width:4.6rem}.boq-table .col-days{width:3.8rem}.boq-table .col-price{width:7rem}.boq-table .col-amount{width:6.6rem}.boq-table .col-actions{text-align:right;width:5.4rem}input.cell,select.cell{border-radius:6px;width:100%;min-height:32px;padding:.25rem .4rem;font-size:.9rem}input.cell.num{text-align:right;font-variant-numeric:tabular-nums}input.cell.nonstd{background:var(--nonstd-soft);border-color:var(--nonstd-line);color:var(--nonstd);font-weight:600}input.cell.invalid{border-color:var(--danger);background:var(--danger-soft)}.boq-table tr.layer1 td{border-top:1px solid var(--line)}.boq-table tr.layer1.open td{background:#f6f8ff}.boq-table tr.layer2 td{background:#fafbfe;border-bottom:0}.boq-table tr.layer2 td:nth-child(4){padding-left:1.2rem}.boq-table tr.layer2-tools td{border-bottom:1px solid var(--line);padding:.3rem .3rem .6rem}.boq-table .strong,.summary-bar .strong{font-weight:700}.boq-table .computed{color:var(--muted);padding:0 .4rem;display:block}.fixed-name{padding:0 .4rem;font-weight:600;display:inline-block}.override{display:block;position:relative}.override .icon-button{min-width:22px;min-height:26px;padding:0;position:absolute;top:50%;left:1px;transform:translateY(-50%)}.override input.cell:has(+.icon-button){padding-left:1.5rem}.icon-button{font:inherit;cursor:pointer;min-width:26px;min-height:28px;color:var(--muted);background:0 0;border:1px solid #0000;border-radius:6px;padding:0 .3rem}.icon-button:hover:not(:disabled){background:var(--brand-soft);color:var(--brand)}.icon-button.danger:hover:not(:disabled){background:var(--danger-soft);color:var(--danger)}.icon-button:disabled{opacity:.3;cursor:default}.icon-button.toggle{color:var(--brand);white-space:nowrap;font-weight:600}.row-buttons{white-space:nowrap;display:inline-flex}.badge.nonstd{background:var(--nonstd-soft);color:var(--nonstd)}.ok-text,.profit{color:var(--ok)}.summary-bar{z-index:30;background:var(--surface);border-top:1px solid var(--line);position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 16px #141e3c14}.summary-inner{flex-wrap:wrap;align-items:center;gap:1rem;max-width:1440px;margin:0 auto;padding:.5rem 1rem;display:flex}.summary-bar dl{flex-wrap:wrap;gap:.25rem 1.5rem;margin:0;display:flex}.summary-bar dt{color:var(--muted);font-size:.8rem}.summary-bar dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.05rem}.summary-bar dd.small{font-size:.75rem}.summary-bar .divider{background:var(--line);align-self:stretch;width:1px}@page{size:A4;margin:10mm 9mm 12mm;@bottom-right{content:"หน้า " counter(page) " / " counter(pages);font-family:Sarabun,sans-serif;font-size:8pt}}.print-page{background:#e5e8ef;min-height:100vh;padding:1rem}.print-toolbar{align-items:center;gap:.75rem;max-width:210mm;margin:0 auto 1rem;display:flex}.print-toolbar .btn{text-decoration:none}.sheet{background:#fff;width:210mm;min-height:297mm;margin:0 auto;padding:10mm 9mm;box-shadow:0 2px 12px #141e3c2e}.doc{color:#000;-webkit-print-color-adjust:exact;print-color-adjust:exact;font-size:10.5pt;line-height:1.35}.doc table{border-collapse:collapse;width:100%}.doc th,.doc td{text-align:left;vertical-align:top;padding:1.2mm 1.8mm}.doc .num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.doc .center{text-align:center}.doc .strong{font-weight:700}.doc .pre{white-space:pre-wrap}.boq-letterhead{text-align:center;padding:0 24mm;position:relative}.boq-letterhead img{width:20mm;height:auto;position:absolute;top:0;left:0}.boq-letterhead .name{font-size:13pt;font-weight:700}.boq-title{text-align:center;margin:2.5mm 0 3mm;font-size:12.5pt;font-weight:700;text-decoration:underline}.boq-info th{white-space:nowrap;width:14mm;font-weight:700}.boq-info td.right-label{text-align:right;white-space:nowrap;width:16mm;font-weight:700}.boq-info td.right-value{white-space:nowrap;width:34mm}.boq-items{margin-top:2mm}.boq-items th,.boq-items td{border:.25mm solid #000}.boq-items thead th{text-align:center;white-space:nowrap;background:#f2f2f2;font-weight:700}.boq-items thead{display:table-header-group}.boq-items tr{break-inside:avoid}.boq-items tr.bar td{text-align:center;background:#d9d9d9}.boq-items tr.detail td{padding-top:.6mm;padding-bottom:.6mm;font-size:9.5pt}.boq-items tr.detail td.name{padding-left:6mm}.boq-items td.grey{background:#d9d9d9}.boq-items td.unit{white-space:nowrap}.boq-foot{break-inside:avoid;break-before:avoid;justify-content:space-between;gap:6mm;display:flex}.boq-remarks{flex:1;padding-top:1.2mm}.boq-totals{flex-shrink:0;width:36%!important}.boq-totals th{text-align:right;white-space:nowrap;font-weight:700}.boq-totals td{border:.25mm solid #000;width:33.333%;font-weight:700}@media print{:root,body,.print-page{background:#fff;min-height:0;padding:0}.no-print{display:none!important}.sheet{width:auto;min-height:0;box-shadow:none;margin:0;padding:0}}.standard-lines{flex-wrap:wrap;gap:.25rem 1rem;margin-left:.75rem;display:inline-flex}.standard-lines .checkbox{gap:.35rem;min-height:0}.standard-lines .checkbox input{width:18px;height:18px}
