:root { --ink:#20312d; --muted:#71807c; --green:#375b52; --green-dark:#29473f; --sage:#dfe9e3; --cream:#f7f5f0; --white:#fff; --line:#e6e9e5; --shadow:0 16px 45px rgba(42,63,57,.08); }
* { box-sizing:border-box; }
body { margin:0; font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif; color:var(--ink); background:var(--cream); }
button,input,select,textarea { font:inherit; } button { cursor:pointer; }
.app-shell { min-height:100vh; display:grid; grid-template-columns:244px 1fr; }
.sidebar { padding:28px 20px; background:var(--green-dark); color:white; display:flex; flex-direction:column; }
.brand { display:flex; align-items:center; gap:12px; padding:0 8px 34px; }
.brand-mark { width:40px; height:40px; display:grid; place-items:center; border-radius:12px; background:#b8d0c4; color:var(--green-dark); font-family:Georgia,serif; font-size:24px; }
.brand strong,.brand span { display:block; }.brand span { margin-top:2px; color:#b9c9c4; font-size:12px; }
nav { display:grid; gap:8px; }.nav-item { padding:12px 14px; border:0; border-radius:10px; color:#d7e2de; background:transparent; text-align:left; }.nav-item:hover,.nav-item.active { color:white; background:rgba(255,255,255,.12); }
.privacy-note { margin-top:auto; padding:14px; border:1px solid rgba(255,255,255,.16); border-radius:12px; color:#d7e2de; font-size:12px; }.privacy-note strong,.privacy-note span { display:block; }.privacy-note span { margin-top:5px; color:#b9c9c4; }
main { min-width:0; padding:34px 42px 48px; overflow:hidden; }.topbar { display:flex; align-items:center; justify-content:space-between; margin-bottom:28px; }
h1,h2,h3,p { margin-top:0; } h1 { margin-bottom:0; font-family:Georgia,serif; font-size:34px; font-weight:500; } h2 { margin-bottom:0; font-family:Georgia,serif; font-size:23px; font-weight:500; } h3 { margin:0; font-size:15px; }
.eyebrow { margin-bottom:5px; color:var(--muted); font-size:11px; font-weight:700; letter-spacing:.11em; text-transform:uppercase; }
.primary,.secondary { min-height:42px; padding:0 17px; border-radius:10px; font-weight:650; }.primary { border:1px solid var(--green); color:white; background:var(--green); }.primary:hover { background:var(--green-dark); }.secondary { border:1px solid var(--line); color:var(--ink); background:white; }.primary:disabled,.secondary:disabled { opacity:.55; cursor:wait; }.compact { min-height:36px; padding:0 12px; }.topbar-actions { display:flex; gap:8px; }
.view { display:none; }.view.active { display:block; }.muted-copy { color:var(--muted); font-size:12px; }
.install-card { margin-bottom:16px; padding:14px 16px; border:1px solid #cbdcd3; border-radius:14px; background:#edf5f0; display:flex; align-items:center; justify-content:space-between; gap:18px; }.install-card[hidden] { display:none; }.install-card strong,.install-card span { display:block; }.install-card span { margin-top:4px; color:var(--muted); font-size:12px; }.install-actions { display:flex; align-items:center; gap:8px; }.install-actions [hidden] { display:none; }
.welcome-card { min-height:156px; padding:30px 34px; border-radius:20px; color:white; background:linear-gradient(120deg,#3a6257,#52786c); display:flex; align-items:flex-end; justify-content:space-between; gap:40px; box-shadow:var(--shadow); }.welcome-card .eyebrow { color:#ccded7; }.welcome-card h2 { max-width:500px; font-size:30px; }.welcome-card>p { max-width:350px; margin-bottom:2px; color:#dbe8e3; line-height:1.5; }
.stats { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin:18px 0; }.stat { padding:20px 22px; border:1px solid var(--line); border-radius:16px; background:white; }.stat span { display:block; color:var(--muted); font-size:13px; }.stat strong { display:block; margin-top:8px; font-family:Georgia,serif; font-size:30px; font-weight:500; }
.content-grid { display:grid; grid-template-columns:1.4fr .9fr; gap:18px; }.panel { padding:24px; border:1px solid var(--line); border-radius:18px; background:var(--white); box-shadow:0 8px 30px rgba(42,63,57,.04); }.panel-heading { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:20px; }.text-button { border:0; color:var(--green); background:transparent; font-weight:700; }
.session-list,.pending-list,.patient-list,.payment-list { display:grid; }.session-card { display:grid; grid-template-columns:70px 1fr auto auto; align-items:center; gap:15px; padding:15px 0; border-top:1px solid var(--line); }.session-card:first-child,.pending-item:first-child,.patient-row:first-child { border-top:0; }.session-time strong { display:block; font-size:16px; }.session-time span,.session-person span { color:var(--muted); font-size:12px; }.session-person strong,.session-person span { display:block; }.session-person span { margin-top:4px; }
.status { display:inline-flex; width:max-content; padding:6px 9px; border-radius:999px; background:var(--sage); color:var(--green-dark); font-size:11px; font-weight:700; }.status.canceled,.status.inactive { color:#7a5650; background:#f3e7e4; }.status.rescheduled { color:#795c23; background:#fff1cd; }.badge-stack { display:flex; align-items:flex-end; flex-direction:column; gap:5px; }
.session-actions { display:flex; align-items:center; justify-content:flex-end; gap:7px; flex-wrap:wrap; }.danger-button { color:#9b4f45!important; }.pending-item { padding:15px 0; border-top:1px solid var(--line); }.pending-item strong,.pending-item span { display:block; }.pending-item span { margin:4px 0 10px; color:var(--muted); font-size:12px; }
.small-button { padding:7px 10px; border:1px solid var(--line); border-radius:8px; color:var(--green); background:white; font-size:12px; font-weight:700; }.small-button.tiny { padding:4px 6px; font-size:10px; }.empty { padding:22px 0; color:var(--muted); text-align:center; }

/* Agenda semanal */
.calendar-panel { padding:20px; }.agenda-controls { display:flex; gap:7px; flex-wrap:wrap; }.calendar-scroll { overflow-x:auto; padding-bottom:8px; border:1px solid var(--line); border-radius:13px; }.calendar-grid { min-width:1080px; display:grid; grid-template-columns:72px repeat(7,minmax(138px,1fr)); background:white; }.calendar-grid>* { min-width:0; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }.calendar-corner,.calendar-head,.time-cell { background:#f7f8f6; }.calendar-corner { padding:13px 8px; color:var(--muted); font-size:11px; font-weight:700; }.calendar-head { padding:10px; text-align:center; }.calendar-head strong,.calendar-head span { display:block; }.calendar-head strong { text-transform:capitalize; }.calendar-head span { margin-top:3px; color:var(--muted); font-size:11px; }.calendar-head.today { color:white; background:var(--green); }.calendar-head.today span { color:#d8e6e0; }.time-cell { padding:10px 7px; color:var(--muted); font-size:11px; text-align:right; }.reminder-label { min-height:54px; }.reminder-cell { min-height:54px; padding:5px; background:#fffdf7; }.reminder-chip { width:100%; margin-bottom:4px; padding:6px; border:0; border-radius:7px; color:#765d2b; background:#fff0c8; text-align:left; font-size:10px; line-height:1.3; }.reminder-chip.done { opacity:.55; text-decoration:line-through; }.calendar-cell { min-height:104px; padding:5px; }.calendar-event { margin-bottom:5px; padding:8px; border-left:3px solid var(--green); border-radius:7px; background:#edf5f0; }.calendar-event.canceled { border-left-color:#b78880; background:#f6ecea; opacity:.75; }.calendar-event strong,.calendar-event span { display:block; }.calendar-event strong { font-size:11px; }.calendar-event span { margin:3px 0 6px; color:var(--muted); font-size:9px; }.calendar-event .session-actions { justify-content:flex-start; gap:3px; }

/* Pacientes e ficha */
.patients-heading { align-items:flex-end; }.patient-actions { display:flex; gap:10px; } input,select,textarea { width:100%; border:1px solid #dce2de; border-radius:9px; color:var(--ink); background:white; outline:none; } input,select { height:42px; padding:0 12px; } textarea { padding:11px 12px; resize:vertical; } input:focus,select:focus,textarea:focus { border-color:var(--green); box-shadow:0 0 0 3px rgba(55,91,82,.1); } #patient-search { width:220px; } #patient-status-filter { width:130px; }
.patient-row { display:grid; grid-template-columns:1fr 1fr 90px 190px; align-items:center; gap:18px; padding:16px 4px; border-top:1px solid var(--line); }.patient-row strong,.patient-row span { display:block; }.patient-row span { color:var(--muted); font-size:12px; }.patient-row-actions { display:flex; justify-content:flex-end; gap:6px; }
.patient-status-actions { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:12px 0 2px; padding:11px 13px; border-radius:10px; background:#f7f8f6; }.patient-status-controls { display:flex; align-items:center; justify-content:flex-end; gap:8px; flex-wrap:wrap; }.permanent-delete-button { border-color:#e6c9c4; color:#8b3329!important; background:#fff8f7; }
.wide-dialog { width:min(920px,calc(100% - 28px)); }.detail-grid { display:grid; grid-template-columns:1fr 1fr; gap:14px; }.detail-section { margin-top:16px; padding:17px; border:1px solid var(--line); border-radius:13px; }.section-title { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:13px; }.inline-form { display:grid; grid-template-columns:.7fr 1.3fr auto; gap:8px; }.contact-form { display:grid; grid-template-columns:130px 1fr auto; gap:8px; align-items:end; }.document-list { margin-top:10px; }.document-item { display:flex; justify-content:space-between; gap:10px; padding:9px 0; border-top:1px solid var(--line); }.document-item a { color:var(--green); font-size:13px; font-weight:700; }.icon-text { border:0; color:#9b4f45; background:transparent; font-size:11px; }.timeline { display:grid; }.timeline-item { display:grid; grid-template-columns:110px 1fr; gap:15px; padding:15px 0; border-top:1px solid var(--line); }.timeline-item:first-child { border-top:0; }.timeline-date { color:var(--muted); font-size:11px; line-height:1.5; }.timeline-item p { margin:5px 0 0; font-size:13px; }.timeline-title { display:flex; align-items:center; gap:8px; }.topic-note { margin:8px 0; padding:10px; border-radius:8px; background:#f7f8f6; font-size:12px; line-height:1.5; }.change-history { margin:8px 0; padding-left:17px; color:#80652e; font-size:11px; line-height:1.5; }

/* Pagamentos */
.payment-list { grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }.payment-card { padding:18px; border:1px solid var(--line); border-radius:14px; }.payment-card-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:10px; margin-bottom:13px; }.payment-card-heading span { display:block; margin-top:4px; color:var(--muted); font-size:12px; }.period-payment,.payment-check { width:100%; border:1px solid #eadcc1; border-radius:9px; color:#735b2c; background:#fffaf0; text-align:left; }.period-payment { padding:12px; }.period-payment span,.period-payment strong,.payment-check span,.payment-check strong { display:block; }.period-payment strong { margin-top:4px; font-size:11px; }.period-payment.paid,.payment-check.paid { border-color:#bad6c8; color:var(--green-dark); background:#edf7f1; }.session-payment-list { display:grid; gap:6px; }.payment-check { display:flex; align-items:center; justify-content:space-between; padding:9px 10px; font-size:11px; }.payment-check span,.payment-check strong { display:inline; }

/* Segurança */
.security-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }.security-card { padding:20px; border:1px solid var(--line); border-radius:14px; background:#fafbf9; }.security-card p { min-height:76px; margin:9px 0 16px; color:var(--muted); font-size:13px; line-height:1.55; }.security-card code { font-size:12px; }.security-status { display:block; margin-top:11px; color:var(--muted); font-size:11px; }.backup-warning { margin-bottom:16px; padding:12px 14px; border:1px solid #ead5a7; border-radius:10px; color:#755a25; background:#fff6df; font-size:13px; }.backup-warning[hidden] { display:none; }.security-help { margin:18px 0 0; padding:13px 15px; border-radius:10px; color:#5e4d2e; background:#f8f3e8; font-size:12px; line-height:1.55; }
.security-gate { position:fixed; z-index:100; inset:0; display:grid; place-items:center; padding:20px; background:linear-gradient(145deg,#24443b,#456c61); }.security-gate.hidden { display:none; }.security-gate-card { width:min(430px,100%); padding:32px; border-radius:20px; background:white; box-shadow:0 30px 90px rgba(14,31,25,.35); }.security-gate-card .brand-mark { margin-bottom:20px; }.security-gate-card h1 { margin-bottom:10px; }.security-gate-card>p:not(.eyebrow) { color:var(--muted); font-size:13px; line-height:1.5; }.security-gate-card label { margin-top:16px; }.security-gate-card .primary { width:100%; margin-top:18px; }.gate-error { min-height:18px; margin:10px 0 -8px!important; color:#9b4f45!important; font-weight:650; }.gate-help { margin:12px 0 0!important; font-size:11px!important; text-align:center; }
.backup-dialog-copy { color:var(--muted); font-size:13px; line-height:1.55; }.backup-dialog-actions { display:grid; gap:9px; }.download-button { display:flex; align-items:center; justify-content:center; text-decoration:none; }.backup-dialog-actions [hidden] { display:none; }

/* Diálogos */
dialog { width:min(540px,calc(100% - 32px)); max-height:90vh; padding:25px; border:0; border-radius:18px; color:var(--ink); box-shadow:0 30px 80px rgba(25,40,35,.25); overflow-y:auto; } dialog::backdrop { background:rgba(24,36,32,.55); backdrop-filter:blur(3px); } dialog form { display:grid; gap:16px; }.dialog-heading { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:4px; }.icon-button { flex:0 0 auto; width:35px; height:35px; border:0; border-radius:50%; color:var(--muted); background:#f2f4f2; font-size:24px; } label { display:grid; gap:7px; color:#495b56; font-size:13px; font-weight:650; }.form-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; }.dialog-actions { display:flex; justify-content:flex-end; gap:10px; margin-top:5px; }.form-help { padding:10px 12px; border-radius:8px; color:#6e512b; background:#fff7e8; font-size:12px; line-height:1.45; } details { border:1px solid var(--line); border-radius:9px; } summary { padding:11px 12px; cursor:pointer; color:var(--green); font-size:13px; font-weight:700; }.details-fields { padding:4px 12px 12px; display:grid; gap:12px; }
.destructive-warning { margin:0; padding:13px 14px; border:1px solid #e7c5bf; border-radius:10px; color:#77372f; background:#fff5f3; font-size:13px; line-height:1.55; }.destructive-primary { border-color:#87392f; background:#87392f; }.destructive-primary:hover { background:#6e2d26; }.destructive-primary:disabled { opacity:.5; cursor:not-allowed; }
.toast { position:fixed; z-index:50; right:28px; bottom:28px; padding:12px 16px; border-radius:10px; color:white; background:var(--green-dark); box-shadow:var(--shadow); opacity:0; transform:translateY(10px); pointer-events:none; transition:.2s; }.toast.show { opacity:1; transform:translateY(0); }

@media (max-width:1000px) { .app-shell { grid-template-columns:1fr; }.sidebar { padding:14px 18px; flex-direction:row; align-items:center; gap:20px; }.brand { padding:0; }.brand span,.privacy-note { display:none; } nav { display:flex; margin-left:auto; }.nav-item { padding:9px 10px; } main { padding:26px 20px; }.content-grid { grid-template-columns:1fr; }.welcome-card { align-items:flex-start; flex-direction:column; }.patient-row { grid-template-columns:1fr 1fr; }.patient-row-actions { justify-content:flex-start; }.detail-grid,.payment-list,.security-grid { grid-template-columns:1fr; }.security-card p { min-height:0; } }
@media (max-width:650px) {
  .app-shell { padding-bottom:78px; }.sidebar { position:fixed; z-index:20; right:0; bottom:0; left:0; height:70px; padding:8px 7px calc(8px + env(safe-area-inset-bottom)); box-shadow:0 -8px 28px rgba(27,45,39,.14); }.brand,.privacy-note { display:none; } nav { width:100%; display:grid; grid-template-columns:repeat(5,1fr); margin:0; gap:3px; }.nav-item { padding:9px 2px; text-align:center; font-size:9px; }
  main { padding:22px 14px; }.topbar { align-items:flex-start; gap:10px; }.topbar h1 { font-size:27px; }.topbar-actions { flex-direction:column-reverse; }.topbar .primary,.topbar .secondary { min-height:36px; padding:0 9px; font-size:11px; }.stats { grid-template-columns:repeat(3,1fr); gap:7px; }.stat { padding:14px 10px; }.stat span { min-height:29px; font-size:10px; }.stat strong { font-size:23px; }.welcome-card { min-height:auto; padding:23px; }.welcome-card h2 { font-size:24px; }.welcome-card>p { display:none; }.panel { padding:17px; }
  .install-card { align-items:flex-start; }.install-actions { flex-direction:column-reverse; }.session-card { grid-template-columns:55px 1fr auto; }.session-card .session-actions { grid-column:1/-1; justify-content:flex-start; }.badge-stack { align-items:flex-end; }.patients-heading,.agenda-heading { align-items:stretch; flex-direction:column; }.patient-actions { flex-direction:column; } #patient-search { width:100%; }.patient-row { grid-template-columns:1fr auto; }.patient-row>div:nth-child(2),.patient-row-actions { grid-column:1/-1; }.patient-row-actions { justify-content:flex-start; }
  .agenda-controls { display:grid; grid-template-columns:44px 1fr 44px 1.2fr; }.calendar-panel { padding:14px; }.calendar-scroll { margin-right:-14px; }.detail-grid { grid-template-columns:1fr; }.inline-form,.contact-form { grid-template-columns:1fr; }.timeline-item { grid-template-columns:82px 1fr; }.wide-dialog { width:calc(100% - 18px); padding:18px; }.patient-status-actions { align-items:flex-start; flex-direction:column; }.patient-status-controls { width:100%; justify-content:flex-start; }.form-row { grid-template-columns:1fr; } dialog { max-height:88vh; margin-bottom:calc(8px + env(safe-area-inset-bottom)); }.toast { right:14px; bottom:88px; left:14px; text-align:center; }
}

/* Serena V2: login, estados de gravação e agenda diária. */
[hidden],.app-shell[hidden],.security-gate[hidden] { display:none!important; }
#account-gate { z-index:110; }
.security-gate { overflow-y:auto; }
.security-gate-card { max-width:100%; margin:auto; }
.security-gate-card .secondary { width:100%; margin-top:12px; }
#save-status { margin:7px 0 0; color:var(--muted); font-size:12px; }
#save-status[data-state=error] { color:#9b4f45; font-weight:bold; }
#save-issue-dialog { z-index:200; }
#save-issue-dialog p { line-height:1.6; margin:14px 0; }
#save-issue-dialog label { margin:18px 0; display:flex; align-items:flex-start; }
#save-issue-dialog input { width:auto; }
#version-list { display:grid; gap:8px; margin-top:12px; max-height:320px; overflow:auto; }
.version-button { white-space:normal; height:auto; padding:12px; text-align:left; }
#mobile-agenda { display:none; }
.mobile-agenda-label { display:none; }
.topbar-actions { flex-wrap:wrap; justify-content:flex-end; }
@media (max-width:650px) {
 .mobile-agenda-label { display:inline; }
 .desktop-agenda-label,#week-label,#previous-week,#next-week { display:none; }
 .agenda-controls { grid-template-columns:1fr 1fr; }
 #mobile-agenda { display:block; }
 .calendar-scroll { display:none; }
 #agenda-day { width:100%; min-height:44px; }
 .security-gate { padding:16px; }
 .security-gate-card { padding:24px 20px; }
 .topbar { flex-wrap:wrap; }
 .topbar-actions { display:grid; grid-template-columns:repeat(4,auto); width:100%; max-width:none; gap:6px; }
 #save-status { max-width:160px; }
}

/* Monthly financial ledger, independent of current patient pricing. */
.payment-toolbar,.payment-tools,.charge-actions { display:flex; flex-wrap:wrap; gap:10px; align-items:flex-end; }
.payment-toolbar label { margin:0; min-width:160px; }
.payment-tools { margin-bottom:14px; }
.charge-row p { margin:10px 0; font-size:13px; }
.status.overdue { color:#8b3028; background:#f9e5df; }.status.paid { color:#235849; background:#dfefe5; }.status.voided { color:#666; background:#eee; }
.stat small { display:block; margin-top:8px; color:var(--muted); font-size:11px; }
.checkbox-label { display:flex; align-items:center; gap:10px; }.checkbox-label input { width:auto; }
@media(max-width:650px) {
 .payments-heading { flex-direction:column; align-items:stretch; }
 .payment-toolbar { display:grid; grid-template-columns:1fr 1fr; }.payment-toolbar label { min-width:0; }
 .payment-tools>* { flex:1; padding:10px; height:auto; }
 .charge-actions>* { min-height:40px; padding:8px 10px; }
 #payment-summary { grid-template-columns:repeat(3,minmax(0,1fr)); } #payment-summary .stat span { min-height:0; }
}
