@import "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@600;700&family=DM+Sans:wght@400;500;600&family=DM+Mono:wght@400;500&display=swap";.toast-stack{top:var(--sp-6);right:var(--sp-6);gap:var(--sp-2);z-index:200;pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast{background:var(--clay-800);color:var(--clay-100);padding:var(--sp-3) var(--sp-5);border-radius:var(--r-md);font-family:var(--font-body);font-size:var(--text-sm);box-shadow:var(--sh-lg);pointer-events:auto;max-width:360px;font-weight:500}.toast-error{background:var(--status-overdue-fg);color:var(--surface)}@media (prefers-reduced-motion:no-preference){.toast{animation:.2s cubic-bezier(0,0,.2,1) toast-in}}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media (width<=639px){.toast-stack{top:var(--sp-4);right:var(--sp-4);left:var(--sp-4)}.toast{max-width:none}}.install-hint{inset-inline:var(--sp-4);z-index:40;align-items:center;gap:var(--sp-3);max-width:480px;padding:var(--sp-3) var(--sp-4);background:var(--clay-800);color:var(--clay-100);border-radius:var(--r-md);box-shadow:var(--sh-lg);font-family:var(--font-body);font-size:var(--text-sm);margin-inline:auto;display:flex;position:fixed;inset-block-end:calc(var(--sp-4) + env(safe-area-inset-bottom))}.install-hint-text{flex:1;line-height:1.4}.install-hint-text strong{white-space:nowrap;font-weight:600}.install-hint-share{vertical-align:-3px;display:inline-block}.install-hint-close{border-radius:var(--r-md);width:28px;height:28px;color:var(--clay-300);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:color .12s ease-out,background .12s ease-out;display:inline-flex}.install-hint-close:hover{color:var(--clay-100);background:oklch(100% 0 0/.08)}@media (prefers-reduced-motion:no-preference){.install-hint{animation:.2s cubic-bezier(0,0,.2,1) install-hint-in}}@keyframes install-hint-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (width<=639px){.install-hint{inset-block-end:calc(72px + env(safe-area-inset-bottom))}}.job-form-layout{gap:var(--sp-8);grid-template-columns:1fr 320px;align-items:start;display:grid}@media (width<=900px){.job-form-layout{grid-template-columns:1fr}}.job-form-aside{top:var(--sp-8);position:sticky}.form-section-title{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);color:var(--fg);font-weight:600;display:flex}.customer-picker{position:relative}.customer-picker-results{z-index:20;inset-inline:0;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--sh-md);max-height:260px;position:absolute;top:calc(100% + 4px);overflow-y:auto}.customer-picker-option{text-align:start;width:100%;padding:var(--sp-2) var(--sp-3);font-size:var(--text-sm);font-family:var(--font-body);color:var(--fg);cursor:pointer;background:0 0;border:none;display:block}.customer-picker-option:hover{background:var(--surface-tinted);color:var(--accent)}.customer-picker-empty{padding:var(--sp-3);font-size:var(--text-sm);color:var(--fg-muted)}.locked-value{justify-content:space-between;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);background:var(--surface-tinted);border:1px solid var(--border);border-radius:var(--r-md);font-size:var(--text-sm);display:flex}.locked-value .locked-name{color:var(--fg);font-weight:500}.roll-grid{gap:var(--sp-5);grid-template-columns:repeat(auto-fill,minmax(380px,1fr));display:grid}@media (width<=880px){.roll-grid{grid-template-columns:1fr}}.roll-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);flex-direction:column;transition:box-shadow .16s ease-out;display:flex}.roll-card.inactive{opacity:.55}.roll-card.clickable{cursor:pointer}.roll-card.clickable:hover{box-shadow:var(--sh-md);border-color:var(--border-strong)}.roll-header{padding:var(--sp-5) var(--sp-6);justify-content:space-between;align-items:flex-start;gap:var(--sp-4);display:flex}.roll-name{font-weight:600;font-size:var(--text-base);color:var(--fg);margin-bottom:var(--sp-2)}.roll-pills{gap:var(--sp-2);flex-wrap:wrap;display:flex}.roll-pill{border-radius:var(--r-sm);background:var(--surface-tinted);color:var(--fg-muted);font-size:var(--text-xs);padding:2px 8px;font-weight:500}.roll-pill.price{background:color-mix(in oklch, var(--accent) 10%, transparent);color:var(--accent);font-family:var(--font-mono);font-variant-numeric:tabular-nums}.roll-header-right{align-items:flex-end;gap:var(--sp-2);flex-direction:column;flex-shrink:0;display:flex}.reel-state-badge{border-radius:var(--r-sm);font-size:var(--text-xs);letter-spacing:.02em;padding:3px 8px;font-weight:600;display:inline-block}.reel-state-badge.new{background:var(--status-pending-bg);color:var(--status-pending-fg)}.reel-state-badge.active{background:var(--status-progress-bg);color:var(--status-progress-fg)}.reel-state-badge.used_up{background:var(--surface-tinted);color:var(--fg-muted);border:1px solid var(--border)}.reel-state-segment{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface);display:inline-flex;overflow:hidden}.reel-state-segment button{font-size:11px;font-family:var(--font-body);color:var(--fg-muted);cursor:pointer;border:none;border-inline-start:1px solid var(--border);background:0 0;padding:3px 8px;font-weight:500;transition:background .12s ease-out,color .12s ease-out}.reel-state-segment button:first-child{border-inline-start:none}.reel-state-segment button:hover:not(.active):not(:disabled){background:var(--surface-tinted);color:var(--fg)}.reel-state-segment button.active{background:var(--accent);color:var(--clay-50)}.reel-state-segment button:disabled{cursor:progress;opacity:.6}.roll-meter{padding:var(--sp-4) var(--sp-6);border-top:1px solid var(--border)}.roll-meter-bar-wrap{background:var(--clay-200);border-radius:var(--r-full);height:8px;margin-bottom:var(--sp-2);overflow:hidden}.roll-meter-fill{background:var(--accent);border-radius:var(--r-full);height:100%}.roll-meter-fill.empty{background:var(--border-strong)}.roll-meter-fill.over{background:var(--status-overdue-fg)}.roll-meter-over{color:var(--status-overdue-fg);font-weight:600}.roll-meter-labels{font-size:var(--text-xs);color:var(--fg-muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;justify-content:space-between;display:flex}.roll-meter-remaining{color:var(--fg);font-weight:500}.roll-efficiency{padding:var(--sp-4) var(--sp-6);border-top:1px solid var(--border)}.eff-header{text-transform:uppercase;letter-spacing:.08em;color:var(--fg-muted);margin-bottom:var(--sp-3);font-size:10px;font-weight:600}.eff-cols{gap:var(--sp-4);grid-template-columns:1fr 1fr;display:grid}.eff-col-label{text-transform:uppercase;letter-spacing:.06em;color:var(--fg-muted);margin-bottom:var(--sp-1);font-size:10px;font-weight:500}.eff-col-jobs{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:700;font-size:var(--text-base);color:var(--fg)}.eff-col-jobs.muted{color:var(--fg-muted);font-weight:600}.eff-col-income{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:var(--text-xs);color:var(--fg-muted);margin-top:2px}.roll-financials{padding:var(--sp-4) var(--sp-6);border-top:1px solid var(--border);gap:var(--sp-2);flex-direction:column;display:flex}.roll-fin-row{font-size:var(--text-sm);justify-content:space-between;align-items:center;display:flex}.roll-fin-label{color:var(--fg-muted)}.roll-fin-val{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:500}.roll-fin-val.muted{color:var(--fg-muted)}.roll-fin-divider{background:var(--border);height:1px;margin:var(--sp-1) 0}.roll-fin-net{font-weight:600;font-size:var(--text-sm);padding:var(--sp-3) var(--sp-4);border-radius:var(--r-md);margin-top:var(--sp-1);background:var(--surface-tinted);color:var(--fg-muted);justify-content:space-between;align-items:center;display:flex}.roll-fin-net.has-data{background:var(--surface-tinted);color:var(--fg)}.roll-fin-net-num{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.roll-fin-net-num.pos{color:var(--court-700)}.roll-fin-net-num.neg{color:var(--status-overdue-fg)}.roll-fin-net-sub{opacity:.85;text-align:right;margin-top:2px;font-size:10px;font-weight:400}.roll-footer{padding:var(--sp-3) var(--sp-6);border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:var(--sp-3);background:var(--surface-tinted);border-radius:0 0 var(--r-lg) var(--r-lg);display:flex}.roll-purchase-date{font-size:var(--text-xs);color:var(--fg-muted);font-family:var(--font-mono)}.roll-footer-actions{gap:var(--sp-2);display:flex}.settings-card{max-width:640px}.settings-card+.settings-card{margin-top:var(--sp-6)}.settings-card-title{font-family:var(--font-display);font-size:var(--text-lg);margin:0 0 var(--sp-5);padding-bottom:var(--sp-3);border-bottom:1px solid var(--border);font-weight:700}.field-error{font-size:var(--text-xs);color:var(--status-overdue-fg);margin-top:3px}.input-error,.input-error:focus{border-color:var(--status-overdue-border)}.input-error:focus{box-shadow:0 0 0 3px var(--status-overdue-bg)}.skeleton-block{background:var(--clay-100);border-radius:var(--r-sm)}.skeleton-title{width:140px;height:22px;margin-bottom:var(--sp-5)}.skeleton-label{width:120px;height:13px;margin-bottom:6px}.skeleton-input{width:100%;height:40px}.skeleton-field+.skeleton-field{margin-top:var(--sp-5)}@media (prefers-reduced-motion:no-preference){.skeleton-block{animation:1.2s ease-in-out infinite skeleton-pulse}}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}:root{--clay-50:oklch(97% .01 42);--clay-100:oklch(93% .03 42);--clay-200:oklch(85% .07 42);--clay-300:oklch(74% .12 42);--clay-400:oklch(63% .15 42);--clay-500:oklch(54% .16 42);--clay-600:oklch(45% .14 42);--clay-700:oklch(36% .11 42);--clay-800:oklch(27% .08 42);--clay-900:oklch(18% .05 42);--ball-400:oklch(88% .16 115);--ball-500:oklch(80% .19 115);--ball-600:oklch(70% .17 115);--court-500:oklch(44% .12 152);--court-700:oklch(33% .09 152);--string-500:oklch(52% .17 245);--bg:var(--clay-50);--surface:#fff;--surface-tinted:var(--clay-100);--fg:var(--clay-900);--fg-muted:oklch(50% .08 42);--border:var(--clay-200);--border-strong:var(--clay-300);--accent:var(--clay-500);--accent-hover:var(--clay-600);--accent-alt:var(--ball-500);--accent-alt-hover:var(--ball-600);--status-pending:oklch(72% .14 75);--status-pending-bg:oklch(72% .14 75/.15);--status-pending-fg:oklch(50% .15 75);--status-progress-bg:oklch(44% .12 152/.12);--status-progress-fg:var(--court-700);--status-done-bg:oklch(80% .19 115/.15);--status-done-fg:oklch(50% .18 115);--status-paid-bg:var(--ball-500);--status-paid-fg:var(--clay-900);--status-overdue-bg:oklch(52% .18 25/.12);--status-overdue-fg:oklch(40% .18 25);--status-overdue-border:oklch(52% .18 25/.35);--status-ready-bg:oklch(52% .17 245/.12);--status-ready-fg:oklch(38% .16 245);--font-display:"Playfair Display", Georgia, "Times New Roman", serif;--font-body:"DM Sans", system-ui, -apple-system, sans-serif;--font-mono:"DM Mono", ui-monospace, "Cascadia Code", monospace;--text-display:2rem;--text-xl:1.25rem;--text-lg:1.125rem;--text-base:1rem;--text-sm:.875rem;--text-xs:.75rem;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--r-sm:4px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-full:9999px;--sh-sm:0 1px 2px oklch(18% .05 42/.08);--sh-md:0 4px 12px oklch(18% .05 42/.12);--sh-lg:0 8px 24px oklch(18% .05 42/.16);--sh-focus:0 0 0 3px oklch(54% .16 42/.25);--sidebar-w:240px;--sidebar-bg:var(--clay-700)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:var(--text-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.55}img,svg{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;background:0 0;border:none}p{text-wrap:pretty}h1,h2,h3,h4{text-wrap:balance}input,select,textarea{font:inherit}.app-layout{min-height:100dvh;display:flex}.sidebar{width:var(--sidebar-w);background:var(--sidebar-bg);z-index:20;flex-direction:column;flex-shrink:0;display:flex;position:fixed;inset-block:0;inset-inline-start:0;overflow-y:auto}.sidebar-brand{align-items:center;gap:var(--sp-3);padding:var(--sp-6) var(--sp-6) var(--sp-5);border-bottom:1px solid oklch(50% .09 42/.3);display:flex}.sidebar-brand-icon{background:var(--accent);border-radius:var(--r-md);width:32px;height:32px;color:var(--surface);flex-shrink:0;place-items:center;display:grid}.sidebar-brand-icon svg{width:16px;height:16px}.sidebar-brand-name{font-family:var(--font-display);color:var(--clay-200);letter-spacing:-.01em;font-size:1.1rem;font-weight:600}.sidebar-nav{padding:var(--sp-4) var(--sp-3);gap:var(--sp-1);flex-direction:column;flex:1;display:flex}.nav-item{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);color:var(--clay-300);font-size:var(--text-sm);font-weight:500;transition:background .12s ease-out,color .12s ease-out;display:flex;position:relative}.nav-item svg{stroke-width:1.75px;flex-shrink:0;width:18px;height:18px}.nav-item:hover{color:var(--clay-100);background:oklch(50% .09 42/.25)}.nav-item.active{color:var(--clay-100);background:oklch(54% .16 42/.2)}.nav-item.active:before{content:"";background:var(--accent);border-radius:0 var(--r-sm) var(--r-sm) 0;width:3px;position:absolute;inset-block:6px;inset-inline-start:0}.nav-item.active svg{stroke-width:2px}.sidebar-footer{padding:var(--sp-3);border-top:1px solid oklch(50% .09 42/.3)}.sidebar-user{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--r-md);display:flex}.sidebar-avatar{border-radius:var(--r-full);width:28px;height:28px;color:var(--clay-200);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;background:oklch(54% .16 42/.35);flex-shrink:0;place-items:center;font-size:11px;font-weight:600;display:grid}.sidebar-user-info{flex:1;min-width:0}.sidebar-user-name{font-size:var(--text-xs);color:var(--clay-200);white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.sidebar-user-email{color:var(--clay-400);white-space:nowrap;text-overflow:ellipsis;margin-top:1px;font-size:11px;overflow:hidden}.sidebar-logout{color:var(--clay-400);padding:var(--sp-1);border-radius:var(--r-sm);flex-shrink:0;place-items:center;transition:color .12s ease-out;display:grid}.sidebar-logout:hover{color:var(--clay-200)}.main-content{flex-direction:column;flex:1;min-width:0;margin-inline-start:var(--sidebar-w);display:flex}.page-header{padding:var(--sp-8) var(--sp-10) var(--sp-6);border-bottom:1px solid var(--border);background:var(--surface);justify-content:space-between;align-items:flex-end;gap:var(--sp-4);display:flex}.page-header-left{gap:var(--sp-1);flex-direction:column;display:flex}.page-eyebrow{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--fg-muted);font-size:11px}.page-title{font-family:var(--font-display);font-size:var(--text-display);color:var(--fg);letter-spacing:-.02em;font-weight:700;line-height:1.1}.page-body{padding:var(--sp-8) var(--sp-10);flex:1}.mobile-nav{background:var(--sidebar-bg);z-index:30;padding-bottom:env(safe-area-inset-bottom);border-top:1px solid oklch(50% .09 42/.4);display:none;position:fixed;inset-block-end:0;inset-inline:0}.mobile-nav-inner{padding:var(--sp-2) 0;justify-content:space-around;display:flex}.mobile-nav-item{color:var(--clay-400);padding:var(--sp-2) var(--sp-4);border-radius:var(--r-md);flex-direction:column;align-items:center;gap:3px;font-size:10px;font-weight:500;transition:color .12s ease-out;display:flex}.mobile-nav-item svg{stroke-width:1.75px;width:20px;height:20px}.mobile-nav-item.active{color:var(--clay-100)}.mobile-nav-item.active svg{stroke-width:2px}.btn{align-items:center;gap:var(--sp-2);padding:9px var(--sp-5);border-radius:var(--r-md);font-size:var(--text-sm);white-space:nowrap;border:1.5px solid #0000;min-height:40px;font-weight:500;line-height:1;transition:background .12s ease-out,border-color .12s ease-out,transform 80ms ease-out;display:inline-flex}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn:disabled:active{transform:none}.btn svg{stroke-width:2.25px;flex-shrink:0;width:15px;height:15px}.btn-primary{background:var(--accent);color:var(--surface);border-color:var(--accent)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--accent);border-color:var(--accent)}.btn-secondary:hover{background:var(--clay-100)}.btn-ghost{color:var(--fg);border-color:var(--border);background:0 0}.btn-ghost:hover{border-color:var(--border-strong)}.btn-danger{color:var(--surface);background:oklch(52% .18 25);border-color:oklch(52% .18 25)}.btn-danger:hover{background:oklch(44% .17 25)}.btn-paid{background:var(--accent-alt);color:var(--clay-900);border-color:var(--accent-alt)}.btn-paid:hover{background:var(--accent-alt-hover);border-color:var(--accent-alt-hover)}.btn-sm{padding:6px var(--sp-3);min-height:32px;font-size:var(--text-xs)}.btn-sm svg{width:13px;height:13px}.btn-icon{justify-content:center;width:32px;min-width:32px;padding-inline:0}.btn-icon svg{width:15px;height:15px}.badge{align-items:center;gap:var(--sp-1);padding:3px var(--sp-2);border-radius:var(--r-full);font-family:var(--font-mono);font-size:var(--text-xs);white-space:nowrap;font-weight:500;display:inline-flex}.badge-queued{background:var(--status-pending-bg);color:var(--status-pending-fg)}.badge-progress{background:var(--status-progress-bg);color:var(--status-progress-fg)}.badge-ready{background:var(--status-ready-bg);color:var(--status-ready-fg)}.badge-done{background:var(--status-done-bg);color:var(--status-done-fg)}.badge-paid{background:var(--status-paid-bg);color:var(--status-paid-fg)}.badge-unpaid{background:var(--status-overdue-bg);color:var(--status-overdue-fg)}.badge-partial{background:var(--clay-100);color:var(--clay-700);border:1px solid var(--clay-300)}.badge-overdue{background:var(--status-overdue-bg);color:var(--status-overdue-fg)}.badge-tip{background:var(--status-done-bg);color:var(--status-done-fg)}.badge-announced{background:var(--status-pending-bg);color:var(--status-pending-fg)}.badge-picked-up{background:var(--status-ready-bg);color:var(--status-ready-fg)}.badge-in-progress{background:var(--status-progress-bg);color:var(--status-progress-fg)}.badge-returned{background:var(--clay-100);color:var(--clay-700);border:1px solid var(--clay-300)}.pay-result{border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);align-items:center;gap:var(--sp-2);font-weight:500;font-family:var(--font-body);transition:background .2s ease-in-out,color .2s ease-in-out;display:flex}.pay-result.empty{background:var(--surface-tinted);color:var(--fg-muted)}.pay-result.exact{background:var(--status-done-bg);color:var(--status-done-fg)}.pay-result.short{background:var(--status-overdue-bg);color:var(--status-overdue-fg)}.pay-result.tip{background:var(--status-done-bg);color:var(--status-done-fg)}.pay-history{gap:var(--sp-2);margin-top:var(--sp-2);flex-direction:column;display:flex}.pay-history-item{padding:var(--sp-2) var(--sp-3);background:var(--surface-tinted);border-radius:var(--r-sm);font-size:var(--text-xs);justify-content:space-between;align-items:center;display:flex}.pay-history-amount{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:600}.pay-history-meta{color:var(--fg-muted)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-6);box-shadow:var(--sh-sm)}.card-sm{padding:var(--sp-4);border-radius:var(--r-md)}.summary-cards{gap:var(--sp-4);margin-bottom:var(--sp-8);grid-template-columns:repeat(4,1fr);display:grid}.summary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5) var(--sp-6);box-shadow:var(--sh-sm)}.summary-card-label{font-size:var(--text-xs);color:var(--fg-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:500;font-family:var(--font-mono);margin-bottom:var(--sp-2)}.summary-card-value{font-family:var(--font-mono);color:var(--fg);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:1.75rem;font-weight:500;line-height:1.1}.summary-card-value.paid{color:var(--court-700)}.summary-card-sub{font-size:var(--text-xs);color:var(--fg-muted);margin-top:var(--sp-1)}.summary-card.warn{border-color:var(--status-overdue-border)}.summary-card-value.warn{color:var(--status-overdue-fg)}.customer-overview{gap:var(--sp-5);margin-bottom:var(--sp-8);grid-template-columns:1fr 1fr 1fr;display:grid}.data-table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--sh-sm);overflow:auto hidden}.data-table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.data-table thead{background:var(--surface-tinted)}.data-table th{padding:var(--sp-3) var(--sp-4);text-align:left;font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);border-bottom:1px solid var(--border);white-space:nowrap;font-size:11px;font-weight:500}.data-table td{padding:var(--sp-4) var(--sp-4);border-bottom:1px solid var(--border);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr{transition:background .12s ease-out}.data-table tbody tr:hover{background:var(--clay-50)}.data-table .num-col{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right}.data-table .actions-col{text-align:right;white-space:nowrap}.cell-primary{color:var(--fg);font-weight:600}.cell-secondary{font-size:var(--text-xs);color:var(--fg-muted);margin-top:2px}.racket-grid{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.racket-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--sh-sm);cursor:pointer;text-align:left;transition:box-shadow .16s ease-out,transform .16s ease-out}.racket-card:hover{box-shadow:var(--sh-md);transform:translateY(-1px)}.racket-card:focus-visible{border-color:var(--accent);box-shadow:var(--sh-focus);outline:none}.racket-card-note{min-height:40px;margin-top:var(--sp-3);font-size:var(--text-xs);color:var(--fg-muted);white-space:pre-wrap;line-height:1.4}.add-racket-card{border:2px dashed var(--border);border-radius:var(--r-lg);padding:var(--sp-5);justify-content:center;align-items:center;gap:var(--sp-2);cursor:pointer;color:var(--fg-muted);font-size:var(--text-sm);background:0 0;flex-direction:column;min-height:120px;transition:border-color .12s ease-out,color .12s ease-out;display:flex}.add-racket-card:hover{border-color:var(--accent);color:var(--accent)}.add-racket-card:focus-visible{border-color:var(--accent);box-shadow:var(--sh-focus);outline:none}.add-racket-card svg{stroke-width:1.75px;width:20px;height:20px}.cell-mono{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--fg-muted);font-variant-numeric:tabular-nums}.form-grid{gap:var(--sp-5);display:grid}.form-grid-2{grid-template-columns:1fr 1fr}.field{flex-direction:column;gap:6px;display:flex}.field label{font-size:var(--text-sm);color:var(--fg);font-weight:500}.field-hint{font-size:var(--text-xs);color:var(--fg-muted);margin-top:3px}.input,.select,.textarea{width:100%;padding:10px var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--fg);font-size:var(--text-sm);appearance:none;min-height:40px;line-height:1.4;transition:border-color 80ms ease-out,box-shadow 80ms ease-out}.input:focus,.select:focus,.textarea:focus{border-color:var(--accent);box-shadow:var(--sh-focus);outline:none}.input::placeholder,.textarea::placeholder{color:var(--clay-300)}.select{padding-right:var(--sp-8);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23CA9370' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 10px center;background-repeat:no-repeat;background-size:14px}.textarea{resize:vertical;min-height:80px}.input-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.toggle-group{border:1px solid var(--border);border-radius:var(--r-md);display:flex;overflow:hidden}.toggle-group input[type=radio]{display:none}.toggle-group label{text-align:center;padding:9px var(--sp-4);font-size:var(--text-sm);cursor:pointer;color:var(--fg-muted);background:var(--surface);border:none;flex:1;font-weight:500;transition:background .12s,color .12s}.toggle-group input[type=radio]:checked+label{background:var(--accent);color:var(--surface)}.form-section{padding-top:var(--sp-6);border-top:1px solid var(--border)}.form-section-title{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);color:var(--fg);margin-bottom:var(--sp-4);font-weight:600;display:flex}.form-section-title svg{width:14px;height:14px;color:var(--fg-muted)}.filter-tabs{gap:var(--sp-1);border-bottom:1px solid var(--border);margin-bottom:var(--sp-6);display:flex}.filter-tab{padding:var(--sp-3) var(--sp-4);font-size:var(--text-sm);color:var(--fg-muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;font-weight:500;transition:color .12s,border-color .12s}.filter-tab:hover{color:var(--fg)}.filter-tab.active{color:var(--accent);border-bottom-color:var(--accent)}.tab-count{background:var(--clay-100);border-radius:var(--r-full);min-width:18px;height:18px;font-family:var(--font-mono);color:var(--fg-muted);justify-content:center;align-items:center;margin-left:5px;padding:0 5px;font-size:10px;font-weight:500;display:inline-flex}.filter-tab.active .tab-count{background:var(--clay-100);color:var(--accent)}.search-wrap{max-width:360px;position:relative}.search-wrap svg{left:var(--sp-3);width:15px;height:15px;color:var(--fg-muted);stroke-width:2px;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.search-input{width:100%;padding:9px var(--sp-3) 9px 36px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);color:var(--fg);font-size:var(--text-sm);min-height:40px;transition:border-color 80ms,box-shadow 80ms}.search-input:focus{border-color:var(--accent);box-shadow:var(--sh-focus);outline:none}.search-input::placeholder{color:var(--clay-300)}.toolbar{justify-content:space-between;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-5);flex-wrap:wrap;display:flex}.toolbar-left,.toolbar-right{align-items:center;gap:var(--sp-3);display:flex}.stage-bar{margin-bottom:var(--sp-8);align-items:flex-start;gap:0;display:flex}.stage-step{flex:1;position:relative}.stage-step:not(:last-child):after{content:"";background:var(--border);width:100%;height:2px;position:absolute;top:14px;left:50%}.stage-step.done:after{background:var(--accent)}.stage-dot{border-radius:var(--r-full);border:2px solid var(--border);background:var(--surface);width:28px;height:28px;margin:0 auto var(--sp-2);z-index:1;place-items:center;transition:border-color .2s,background .2s;display:grid;position:relative}.stage-step.done .stage-dot{border-color:var(--accent);background:var(--accent);color:var(--surface)}.stage-step.active .stage-dot{border-color:var(--accent);background:var(--surface)}.stage-dot svg{stroke-width:2.5px;width:13px;height:13px}.stage-label{text-align:center;color:var(--fg-muted);font-size:11px;font-weight:500}.stage-step.active .stage-label,.stage-step.done .stage-label{color:var(--accent);font-weight:600}.job-detail-grid{gap:var(--sp-6);grid-template-columns:1fr 320px;align-items:start;display:grid}.job-detail-cols{gap:var(--sp-6);flex-direction:column;display:flex}.detail-section{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--sh-sm);margin-bottom:var(--sp-5);overflow:hidden}.detail-section-header{align-items:center;gap:var(--sp-2);padding:var(--sp-4) var(--sp-6);border-bottom:1px solid var(--border);background:var(--surface-tinted);display:flex}.detail-section-header svg{width:14px;height:14px;color:var(--fg-muted);stroke-width:2px}.detail-section-title{font-size:var(--text-sm);color:var(--fg);font-weight:600}.detail-section-body{padding:var(--sp-6)}.detail-row{justify-content:space-between;align-items:baseline;gap:var(--sp-4);padding:var(--sp-2) 0;display:flex}.detail-row+.detail-row{border-top:1px solid var(--border)}.detail-key{font-size:var(--text-sm);color:var(--fg-muted);flex-shrink:0;font-weight:500}.detail-val{font-size:var(--text-sm);color:var(--fg);text-align:right;overflow-wrap:anywhere;min-width:0;font-weight:500}.detail-val.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.detail-val.large{font-size:var(--text-lg);font-family:var(--font-mono);font-variant-numeric:tabular-nums}.modal-overlay{z-index:100;background:oklch(18% .05 42/.4);place-items:center;display:none;position:fixed;inset:0}.modal-overlay.open{display:grid}.modal{background:var(--surface);border-radius:var(--r-xl);padding:var(--sp-8);width:min(540px,90vw);max-height:90dvh;box-shadow:var(--sh-lg);animation:.2s cubic-bezier(0,0,.2,1) modal-in;overflow-y:auto}@keyframes modal-in{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes sheet-in{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}.modal-header{margin-bottom:var(--sp-6);justify-content:space-between;align-items:center;display:flex}.modal-title{font-family:var(--font-display);font-size:var(--text-xl);color:var(--fg);font-weight:700}.modal-close{padding:var(--sp-1);color:var(--fg-muted);border-radius:var(--r-sm);transition:color .12s}.modal-close:hover{color:var(--fg)}.modal-close svg{width:18px;height:18px}.modal-footer{gap:var(--sp-3);margin-top:var(--sp-6);padding-top:var(--sp-6);border-top:1px solid var(--border);justify-content:flex-end;display:flex}.price-summary{background:var(--surface-tinted);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5) var(--sp-6)}.price-row{padding:var(--sp-2) 0;font-size:var(--text-sm);justify-content:space-between;display:flex}.price-row .price-key{color:var(--fg-muted)}.price-row .price-val{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.price-total{border-top:2px solid var(--border-strong);margin-top:var(--sp-2);padding-top:var(--sp-3);justify-content:space-between;display:flex}.price-total .price-key{color:var(--fg);font-weight:600}.price-total .price-val{font-family:var(--font-mono);font-size:var(--text-lg);font-variant-numeric:tabular-nums;color:var(--fg);font-weight:600}.breadcrumb{align-items:center;gap:var(--sp-2);font-size:var(--text-sm);color:var(--fg-muted);margin-bottom:var(--sp-5);display:flex}.breadcrumb a{color:var(--accent)}.breadcrumb a:hover{color:var(--accent-hover)}.breadcrumb svg{stroke-width:2px;width:12px;height:12px}@media (pointer:coarse){.input,.select,.textarea,.search-input{font-size:var(--text-base)}}@media (prefers-reduced-motion:no-preference){.btn,.nav-item,.filter-tab,.data-table tbody tr,.badge,.modal,.input,.select,.textarea,.search-input{transition-timing-function:ease-out}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media (width<=1023px){.sidebar{width:48px}.sidebar-brand-name,.nav-item span{display:none}.sidebar-brand{padding:var(--sp-4) 8px;justify-content:center}.nav-item{padding:var(--sp-3) 0;justify-content:center}.sidebar-user{padding:var(--sp-2) 0;justify-content:center}.sidebar-user-info,.sidebar-logout{display:none}.main-content{margin-inline-start:48px}.summary-cards{grid-template-columns:repeat(2,1fr)}.page-body,.page-header{padding:var(--sp-6)}}@media (width<=639px){.sidebar{display:none}.mobile-nav{display:block}.main-content{margin-inline-start:0;padding-bottom:72px}.summary-cards{gap:var(--sp-3);grid-template-columns:repeat(2,1fr)}.summary-card{padding:var(--sp-4)}.summary-card-value{font-size:1.4rem}.page-body{padding:var(--sp-4)}.page-header{padding:var(--sp-4) var(--sp-4) var(--sp-4);flex-wrap:wrap}.page-title{font-size:1.5rem}.form-grid-2{grid-template-columns:1fr}.data-table th:nth-child(n+5),.data-table td:nth-child(n+5),.data-table-customers th:nth-child(n+3),.data-table-customers td:nth-child(n+3){display:none}.jobs-table,.jobs-table tbody{display:block}.jobs-table thead{display:none}.jobs-table .job-row{column-gap:var(--sp-2);padding:var(--sp-4);border-bottom:1px solid var(--border);grid-template-columns:1fr auto;row-gap:2px;display:grid}.jobs-table tbody tr.job-row:last-child{border-bottom:0}.jobs-table .job-row td{border:0;padding:0;display:block}.jobs-table .job-row td:nth-child(n+5){display:none}.jobs-table .job-row td:first-child{grid-area:1/1}.jobs-table .job-row td:nth-child(4){grid-area:1/2;place-self:start end}.jobs-table .job-row td:nth-child(2){grid-area:2/1/auto/-1;margin-top:2px}.jobs-table .job-row td:nth-child(3){white-space:nowrap;grid-area:3/1/auto/-1}.jobs-table .job-row td:nth-child(3) .cell-mono:before{content:"Due "}.filter-tabs{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex-wrap:nowrap;overflow-x:auto;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 20px),#0000);mask-image:linear-gradient(90deg,#000 calc(100% - 20px),#0000)}.filter-tabs::-webkit-scrollbar{display:none}.filter-tab{white-space:nowrap;flex:none}.data-table.data-table-payments .col-collapse{display:none}.data-table.data-table-payments th.actions-col,.data-table.data-table-payments td.actions-col{display:table-cell}.customer-overview{gap:var(--sp-3);grid-template-columns:1fr}.job-detail-grid{grid-template-columns:1fr}.stage-step:not(.current) .stage-label{display:none}.stage-step.current .stage-label{white-space:nowrap}.modal-overlay.open{place-items:end center}.modal{width:100%;max-width:100%;max-height:92dvh;padding:var(--sp-5);border-radius:var(--r-xl) var(--r-xl) 0 0;padding-bottom:0;animation:.24s cubic-bezier(0,0,.2,1) sheet-in}.modal-footer{margin-top:var(--sp-4);margin-inline:calc(-1 * var(--sp-5));padding:var(--sp-4) var(--sp-5) calc(var(--sp-4) + env(safe-area-inset-bottom));background:var(--surface);position:sticky;bottom:0}}
