:root{--c-bg:#eef1f6;--c-surface:#fff;--c-surface-2:#f7f9fc;--c-surface-3:#eef2f8;--c-border:#d8dee9;--c-border-strong:#b9c2d4;--c-nav:#0f1b2d;--c-nav-2:#16263d;--c-nav-border:#243650;--c-nav-text:#c5d2e6;--c-nav-text-dim:#7f93b3;--c-nav-active:#1d3c63;--c-text:#15233b;--c-text-2:#46566f;--c-text-3:#76859c;--c-text-inv:#fff;--c-accent:#1763d6;--c-accent-hover:#1457bd;--c-accent-soft:#e3edfd;--c-accent-ring:#1763d647;--c-profit:#0f8a4f;--c-profit-soft:#e2f5ea;--c-loss:#d13b3b;--c-loss-soft:#fce5e5;--c-warn:#c77800;--c-warn-soft:#fdf0d8;--c-info:#1763d6;--c-draft:#76859c;--c-submitted:#c77800;--c-approved:#0f8a4f;--c-closed:#46566f;--font-sans:"Hiragino Kaku Gothic ProN", "Hiragino Sans", "Yu Gothic", "Meiryo", system-ui, -apple-system, "Segoe UI", sans-serif;--font-num:"SF Mono", "Roboto Mono", "Consolas", ui-monospace, monospace;--text-2xs:12px;--text-xs:13px;--text-sm:14px;--text-base:15px;--text-md:17px;--text-lg:20px;--text-xl:24px;--text-2xl:30px;--text-3xl:40px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--radius-sm:5px;--radius:8px;--radius-lg:12px;--radius-xl:16px;--shadow-sm:0 1px 2px #0f1b2d0f, 0 1px 3px #0f1b2d14;--shadow:0 2px 6px #0f1b2d14, 0 6px 16px #0f1b2d14;--shadow-lg:0 10px 30px #0f1b2d29;--dur:.14s;--ease:cubic-bezier(.2, .7, .3, 1);--sidebar-w:264px;--topbar-h:64px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);font-size:var(--text-base);color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility}h1,h2,h3,h4{letter-spacing:.01em;margin:0;font-weight:700}button{cursor:pointer;font-family:inherit}input,select,textarea{font-family:inherit;font-size:var(--text-sm)}.num{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.profit{color:var(--c-profit)}.loss{color:var(--c-loss)}.btn{justify-content:center;align-items:center;gap:var(--space-2);height:42px;padding:0 var(--space-5);border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text);font-size:var(--text-sm);transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), transform var(--dur) var(--ease);font-weight:600;display:inline-flex}.btn:hover{background:var(--c-surface-3)}.btn:active{transform:translateY(1px)}.btn:focus-visible{box-shadow:0 0 0 3px var(--c-accent-ring);outline:none}.btn-primary{background:var(--c-accent);border-color:var(--c-accent);color:var(--c-text-inv)}.btn-primary:hover{background:var(--c-accent-hover)}.btn-danger{border-color:var(--c-loss);color:var(--c-loss);background:var(--c-surface)}.btn-danger:hover{background:var(--c-loss-soft)}.btn-ghost{background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--c-surface-3)}.btn-sm{height:34px;padding:0 var(--space-3);font-size:var(--text-xs)}.btn-lg{height:54px;padding:0 var(--space-6);font-size:var(--text-md);border-radius:var(--radius)}.btn:disabled{opacity:.5;cursor:not-allowed}.field{gap:var(--space-1);flex-direction:column;display:flex}.field>label{font-size:var(--text-xs);color:var(--c-text-2);font-weight:600}.input,.select,.textarea{height:42px;padding:0 var(--space-3);border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);color:var(--c-text);transition:border-color var(--dur) var(--ease), box-shadow var(--dur) var(--ease);width:100%}.textarea{height:auto;padding:var(--space-2) var(--space-3);resize:vertical;min-height:64px}.input:focus,.select:focus,.textarea:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-ring);outline:none}.input.num{text-align:right}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-head{justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--c-border);display:flex}.card-head h3{font-size:var(--text-md)}.card-body{padding:var(--space-5)}.table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.table th{background:var(--c-surface-3);color:var(--c-text-2);font-size:var(--text-xs);text-align:left;padding:var(--space-3);border-bottom:1px solid var(--c-border-strong);white-space:nowrap;z-index:1;font-weight:700;position:sticky;top:0}.table th.right,.table td.right{text-align:right}.table td{padding:var(--space-3);border-bottom:1px solid var(--c-border);color:var(--c-text)}.table tbody tr{transition:background var(--dur) var(--ease)}.table tbody tr:hover{background:var(--c-accent-soft)}.table tfoot td{padding:var(--space-3);background:var(--c-surface-2);border-top:2px solid var(--c-border-strong);font-weight:700}.table .clickable{cursor:pointer}.badge{align-items:center;gap:var(--space-1);height:22px;padding:0 var(--space-2);font-size:var(--text-2xs);white-space:nowrap;border-radius:999px;font-weight:700;display:inline-flex}.badge-draft{background:var(--c-surface-3);color:var(--c-draft)}.badge-submitted{background:var(--c-warn-soft);color:var(--c-submitted)}.badge-approved{background:var(--c-profit-soft);color:var(--c-approved)}.badge-closed{color:var(--c-closed);background:#e6e9f0}.row{gap:var(--space-3);align-items:center;display:flex}.col{gap:var(--space-3);flex-direction:column;display:flex}.spacer{flex:1}.muted{color:var(--c-text-3)}.grid{gap:var(--space-4);display:grid}.empty{padding:var(--space-10);text-align:center;color:var(--c-text-3)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--c-border-strong);border:2px solid var(--c-bg);border-radius:999px}.splash{justify-content:center;align-items:center;gap:var(--space-4);background:var(--c-nav);height:100vh;color:var(--c-nav-text);flex-direction:column;display:flex}.splash .brand-mark{border-radius:var(--radius-lg);background:linear-gradient(135deg, var(--c-accent), #3f86f0);color:#fff;place-items:center;width:56px;height:56px;font-size:26px;font-weight:800;display:grid}@media (prefers-reduced-motion:reduce){*{transition:none!important}}.login-screen{justify-content:center;align-items:center;gap:var(--space-6);background:radial-gradient(120% 120% at 50% 0,#16263d 0%,#0f1b2d 55%,#0a1422 100%);flex-direction:column;height:100vh;display:flex}.login-panel{background:var(--c-surface);border-radius:var(--radius-xl);width:380px;max-width:92vw;box-shadow:var(--shadow-lg);padding:var(--space-8);gap:var(--space-6);flex-direction:column;display:flex}.login-brand{align-items:center;gap:var(--space-4);display:flex}.login-mark{border-radius:var(--radius-lg);width:48px;height:48px;font-size:24px}.login-brand h1{font-size:var(--text-xl);color:var(--c-text)}.login-brand p{font-size:var(--text-xs);color:var(--c-text-3);margin:2px 0 0}.login-form{gap:var(--space-4);flex-direction:column;display:flex}.login-submit{height:42px;margin-top:var(--space-2)}.login-error{padding:var(--space-2) var(--space-3);background:var(--c-loss-soft);color:var(--c-loss);border-radius:var(--radius-sm);font-size:var(--text-xs);margin:0;font-weight:600}.login-hint{text-align:center;font-size:var(--text-2xs);color:var(--c-text-3);margin:0}.login-hint code{background:var(--c-surface-3);font-size:var(--text-2xs);border-radius:4px;padding:1px 5px}.login-foot{color:var(--c-nav-text-dim);font-size:var(--text-2xs)}.app-shell{grid-template-columns:var(--sidebar-w) 1fr;height:100vh;display:grid;overflow:hidden}.sidebar{background:var(--c-nav);color:var(--c-nav-text);border-right:1px solid var(--c-nav-border);flex-direction:column;display:flex}.sidebar-brand{align-items:center;gap:var(--space-3);padding:var(--space-5);border:none;border-bottom:1px solid var(--c-nav-border);text-align:left;cursor:pointer;width:100%;transition:background var(--dur) var(--ease);background:0 0;display:flex}.sidebar-brand:hover{background:var(--c-nav-2)}.brand-mark{border-radius:var(--radius);background:linear-gradient(135deg, var(--c-accent), #3f86f0);color:#fff;width:38px;height:38px;box-shadow:var(--shadow);place-items:center;font-size:20px;font-weight:800;display:grid}.brand-text{flex-direction:column;line-height:1.3;display:flex}.brand-text strong{color:#fff;font-size:var(--text-md)}.brand-text span{font-size:var(--text-2xs);color:var(--c-nav-text-dim)}.sidebar-nav{padding:var(--space-3);flex-direction:column;flex:1;gap:2px;margin:0;list-style:none;display:flex;overflow:auto}.nav-item{align-items:center;gap:var(--space-3);width:100%;padding:10px var(--space-3);border-radius:var(--radius);color:var(--c-nav-text);font-size:var(--text-sm);text-align:left;transition:background var(--dur) var(--ease), color var(--dur) var(--ease);background:0 0;border:none;font-weight:600;display:flex}.nav-item:hover{background:var(--c-nav-2);color:#fff}.nav-item.active{background:var(--c-nav-active);color:#fff;box-shadow:inset 3px 0 0 var(--c-accent)}.sidebar-foot{padding:var(--space-4) var(--space-5);border-top:1px solid var(--c-nav-border)}.muted-nav{font-size:var(--text-2xs);color:var(--c-nav-text-dim)}.main-area{flex-direction:column;min-width:0;display:flex;overflow:hidden}.topbar{height:var(--topbar-h);align-items:center;gap:var(--space-4);padding:0 var(--space-6);background:var(--c-surface);border-bottom:1px solid var(--c-border);flex-shrink:0;display:flex}.topbar-title{align-items:baseline;gap:var(--space-3);display:flex}.topbar-title h1{font-size:var(--text-lg)}.topbar-date{font-size:var(--text-xs);color:var(--c-text-3)}.topbar-user{align-items:center;gap:var(--space-3);padding-left:var(--space-4);border-left:1px solid var(--c-border);display:flex}.user-avatar{background:var(--c-accent-soft);width:34px;height:34px;color:var(--c-accent);border-radius:999px;place-items:center;font-weight:800;display:grid}.user-meta{flex-direction:column;line-height:1.25;display:flex}.user-meta strong{font-size:var(--text-sm)}.user-meta span{font-size:var(--text-2xs);color:var(--c-text-3)}.content{padding:var(--space-6);flex:1;overflow:auto}.page{gap:var(--space-5);flex-direction:column;max-width:1440px;margin:0 auto;display:flex}.page-section-title{font-size:var(--text-md);color:var(--c-text-2);margin-bottom:var(--space-1)}.home{gap:var(--space-6);max-width:1100px;padding-top:var(--space-2);flex-direction:column;margin:0 auto;display:flex}.home-greeting h2{font-size:var(--text-2xl);margin-bottom:var(--space-1)}.home-greeting p{color:var(--c-text-2);font-size:var(--text-md);margin:0}.home-summary{gap:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.home-stat{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);padding:var(--space-4) var(--space-5);gap:var(--space-1);box-shadow:var(--shadow-sm);flex-direction:column;display:flex}.home-stat-label{font-size:var(--text-sm);color:var(--c-text-3)}.home-stat-value{font-size:var(--text-2xl);font-weight:800}.home-tiles{gap:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.home-tile{align-items:center;gap:var(--space-4);padding:var(--space-6);border:1px solid var(--c-border);border-radius:var(--radius-xl);background:var(--c-surface);box-shadow:var(--shadow-sm);text-align:left;transition:transform var(--dur) var(--ease), box-shadow var(--dur) var(--ease), border-color var(--dur) var(--ease);min-height:116px;display:flex}.home-tile:hover{box-shadow:var(--shadow-lg);transform:translateY(-3px)}.home-tile:focus-visible{border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-ring);outline:none}.home-tile-icon{border-radius:var(--radius-lg);color:#fff;flex-shrink:0;place-items:center;width:64px;height:64px;display:grid}.home-tile-text{flex-direction:column;gap:4px;display:flex}.home-tile-text strong{font-size:var(--text-lg)}.home-tile-text span{font-size:var(--text-sm);color:var(--c-text-3)}.tile-blue .home-tile-icon{background:linear-gradient(135deg,#1763d6,#3f86f0)}.tile-green .home-tile-icon{background:linear-gradient(135deg,#0f8a4f,#2bb673)}.tile-purple .home-tile-icon{background:linear-gradient(135deg,#6d3fd6,#9a6cff)}.tile-amber .home-tile-icon{background:linear-gradient(135deg,#c77800,#e8a33d)}.tile-slate .home-tile-icon{background:linear-gradient(135deg,#46566f,#6b7d99)}@media (width<=1080px){.home-tiles{grid-template-columns:repeat(2,1fr)}}@media (width<=720px){.home-tiles,.home-summary{grid-template-columns:1fr}}.kpi-grid{gap:var(--space-4);grid-template-columns:repeat(5,1fr);display:grid}.kpi-card{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-5);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);border-left:4px solid var(--c-border-strong);display:flex}.kpi-accent{border-left-color:var(--c-accent)}.kpi-profit{border-left-color:var(--c-profit)}.kpi-loss{border-left-color:var(--c-loss)}.kpi-neutral{border-left-color:var(--c-text-3)}.kpi-icon{border-radius:var(--radius);background:var(--c-surface-3);width:42px;height:42px;color:var(--c-text-2);flex-shrink:0;place-items:center;display:grid}.kpi-accent .kpi-icon{background:var(--c-accent-soft);color:var(--c-accent)}.kpi-profit .kpi-icon{background:var(--c-profit-soft);color:var(--c-profit)}.kpi-loss .kpi-icon{background:var(--c-loss-soft);color:var(--c-loss)}.kpi-meta{flex-direction:column;min-width:0;display:flex}.kpi-label{font-size:var(--text-2xs);color:var(--c-text-3);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.kpi-value{font-size:var(--text-xl);font-weight:800;line-height:1.2}.kpi-sub{font-size:var(--text-2xs);color:var(--c-text-3)}.dash-grid{gap:var(--space-4);grid-template-columns:2fr 1fr;display:grid}.dash-wide{grid-column:1/-1}.chart-body{padding:var(--space-4) var(--space-3) var(--space-3)}@media (width<=1200px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.dash-grid{grid-template-columns:1fr}}.stepper{align-items:center;gap:var(--space-2);display:inline-flex}.stepper-btn{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);width:42px;height:42px;color:var(--c-accent);transition:background var(--dur) var(--ease);flex-shrink:0;font-size:22px;font-weight:700;line-height:1}.stepper-btn:hover:not(:disabled){background:var(--c-accent-soft)}.stepper-btn:active:not(:disabled){transform:translateY(1px)}.stepper-btn:disabled{opacity:.4;cursor:not-allowed}.stepper-input{text-align:center;border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);width:72px;height:42px;font-size:var(--text-md);color:var(--c-text);-moz-appearance:textfield;font-weight:700}.stepper-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.stepper-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.stepper-input:focus{border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-ring);outline:none}.stepper-suffix{font-size:var(--text-sm);color:var(--c-text-3)}.stepper-lg .stepper-btn{width:52px;height:52px;font-size:26px}.stepper-lg .stepper-input{width:90px;height:52px;font-size:var(--text-lg)}.entry-layout{gap:var(--space-5);grid-template-columns:1fr 340px;align-items:start;max-width:1440px;display:grid}.entry-basic{gap:var(--space-4);grid-template-columns:repeat(4,1fr);display:grid}.entry-day-head{gap:var(--space-4);grid-template-columns:220px 1fr;display:grid}.job-basic{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.job-site{grid-column:1/-1}.job-tabs{gap:var(--space-2);flex-wrap:wrap;align-items:stretch;display:flex}.job-tab{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--c-border-strong);border-radius:var(--radius);background:var(--c-surface);color:var(--c-text-2);font-size:var(--text-sm);max-width:280px;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);font-weight:600;display:flex}.job-tab:hover{background:var(--c-surface-3)}.job-tab.active{background:var(--c-accent-soft);border-color:var(--c-accent);color:var(--c-text)}.job-tab-no{background:var(--c-accent);color:#fff;width:22px;height:22px;font-size:var(--text-2xs);border-radius:999px;flex-shrink:0;place-items:center;font-weight:800;display:grid}.job-tab-label{white-space:nowrap;text-overflow:ellipsis;max-width:130px;overflow:hidden}.job-tab-amount{font-size:var(--text-xs);font-weight:700}.job-tab-close{width:20px;height:20px;color:var(--c-text-3);border-radius:999px;place-items:center;display:grid}.job-tab-close:hover{background:var(--c-loss-soft);color:var(--c-loss)}.job-tab-add{color:var(--c-accent);border-style:dashed}.summary-foot{margin:var(--space-3) 0 0;font-size:var(--text-2xs);text-align:center}.entry-site{grid-column:1/-1}.entry-cost{gap:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.cell-num{text-align:right;height:38px}.cell-stepper{justify-content:flex-end;display:flex}.vehicle-grid{gap:var(--space-2);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.vehicle-chip{align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);cursor:pointer;color:var(--c-text-2);transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);display:flex}.vehicle-chip:hover{background:var(--c-surface-3)}.vehicle-chip.checked{background:var(--c-accent-soft);border-color:var(--c-accent);color:var(--c-text)}.vehicle-name{font-size:var(--text-sm);flex:1;font-weight:600}.vehicle-cost{font-size:var(--text-xs);color:var(--c-text-3)}.entry-summary{position:sticky;top:0}.summary-card{background:var(--c-nav);color:var(--c-nav-text);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--shadow)}.summary-card h3{color:#fff;font-size:var(--text-sm);margin-bottom:var(--space-4)}.summary-profit{padding:var(--space-4);border-radius:var(--radius);margin-bottom:var(--space-4);background:#ffffff0d;flex-direction:column;align-items:flex-start;display:flex}.summary-label{font-size:var(--text-xs);color:var(--c-nav-text-dim)}.summary-profit-value{font-size:var(--text-3xl);font-weight:800;line-height:1.2}.summary-profit-value.profit{color:#4ade80}.summary-profit-value.loss{color:#f87171}.summary-margin{font-size:var(--text-xs);font-weight:700}.summary-margin.profit{color:#4ade80}.summary-margin.loss{color:#f87171}.summary-list{margin:0 0 var(--space-4);flex-direction:column;gap:2px;display:flex}.summary-row{font-size:var(--text-sm);justify-content:space-between;padding:5px 0;display:flex}.summary-row dt{color:var(--c-nav-text-dim)}.summary-row dd{color:#fff;margin:0}.summary-row.revenue dd{color:#93c5fd;font-weight:700}.summary-row.total{border-top:1px solid var(--c-nav-border);margin-top:var(--space-1);padding-top:var(--space-2);font-weight:700}.summary-row.total dd{color:#fff}.summary-sep{font-size:var(--text-2xs);color:var(--c-nav-text-dim);text-transform:uppercase;letter-spacing:.08em;margin-top:var(--space-2)}.summary-actions{gap:var(--space-2);flex-direction:column;display:flex}.summary-save{width:100%}.sheets-filter{align-items:flex-end}.sheets-filter-fields{align-items:flex-end;gap:var(--space-3);flex-wrap:wrap}.sheets-filter-fields .field{min-width:130px}.sheets-table{max-height:68vh}.sheets-site{flex-direction:column;line-height:1.3;display:flex}.sheets-proj{font-size:var(--text-2xs)}.sheets-actions{flex-wrap:nowrap;justify-content:flex-end;gap:0}.modal-backdrop{padding:8vh var(--space-4) var(--space-4);z-index:100;animation:fade var(--dur) var(--ease);background:#0f1b2d6b;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0}.modal{background:var(--c-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-width:94vw;max-height:86vh;animation:pop var(--dur) var(--ease);flex-direction:column;display:flex}.modal-head{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--c-border);justify-content:space-between;align-items:center;display:flex}.modal-head h3{font-size:var(--text-md)}.modal-body{padding:var(--space-5);overflow:auto}.modal-foot{justify-content:flex-end;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--c-border);display:flex}@keyframes fade{0%{opacity:0}}@keyframes pop{0%{opacity:0;transform:translateY(-8px)}}.em-subtitle{font-size:var(--text-xs);margin:2px 0 0}.em-table-wrap{max-height:60vh;overflow:auto}.em-search{align-items:center;gap:var(--space-2);padding:0 var(--space-3);border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);background:var(--c-surface);height:32px;color:var(--c-text-3);display:flex}.em-search-input{width:130px;color:var(--c-text);background:0 0;border:none;outline:none}.em-actions{justify-content:flex-end;gap:2px}.danger-hover:hover{color:var(--c-loss);background:var(--c-loss-soft)}.em-form{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.em-field-full{grid-column:1/-1}.em-input-suffix{align-items:center;display:flex;position:relative}.em-suffix{right:var(--space-3);font-size:var(--text-xs);color:var(--c-text-3);pointer-events:none;position:absolute}.em-help{font-size:var(--text-2xs)}.em-checkbox{align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--c-text-2);grid-column:1/-1;font-weight:600;display:flex}.em-image{align-items:center;gap:var(--space-4);display:flex}.em-logo-preview{object-fit:contain;border:1px solid var(--c-border);border-radius:var(--radius-sm);background:#fff;max-width:160px;height:48px;padding:4px}.progress-cell{align-items:center;gap:var(--space-2);min-width:130px;display:flex}.progress-bar{background:var(--c-surface-3);border-radius:999px;flex:1;height:8px;overflow:hidden}.progress-bar span{background:linear-gradient(90deg, var(--c-accent), #3f86f0);height:100%;transition:width var(--dur) var(--ease);border-radius:999px;display:block}.progress-pct{font-size:var(--text-xs);color:var(--c-text-2);text-align:right;min-width:46px}.tabs{gap:var(--space-1);border-bottom:1px solid var(--c-border);flex-wrap:wrap;display:flex}.tab{padding:var(--space-3) var(--space-4);color:var(--c-text-2);font-size:var(--text-sm);transition:color var(--dur) var(--ease), border-color var(--dur) var(--ease);background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;font-weight:600}.tab:hover{color:var(--c-text)}.tab.active{color:var(--c-accent);border-bottom-color:var(--c-accent)}.mini-logo{object-fit:contain;max-width:80px;height:26px}.settings-grid{gap:var(--space-5);grid-template-columns:1fr 1fr;display:grid}.settings-full{grid-column:1/-1}.print-sheet{color:#111;box-sizing:border-box;background:#fff;width:194mm;margin:0 auto;padding:6mm 8mm;font-size:11px}.print-head{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:8px;display:flex}.print-company{align-items:center;gap:12px;display:flex}.print-logo{object-fit:contain;max-width:160px;height:52px}.print-company-name{margin:0;font-size:18px;font-weight:800}.print-company-sub{color:#333;margin:1px 0 0;font-size:10px}.print-title-block{text-align:right}.print-title{letter-spacing:2px;margin:0 0 6px;font-size:20px;font-weight:800}.print-meta{border-collapse:collapse;margin-left:auto;font-size:11px}.print-meta th,.print-meta td{border:1px solid #111;padding:2px 8px}.print-meta th{text-align:center;white-space:nowrap;background:#eee}.print-siterow{border:1px solid #111;margin-bottom:6px;display:flex}.print-site-label{white-space:nowrap;background:#eee;border-right:1px solid #111;padding:3px 10px;font-weight:700}.print-site-value{flex:1;padding:3px 10px}.print-table{border-collapse:collapse;width:100%;margin-bottom:8px}.print-table th,.print-table td{border:1px solid #111;padding:3px 6px}.print-table thead th{text-align:center;background:#e8e8e8;font-weight:700}.print-table .c-no{text-align:center;width:32px}.print-table .c-cat{text-align:center;width:56px}.print-table .c-num{text-align:right;font-variant-numeric:tabular-nums;width:96px}.print-table .c-qty{text-align:right;width:72px}.print-pad td{height:20px}.print-total-label{text-align:right;background:#f3f3f3;font-weight:700}.print-total{background:#f3f3f3;font-weight:800}.print-bottom{align-items:flex-start;gap:10px;display:flex}.print-cost,.print-summary{border-collapse:collapse}.print-cost{flex:1}.print-summary{width:230px}.print-cost th,.print-cost td,.print-summary th,.print-summary td{border:1px solid #111;padding:3px 8px}.print-cost thead th{text-align:center;background:#e8e8e8}.print-cost th{text-align:left;font-weight:600}.print-cost .c-num,.print-summary .c-num{text-align:right;font-variant-numeric:tabular-nums;width:110px}.print-cost-total th,.print-cost-total td{background:#f3f3f3;font-weight:800}.print-summary th{text-align:left;background:#eee}.print-profit th,.print-profit td{color:#fff;background:#111;font-size:14px;font-weight:800}.print-note{margin:6px 0 0;font-size:10px}.print-foot{justify-content:space-between;align-items:flex-end;margin-top:10px;display:flex}.print-footer-text{margin:0;font-size:10px}.print-stamps{border-collapse:collapse}.print-stamps th,.print-stamps td{border:1px solid #111}.print-stamps th{background:#eee;padding:2px 8px;font-size:10px}.stamp-cell{width:56px;height:48px}.day-print .print-title{font-size:16px}.day-job{break-inside:avoid;page-break-inside:avoid;border:1.2px solid #111;margin-bottom:4px}.day-job-head{background:#e8e8e8;border-bottom:1px solid #111;align-items:center;gap:6px;padding:2px 6px;display:flex}.day-job-no{color:#fff;background:#111;border-radius:999px;flex-shrink:0;place-items:center;width:17px;height:17px;font-size:10px;font-weight:800;display:grid}.day-job-site{font-size:11px;font-weight:800}.day-job-meta{color:#333;white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:9px;overflow:hidden}.day-job-profit{font-size:11px;font-weight:800}.day-job-profit.is-loss{color:#b00}.day-job-body{display:block}.day-job-table{border:none;width:100%;margin:0}.day-job-table th,.day-job-table td{border:1px solid #999;padding:0 4px;font-size:9.5px;line-height:1.5}.day-job-table thead th{background:#f3f3f3}.day-job-costline{background:#fafafa;border-top:1px solid #111;flex-wrap:wrap;gap:0 10px;padding:2px 6px;font-size:9.5px;display:flex}.day-job-costline span{white-space:nowrap}.day-job-costline .ci-num{font-variant-numeric:tabular-nums;font-weight:700}.day-job-costline .ci-cost{font-weight:800}.day-job-costline .ci-rev{margin-left:auto;font-weight:800}.day-grand{border-collapse:collapse;width:100%;margin-top:4px}.day-grand th,.day-grand td{border:1.5px solid #111;padding:5px 8px;font-size:12px}.day-grand th{text-align:center;white-space:nowrap;background:#e8e8e8}.day-grand .c-num{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.day-grand-profit-th{color:#fff;background:#111!important}.day-grand-profit{color:#fff;background:#111;font-weight:800;font-size:14px!important}.print-preview{border-radius:var(--radius-lg);background:#5b6472;padding:24px;overflow:auto}.print-preview .print-sheet{box-shadow:var(--shadow-lg)}@media print{@page{size:A4 portrait;margin:8mm}html,body{background:#fff!important}body *{visibility:hidden}.print-area,.print-area *{visibility:visible}.print-area{margin:0;position:absolute;inset:0}.print-preview{background:0 0!important;padding:0!important;overflow:visible!important}.print-sheet{width:100%;box-shadow:none;margin:0;padding:0}.day-job,.day-grand,.print-foot{break-inside:avoid;page-break-inside:avoid}.no-print,.toaster,.sidebar,.topbar,.tabs{display:none!important}}.reports-head{gap:var(--space-3);flex-wrap:wrap;align-items:flex-end}.reports-select{min-width:360px}.seg{border:1px solid var(--c-border-strong);border-radius:var(--radius-sm);height:42px;display:inline-flex;overflow:hidden}.seg-btn{background:var(--c-surface);color:var(--c-text-2);font-size:var(--text-sm);padding:0 var(--space-4);transition:background var(--dur) var(--ease), color var(--dur) var(--ease);border:none;font-weight:700}.seg-btn+.seg-btn{border-left:1px solid var(--c-border-strong)}.seg-btn.active{background:var(--c-accent);color:#fff}.reports-hint{margin:0 0 var(--space-4);padding:var(--space-3) var(--space-4);background:var(--c-accent-soft);border-radius:var(--radius);font-size:var(--text-sm);line-height:1.6}@media print{.sidebar,.topbar,.tabs,.card-head.no-print{display:none!important}}.admin-cards{gap:var(--space-4);grid-template-columns:1fr 1fr;display:grid}.stat-grid{gap:var(--space-4);grid-template-columns:repeat(3,1fr);display:grid}.stat{padding:var(--space-3);background:var(--c-surface-2);border-radius:var(--radius);flex-direction:column;display:flex}.stat-label{font-size:var(--text-2xs);color:var(--c-text-3)}.stat-value{font-size:var(--text-lg);font-weight:800}.admin-actions{gap:var(--space-2);flex-direction:column;align-items:flex-start;display:flex}.admin-actions .btn{justify-content:flex-start;width:100%}.admin-note{font-size:var(--text-2xs);margin:var(--space-2) 0 0}.admin-log{max-height:56vh}@media (width<=1100px){.admin-cards{grid-template-columns:1fr}}.toaster{bottom:var(--space-6);right:var(--space-6);gap:var(--space-2);z-index:200;flex-direction:column;display:flex;position:fixed}.toast{min-width:240px;max-width:380px;padding:var(--space-3) var(--space-4);border-radius:var(--radius);background:var(--c-nav);color:var(--c-text-inv);font-size:var(--text-sm);box-shadow:var(--shadow-lg);cursor:pointer;animation:toast-in var(--dur) var(--ease);border-left:4px solid var(--c-accent);font-weight:600}.toast-success{border-left-color:var(--c-profit)}.toast-error{border-left-color:var(--c-loss)}.toast-info{border-left-color:var(--c-accent)}@keyframes toast-in{0%{opacity:0;transform:translate(20px)}}
