:root{--shadow: -6px -6px 12px #FFFFFF, 6px 6px 12px #C7CDD6;--shadow-lift: -3px -3px 6px #FFFFFF, 3px 3px 6px #C7CDD6;--l1: -4px -4px 8px #FFFFFF, 4px 4px 8px #C7CDD6;--l2: -3px -3px 6px #FFFFFF, 3px 3px 6px #C7CDD6;--l2h: -2px -2px 3px #FFFFFF, 2px 2px 3px #C7CDD6;--l3: inset -3px -3px 6px #FFFFFF, inset 3px 3px 6px #C7CDD6;--accent: #5E1B2B;--accent2: #4A1522;--accent-soft: #F3E6E9;--on-accent: #fff;--accent-text: #5E1B2B;--ok-fg: #2E7D5B;--ok-bg: #E6F2EC;--warn-fg: #B7791F;--warn-bg: #FBF1DC;--block-fg: #B3261E;--block-bg: #FBE5E3;--na-fg: #40474F;--na-bg: #DDE1E6;--info-fg: #2E5A73;--info-bg: #E2ECF2;--block: var(--block-fg);--warn: var(--warn-fg);--ok: var(--ok-fg);--danger: var(--block-fg);--fg: var(--ink);--line: var(--border);--cls-scope: #5E1B2B;--cls-cost: #2E5A73;--cls-eng: #7A5B12;--cls-quote: #5A5A5A;--cls-mixed: #6B4E8E;--bg: #E9EDF2;--surface: #E9EDF2;--surface-ro: #E9EDF2;--ink: #1C2B33;--muted: #5D6570;--border: #D6DBE2;--border2: #D6DBE2;--hover: #E1E6EC;--card-bd: none;--ro-bd: transparent;--font-family: "IBM Plex Sans Thai", Sarabun, system-ui, sans-serif;--fs: 15px;--fs-sm: 13px;--fs-lg: 17px;--fs-kpi: 32px;--fs-h1: 22px;--fs-h2: 18px;--fs-xs: 12px;--fs-base: var(--fs);--r: 16px;--r-sm: 10px;--r-md: 12px;--pad: 16px;--pad-card: 13px 17px;--pad-card2: 12px 16px;--pad-row: 8px 15px;--h: 36px;--h-menu: 40px;--gap: 12px;--row-h: 38px}:root[data-theme=dark]{--shadow: -5px -5px 10px #2C3137, 5px 5px 10px #171A1E;--shadow-lift: -3px -3px 6px #2C3137, 3px 3px 6px #171A1E;--l1: -4px -4px 8px #2C3137, 4px 4px 8px #171A1E;--l2: -2px -2px 5px #2C3137, 2px 2px 5px #171A1E;--l2h: -1px -1px 3px #2C3137, 1px 1px 3px #171A1E;--l3: inset -2px -2px 5px #2C3137, inset 2px 2px 5px #171A1E;--accent: #C25D74;--accent2: #B04B60;--accent-soft: #3A1C24;--on-accent: #FFFFFF;--accent-text: #D98A9C;--ok-fg: #6FCF97;--ok-bg: #173B2A;--warn-fg: #E0B455;--warn-bg: #3C2F12;--block-fg: #F08080;--block-bg: #42201E;--na-fg: #D4D7DB;--na-bg: #3A3F44;--info-fg: #8FB6CE;--info-bg: #1B303C;--cls-scope: #B99AA3;--cls-cost: #9DB8C8;--cls-eng: #C3B291;--cls-quote: #B8B8B8;--cls-mixed: #A89BC4;--bg: #23272C;--surface: #23272C;--surface-ro: #23272C;--ink: #E4E6EB;--muted: #A9AEB4;--border: #33383E;--border2: #33383E;--hover: #2A2F35;color-scheme:dark}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:IBM Plex Sans Thai,Sarabun,system-ui,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}*{box-sizing:border-box}[hidden]{display:none!important}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font-family);font-size:var(--fs)}.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.raised{background:var(--surface);box-shadow:var(--shadow);border-radius:var(--r)}.raised-sm{background:var(--surface);box-shadow:var(--l2);border-radius:var(--r-sm)}.raised-sm:hover{box-shadow:var(--l2h)}.nav-group{display:flex;align-items:center;gap:.375rem;width:100%;text-align:left;background:var(--accent);color:var(--on-accent);box-shadow:var(--l2);border-radius:var(--r-sm);border:none;cursor:pointer;transition:box-shadow .12s ease,background .12s ease}.nav-group:hover{box-shadow:var(--l2h)}.nav-group--current{background:var(--accent2)}.nav-item{border-radius:var(--r-sm);border-left:3px solid transparent;transition:box-shadow .12s ease,color .12s ease}.nav-item:hover:not(.nav-item--active){box-shadow:var(--l2h)}.nav-item--active{background:var(--surface);box-shadow:var(--l3);border-left-color:var(--accent);color:var(--accent-text)}.nav-item--active:hover{box-shadow:var(--l3)}.field-input{background:var(--surface);box-shadow:var(--l3);border:none;border-radius:var(--r-sm);height:var(--h);padding:0 14px;color:var(--ink);font-family:var(--font-family);font-size:var(--fs)}input.field-input:-moz-read-only,textarea.field-input:-moz-read-only{background:var(--surface-ro);color:var(--muted);box-shadow:none;border:1px solid var(--ro-bd)}input.field-input:read-only,textarea.field-input:read-only,.field-input[data-readonly=true]{background:var(--surface-ro);color:var(--muted);box-shadow:none;border:1px solid var(--ro-bd)}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;font-size:var(--fs-sm);font-weight:600}.status-pill--ok{color:var(--ok-fg);background:var(--ok-bg)}.status-pill--warn{color:var(--warn-fg);background:var(--warn-bg)}.status-pill--block{color:var(--block-fg);background:var(--block-bg)}.status-pill--na{color:var(--na-fg);background:var(--na-bg)}.status-pill--info{color:var(--info-fg);background:var(--info-bg)}.chip{display:inline-flex;align-items:center;padding:5px 13px;border:none;border-radius:999px;background:var(--surface);box-shadow:var(--l2);color:var(--muted);font-family:var(--font-family);font-size:var(--fs-sm);white-space:nowrap;cursor:pointer;transition:box-shadow .15s ease,color .15s ease}.chip:hover:not(.chip--on){box-shadow:var(--l2h);color:var(--ink)}.chip--on{box-shadow:var(--l3);color:var(--accent-text);font-weight:600}.tab-chip{display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border:none;border-radius:var(--r-sm);background:transparent;color:var(--muted);font-family:var(--font-family);font-size:var(--fs);font-weight:500;white-space:nowrap;cursor:pointer;box-shadow:none;transition:box-shadow .15s ease,color .15s ease,background .15s ease}.tab-chip:hover:not(.tab-chip--active){background:var(--surface);box-shadow:var(--l2h);color:var(--ink)}.tab-chip--active{background:var(--surface);box-shadow:var(--l2);color:var(--accent-text);font-weight:600}.field-state-filled{background:var(--ok-bg);box-shadow:var(--l3)}.field-state-missing{background:var(--block-bg);box-shadow:var(--l3);outline:1px solid var(--block-fg);outline-offset:-1px}.field-focus-ring:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@keyframes wc-shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.shake{animation:wc-shake .4s ease-in-out}.btn-primary{position:relative;overflow:hidden;background:var(--accent);color:var(--on-accent);border:none;border-radius:var(--r);height:var(--h);padding:0 20px;font-family:var(--font-family);font-size:var(--fs);font-weight:600;cursor:pointer;box-shadow:var(--l2);transition:box-shadow .12s ease}.btn-primary:hover:not(:disabled){box-shadow:var(--l2h)}.btn-primary:active:not(:disabled){box-shadow:var(--l3)}.btn-primary:disabled{cursor:default}.morph-wrap{display:inline-flex;justify-content:center}.morph-btn{display:inline-flex;align-items:center;justify-content:center;overflow:hidden;white-space:nowrap;padding:0 20px;transition:width .32s cubic-bezier(.4,0,.2,1),border-radius .32s cubic-bezier(.4,0,.2,1),background .22s ease,box-shadow .22s ease}.morph-btn.morph-btn--round{border-radius:50%;padding:0;opacity:1;cursor:default}.morph-btn.morph-btn--done{background:var(--ok-fg);color:#fff;box-shadow:var(--l2)}.morph-btn__label{display:inline-block}.morph-spinner{width:18px;height:18px;border:2.5px solid currentColor;border-top-color:transparent;border-radius:50%;opacity:.9;animation:morph-spin .7s linear infinite}@keyframes morph-spin{to{transform:rotate(360deg)}}.morph-check{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}.morph-check path{stroke-dasharray:26;stroke-dashoffset:26;animation:morph-draw .3s 60ms ease-out forwards}@keyframes morph-draw{to{stroke-dashoffset:0}}@media (prefers-reduced-motion: reduce){.morph-btn{transition:none}.morph-spinner{animation-duration:2s}.morph-check path{animation:none;stroke-dashoffset:0}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.btn-secondary{background:var(--surface);box-shadow:var(--l2);color:var(--ink);border:none;border-radius:var(--r);height:var(--h);padding:0 20px;font-family:var(--font-family);font-size:var(--fs);font-weight:600;cursor:pointer;transition:box-shadow .12s ease}.btn-secondary:hover:not(:disabled){box-shadow:var(--l2h)}.btn-secondary:active:not(:disabled){box-shadow:var(--l3)}.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.btn-row{height:34px;padding:0 12px;font-size:var(--fs-sm);white-space:nowrap}.btn-row-group{display:flex;flex-wrap:wrap;gap:.5rem}.btn-danger{color:var(--block-fg)}.btn-danger:hover:not(:disabled){background:var(--block-bg)}.table-scroll{overflow:auto;max-height:max(20rem,calc(100vh - 18rem))}.table-scroll--compact{max-height:22rem}.table-xscroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.table-scroll thead th,.table-sticky thead th{position:sticky;top:0;z-index:2;background:var(--surface);box-shadow:inset 0 -1px 0 var(--border)}.stage-btn{box-shadow:var(--l2);border:none;cursor:pointer;gap:6px;transition:box-shadow .12s ease}.stage-btn:hover:not(:disabled){box-shadow:var(--l2h)}.stage-btn[aria-expanded=true]{box-shadow:var(--l3)}.stage-btn:disabled{cursor:default;box-shadow:none}.stage-menu{position:fixed;z-index:30;display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:var(--r);background:var(--surface);box-shadow:var(--l2)}.stage-menu>button{border:none;background:none;padding:0;cursor:pointer}.app-topbar{display:none}@media (max-width: 1023px){.app-topbar{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--surface);box-shadow:var(--shadow);position:sticky;top:0;z-index:30}.app-shell{flex-direction:column}.app-nav{position:fixed;top:0;bottom:0;left:0;z-index:50;transform:translate(-100%);transition:transform .22s ease}.app-nav.app-nav--open{transform:none}.app-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#00000073;border:0}.app-main{padding:1rem .75rem 2rem}}@media (max-width: 1023px) and (prefers-reduced-motion: reduce){.app-nav{transition:none}}.sort-th{display:inline-flex;align-items:baseline;gap:.35rem;padding:0;border:0;background:none;font:inherit;color:inherit;text-align:inherit;cursor:pointer}.sort-th:hover{color:var(--accent-text)}.sort-th:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--r-sm)}.sort-th__arrow{font-size:.72em;color:var(--muted);opacity:.45}.sort-th:hover .sort-th__arrow{opacity:1}.sort-th--on{color:var(--accent-text)}.sort-th--on .sort-th__arrow{opacity:1;color:var(--accent-text)}.job-table{min-width:0}@media (max-width: 1279px) and (min-width: 1024px){.job-table [data-col=updated]{display:none}.job-table th,.job-table td{padding:.6rem .5rem}}@media (min-width: 1024px){.job-table th:first-child,.job-table td:first-child{min-width:13rem}}.job-desc{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.kpi-card{container-type:inline-size}.kpi-card__value{font-size:clamp(1rem,13cqi,var(--fs-kpi, 32px));font-weight:600;line-height:1.15;overflow-wrap:anywhere}@media (max-width: 639px){.kpi-card{padding:.7rem .75rem;gap:.1rem}.kpi-card__value{font-size:clamp(.95rem,12cqi,1.5rem)}.kpi-card__sub{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}}.thai-map{display:grid;grid-template-columns:auto minmax(9rem,14rem);gap:1rem;align-items:start;justify-content:center}.thai-map svg{width:auto;height:min(62vh,32rem);max-width:100%}.thai-map__svg--zoomed{cursor:grab}.thai-map__svg--zoomed:active{cursor:grabbing}.thai-map__province{stroke:var(--border);stroke-width:1.5;cursor:default}.thai-map__province--has{cursor:pointer}.thai-map__province--active{stroke:var(--accent-text);stroke-width:6}.thai-map__dot{fill:var(--accent);stroke:var(--surface);stroke-width:3;pointer-events:none}.thai-map__job{cursor:pointer}.thai-map__job-dot{fill:var(--accent);stroke:var(--surface);stroke-width:2}.thai-map__job:hover .thai-map__job-dot{fill:var(--accent-text)}.thai-map__job-name{fill:var(--ink);stroke:var(--surface);font-weight:600;pointer-events:none}.thai-map__list{display:flex;flex-direction:column;gap:.15rem;margin:0;padding:0;list-style:none;max-height:min(62vh,32rem);overflow-y:auto}.thai-map__row{display:flex;width:100%;align-items:baseline;justify-content:space-between;gap:.5rem;padding:.3rem .5rem;border-radius:var(--r);text-align:left;background:none;cursor:pointer}.thai-map__row:hover{background:var(--accent-soft)}.thai-map__row--on{background:var(--accent-soft);font-weight:600}@media (max-width: 639px){.thai-map{grid-template-columns:minmax(0,1fr)}.thai-map svg{height:55vh}.thai-map__list{max-height:14rem}}.kpi-card--button{cursor:pointer;text-align:left}.kpi-card--button:active{box-shadow:var(--l3)}.dash-2col{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--gap)}.dash-2col__side{position:relative;min-height:0}.dash-2col__side>*{position:absolute;top:0;right:0;bottom:0;left:0}@media (max-width: 900px){.dash-2col{grid-template-columns:minmax(0,1fr)}.dash-2col__side{position:static}.dash-2col__side>*{position:static}.prov-list{max-height:22rem}}.kpi-hero{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap)}.kpi-hero .kpi-card__value{font-size:clamp(22px,4.2vw,var(--fs-kpi));font-weight:700;letter-spacing:-.01em}@media (max-width: 720px){.kpi-hero{grid-template-columns:minmax(0,1fr);gap:.5rem}}.bar-row{display:grid;grid-template-columns:7.5rem minmax(0,1fr) auto;align-items:center;gap:.6rem;padding:.4rem .5rem;border:none;border-radius:var(--r-sm);background:none;font:inherit;text-align:left;cursor:pointer;transition:box-shadow .15s ease}.bar-row:hover{box-shadow:var(--l2)}.bar-row--on{box-shadow:var(--l3)}.bar-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.bar-row__name{font-size:var(--fs-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-row__track{height:14px;border-radius:999px;background:var(--surface);box-shadow:var(--l3);overflow:hidden}.bar-row__fill{display:block;height:100%;min-width:3px;border-radius:999px;background:var(--accent);transition:width .25s ease}.bar-row__value{display:flex;flex-direction:column;align-items:flex-end;font-size:var(--fs-sm);font-variant-numeric:tabular-nums;white-space:nowrap}.bar-row__sub{font-size:var(--fs-xs);color:var(--muted)}@media (max-width: 520px){.bar-row{grid-template-columns:minmax(0,1fr) auto}.bar-row__track{grid-column:1 / -1}}.warn-box{display:flex;align-items:flex-start;gap:.6rem;padding:.85rem 1rem;border-radius:var(--r);background:var(--warn-bg);color:var(--warn-fg);box-shadow:var(--l2);font-size:var(--fs-sm)}.kanban{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(14rem,1fr);gap:.75rem;overflow-x:auto;padding-bottom:.5rem}.kanban__col{display:flex;flex-direction:column;gap:.5rem;min-height:8rem;padding:.6rem;border-radius:var(--r);background:var(--surface);box-shadow:var(--l3);transition:box-shadow .15s ease}.kanban__col--over{box-shadow:var(--shadow-lift),0 0 0 2px var(--accent) inset}.kanban__head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.4rem .5rem .5rem;border-top:3px solid var(--border);border-radius:var(--r-sm) var(--r-sm) 0 0;font-size:var(--fs-sm)}.kanban__count{font-weight:700;font-variant-numeric:tabular-nums}.kanban__empty{margin:0;padding:1rem .5rem;color:var(--muted);font-size:var(--fs-sm);text-align:center}.kanban__card{display:flex;flex-direction:column;gap:.35rem;padding:.6rem .7rem;border-radius:var(--r-sm);border-left:3px solid var(--border);background:var(--surface);box-shadow:var(--l2);cursor:grab}.kanban__card:active{cursor:grabbing}.kanban__card:hover{box-shadow:var(--l2h)}.kanban__card--locked{cursor:default;opacity:.72}.kanban__open{display:flex;flex-direction:column;gap:.15rem;padding:0;border:none;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}.kanban__open:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.kanban__cust{font-weight:600;font-size:var(--fs-sm)}.kanban__code{font-size:var(--fs-xs);color:var(--muted)}.kanban__meta{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.4rem;font-size:var(--fs-xs)}.kanban__money{font-variant-numeric:tabular-nums}.kanban__prov{color:var(--muted)}.kanban__jump{display:flex;flex-wrap:wrap;gap:.25rem;max-height:0;overflow:hidden;transition:max-height .15s ease}.kanban__card:hover .kanban__jump,.kanban__card:focus-within .kanban__jump{max-height:5rem}.kanban__jumpbtn{padding:2px 8px;border:none;border-radius:999px;background:var(--surface);box-shadow:var(--l2);font:inherit;font-size:var(--fs-xs);cursor:pointer}.kanban__jumpbtn:hover{box-shadow:var(--l2h)}.kpi-row.kpi-mini{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.5rem}.kpi-row.kpi-mini.kpi-pair{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start}@media (max-width: 560px){.kpi-row.kpi-mini.kpi-pair{grid-template-columns:minmax(0,1fr)}}.prov-list{flex:1 1 auto;min-height:0;overflow-y:auto}.kpi-row.kpi-mini .kpi-card{flex:initial;min-width:0;gap:0;padding:.5rem .8rem}.kpi-row.kpi-mini .kpi-card__value{font-size:var(--fs-lg);font-weight:600;line-height:1.35}.kpi-row.kpi-mini .kpi-card__sub,.kpi-row.kpi-mini .kpi-card>span:first-child{font-size:var(--fs-xs);line-height:1.3}.kpi-hero .kpi-card{padding:.75rem 1rem}.kpi-hero .kpi-card__sub{font-size:var(--fs-xs);line-height:1.3}@media (max-width: 720px){.kpi-row.kpi-mini{grid-template-columns:repeat(2,minmax(0,1fr))}}.kpi-row{display:flex;flex-wrap:wrap;gap:.75rem}@media (max-width: 639px){.kpi-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.5rem}.kpi-card{min-width:0;padding:.7rem .75rem;gap:.15rem}}@media (max-width: 1023px){.job-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.job-table,.job-table tbody{display:block;width:auto}.job-table tr{display:flex;flex-wrap:wrap;align-items:center;-moz-column-gap:.45rem;column-gap:.45rem;row-gap:.3rem;padding:.8rem .15rem}.job-table td{display:flex;align-items:center;flex-wrap:wrap;gap:.35rem;padding:0;white-space:normal;min-width:0}.job-table td:before{content:none}.job-table td[data-label=ลูกค้า]{order:1;flex:1 1 100%;display:block;font-size:1.02em}.job-table .job-desc{-webkit-line-clamp:1}.job-table td[data-label=สถานะ]{order:2}.job-table td[data-label=ราคาขาย]{order:3;margin-inline-start:auto}.job-table tbody tr:before{content:"";order:4;flex:1 1 100%;height:0}.job-table td[data-label=ประเภทงาน],.job-table td[data-label=จังหวัดหน้างาน],.job-table td[data-label=ขนาด],.job-table td[data-col=updated]{color:var(--muted);font-size:var(--fs-sm)}.job-table td[data-label=ประเภทงาน]{order:5}.job-table td[data-label=จังหวัดหน้างาน]{order:6}.job-table td[data-label=ขนาด]{order:7}.job-table td[data-label=จังหวัดหน้างาน]:before,.job-table td[data-label=ขนาด]:before{content:"·";color:var(--muted)}.job-table tbody tr:after{content:"";order:8;flex:1 1 100%;height:0}.job-table td[data-col=updated]{order:9;margin-inline-end:auto}.job-table .status-pill{font-size:var(--fs-sm);padding-block:.15rem}.job-table td[data-label=""]{order:10;flex:0 0 auto;justify-content:flex-end;gap:.5rem;padding-top:.15rem}}.app-burger{display:grid;place-items:center;width:2.75rem;height:2.75rem;flex-shrink:0;border-radius:var(--r);background:var(--surface);box-shadow:var(--l2);font-size:1.1rem;line-height:1}.app-burger:active{box-shadow:var(--l3)}.link-button{background:none;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-underline-offset:3px;text-decoration-color:color-mix(in srgb,currentColor 40%,transparent)}.link-button:hover{color:var(--accent-text);text-decoration-color:var(--accent-text)}.link-button:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px;border-radius:var(--r)}.site-tag{display:block;margin-top:.15rem;font-size:var(--fs-sm);background:none;cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-underline-offset:3px}.map-link{display:inline-flex;align-items:center;gap:.35rem;color:var(--accent-text);text-decoration:underline;text-decoration-color:color-mix(in srgb,var(--accent-text) 35%,transparent);text-underline-offset:3px;border-radius:var(--r)}.map-link:hover{text-decoration-color:var(--accent-text)}.map-link:focus-visible{outline:2px solid var(--accent-text);outline-offset:2px}.brand-logo{display:block;background-image:var(--logo-light);background-size:contain;background-repeat:no-repeat;background-position:center}:root[data-theme=dark] .brand-logo{background-image:var(--logo-dark)}.login-card{width:min(24rem,100%);background:var(--surface);box-shadow:var(--shadow);border-radius:calc(var(--r) * 1.5);padding:2rem 1.75rem 1.5rem}.login-avatar{width:5.5rem;height:5.5rem;border-radius:50%;background:var(--surface);box-shadow:var(--l2);display:grid;place-items:center;margin:0 auto}.field-icon-wrap{position:relative;display:block}.field-icon-wrap>.field-input{width:100%;padding-left:2.75rem}.i-inline{vertical-align:-.15em}.field-icon{position:absolute;left:.9rem;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none;line-height:1;display:inline-flex;align-items:center}.switch{width:2.6rem;height:1.4rem;border-radius:999px;background:var(--surface);box-shadow:var(--l3);border:none;padding:0;cursor:pointer;position:relative;flex:none}.switch__dot{position:absolute;top:.18rem;left:.2rem;width:1.04rem;height:1.04rem;border-radius:50%;background:var(--surface);box-shadow:var(--l2);transition:transform .14s ease,background .14s ease}.switch[aria-checked=true] .switch__dot{transform:translate(1.16rem);background:var(--accent)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.m-0{margin:0}.mb-4{margin-bottom:.8rem}.ml-3{margin-left:.6rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.\!table{display:table!important}.table{display:table}.table-header-group{display:table-header-group}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-screen{height:100vh}.min-h-screen{min-height:100vh}.w-44{width:11rem}.w-48{width:12rem}.w-56{width:14rem}.w-60{width:15rem}.w-full{width:100%}.min-w-\[140px\]{min-width:140px}.min-w-\[170px\]{min-width:170px}.min-w-\[180px\]{min-width:180px}.min-w-\[18rem\]{min-width:18rem}.min-w-\[200px\]{min-width:200px}.min-w-\[20rem\]{min-width:20rem}.min-w-\[220px\]{min-width:220px}.min-w-\[22rem\]{min-width:22rem}.min-w-\[260px\]{min-width:260px}.min-w-\[9\.5rem\]{min-width:9.5rem}.min-w-full{min-width:100%}.flex-1{flex:1 1 0%}.shrink-0{flex-shrink:0}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.resize{resize:both}.list-disc{list-style-type:disc}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-3{gap:.6rem}.gap-4{gap:.8rem}.gap-6{gap:1.15rem}.gap-8{gap:1.5rem}.gap-x-6{-moz-column-gap:1.15rem;column-gap:1.15rem}.gap-x-8{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-3{row-gap:.6rem}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.self-start{align-self:flex-start}.self-end{align-self:flex-end}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.rounded-sm{border-radius:var(--r-sm)}.border{border-width:1px}.p-3{padding:.6rem}.p-4{padding:.8rem}.p-5{padding:1rem}.p-6{padding:1.15rem}.p-8{padding:1.5rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.6rem;padding-right:.6rem}.px-4{padding-left:.8rem;padding-right:.8rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.pb-10{padding-bottom:1.9rem}.pb-8{padding-bottom:1.5rem}.pl-5{padding-left:1rem}.pt-1{padding-top:.25rem}.pt-4{padding-top:.8rem}.pt-6{padding-top:1.15rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing: tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-none{line-height:1}.underline{text-decoration-line:underline}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.blur{--tw-blur: blur(8px);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.quote-doc{display:flex;flex-direction:column;align-items:center;gap:1.5rem}.quote-doc{--q-ink: #6e1b2b;--q-line: #8c2233;--q-band: #f7e8ea}:root[data-theme=dark] .quote-doc{--q-ink: #e8a3ad;--q-line: #b3475a;--q-band: #3a1f25}.quote-page{width:210mm;min-height:297mm;max-width:100%;padding:12mm;background:var(--surface);border-radius:var(--r);box-shadow:var(--l2)}.quote-doc h2,.quote-doc .q-title,.quote-doc .q-co{color:var(--q-ink)}.quote-page>header{padding-bottom:.7rem;border-bottom:2px solid var(--q-line)}.quote-doc .data-table thead th{color:var(--q-ink);background:var(--q-band);border-bottom:1.5px solid var(--q-line)}.quote-doc .data-table tfoot td{color:var(--q-ink)}.quote-doc .data-table tfoot tr:first-child td{border-top:1.5px solid var(--q-line)}.quote-page[data-fit]{zoom:var(--fit);width:calc(210mm / var(--fit));min-height:calc(297mm / var(--fit));max-width:calc(100% / var(--fit));padding:calc(12mm / var(--fit))}.report-frame{overflow-x:auto}.report-doc{width:186mm;margin-inline:auto;color:var(--fg);font-size:9.2pt;line-height:1.45}.report-doc--landscape{width:273mm;page:wide}.report-head{margin-bottom:4mm;padding-bottom:2mm;border-bottom:1.5pt solid var(--fg)}.report-title{margin:0;font-size:16pt;font-weight:700}.report-subtitle{margin:.5mm 0 0;color:var(--muted);font-size:10pt}.report-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(58mm,1fr));gap:.6mm 6mm;margin:2mm 0 0;font-size:8.6pt}.report-meta div{display:flex;gap:1.5mm}.report-meta dt{color:var(--muted);white-space:nowrap}.report-meta dd{margin:0;font-weight:600}.report-section{margin-top:5mm}.report-heading{margin:0 0 1mm;font-size:11.5pt;font-weight:700}.report-note{margin:0 0 1.5mm;color:var(--muted);font-size:8.6pt}.report-table-wrap{width:100%}.report-table{width:100%;border-collapse:collapse;table-layout:fixed}.report-table th,.report-table td{padding:.9mm 1.4mm;border-bottom:.5pt solid var(--border);text-align:left;vertical-align:top}.report-table td{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.report-table thead th{border-bottom:1pt solid var(--fg);font-weight:700}.report-table th{overflow-wrap:anywhere}.report-table .num{text-align:right;font-variant-numeric:tabular-nums}.report-table .is-total td{font-weight:700;border-top:.75pt solid var(--fg)}.report-cell-note{display:block;color:var(--muted);font-size:.85em}.report-idrow{display:none}.report-foot{margin-top:5mm;padding-top:2mm;border-top:.5pt solid var(--border);color:var(--muted);font-size:8.4pt}.report-foot p{margin:0 0 .8mm}@page{size:A4;margin:12mm}@media print{.no-print,nav{display:none!important}.report-frame{overflow:visible!important}.report-mode .report-keep>*:not(.report-keep):not(.report-print-root){display:none!important}.report-mode .app-topbar,.report-mode .app-nav,.report-mode .app-backdrop{display:none!important}.report-mode .app-shell{display:block!important;height:auto!important;overflow:visible!important}.report-mode .app-main{padding:0!important;overflow:visible!important}.report-mode,.report-mode body,.report-mode .app-shell,.report-mode .app-main,.report-mode .report-print-root,.report-mode .report-frame,.report-mode .report-doc,.report-mode .raised{background:#fff!important;box-shadow:none!important;border-radius:0!important}.report-mode .report-idrow{display:table-row}.report-mode .report-idrow th{padding:0 1.4mm .7mm;border-bottom:.5pt solid #ccc;font-weight:400;font-size:7.2pt;color:#555}.report-mode .report-idrow-line{display:flex;gap:4mm;justify-content:space-between}.report-mode .report-idrow-line>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-mode .report-idrow-line>span:first-child{flex:1 1 auto}.report-mode .report-idrow-line>span:last-child{flex:0 0 auto}.report-table thead{display:table-header-group}.report-table tfoot{display:table-footer-group}.report-table tr{-moz-column-break-inside:avoid;break-inside:avoid;page-break-inside:avoid}.report-heading,.report-note{-moz-column-break-after:avoid;break-after:avoid;page-break-after:avoid}.report-section{-moz-column-break-inside:auto;break-inside:auto}.report-doc{color:#000}.quote-doc{display:block!important;gap:0!important}.quote-page{width:186mm!important;max-width:100%!important;margin-inline:auto!important;min-height:0!important;padding:0!important;background:none!important;box-shadow:none!important;border-radius:0!important;-moz-column-break-after:page;break-after:page;page-break-after:always}.brand-logo{-webkit-print-color-adjust:exact;print-color-adjust:exact}.quote-page[data-fit]{width:calc(186mm / var(--fit))!important;max-width:calc(100% / var(--fit))!important}.quote-doc{--q-ink: #6e1b2b !important;--q-line: #8c2233 !important;--q-band: #f7e8ea !important}.quote-doc .data-table thead th{-webkit-print-color-adjust:exact;print-color-adjust:exact}.quote-page:last-child{-moz-column-break-after:auto;break-after:auto;page-break-after:auto}.quote-doc .table-xscroll,.quote-doc div[style*=overflow-x],.quote-doc div[style*=overflowX]{overflow:visible!important}.quote-doc tr,.quote-doc h2,.quote-doc h3{-moz-column-break-inside:avoid;break-inside:avoid;page-break-inside:avoid}main{overflow:visible!important;padding:0!important}.app-shell{display:block!important;height:auto!important;overflow:visible!important}.app-topbar,.app-nav,.app-backdrop{display:none!important}.app-main{padding:0!important;overflow:visible!important}html,body,.app-shell,.app-main,.quote-doc,.quote-page{background:#fff!important}}@media (min-width: 768px){.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(200px\,280px\)\]{grid-template-columns:minmax(0,1fr) minmax(200px,280px)}.md\:grid-cols-\[minmax\(0\,1fr\)_minmax\(320px\,2fr\)\]{grid-template-columns:minmax(0,1fr) minmax(320px,2fr)}.md\:gap-6{gap:1.15rem}}
