:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#edf3f5;background:#0b151b;color-scheme:dark}*{box-sizing:border-box}body{margin:0}a{color:#78dfc7;text-decoration:none}.container{max-width:1120px;padding:25px;margin:auto}.narrow{max-width:580px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0 32px;border-bottom:1px solid #29404a}.brand{font-weight:850;letter-spacing:.08em;color:white}.accent{color:#45d7b3}.pill,.status{background:#153e38;border:1px solid #347769;color:#9cf7d9;font-size:12px;border-radius:20px;padding:8px 12px}.hero{padding:38px 0 30px}.hero h1,.login-box h1{font-size:clamp(30px,5vw,46px);margin:8px 0}.hero p,.muted,.card>p{color:#aebcc3}.eyebrow{font-size:12px;letter-spacing:.14em;font-weight:bold;color:#62cfb3}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:18px}.card{padding:25px;background:#11252e;border:1px solid #29444e;border-radius:17px;margin:18px 0}.client-icon{font-size:34px}.card h2{font-size:21px;margin-top:10px}.client-card .primary{margin-top:25px}.primary,.secondary,.sample{border:0;border-radius:9px;padding:12px 16px;font:inherit;cursor:pointer}.primary{color:#06241d;background:#53ddb8;font-weight:700}.primary:hover{background:#82f0cd}.secondary{background:#203c47;color:#e0f1f5;border:1px solid #335762}.secondary:hover,.sample:hover{background:#2a4f5b}.wide{width:100%}.login-box{margin-top:46px}.login-box input{margin-bottom:14px}.login-box>p{line-height:1.5}.small{font-size:12px;color:#adc2cb}.sample-users{border-top:1px solid #31505c;margin-top:22px;padding-top:15px;display:grid;gap:6px}.sample{text-align:left;background:#18333c;color:#c6e3e9;padding:10px}.actions{display:flex;gap:12px;align-items:center}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}.metric{background:#17303a;padding:18px;border-radius:13px;border:1px solid #2b4951}.metric span{color:#a8bfc6;font-size:13px;display:block;margin-bottom:8px}.metric b{font-size:26px}.form-grid,.grid-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:15px}label{display:block;font-size:13px;color:#bed0d6;margin:14px 0 7px}input,select,textarea{background:#0a1c24;color:white;border:1px solid #395661;padding:12px;border-radius:9px;width:100%;font:inherit}.form-grid{margin-bottom:18px}.error{background:#612d32;padding:12px;border-radius:8px;margin:12px 0}.feedback{padding:12px;color:#aaf0d7}.booking{border-top:1px solid #31515c;padding:18px 0}.booking-top{display:flex;justify-content:space-between;align-items:start;gap:15px}.booking-top p{margin:8px 0}.report,.report-entry{background:#19323c;padding:15px;margin:12px 0;border-radius:9px}.report p{margin:6px 0}.email-preview{border-top:1px solid #31515c;padding:12px 0}.email-preview summary{cursor:pointer}.email-preview pre{white-space:pre-wrap;color:#cadbe2}.notice{margin:24px 0;color:#94a9b1;font-size:13px}.listline{border-bottom:1px solid #30505a;padding-bottom:12px}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #7beac8;outline-offset:3px}@media(max-width:600px){.topbar{align-items:flex-start}.actions{flex-direction:column;align-items:end}.booking-top{flex-direction:column}}
/* Purple OTK portal dashboard */
:root{color:#f2effb;background:#0d0b18;color-scheme:dark}body{background:#0d0b18}a{color:#c7a5ff}.accent,.eyebrow{color:#b78cff}.primary{color:#fff;background:#7651cf}.primary:hover{background:#9674ec}.secondary,.sample{background:#262039;border-color:#443660}.secondary:hover,.sample:hover{background:#36294e}.card,.metric{background:#191527;border-color:#393049}.pill,.status{background:#33224f;border-color:#5e3e95;color:#e2caff}.topbar{border-color:#352d47}.login-box input,input,select,textarea{background:#140f22;border-color:#493b60}.feedback{color:#d7bfff}.notice,.muted{color:#afa6bf}
.portal-shell{display:flex;min-height:100vh}.sidebar{width:246px;flex-shrink:0;background:#100d1c;border-right:1px solid #292239;padding:24px 12px;display:flex;flex-direction:column;gap:6px}.side-brand{display:flex;align-items:center;gap:12px;font-weight:800;font-size:18px;line-height:1.25;color:white;padding:12px 12px 30px}.side-icon{font-size:30px}.nav-link{width:100%;display:flex;align-items:center;gap:16px;background:transparent;color:#c9c2d3;border:0;border-radius:9px;padding:13px 14px;cursor:pointer;font-size:15px;text-align:left}.nav-link span{font-size:20px;width:21px}.nav-link:hover{background:#28213d}.nav-link.active{background:#392257;color:white}.side-bottom{margin-top:auto;padding:22px 10px 0;border-top:1px solid #292239}.side-bottom a{display:block;margin-bottom:16px}.portal-main{flex:1;min-width:0;padding:0 27px 40px}.portal-top{height:78px;border-bottom:1px solid #2b253b;display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;gap:12px}.portal-search{background:#1a1626;border:1px solid #3a314a;border-radius:10px;padding:13px 16px;color:#afa6bd;min-width:min(480px,60%)}.user-chip{display:flex;align-items:center;gap:9px}.avatar{height:35px;width:35px;border-radius:50%;display:grid;place-items:center;background:#7442bc;font-weight:700}.portal-main h1{font-size:34px;margin:10px 0 3px}.page-subtitle{color:#aba2b9;margin:0 0 22px}.dashboard-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.dash-metric{display:flex;align-items:center;gap:12px;min-height:92px;padding:16px 14px;border-radius:13px;border:1px solid #433255;background:#211831}.dash-metric.blue{background:#211f43}.dash-metric.amber{background:#36253c}.dash-metric.violet{background:#2c1a46}.dash-metric b{font-size:27px}.dash-metric>span:last-child{font-size:13px}.dash-metric small{display:block;font-size:11px;opacity:.67;margin-top:3px}.metric-symbol{font-size:24px;color:#d3b0ff}.dashboard-split{display:grid;grid-template-columns:1fr 1.33fr;gap:16px}.panel{background:#181523;border:1px solid #332940;border-radius:14px;padding:18px;margin-top:16px;min-width:0}.panel h2{font-size:20px;margin:0}.panel h3{margin:14px 0}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:13px}.icon-button{background:#282139;border:1px solid #46365e;color:#eee;border-radius:8px;padding:6px 13px;margin-left:5px;cursor:pointer}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.cal-label{text-align:center;font-size:12px;color:#b8adca;padding:8px 0}.calendar-date{position:relative;min-height:43px;background:transparent;border:0;color:#e6dff1;border-radius:8px;cursor:pointer}.calendar-date.other{opacity:.25}.calendar-date.chosen{background:#7b53c7;font-weight:800}.date-dot{display:block;position:absolute;bottom:5px;left:calc(50% - 3px);height:6px;width:6px;border-radius:50%;background:#b590ff}.schedule-line{display:flex;align-items:center;gap:10px;padding:14px 0;border-bottom:1px solid #2f2940}.schedule-time{color:#c5b8da;font-size:13px;width:48px;flex-shrink:0}.schedule-paw{font-size:20px}.schedule-line>div{flex:1;min-width:0}.schedule-line small{display:block;color:#aaa1ba;margin-top:3px}.tag{border-radius:22px;padding:6px 10px;background:#3d2664;color:#d8baff;font-size:12px;white-space:nowrap}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;min-width:670px;text-align:left}th{color:#c7b8d8;font-size:12px;font-weight:650;background:#241d33}td,th{padding:12px 10px;border-bottom:1px solid #2d263a}td{font-size:13px}.form-panel{max-width:900px}.dogs-picker{padding:5px 0}.checkbox-line{display:flex;align-items:center;gap:8px;margin:12px 0}.checkbox-line input{width:17px;height:17px}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #c4a3fb;outline-offset:3px}@media(max-width:1100px){.dashboard-metrics{grid-template-columns:repeat(2,1fr)}.dashboard-split{grid-template-columns:1fr}}@media(max-width:720px){.portal-shell{display:block}.sidebar{width:100%;padding:10px;flex-direction:row;overflow-x:auto;gap:4px;align-items:center}.side-brand{padding:8px;font-size:14px;min-width:160px}.nav-link{white-space:nowrap;padding:10px}.side-bottom{display:none}.portal-main{padding:0 13px 30px}.portal-search{display:none}.portal-top{justify-content:flex-end;height:58px}.dashboard-metrics{gap:8px}.dash-metric{padding:11px;min-height:78px}.dash-metric b{font-size:22px}.metric-symbol{display:none}}
/* Purple V2 modules */
.mini{padding:7px 9px;font-size:12px;white-space:nowrap}.schedule-line{flex-wrap:wrap}.schedule-line .mini{margin-left:auto}.chart-wrap{width:100%;overflow:hidden;padding:15px 4px 4px}.income-chart{width:100%;height:290px;background:linear-gradient(180deg,rgba(133,91,206,.08),transparent);border-radius:12px}.chart-labels{display:grid;grid-template-columns:repeat(12,1fr);font-size:10px;color:#aba0bf;gap:2px;text-align:center}.profile-name{background:none;border:none;color:#efe6ff;font-size:20px;font-weight:700;cursor:pointer;padding:6px 0 15px;text-align:left}.dog-strip,.dog-lead-row{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap;padding:14px 4px}.dog-id{display:flex;flex-direction:column;align-items:center;gap:7px;border:0;background:transparent;color:white;cursor:pointer;min-width:88px;position:relative;z-index:1}.dog-photo{width:72px;height:72px;border-radius:50%;background:#32214f;border:3px solid #a875ed;display:grid;place-items:center;font-size:28px;overflow:hidden}.dog-photo img{height:100%;width:100%;object-fit:cover}.bone-label{padding:7px 18px;background:#6a42aa;border-radius:44% 25% 44% 25% / 55% 42% 55% 42%;font-size:12px;min-width:80px}.dog-lead-row{position:relative;gap:26px}.dog-lead-row::before{content:"";position:absolute;top:51px;left:44px;right:44px;height:4px;background:var(--lead-color);border-radius:5px;opacity:.8}.dog-lead-row .dog-photo{border-color:var(--lead-color)}.report-list-item{display:flex;gap:14px;align-items:center;justify-content:space-between;border-radius:14px;padding:18px;margin:12px 0;color:#fff}.report-list-item p{margin:5px 0 0;font-size:13px;opacity:.85}.lucy-report{background:#5c2996}.richard-report{background:#224fba}.message-thread{min-height:200px;max-height:450px;overflow-y:auto;display:flex;flex-direction:column;gap:12px;background:#100e1c;border-radius:12px;padding:14px;margin:20px 0}.message-bubble{align-self:flex-start;max-width:85%;border-radius:12px;padding:12px 16px;background:#302246}.message-bubble.client-message{align-self:flex-end;background:#543183}.message-bubble p{margin:6px 0}.message-bubble small{display:block;color:#c8b5e2}.modal-shade{position:fixed;inset:0;background:#000b;z-index:100;display:grid;place-items:center;padding:18px}.profile-modal{position:relative;background:#1e1730;color:white;border:1px solid #654a8c;border-radius:18px;padding:30px;max-width:520px;width:100%;box-shadow:0 20px 80px #000a}.close-modal{position:absolute;top:8px;right:12px;background:none;border:0;color:white;font-size:30px;cursor:pointer}@media(max-width:720px){.chart-labels{font-size:8px}.report-list-item{align-items:flex-start;flex-direction:column}.income-chart{height:230px}}

/* Purple V3: detail routes and finance legend */
.profile-page { min-height:100vh; background:#100b1b; display:flex; justify-content:center; align-items:flex-start; padding:70px 20px; }
.profile-detail-card { width:100%; max-width:520px; background:#20162f; color:#f4efff; border:1px solid #493266; border-radius:18px; padding:30px; box-shadow:0 15px 45px #0005; }
.profile-detail-card h2 { margin:20px 0;color:#e9d5ff; }
.profile-detail-card h3 {margin-top:25px;}
.profile-detail-card p {margin:15px 0;}
.profile-detail-card input {width:100%; margin:10px 0 20px;}
.profile-detail-card button {margin:5px 5px 5px 0;}
.profile-dog-photo {max-width:160px;max-height:160px;object-fit:cover;border-radius:50%;display:block;margin:12px 0;}
.income-legend {display:flex; flex-wrap:wrap; gap:28px; margin-top:22px; font-weight:600;}
.legend-lucy {color:#ad79ff;}.legend-richard {color:#438cff;}.legend-total {color:#36d6bb;}
.client-actions {display:flex; justify-content:flex-end; margin:18px 0;}
