:root{--orange:#f26322;--orange2:#ff7a32;--ink:#202124;--ink2:#32353a;--bg:#f4f5f7;--card:#fff;--line:#e7e9ed;--muted:#707782;--green:#138a58;--red:#c8393e;--amber:#b97600;--blue:#3867d6;--purple:#7b4dbb;--teal:#168b8f;--shadow:0 12px 32px rgba(30,35,40,.08);--r:18px}
*{box-sizing:border-box}html{font-size:15px}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;background:var(--bg);color:var(--ink)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}.app{min-height:100vh;display:grid;grid-template-columns:255px 1fr}.sidebar{position:sticky;top:0;height:100vh;background:linear-gradient(180deg,#181a1d,#25282d);color:#fff;padding:20px 14px;display:flex;flex-direction:column;z-index:20}.brand{background:#fff;border-radius:15px;padding:8px;margin:0 4px 24px}.brand img{display:block;width:100%;height:72px;object-fit:contain}.nav-title{padding:6px 14px;color:#8e959f;font-size:.7rem;text-transform:uppercase;letter-spacing:.11em;font-weight:800}.nav{display:flex;flex-direction:column;gap:3px}.nav a{padding:10px 12px;border-radius:11px;color:#c9ced5;display:flex;gap:10px;align-items:center;font-weight:620}.nav a:hover,.nav a.active{background:rgba(242,99,34,.15);color:#fff}.nav a.active{box-shadow:inset 3px 0 var(--orange)}.nav .ico{width:24px;text-align:center}.sidebar-foot{margin-top:auto;padding:16px 10px 4px;color:#a9afb7;font-size:.83rem}.main{min-width:0}.topbar{height:72px;background:rgba(255,255,255,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:15}.topbar h1{font-size:1.24rem;margin:0}.top-actions{display:flex;align-items:center;gap:12px}.user-pill{background:#f3f4f6;border:1px solid var(--line);border-radius:999px;padding:7px 12px;font-size:.86rem}.content{padding:26px 28px 50px;max-width:1700px;margin:auto}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:20px}.page-head h2{margin:0;font-size:1.8rem;letter-spacing:-.03em}.page-head p{margin:5px 0 0;color:var(--muted)}.actions{display:flex;gap:8px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:9px 14px;border-radius:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;gap:7px}.btn:hover{transform:translateY(-1px);box-shadow:0 5px 14px rgba(0,0,0,.06)}.btn.primary{background:var(--orange);border-color:var(--orange);color:#fff}.btn.dark{background:var(--ink);border-color:var(--ink);color:#fff}.btn.danger{color:var(--red);border-color:#efd0d1}.btn.small{padding:6px 9px;border-radius:9px;font-size:.82rem}.btn.wide{width:100%}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:20px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--orange)}.kpi .label{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-weight:800}.kpi .value{font-size:2rem;font-weight:850;margin:6px 0 3px;letter-spacing:-.04em}.kpi .sub{color:var(--muted);font-size:.86rem}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--shadow);padding:20px;margin-bottom:18px}.card h3{margin:0 0 15px;font-size:1.03rem}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.split{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.65fr);gap:18px}.stack{display:flex;flex-direction:column;gap:13px}label{font-weight:700;font-size:.86rem;color:#3b4046;display:flex;flex-direction:column;gap:6px}label small{font-weight:500;color:var(--muted)}input,select,textarea{width:100%;border:1px solid #d9dde3;background:#fff;border-radius:10px;padding:10px 11px;outline:none;transition:.15s}input:focus,select:focus,textarea:focus{border-color:var(--orange);box-shadow:0 0 0 3px rgba(242,99,34,.12)}textarea{min-height:90px;resize:vertical}.check{display:flex;align-items:center;gap:8px;flex-direction:row}.check input{width:auto}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}table{border-collapse:collapse;width:100%;background:#fff}th,td{padding:11px 12px;border-bottom:1px solid #edf0f3;text-align:left;white-space:nowrap}th{font-size:.73rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);background:#fafbfc;position:sticky;top:0}tr:last-child td{border-bottom:0}tr:hover td{background:#fffaf7}.muted{color:var(--muted)}.strong{font-weight:800}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:.76rem;font-weight:800;background:#eef0f3;color:#4f5560}.badge.orange{background:#fff0e8;color:#b8450e}.badge.green{background:#e8f7f0;color:#0b7348}.badge.red{background:#fdeced;color:#a92b31}.badge.amber{background:#fff5dd;color:#926000}.badge.blue{background:#eaf0ff;color:#2e57bb}.badge.purple{background:#f0eafb;color:#6940a7}.badge.teal{background:#e5f6f6;color:#117276}.badge.gray{background:#eef0f3;color:#5a6069}.progress{height:9px;background:#eceff2;border-radius:999px;overflow:hidden}.progress>i{display:block;height:100%;background:var(--orange);border-radius:999px}.alert{padding:12px 14px;border-radius:12px;border:1px solid;margin-bottom:14px}.alert.success{background:#eaf8f1;border-color:#bde6d0;color:#096b42}.alert.danger{background:#fff0f0;border-color:#f0c9ca;color:#9b262c}.alert.info{background:#eef4ff;border-color:#cad8fb;color:#31559c}.alert.warning{background:#fff8e8;border-color:#efddae;color:#855a00}.section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.section-title h3{margin:0}.tabs{display:flex;gap:5px;border-bottom:1px solid var(--line);margin-bottom:18px}.tabs a{padding:10px 12px;border-bottom:2px solid transparent;font-weight:700;color:var(--muted)}.tabs a.active{border-color:var(--orange);color:var(--ink)}
/* planning */
.capacity-strip{display:grid;grid-template-columns:repeat(7,minmax(140px,1fr));gap:10px;margin-bottom:14px;overflow:auto}.cap-day{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px;min-width:140px}.cap-day.today{border-color:var(--orange);box-shadow:0 0 0 2px rgba(242,99,34,.08)}.cap-day .date{font-weight:850}.cap-day .hours{display:flex;justify-content:space-between;margin-top:8px;font-size:.82rem}.cap-day.over .hours{color:var(--red);font-weight:800}.planner{display:grid;grid-template-columns:210px repeat(7,minmax(155px,1fr));min-width:1320px;border:1px solid var(--line);border-radius:15px;overflow:hidden;background:#fff}.planner-wrap{overflow:auto}.planner>div{border-right:1px solid #edf0f3;border-bottom:1px solid #edf0f3;min-height:64px}.planner .head{min-height:auto;background:#fafbfc;padding:10px;font-weight:800;font-size:.8rem;color:var(--muted);position:sticky;top:0;z-index:3}.planner .order-label{padding:10px;position:sticky;left:0;background:#fff;z-index:2}.planner .slot{padding:6px;min-height:74px}.work-card{background:#fff4ed;border:1px solid #ffd3bb;border-left:4px solid var(--orange);border-radius:10px;padding:7px 8px;margin-bottom:5px;cursor:grab;font-size:.78rem}.work-card.completed{background:#eaf8f1;border-color:#c0e6d3;border-left-color:var(--green)}.work-card b{display:block}.work-card .meta{color:#6d5e54;margin-top:2px}.drop-target.dragover{background:#fff4ed;box-shadow:inset 0 0 0 2px var(--orange)}.stay-band{height:5px;border-radius:99px;background:#d4d8df;margin-top:7px}.stay-band.active{background:#3b4046}
/* rental timeline */
.rental-grid{display:grid;grid-template-columns:150px repeat(7,minmax(130px,1fr));min-width:1100px;border:1px solid var(--line);border-radius:14px;overflow:hidden}.rental-grid>div{padding:9px;border-right:1px solid #edf0f3;border-bottom:1px solid #edf0f3;min-height:48px}.rental-grid .head{background:#fafbfc;font-size:.76rem;font-weight:800;color:var(--muted)}.rental-booked{background:#fff0e8;border-radius:8px;padding:5px 6px;font-size:.75rem;font-weight:750}.rental-free{color:#94a0ad;font-size:.75rem}
/* login/install */
.login-body,.install-body{min-height:100vh;background:radial-gradient(circle at 20% 20%,rgba(242,99,34,.16),transparent 28%),linear-gradient(145deg,#15171a,#2b2f34);display:grid;place-items:center;padding:20px}.login-card,.install-card{width:min(470px,100%);background:#fff;border-radius:24px;padding:30px;box-shadow:0 30px 70px rgba(0,0,0,.28)}.install-card{width:min(640px,100%)}.login-logo,.install-logo{width:100%;max-height:115px;object-fit:contain;margin-bottom:10px}.login-card h1,.install-card h1{margin:6px 0 20px;font-size:1.55rem;text-align:center}.login-hint{text-align:center;color:var(--muted);margin:-10px 0 20px}.divider{height:1px;background:var(--line);margin:10px 0}.empty{padding:36px;text-align:center;color:var(--muted)}.quick-list{display:flex;flex-direction:column;gap:9px}.quick-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid #edf0f3}.quick-row:last-child{border-bottom:0}.note{font-size:.82rem;color:var(--muted);line-height:1.45}.danger-zone{border-color:#f0c9ca}.code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#f3f4f6;border-radius:7px;padding:2px 5px;font-size:.85em}.template-preview{border:1px solid var(--line);border-radius:12px;width:100%;min-height:400px;background:#fff}.pill-row{display:flex;gap:7px;flex-wrap:wrap}.placeholder{background:#f3f4f6;border:1px solid #e2e5e9;padding:5px 8px;border-radius:8px;font-family:ui-monospace,monospace;font-size:.78rem}.mobile-menu{display:none}.footer{color:#9299a3;font-size:.78rem;text-align:center;padding:10px 0 0}
@media(max-width:1100px){.cards{grid-template-columns:repeat(2,1fr)}.split{grid-template-columns:1fr}.grid4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.app{display:block}.sidebar{position:fixed;left:-270px;width:255px;transition:.2s}.sidebar.open{left:0;box-shadow:20px 0 50px rgba(0,0,0,.3)}.mobile-menu{display:inline-flex}.topbar{padding:0 14px;height:62px}.content{padding:18px 13px 40px}.cards,.grid2,.grid3,.grid4{grid-template-columns:1fr}.page-head{align-items:flex-start;flex-direction:column}.kpi .value{font-size:1.7rem}.user-pill{display:none}.card{padding:15px;border-radius:15px}.topbar h1{font-size:1rem}.planner-wrap{margin-left:-2px;margin-right:-2px}.table-wrap{font-size:.88rem}}

.link-button{appearance:none;background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}

/* v1.1 customer/vehicle record + capacity resources */
.cards{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.customer-search{display:grid;grid-template-columns:minmax(280px,1fr) auto auto;gap:10px;align-items:end}.vehicle-chips{display:flex;gap:6px;flex-wrap:wrap}.vehicle-chip{display:inline-flex;flex-direction:column;gap:1px;border:1px solid var(--line);border-radius:10px;padding:6px 8px;background:#fafbfc;font-size:.78rem}.vehicle-chip:hover{border-color:var(--orange);background:#fff8f3}.vehicle-chip span{color:var(--muted)}.customer-record-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.customer-record-head h3{font-size:1.35rem;margin:3px 0}.eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.72rem;font-weight:850;color:var(--orange)}.record-stats{display:flex;gap:10px}.record-stats span{border:1px solid var(--line);border-radius:12px;padding:9px 12px;color:var(--muted);font-size:.8rem}.record-stats strong{color:var(--ink);font-size:1rem}.vehicle-cards{display:flex;flex-direction:column;gap:9px}.vehicle-record{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:11px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:13px;background:#fff}.vehicle-record.selected{border-color:var(--orange);box-shadow:0 0 0 3px rgba(242,99,34,.09)}.vehicle-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:11px;background:#fff0e8;color:var(--orange);font-size:1.1rem}.vehicle-main strong{font-size:1rem}.vehicle-actions{display:flex;gap:6px;flex-wrap:wrap}.sticky-card{position:sticky;top:92px}.inline-details{border:1px solid var(--line);border-radius:12px;padding:10px 12px}.inline-details summary{cursor:pointer;font-weight:800}.details-body{margin-top:12px}.empty.compact{padding:18px}.field-title{font-weight:800;font-size:.86rem;margin-bottom:8px}.weekday-hours{display:grid;grid-template-columns:repeat(7,minmax(54px,1fr));gap:6px}.weekday-hours label{gap:4px;text-align:center}.weekday-hours label span{font-size:.73rem;color:var(--muted)}.weekday-hours input{padding:8px 5px;text-align:center}.note-box{border:1px solid var(--line);border-radius:12px;padding:12px;background:#fafbfc}.workplace-box{border:1px solid #e8d7f7;background:#fbf7ff;border-radius:14px;padding:14px}.workplace-toggle{align-items:flex-start}.workplace-toggle span{display:flex;flex-direction:column;gap:3px}.workplace-range{margin-top:12px}.workplace-note{margin-top:10px;font-size:.82rem;font-weight:800;color:var(--purple)}.workplace-symbol{display:inline-grid;place-items:center;margin-left:5px;width:21px;height:21px;border-radius:6px;background:#f0eafb;color:#6940a7;font-size:.72rem}.workplace-mini{margin-top:7px;font-size:.74rem;font-weight:750;color:#6940a7}.stay-band.workplace{height:7px;background:#7b4dbb}.slot.workplace-occupied{background:linear-gradient(180deg,rgba(123,77,187,.035),transparent)}.is-hidden{display:none!important}.login-link{text-align:center;color:var(--orange);font-weight:750;font-size:.87rem;padding-top:2px}.compact-cards{margin-top:0}
@media(max-width:760px){.customer-search{grid-template-columns:1fr}.customer-record-head{align-items:flex-start;flex-direction:column}.record-stats{width:100%}.record-stats span{flex:1}.vehicle-record{grid-template-columns:38px minmax(0,1fr)}.vehicle-actions{grid-column:1/-1}.sticky-card{position:static}.weekday-hours{grid-template-columns:repeat(4,1fr)}}

/* v1.2 order quick search + separate paint resource */
.party-picker{position:relative;border:1px solid var(--line);border-radius:16px;padding:15px;background:linear-gradient(180deg,#fff,#fbfcfd)}
.party-search-head{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;align-items:end}.party-search-head input{font-size:1rem;padding:12px 13px;border-width:2px}.party-results{position:absolute;z-index:18;left:15px;right:15px;top:83px;background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 45px rgba(25,30,35,.18);max-height:390px;overflow:auto;padding:7px}.party-results-title{padding:7px 9px 5px;text-transform:uppercase;letter-spacing:.07em;font-size:.69rem;font-weight:850;color:var(--muted)}.party-result{width:100%;border:0;background:#fff;border-radius:10px;padding:9px;display:flex;align-items:center;gap:10px;text-align:left;color:var(--ink)}.party-result:hover,.party-result:focus{background:#fff5ef;outline:none}.party-result-icon,.party-selected-icon{width:36px;height:36px;display:grid;place-items:center;border-radius:10px;background:#fff0e8;color:var(--orange);flex:0 0 auto;font-weight:900}.party-result-info{display:flex;flex-direction:column;min-width:0}.party-result-info strong,.party-result-info small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.party-result-info small{color:var(--muted);margin-top:2px}.party-no-result{padding:17px;text-align:center;color:var(--muted)}.party-selected{margin-top:10px;display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid #dce2e8;border-radius:13px;padding:11px;background:#fff}.party-selected.is-empty{border-style:dashed;background:#fafbfc}.party-picker-actions{display:flex;gap:8px;margin-top:9px}.party-picker-actions .btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.quick-party-create{margin-top:13px;padding:15px;border:1px solid #ffd7c1;background:#fff9f5;border-radius:14px}.quick-party-create h4{margin:0}.quick-consent{align-self:end;padding-bottom:11px}
.resource-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.paint-box{border:1px solid #cfe7e7;background:#f5fbfb;border-radius:14px;padding:14px}.paint-toggle{align-items:flex-start}.paint-toggle span{display:flex;flex-direction:column;gap:3px}.paint-range{margin-top:12px}.paint-note{margin-top:10px;font-size:.82rem;font-weight:800;color:var(--teal)}.resource-note{margin:-4px 2px 2px}.badge.paint{background:#e5f6f6;color:#117276}.paint-symbol{display:inline-grid;place-items:center;margin-left:5px;width:24px;height:22px;border-radius:6px;background:#e5f6f6;color:#117276;font-size:.78rem}.paint-mini{margin-top:4px;font-size:.74rem;font-weight:750;color:#117276}.paint-band{border-radius:8px;background:#e5f6f6;border:1px solid #b7dfdf;color:#117276;padding:4px 6px;font-size:.72rem;font-weight:850;margin-bottom:5px}.slot.paint-occupied{background:linear-gradient(180deg,rgba(22,139,143,.045),transparent)}.paint-text{color:#117276;font-weight:750}.paint-kpi:before{background:var(--teal)}
.planning-legend{display:flex;gap:14px;flex-wrap:wrap;margin:-5px 0 12px;color:var(--muted);font-size:.78rem;font-weight:700}.planning-legend span{display:flex;align-items:center;gap:6px}.planning-legend i{width:18px;height:6px;border-radius:99px;display:inline-block}.legend-work{background:var(--orange)}.legend-stay{background:#3b4046}.legend-place{background:var(--purple)}.legend-paint{background:var(--teal)}
@media(max-width:900px){.resource-grid{grid-template-columns:1fr}.party-search-head{grid-template-columns:1fr}.party-results{top:132px}}
@media(max-width:760px){.party-selected{grid-template-columns:38px minmax(0,1fr)}.party-selected>.btn{grid-column:1/-1}.party-results{left:10px;right:10px;top:134px}.quick-party-create{padding:12px}.planning-legend{gap:9px}.paint-band{font-size:.68rem}}
