:root{--base:#f0ede5;--paper:#faf8f2;--sunken:#e7e1d4;--clay:#b08968;--clay-tint:#ebdfd2;--soil:#7f5539;--sage:#a3b18a;--sage-tint:#e6eade;--ink:#2e2620;--muted:#6b5d4f;--line:#ded7c9;--moss:#3f7d52;--ochre:#9c6a28;--bg:var(--base);--surface:var(--paper);--surface-sunken:var(--sunken);--text:var(--ink);--text-muted:var(--muted);--text-emphasis:var(--soil);--border:var(--line);--accent:var(--clay);--accent-strong:var(--soil);--accent-soft:var(--clay-tint);--focus:var(--sage);--on-accent:#fcf8f1;--danger:#7a2e1d;--badge-owner-bg:#efe0d6;--badge-owner-fg:#5c3a23;--badge-staff-bg:var(--clay-tint);--badge-staff-fg:var(--soil);--badge-sage-bg:var(--sage-tint);--badge-sage-fg:#4d5e3f;--status-live:var(--moss);--status-wait:var(--ochre);--shadow:0 1px 2px #3c2d1e0a, 0 10px 30px -16px #3c2d1e2e;--shadow-sm:0 1px 2px #3c2d1e0d, 0 4px 14px -10px #3c2d1e24;--shadow-accent:0 14px 30px -14px #7f55398c;--r:18px;--r-sm:12px;--display:"Fraunces", "Noto Serif Thai", Georgia, serif;--body:"Anuphan", -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#16120e;--surface:#211c16;--surface-sunken:#2c251e;--text:#ece4d8;--text-muted:#b0a292;--text-emphasis:#e7c9a8;--border:#827058;--accent:#c9a47e;--accent-strong:#c08a5c;--accent-soft:#332a20;--focus:#b9c79f;--on-accent:#1a1510;--danger:#e0936f;--badge-owner-bg:#3a2a1e;--badge-owner-fg:#e8c9ac;--badge-staff-bg:#332a20;--badge-staff-fg:#e7c9a8;--badge-sage-bg:#28301f;--badge-sage-fg:#c2d2a3;--status-live:#6fae6a;--status-wait:#d9a94e;--shadow:0 1px 2px #0006, 0 12px 30px -16px #000000b3;--shadow-sm:0 1px 2px #0006, 0 4px 14px -10px #0000008c;--shadow-accent:0 14px 30px -14px #0009;--lightningcss-light: !important;--lightningcss-dark:initial!important;color-scheme:dark!important}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--body);-webkit-font-smoothing:antialiased;min-height:100vh;font-size:17px;line-height:1.65}h1,h2,h3,h4{font-family:var(--display);letter-spacing:-.01em;font-weight:400;line-height:1.14}.muted{color:var(--text-muted)}.eyebrow{letter-spacing:.22em;text-transform:uppercase;color:var(--accent);font-size:.72rem;font-weight:500}.strata{border-radius:99px;width:100%;height:8px;display:flex;overflow:hidden}.strata span{height:100%;display:block}.strata .s1{background:var(--sage);flex:2}.strata .s2{background:var(--clay);flex:3}.strata .s3{background:var(--soil);flex:2}.shell{max-width:560px;margin:0 auto;padding:56px 24px 80px}.brand{align-items:center;gap:12px;margin-bottom:40px;display:flex}.seal{background:conic-gradient(from 200deg, var(--sage), var(--clay), var(--soil), var(--sage));width:38px;height:38px;box-shadow:inset 0 0 0 6px var(--bg), var(--shadow-sm);border-radius:50%}.brand b{font-family:var(--display);font-size:1.25rem;font-weight:500}.brand small{color:var(--text-muted);font-size:.8rem}.card{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);border:1px solid color-mix(in srgb, var(--border) 70%, transparent);overflow:hidden}.card .pad{padding:26px}.card-label{letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:16px;font-size:.72rem}.btn{font-family:var(--body);cursor:pointer;border:0;border-radius:99px;justify-content:center;align-items:center;gap:9px;padding:13px 24px;font-size:.98rem;font-weight:500;text-decoration:none;transition:transform .18s,box-shadow .18s,background .18s;display:inline-flex}.btn-primary{background:var(--accent-strong);color:var(--on-accent);box-shadow:var(--shadow-sm)}.btn-primary:hover{box-shadow:var(--shadow-accent);transform:translateY(-2px)}.btn-line{color:#fff;box-shadow:var(--shadow-sm);background:#06c755;width:100%}.btn-line:hover{transform:translateY(-2px)}.btn-ghost{color:var(--accent-strong);box-shadow:inset 0 0 0 1.5px var(--border);background:0 0}.btn-ghost:hover{background:var(--accent-soft);box-shadow:inset 0 0 0 1.5px var(--accent)}.btn:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.btn:disabled{opacity:.5;cursor:default;transform:none}.field{margin-bottom:16px}.field label{color:var(--text-muted);margin-bottom:7px;font-size:.82rem;font-weight:500;display:block}.field input{width:100%;font-family:var(--body);color:var(--text);border-radius:var(--r-sm);border:1.5px solid var(--border);background:var(--bg);padding:12px 15px;font-size:1rem;transition:border .16s}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}select{font-family:var(--body);color:var(--text);border-radius:var(--r-sm);border:1.5px solid var(--border);background:var(--bg);cursor:pointer;padding:12px 15px;font-size:1rem;transition:border .16s}select:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.field select{width:100%}.check{color:var(--text-muted);align-items:center;gap:9px;margin-bottom:18px;font-size:.92rem;display:flex}.badge{white-space:nowrap;border-radius:99px;padding:5px 12px;font-size:.74rem;font-weight:500;line-height:1.5;display:inline-block}.b-clay{background:var(--badge-staff-bg);color:var(--badge-staff-fg)}.title{margin:.2em 0 .1em;font-size:clamp(2rem,5vw,2.8rem)}.title em{color:var(--text-emphasis);font-style:italic}.lede{color:var(--text-muted);margin-bottom:28px}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.spacer{height:18px}.kv{border-bottom:1px dashed var(--border);justify-content:space-between;gap:16px;padding:11px 0;font-size:.95rem;display:flex}.kv:last-child{border-bottom:0}.kv .k{color:var(--text-muted)}.kv .v{font-variant-numeric:tabular-nums}.notice{background:var(--accent-soft);color:var(--text-emphasis);border-radius:var(--r-sm);margin-bottom:18px;padding:14px 16px;font-size:.9rem}.error{color:var(--danger);margin-top:10px;font-size:.88rem}.center{min-height:60vh;color:var(--text-muted);justify-content:center;align-items:center;display:flex}@media (prefers-reduced-motion:reduce){.btn:hover{transform:none}}.app{flex-direction:column;min-height:100vh;display:flex}.appbar{background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding:14px clamp(16px,4vw,40px);display:flex}.brand-compact{margin-bottom:0}.brand-compact .seal{width:30px;height:30px;box-shadow:inset 0 0 0 5px var(--surface), var(--shadow-sm)}.appbar-right{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.idchip{align-items:center;gap:8px;min-width:0;max-width:100%;font-size:.88rem;display:inline-flex}.idchip-name{text-overflow:ellipsis;white-space:nowrap;max-width:14ch;font-weight:500;overflow:hidden}.btn-sm{padding:8px 16px;font-size:.88rem}.appmain{flex:1;width:100%;max-width:920px;margin:0 auto;padding:clamp(16px,5vw,48px) clamp(12px,4vw,40px) 48px}.appwrap{width:100%;max-width:920px;margin:0 auto;padding:16px clamp(16px,4vw,40px) 0}.appfoot{width:100%;max-width:920px;margin:0 auto;padding:0 clamp(16px,4vw,40px) 28px}.dash-head{margin-bottom:22px}.dash-head .title{margin-top:.1em;font-size:clamp(1.7rem,4vw,2.4rem)}.skel{flex-direction:column;gap:12px;display:flex}.skel-row{background:linear-gradient(90deg, var(--surface-sunken) 25%, var(--accent-soft) 37%, var(--surface-sunken) 63%);background-size:400% 100%;border-radius:8px;height:16px;animation:1.4s infinite skel}.skel-row:nth-child(2){width:82%}.skel-row:nth-child(3){width:64%}@keyframes skel{0%{background-position:100% 0}to{background-position:-100% 0}}.snapshot-grid{grid-template-columns:1fr;gap:16px;display:grid}@media (width>=560px){.snapshot-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=860px){.snapshot-grid{grid-template-columns:repeat(3,1fr)}}.snapshot-card{margin-bottom:0}.snapshot-kv-list{list-style:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.skel-row{animation:none}}.wht-period-row{flex-wrap:wrap;align-items:flex-end;gap:14px;margin-bottom:20px;display:flex}.wht-period-field{flex-direction:column;gap:7px;display:flex}.wht-period-label{color:var(--text-muted);font-size:.82rem;font-weight:500}.wht-period-input{width:110px;font-family:var(--body);color:var(--text);border-radius:var(--r-sm);border:1.5px solid var(--border);background:var(--bg);font-variant-numeric:tabular-nums;padding:8px 14px;font-size:1rem}.wht-period-input:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.wht-period-select{appearance:none;font-family:var(--body);color:var(--text);background:var(--bg);border:1.5px solid var(--border);border-radius:var(--r-sm);cursor:pointer;background-image:linear-gradient(45deg, transparent 50%, var(--text-muted) 50%), linear-gradient(135deg, var(--text-muted) 50%, transparent 50%);background-position:calc(100% - 16px) 1.1em,calc(100% - 11px) 1.1em;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding:8px 32px 8px 14px;font-size:.95rem;font-weight:500}.wht-period-select:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.wht-sections{flex-direction:column;gap:26px;display:flex}.wht-section-title{font-family:var(--display);color:var(--text-emphasis);margin-bottom:12px;font-size:1.15rem}.wht-disclaimer{background:var(--accent-soft);color:var(--text-emphasis);border-radius:var(--r-sm);margin-top:24px;padding:14px 16px;font-size:.86rem}.tech{width:100%}.tech .dash-head{margin-bottom:18px}.tech-active{background:var(--accent-soft);border:1.5px solid var(--accent);border-radius:var(--r-sm);flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin-bottom:18px;padding:13px 16px;font-size:.98rem;display:flex}.tech-active-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--accent-strong);width:100%;font-size:.7rem;font-weight:600}.tech-list{flex-direction:column;gap:12px;margin:0;padding:0;list-style:none;display:flex}.tech-job{text-align:start;width:100%;font-family:var(--body);background:var(--surface);border:1.5px solid var(--border);border-radius:var(--r-sm);cursor:pointer;min-height:64px;box-shadow:var(--shadow-sm);justify-content:space-between;align-items:center;gap:14px;padding:16px 18px;transition:border-color .16s,box-shadow .16s,transform .16s;display:flex}.tech-job:hover{border-color:var(--accent)}.tech-job:focus-visible{outline:3px solid var(--focus);outline-offset:3px}.tech-job.selected{border-color:var(--accent-strong);box-shadow:inset 0 0 0 1.5px var(--accent-strong), var(--shadow-sm)}.tech-job-main{flex-direction:column;gap:3px;min-width:0;display:flex}.tech-job-name{color:var(--text);font-size:1.04rem;font-weight:600}.tech-job-site{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;overflow:hidden}.tech-job-desc{color:var(--text-muted);white-space:pre-wrap;overflow-wrap:anywhere;font-size:.88rem}.tech-job-status{color:var(--text-muted);white-space:nowrap;flex-shrink:0;align-items:center;gap:7px;font-size:.82rem;display:inline-flex}.tech-job-map{margin-top:8px}.tech-dot{background:var(--text-muted);border-radius:50%;flex-shrink:0;width:9px;height:9px}.tech-dot.is-live{background:var(--status-live)}.tech-dot.is-wait{background:var(--status-wait)}.tech-dot.is-done{background:var(--accent)}.tech-dot.is-muted{background:var(--text-muted)}@media (prefers-reduced-motion:reduce){.tech-job{transition:none}}.photo{margin-bottom:18px}.photo-caption{font-family:var(--body);color:var(--text);background:var(--bg);border:1.5px solid var(--border);border-radius:var(--r-sm);width:100%;margin-bottom:12px;padding:10px 13px;font-size:.95rem;transition:border-color .16s,box-shadow .16s}.photo-caption:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft);outline:none}.photo-pick{cursor:pointer;justify-content:center;align-items:center;width:100%;display:inline-flex}.photo-pick.is-busy{cursor:default;opacity:.7}.photo-pick:focus-within{outline:3px solid var(--focus);outline-offset:3px}.photo-grid{grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px;display:grid}@media (width>=520px){.photo-grid{grid-template-columns:repeat(3,1fr)}}.photo-thumb{aspect-ratio:1;border-radius:var(--r-sm);border:1.5px solid var(--border);background:var(--surface-sunken);width:100%;font:inherit;color:inherit;cursor:pointer;padding:0;display:block;position:relative;overflow:hidden}.photo-thumb img{object-fit:cover;width:100%;height:100%;display:block}.photo-thumb:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.photo-cap{color:#fff;text-overflow:ellipsis;white-space:nowrap;background:linear-gradient(#0000,#0000009e);padding:6px 8px;font-size:.76rem;position:absolute;bottom:0;left:0;right:0;overflow:hidden}.checkin{margin-bottom:18px}.checkin .pad{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.checkin .eyebrow{margin:0}.checkin .btn{align-self:stretch}.checkin-status{color:var(--text);align-items:center;gap:9px;margin:0;font-weight:600;display:inline-flex}.checkin-dot{background:var(--status-live);border-radius:50%;flex-shrink:0;width:10px;height:10px}.checkin-gps{margin:0;font-size:.85rem}.checkin-error{color:var(--danger);margin:0;font-size:.9rem}@media (prefers-reduced-motion:no-preference){.checkin-dot{animation:2s ease-in-out infinite checkin-pulse}}@keyframes checkin-pulse{0%,to{opacity:1}50%{opacity:.45}}.lightbox{z-index:100;padding:max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom));background:#000000e6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox-img{object-fit:contain;border-radius:var(--r-sm);max-width:100%;max-height:100%}.lightbox-close,.lightbox-nav{color:#fff;cursor:pointer;background:#00000080;border:none;border-radius:999px;justify-content:center;align-items:center;min-width:44px;min-height:44px;padding:0;font-size:1.6rem;line-height:1;display:flex;position:absolute}.lightbox-close{top:max(12px, env(safe-area-inset-top));right:12px}.lightbox-nav{top:50%;transform:translateY(-50%)}.lightbox-prev{left:8px}.lightbox-next{right:8px}.lightbox-close:focus-visible,.lightbox-nav:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.lightbox-cap{left:0;right:0;bottom:max(12px, env(safe-area-inset-bottom));text-align:center;color:#fff;background:#00000080;margin:0;padding:8px 16px;font-size:.85rem;position:absolute}.chip{border:1.5px solid var(--border);font:inherit;cursor:pointer;color:var(--text);background:0 0;border-radius:999px;padding:4px 12px;font-size:.85rem}.job-hub-head{padding:4px 0 8px}.job-hub-back{color:var(--accent-strong);margin-bottom:8px;text-decoration:none;display:inline-block}.job-hub-title{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.money-strip{color:var(--text-muted);scrollbar-width:thin;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;gap:16px;margin-top:10px;font-size:.9rem;display:flex;overflow-x:auto}.money-strip>span{white-space:nowrap;flex:none}.money-strip b{color:var(--text);font-weight:600}.pdf-modal-overlay{z-index:150;padding:max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom));background:#000000b8;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.pdf-modal{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);border:1px solid color-mix(in srgb, var(--border) 70%, transparent);flex-direction:column;width:100%;max-width:860px;max-height:calc(100vh - 48px);display:flex;overflow:hidden}.pdf-modal-head{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;display:flex}.pdf-modal-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:.95rem;font-weight:500;overflow:hidden}.pdf-modal-iframe{border:0;width:100%;height:80vh;max-height:calc(100vh - 130px);display:block}.upload-progress{margin:10px 0}.upload-progress-label{color:var(--text);margin-bottom:4px;font-size:.85rem}.upload-progress-row{align-items:center;gap:10px;display:flex}.upload-progress-track{background:var(--surface-sunken);border:1px solid var(--border);border-radius:999px;flex:1;height:8px;overflow:hidden}.upload-progress-fill{background:var(--accent-strong);border-radius:999px;height:100%;transition:width .12s ease-out}.upload-progress-pct{color:var(--text-muted);text-align:right;font-variant-numeric:tabular-nums;min-width:3ch;font-size:.8rem}.upload-progress-sub{margin-top:3px;font-size:.78rem}
