
:root{--ink:#29251f;--muted:#756f65;--paper:#fff;--canvas:#faf9f5;--line:#e7e2d8;--green:#08745d;--deep:#075e4d;--mint:#e7f3ed;--gold:#c58a38;--rose:#c96e67;--shadow:0 12px 30px rgba(38,49,42,.07);--radius:18px}*{box-sizing:border-box}body{margin:0;background:var(--canvas);color:var(--ink);font:14px/1.5 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button{cursor:pointer}.hidden{display:none!important}.brand-logo{width:52px;height:42px;object-fit:contain;border-radius:10px}.brand{display:flex;align-items:center;gap:10px;color:var(--deep);font-weight:900}.brand-mark{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--green);color:#fff;font:700 23px Georgia,serif;box-shadow:0 6px 14px #08745d32}.brand-word{font:700 24px Georgia,serif;letter-spacing:-.5px}.brand-word b{font:900 23px ui-sans-serif}.eyebrow,.kicker{color:var(--green);font-size:10px;font-weight:900;letter-spacing:.13em;text-transform:uppercase}.eyebrow{margin:26px 0 7px}h1,h2,h3,p{margin-top:0}h1,h2,h3{letter-spacing:-.025em}h1{font-size:28px;line-height:1.1;margin-bottom:9px}h2{font-size:21px;margin-bottom:6px}h3{font-size:15px;margin-bottom:9px}.muted{color:var(--muted)}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at 15% 15%,#dbeee4 0,transparent 28%),radial-gradient(circle at 85% 80%,#f4e7d3 0,transparent 30%),var(--canvas)}.login-card{width:min(100%,500px);background:#fffffff2;border:1px solid var(--line);border-radius:28px;padding:34px;box-shadow:0 22px 70px #29251f22}.auth-tabs{display:flex;gap:4px;background:#f1efe9;padding:4px;border-radius:12px;margin:20px 0}.auth-tabs button{flex:1;border:0;border-radius:9px;background:transparent;padding:9px;color:var(--muted);font-weight:800}.auth-tabs button.active{background:#fff;color:var(--deep);box-shadow:0 2px 8px #29251f13}.field{display:grid;gap:6px;margin:13px 0}.field label{font-size:12px;font-weight:800;color:#625c52}.field input,.field select,.field textarea{width:100%;border:1px solid #dcd6ca;background:#fff;border-radius:11px;padding:11px 12px;outline:0}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #08745d18}.primary{border:0;border-radius:11px;background:var(--deep);color:#fff;padding:11px 15px;font-weight:800;box-shadow:0 5px 12px #075e4d25}.secondary{border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--deep);padding:10px 13px;font-weight:750}.link{border:0;background:none;color:var(--deep);font-weight:800;text-decoration:underline;padding:5px}.demo-note,.demo-banner{padding:11px 13px;border-radius:12px;background:#f6f3eb;color:var(--muted);font-size:12px}.demo-note{margin-top:20px}.demo-banner{position:sticky;top:0;z-index:5;border-radius:0;background:#f6ead5;color:#75531f;text-align:center;padding:8px}.app-header{height:70px;background:#fffffff2;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(16px,4vw,54px);position:sticky;top:0;z-index:4;backdrop-filter:blur(12px)}.header-actions{display:flex;align-items:center;gap:14px}.role-switch{background:#f1efe9;border:1px solid var(--line);padding:4px;border-radius:13px;display:flex;gap:3px}.role-switch button{border:0;background:transparent;color:var(--muted);border-radius:9px;padding:7px 11px;font-size:12px;font-weight:800}.role-switch button.active{background:var(--green);color:#fff}.user-chip{display:flex;align-items:center;gap:9px;font-size:12px;font-weight:800}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:#d9eee5;color:var(--deep);font-weight:900;border:2px solid #fff;box-shadow:0 0 0 1px #c5dfd2}.app-shell{max-width:1380px;margin:auto;padding:24px clamp(16px,4vw,54px);display:grid;grid-template-columns:245px minmax(0,1fr);gap:24px}.sidebar{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:15px;min-height:calc(100vh - 142px);display:flex;flex-direction:column;justify-content:space-between}.profile-mini{background:#f6f4ee;border:1px solid var(--line);border-radius:13px;padding:11px;display:flex;gap:10px;align-items:center;margin-bottom:20px}.profile-mini strong{font-size:12px;display:block}.profile-mini small{font-size:10px;color:var(--green);font-weight:700}.nav{display:grid;gap:4px}.nav button{border:0;background:transparent;text-align:left;color:#706a60;padding:10px 12px;border-radius:11px;font-weight:750;font-size:12px;display:flex;align-items:center;gap:11px}.nav button:hover{background:#f4f2ec;color:var(--ink)}.nav button.active{background:var(--deep);color:#fff;box-shadow:0 5px 12px #075e4d20}.nav-icon{width:18px;text-align:center;font-size:15px}.secure{border-top:1px solid var(--line);padding-top:14px;font-size:11px;color:var(--muted)}.secure strong{color:var(--ink);display:block;margin-bottom:4px}.secure b{color:var(--green)}.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin:3px 0 22px}.page-head h1{margin:5px 0}.page-head p{margin:0;color:var(--muted)}.grid{display:grid;gap:15px}.stats{grid-template-columns:repeat(4,minmax(0,1fr));margin-bottom:18px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}.stat{padding:17px}.stat-top{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase}.stat-value{font-size:27px;font-weight:900;margin:7px 0 1px}.trend{font-size:11px;color:var(--green);font-weight:800}.layout-2{grid-template-columns:1.3fr 1fr}.layout-3{grid-template-columns:repeat(3,minmax(0,1fr))}.card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:15px}.card-head p{margin:0;color:var(--muted);font-size:12px}.pill{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:30px;background:var(--mint);color:var(--deep);font-size:10px;font-weight:900}.pill.gold{background:#fbf1df;color:#97641c}.pill.rose{background:#fbe9e8;color:#a55049}.patient-list{display:grid;gap:10px}.patient-row{display:flex;align-items:center;gap:11px;padding:11px;border:1px solid var(--line);border-radius:13px;background:#fff}.patient-row .details{flex:1;min-width:0}.patient-row strong{font-size:13px;display:block}.patient-row small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted);font-size:11px}.row-action{border:0;background:#f0f7f3;color:var(--deep);border-radius:8px;padding:7px 9px;font-weight:900}.timeline{display:grid;gap:14px}.timeline-item{display:flex;gap:12px}.time-badge{width:44px;height:44px;flex:0 0 44px;border-radius:12px;background:#fbf1df;color:#94621b;display:grid;place-items:center;font-weight:900;font-size:11px}.timeline-item strong{font-size:13px}.timeline-item p{font-size:11px;color:var(--muted);margin:2px 0}.barline{height:7px;border-radius:9px;background:#edf0ea;overflow:hidden;margin:10px 0}.barline i{display:block;height:100%;background:var(--green);border-radius:9px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);text-align:left;padding:9px;border-bottom:1px solid var(--line)}.data-table td{padding:12px 9px;border-bottom:1px solid #f0ede7}.meal-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.meal-card{padding:15px;border-radius:14px;background:#f8f7f2;border:1px solid var(--line)}.meal-card .meal-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--green);font-weight:900;margin-bottom:6px}.meal-card p{font-size:12px;margin:0}.plan-banner{background:linear-gradient(120deg,#075e4d,#0c8066);color:#fff;border-radius:17px;padding:20px;position:relative;overflow:hidden}.plan-banner h2{font-size:22px;max-width:70%;margin:10px 0 5px}.plan-banner p{color:#d4eee4;font-size:12px;max-width:70%;margin-bottom:16px}.plan-metrics{display:flex;gap:25px}.plan-metrics b{font-size:17px;display:block}.plan-metrics span{font-size:10px;color:#cce9dc}.message-thread{display:grid;gap:11px;max-height:330px;overflow:auto;padding-right:4px}.bubble{max-width:80%;padding:11px 13px;border-radius:14px 14px 14px 4px;background:#f2f1ec;font-size:12px}.bubble.mine{justify-self:end;background:var(--deep);color:#fff;border-radius:14px 14px 4px 14px}.bubble small{display:block;margin-top:4px;font-size:10px;opacity:.65}.composer{display:flex;gap:8px;margin-top:14px}.composer input{flex:1;border:1px solid #dcd6ca;border-radius:11px;padding:11px;background:#faf9f5}.food-entry{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.food-entry:last-child{border-bottom:0}.food-icon{width:38px;height:38px;border-radius:11px;background:#f8ead9;display:grid;place-items:center;font-size:18px;flex:none}.food-entry strong{font-size:12px}.food-entry p{font-size:12px;color:var(--muted);margin:2px 0}.searchbar{display:flex;gap:8px;margin-bottom:14px}.searchbar input{flex:1;border:1px solid var(--line);border-radius:11px;padding:10px 12px}.check{display:flex;align-items:flex-start;gap:8px;font-size:12px;color:var(--muted);margin:12px 0}.check input{margin-top:4px;accent-color:var(--green)}.modal{position:fixed;inset:0;background:#29251f66;display:grid;place-items:center;padding:18px;z-index:10}.modal-card{width:min(100%,650px);max-height:90vh;overflow:auto;background:#fff;border-radius:22px;padding:22px;box-shadow:0 24px 70px #29251f38}.modal-head{display:flex;justify-content:space-between;align-items:center}.close{border:0;background:#f1efe9;border-radius:9px;padding:6px 10px}.toast{position:fixed;right:18px;bottom:18px;background:var(--deep);color:#fff;padding:12px 15px;border-radius:11px;box-shadow:var(--shadow);font-size:12px;font-weight:800;z-index:20}.svg-chart{width:100%;height:160px}.empty{padding:24px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:12px}.appointment-status-select{appearance:none;border:0;border-radius:30px;padding:5px 24px 5px 9px;font-size:10px;font-weight:900;color:var(--deep);background:var(--mint);cursor:pointer}.appointment-status-select.status-confirmed{background:#e7f3ed;color:#075e4d}.appointment-status-select.status-paid{background:#fbf1df;color:#97641c}.appointment-status-select.status-completed{background:#e4eef8;color:#2d5f88}.appointment-status-select.status-cancelled{background:#fbe9e8;color:#a55049}.appointment-status-select.status-absent{background:#eeeae4;color:#6b6257}.appointment-row-cancelled{opacity:.52;background:#f3f1ed}.appointment-row-cancelled td{text-decoration:line-through}.appointment-row-cancelled td:nth-child(5),.appointment-row-cancelled td:nth-child(6){text-decoration:none}.patient-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 14px}.patient-form-grid .full{grid-column:1/-1}.phone-combo{display:grid;grid-template-columns:145px 1fr;gap:8px}.patient-form-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.patient-form-actions button:disabled{cursor:not-allowed;opacity:.48;box-shadow:none}.field .required-mark{color:var(--rose)}.field-error{color:#a55049;font-size:11px;min-height:15px}@media(max-width:560px){.patient-form-grid{grid-template-columns:1fr}.patient-form-grid .full{grid-column:auto}.phone-combo{grid-template-columns:125px 1fr}}@media(max-width:900px){.app-shell{grid-template-columns:1fr}.sidebar{min-height:auto}.nav{display:flex;overflow:auto}.nav button{white-space:nowrap}.secure{display:none}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.layout-2{grid-template-columns:1fr}}@media(max-width:560px){.app-header{height:auto;min-height:70px;padding:12px 16px;gap:10px}.app-header .brand-word{font-size:20px}.header-actions{gap:6px}.user-chip span:first-child{display:none}.role-switch button{padding:7px 8px}.app-shell{padding:16px;gap:16px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.stat{padding:13px}.stat-value{font-size:23px}.layout-3,.meal-grid{grid-template-columns:1fr}.page-head{align-items:flex-start;flex-direction:column}.card{padding:15px}.plan-banner h2,.plan-banner p{max-width:100%}}
.pdf-list{display:grid;gap:8px;margin-top:10px}.pdf-item{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--line);border-radius:12px;background:#fbfaf7}.pdf-item .pdf-meta{flex:1;min-width:0}.pdf-item strong,.pdf-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pdf-item small{color:var(--muted);font-size:10px}.pdf-icon{width:30px;height:34px;border-radius:7px;background:#fbe9e8;color:#a55049;display:grid;place-items:center;font-weight:900;font-size:10px}.inline-actions{display:flex;gap:6px;flex-wrap:wrap}.google-box{background:#f6f3eb;border:1px solid var(--line);border-radius:14px;padding:14px;margin-top:14px}.google-box h3{margin-bottom:4px}.notice{padding:10px 12px;border-left:3px solid var(--gold);background:#fff8ec;color:#75531f;font-size:11px;border-radius:4px}.brand{display:flex;align-items:center;gap:10px}.smtp-grid{display:grid;grid-template-columns:2fr 1fr;gap:4px 14px}.password-wrap{display:flex;gap:8px}.password-wrap input{flex:1}.tab-strip{display:flex;gap:6px;border-bottom:1px solid var(--line);margin:0 0 16px}.tab-strip button{border:0;background:transparent;padding:10px 12px;color:var(--muted);font-weight:800;border-bottom:2px solid transparent}.tab-strip button.active{color:var(--deep);border-color:var(--green)}.info-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.info-grid div{padding:11px;border:1px solid var(--line);border-radius:12px;background:#fbfaf7}.info-grid small,.info-grid b{display:block}.info-grid small{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.06em}.audit-mini{max-height:180px;overflow:auto}@media(max-width:560px){.smtp-grid,.info-grid{grid-template-columns:1fr}}
.signup-appointment{margin:18px 0;padding:18px;border:1px solid var(--line);border-radius:14px;background:#fbfcfa}.signup-appointment-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:14px}.signup-appointment h3{margin:3px 0 4px}.appointment-slots{display:flex;flex-wrap:wrap;gap:8px}.slot-button{border:1px solid var(--green);background:#fff;color:var(--deep);border-radius:9px;padding:9px 13px;font-weight:700;cursor:pointer}.slot-button:hover,.slot-button.is-selected{background:var(--green);color:#fff}.slot-button.is-taken,.slot-button:disabled{border-color:var(--line);background:#eef0ed;color:#98a09a;cursor:not-allowed}.signup-appointment.is-skipped{opacity:.62}.field-error{color:#a44848;font-size:12px;margin-top:8px;min-height:16px}.signup-later{margin-top:10px}

.x9-chart{width:100%;height:190px;background:linear-gradient(180deg,#f3faf5,transparent);border-radius:14px}.invoice{padding:24px;border:1px solid var(--line);border-radius:14px;background:#fff}.dark-mode{--canvas:#18221e;--paper:#22302a;--ink:#eef7f0;--muted:#b6c7bb;--line:#385047}.dark-mode .app-header,.dark-mode .sidebar,.dark-mode .card,.dark-mode .patient-row,.dark-mode .modal-card{background:#22302a}.dark-mode input,.dark-mode select,.dark-mode textarea{background:#1a2822;color:#eef7f0;border-color:#486258}
/* Compatibility layer for server-rendered PHP views */
.auth-main{min-height:100vh;display:grid;place-items:center;padding:24px}.auth-main .card{width:min(100%,500px)}
.app-body{background:var(--canvas);color:var(--ink)}
.app-header{height:70px;background:#fffffff2;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(16px,4vw,54px);position:sticky;top:0;z-index:4;backdrop-filter:blur(12px)}
.role-switch{background:#f1efe9;border:1px solid var(--line);padding:6px 10px;border-radius:13px;color:var(--deep);font-size:12px}.role-label{color:var(--muted);margin-right:6px}.notification-bell{position:relative;color:var(--deep);text-decoration:none;font-size:17px}.notification-bell b{position:absolute;top:-7px;right:-9px;background:var(--rose);color:#fff;border-radius:99px;padding:1px 5px;font-size:9px}.sidebar .nav{display:grid;gap:4px}.nav-section-label{color:var(--muted);font-size:10px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;padding:14px 12px 5px}.nav-link{border:0;background:transparent;text-align:left;color:#706a60;padding:10px 12px;border-radius:11px;font-weight:750;font-size:12px;display:flex;align-items:center;gap:11px;text-decoration:none}.nav-link:hover{background:#f4f2ec;color:var(--ink)}.nav-link.active{background:var(--deep);color:#fff;box-shadow:0 5px 12px #075e4d20}.sidebar .logout{margin-top:12px}.content h1{font-size:28px}.content label{font-size:12px;font-weight:800;color:#625c52;display:block;margin:13px 0 6px}.content input,.content select,.content textarea{width:100%;border:1px solid #dcd6ca;background:#fff;border-radius:11px;padding:11px 12px;outline:0}.content textarea{min-height:100px}.content .btn{border:0;border-radius:11px;background:var(--deep);color:#fff;padding:11px 15px;font-weight:800;box-shadow:0 5px 12px #075e4d25;text-decoration:none;display:inline-block;margin-top:14px}.content .btn.alt{border:1px solid var(--line);background:#fff;color:var(--deep);box-shadow:none}.content table{width:100%;border-collapse:collapse;font-size:12px}.content th{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);text-align:left;padding:9px;border-bottom:1px solid var(--line)}.content td{padding:12px 9px;border-bottom:1px solid #f0ede7}.content .alert{padding:11px 13px;border-radius:12px;background:#fbe9e8;color:#a55049;margin-bottom:14px}.content .notice{margin-bottom:14px}.narrow{max-width:500px;margin:auto}@media(max-width:900px){.app-header{padding:12px 16px}.topbar-name{display:none}.app-shell{grid-template-columns:1fr}.sidebar{min-height:auto}.nav{display:flex!important;overflow:auto}.nav-section-label{display:none}.secure{display:none}}@media(max-width:560px){.header-actions{gap:7px}.user-chip>span:first-child{display:none}.content .card{padding:15px}}
