:root{--sage:#8f9d82;--sage2:#e9eee4;--cream:#fbf8f0;--ink:#28312b;--muted:#6d756e;--gold:#b99b64;--line:#e4e4dc;--white:#fff;--danger:#a55c55}*{box-sizing:border-box}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--cream);color:var(--ink)}button,input,select,textarea{font:inherit}.app{min-height:100vh;display:grid;grid-template-columns:245px 1fr}aside{background:#65745f;color:white;padding:24px 16px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.brand{display:flex;gap:12px;align-items:center;padding:0 8px 22px}.mark{width:44px;height:44px;border:1px solid #d8c28f;border-radius:50%;display:grid;place-items:center;font:32px Georgia;color:#f1dfad}.brand small{display:block;font-size:10px;opacity:.8;margin-top:3px}nav{display:grid;gap:5px}.navbtn{border:0;background:transparent;color:#f5f5f1;text-align:left;padding:11px 12px;border-radius:11px;cursor:pointer}.navbtn.active,.navbtn:hover{background:rgba(255,255,255,.14)}.aside-foot{margin-top:auto;padding:12px;font-size:12px;line-height:1.5;opacity:.85}.aside-foot span{font-size:10px}main{min-width:0}header{display:flex;align-items:center;gap:18px;padding:24px 30px;background:rgba(251,248,240,.92);position:sticky;top:0;z-index:5;border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}header h1{margin:0;font:600 26px Georgia}header p{margin:4px 0 0;color:var(--muted);font-size:13px}#menu{display:none}.primary{margin-left:auto;background:var(--sage);color:white;border:0;padding:11px 16px;border-radius:10px;cursor:pointer}.secondary{background:white;border:1px solid var(--line);padding:9px 12px;border-radius:9px;cursor:pointer}.danger{color:var(--danger)}#view{padding:28px 30px 50px;max-width:1500px;margin:auto}.grid{display:grid;gap:16px}.stats{grid-template-columns:repeat(4,minmax(0,1fr))}.card{background:var(--white);border:1px solid var(--line);border-radius:15px;padding:18px;box-shadow:0 3px 16px rgba(50,60,50,.035)}.stat small,.muted{color:var(--muted)}.stat strong{display:block;font-size:26px;margin-top:8px}.two{grid-template-columns:1.2fr .8fr;margin-top:16px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.section-head h2{font:600 19px Georgia;margin:0}.list{display:grid;gap:9px}.row{display:flex;align-items:center;gap:12px;border:1px solid var(--line);border-radius:11px;padding:12px;background:#fff}.row .grow{flex:1}.pill{font-size:11px;padding:5px 8px;border-radius:99px;background:var(--sage2);color:#50604d}.pill.gold{background:#f5eddc;color:#826a3f}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.toolbar input,.toolbar select{background:#fff;border:1px solid var(--line);padding:10px 11px;border-radius:9px}.tablewrap{overflow:auto;background:white;border:1px solid var(--line);border-radius:14px}table{border-collapse:collapse;width:100%;min-width:760px}th,td{padding:12px 14px;border-bottom:1px solid var(--line);text-align:left;font-size:13px}th{background:#f5f5ef;color:#596159;font-weight:600}.money{font-variant-numeric:tabular-nums}.empty{text-align:center;padding:34px;color:var(--muted)}.modal{position:fixed;inset:0;background:rgba(30,35,30,.48);display:grid;place-items:center;padding:20px;z-index:20}.hidden{display:none}.dialog{width:min(720px,100%);max-height:90vh;overflow:auto;background:var(--cream);border-radius:18px;padding:25px;position:relative}.close{position:absolute;right:14px;top:10px;border:0;background:transparent;font-size:28px;cursor:pointer}.formgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.field{display:grid;gap:5px}.field.full{grid-column:1/-1}.field label{font-size:12px;color:var(--muted)}.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);background:white;padding:10px;border-radius:9px}.actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.gallery img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:10px}.note{background:#f5f0e4;border-left:3px solid var(--gold);padding:11px;border-radius:8px;font-size:12px;color:#675b46}.splitbar{height:12px;border-radius:99px;overflow:hidden;display:flex;background:#eee}.splitbar span{height:100%}.s1{background:#87967e}.s2{background:#b8aa8b}.s3{background:#d6c8a7}.s4{background:#596759}@media(max-width:900px){.app{grid-template-columns:1fr}aside{position:fixed;z-index:15;left:-270px;width:245px;transition:.2s}aside.open{left:0}#menu{display:block;border:0;background:transparent;font-size:20px}.stats,.two{grid-template-columns:1fr 1fr}header{padding:18px}#view{padding:18px}.formgrid{grid-template-columns:1fr}.field.full{grid-column:auto}}@media(max-width:560px){.stats,.two{grid-template-columns:1fr}header .primary{font-size:0;padding:10px 12px}header .primary:after{content:'＋';font-size:20px}.gallery{grid-template-columns:1fr 1fr}}
.calendar-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(90px,1fr));border:1px solid #e7e1dc;border-radius:18px;overflow:auto;background:#fff}.cal-dow,.cal-day{min-height:72px;padding:10px;border-right:1px solid #eee8e3;border-bottom:1px solid #eee8e3}.cal-dow{min-height:auto;font-weight:700;background:#f7f4f0;text-align:center}.cal-day.mutedday{background:#fafafa;color:#aaa}.cal-day.today{box-shadow:inset 0 0 0 2px #8f9d82}.daynum{font-weight:700}.cal-appt{margin-top:6px;padding:5px 7px;border-radius:8px;background:#eef2e9;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.client-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:12px 0}.client-meta div{padding:10px;background:#f8f6f3;border-radius:10px}.ar-summary{margin-bottom:16px}@media(max-width:760px){.calendar-grid{grid-template-columns:repeat(7,minmax(72px,1fr));font-size:12px}.cal-day{min-height:64px;padding:6px}.cal-appt{font-size:10px}}
.selected{background:var(--sage2);border-color:var(--sage);color:#4f604b}.schedule-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.schedule-title h2{margin:0;font:600 20px Georgia;text-transform:capitalize}.schedule-wrap{display:flex;overflow:auto;border:1px solid var(--line);border-radius:14px;background:#fff}.time-column{width:72px;flex:0 0 72px;background:#faf9f6;border-right:1px solid var(--line)}.day-head{height:48px;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;text-transform:capitalize;border-bottom:1px solid var(--line);position:sticky;top:0;background:#faf9f6;z-index:2}.time-label{padding:7px 8px;text-align:right;font-size:11px;color:var(--muted);border-bottom:1px solid #eee}.schedule-days{display:grid;grid-template-columns:repeat(7,minmax(150px,1fr));min-width:1050px;flex:1}.schedule-days.one-day{grid-template-columns:minmax(500px,1fr);min-width:500px}.day-column{border-right:1px solid var(--line)}.day-slots{position:relative;background:repeating-linear-gradient(to bottom,#fff 0,#fff 63px,#eee 64px)}.appt-block{position:absolute;left:5px;right:5px;width:calc(100% - 10px);border:0;border-left:4px solid var(--sage);border-radius:8px;background:#e9eee4;padding:7px;text-align:left;overflow:hidden;cursor:pointer;color:var(--ink);box-shadow:0 2px 5px rgba(0,0,0,.05)}.appt-block b,.appt-block span,.appt-block small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.appt-block span{font-size:11px;margin-top:2px}.appt-block small{font-size:10px;color:var(--muted);margin-top:3px}.status-Confirmada{background:#e7f2e5;border-left-color:#66865e}.status-En-proceso{background:#f7efd9;border-left-color:#b99b64}.status-Completada{background:#e6efe9;border-left-color:#4f745c}.status-Cancelada,.status-No-asistió{background:#f3e6e4;border-left-color:#a55c55}.action-wrap{flex-wrap:wrap}.agenda-toolbar{align-items:center}@media(max-width:760px){.schedule-days{grid-template-columns:repeat(7,minmax(130px,1fr));min-width:910px}.schedule-days.one-day{min-width:420px}.schedule-title{align-items:flex-start;flex-direction:column}.action-wrap button{flex:1 1 45%}}
.authgate{position:fixed;inset:0;z-index:9999;background:linear-gradient(145deg,#f4f0e9,#dfe6d8);display:grid;place-items:center;padding:20px}.authgate.hidden{display:none}.authpanel{width:min(560px,100%);background:#fff;border-radius:24px;padding:28px;box-shadow:0 25px 80px #0002}.authbrand{margin-bottom:22px}.authpanel textarea{min-height:90px}

aside{overflow-y:auto;overscroll-behavior:contain;padding-bottom:75px}aside>*{flex-shrink:0}.authpanel{max-height:95dvh;overflow-y:auto}#syncStatus{max-width:100%;font-size:12px;padding-right:175px!important;overflow-wrap:anywhere}

/* Palette and welcoming sign-in screen */
:root{--sage:#69856e;--sage2:#e1eee6;--cream:#fbf7ef;--gold:#bd9857;--ink:#263b32;--line:#dfdfd3}
body{background:radial-gradient(circle at 85% 8%,#f1e4c8 0,transparent 32%),linear-gradient(165deg,#fbf7ef,#f2f6ed 65%)}
aside{background:linear-gradient(170deg,#466b5d,#5d8266 65%,#866e4e)}
.navbtn.active{background:#ffffff35;border-left:3px solid #e9c789}
.primary{background:#547760;box-shadow:0 4px 12px #51745a2a}
.primary:hover{background:#3e6250}
.card{box-shadow:0 10px 28px #465f4b12;border-color:#e5e3d7}
.stats .card:nth-child(1){background:#eaf3e9}.stats .card:nth-child(2){background:#fff0e4}.stats .card:nth-child(3){background:#e8eff2}.stats .card:nth-child(4){background:#f4ecd9}
.welcome{display:flex;align-items:center;justify-content:space-between;gap:24px;background:linear-gradient(115deg,#486e5d,#758e65 58%,#b49360);color:#fff;border-radius:20px;padding:28px 34px;margin-bottom:20px;box-shadow:0 14px 30px #496e5a30}
.welcome h2{font:600 clamp(25px,3vw,37px) Georgia;margin:6px 0 8px}.welcome p{margin:0;color:#f2f6ed}.eyebrow{font-size:11px;letter-spacing:.19em;font-weight:700}.welcome-actions{display:flex;gap:9px;flex-wrap:wrap}.light-button,.outline-light{border-radius:10px;padding:11px 15px;cursor:pointer;white-space:nowrap}.light-button{background:#fff;color:#385e4b;border:0}.outline-light{background:transparent;color:#fff;border:1px solid #fff9}
.catalog-card{margin-top:16px;border-color:#e4dcc6;background:#fffcf5}.fineprint{font-size:12px;margin-bottom:0}
.price-toolbar{margin:18px 0;align-items:center}.price-toolbar input{width:min(360px,100%)}#view tr[hidden]{display:none}
.authgate{background:radial-gradient(circle at 15% 5%,#d7e7d3 0,transparent 36%),radial-gradient(circle at 90% 90%,#ead9b7 0,transparent 35%),#f9f6ee}
.authpanel.auth-layout{width:min(960px,100%);padding:0;display:grid;grid-template-columns:1.05fr .95fr;overflow:hidden;background:#fff;border:1px solid #e8e4d7;box-shadow:0 30px 80px #28453033}
.authintro{background:linear-gradient(150deg,#426b5c,#729066 65%,#a99062);color:#fff;padding:46px 42px;display:flex;flex-direction:column;align-items:flex-start;gap:16px;min-height:470px}
.intro-mark{width:66px;height:66px;border:1px solid #e6d2a5;border-radius:50%;display:grid;place-items:center;color:#f3e2b7;font:44px Georgia}.authintro h1{font:600 clamp(32px,4vw,47px) Georgia;line-height:1.1;margin:0}.authintro p{line-height:1.6;margin:0;color:#f7f7ef}.intro-features{display:grid;gap:9px;margin:5px 0}.intro-features span{background:#ffffff20;padding:8px 12px;border-radius:8px}.authintro small{margin-top:auto;color:#f6eedc}.signin{padding:54px 38px;align-self:center}.signin h2{font:600 29px Georgia;color:#2d5140}.signin #authMsg{min-height:28px;font-size:13px;color:#a04d43}
#signOutBtn{white-space:nowrap;border-color:#aec7ae;color:#486b54}.hidden{display:none!important}
@media(max-width:760px){.authpanel.auth-layout{grid-template-columns:1fr;max-height:95dvh;overflow-y:auto}.authintro{min-height:0;padding:25px;gap:9px}.authintro h1{font-size:30px}.authintro p{font-size:13px}.intro-features{display:none}.signin{padding:25px;width:100%}.welcome{padding:24px;display:block}.welcome-actions{margin-top:16px}header{flex-wrap:wrap}#signOutBtn{margin-left:auto;font-size:12px}}
.record-actions{margin-top:10px}.record-actions .secondary{font-size:12px}.card .gallery{margin-top:12px}.card .section-head b{overflow-wrap:anywhere}
.recommendation-row{display:grid;grid-template-columns:minmax(150px,2fr) 85px 115px auto;gap:8px;align-items:center;margin:7px 0}.recommendation-row input,.recommendation-row select{min-width:0}.recommendation-row .secondary{height:100%}@media(max-width:560px){.recommendation-row{grid-template-columns:1fr 85px}.recommendation-row .recommendation-name{grid-column:1/-1}}
.client-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.client-actions .danger{color:var(--danger);border-color:#e7c9c5}@media(max-width:560px){.client-actions{width:100%;justify-content:flex-start}}

/* Keep conditional one-off billing inputs fully hidden until needed. */
[hidden]{display:none!important}
#oneOffFields{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:560px){#oneOffFields{grid-template-columns:1fr}}

/* Several services in a single charge. */
.formgrid>.full{grid-column:1/-1}
.charge-line{border:1px solid var(--line);border-radius:12px;padding:14px;margin:0 0 12px;background:#fff}
.charge-line legend{padding:0 8px;color:var(--ink);font-weight:600}
.charge-line-footer{display:flex;align-items:center;justify-content:space-between;gap:10px}
.charge-line-footer .remove-line{margin-left:auto}
#addChargeLine{justify-self:start}
@media(max-width:560px){.charge-line-footer{flex-wrap:wrap}}

/* Compact service families with their agreed length and technique variants. */
.service-family{padding:0;margin-bottom:10px;overflow:hidden}
.service-family summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 18px;cursor:pointer;list-style:none}
.service-family summary::-webkit-details-marker{display:none}
.service-family summary::before{content:'▸';color:var(--gold)}
.service-family[open] summary::before{content:'▾'}
.service-family .tablewrap{border:0;border-top:1px solid var(--line);border-radius:0;box-shadow:none}
.service-family .tablewrap table{min-width:660px}
/* Suggested visits have dates but never occupy appointment time slots. */
.suggested-agenda-panel{margin-bottom:16px}.suggested-agenda-card{margin:10px 0}.cal-suggestion{display:block;width:100%;text-align:left;white-space:normal;font-size:11px;line-height:1.35;background:#fff4d9;border:1px dashed #b3954a;color:#634e22;border-radius:6px;padding:5px;margin:4px 0;cursor:pointer}
