:root{--copper:#8f6a43;--copper-deep:#5d4028;--copper-soft:#eadfce;--cream:#f6f0e6;--paper:#fffdf9;--surface:#eee3d3;--surface-strong:#dfcdb6;--ink:#2c2118;--ink-soft:#766657;--ink-muted:#a39483;--line:#dccbb7;--champagne:#b89766;--champagne-soft:#f0e4d2;--brown:#6f4f32;--brown-dark:#4a321f;--brown-soft:#c9ae8d;--ok:#5d745c;--warn:#a47a3f;--danger:#9d5b4a;--radius:6px;--shadow:0 1px 0 #5d402814, 0 18px 42px #5d402817;--font-display:"Newsreader", Georgia, serif;--font-body:"Jost", "Lato", system-ui, -apple-system, sans-serif;--font-ui:"Archivo", "Jost", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{background:linear-gradient(180deg, #fffdf9b8, #f6f0e6fa 260px), var(--cream);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.5}h1,h2,h3{font-family:var(--font-display);margin:0;font-weight:500}h1{font-size:1.85rem;line-height:1.08}h2{font-size:1.28rem;line-height:1.16}a{color:var(--brown-dark)}button{font-family:var(--font-ui)}.app{min-height:100%;display:flex}.sidebar{background:linear-gradient(180deg, #fffdf9f5, #eee3d3e6), var(--cream);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-right:1px solid var(--line);flex-direction:column;flex-shrink:0;gap:4px;width:248px;height:100vh;padding:30px 16px 24px;display:flex;position:sticky;top:0}.brand{font-family:var(--font-ui);color:var(--brown-dark);border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.24em;margin-bottom:18px;padding:0 10px 24px;font-size:1.02rem;line-height:1.45;position:relative}.notif{position:absolute;top:0;right:6px}.notif-bell{border:1px solid var(--line);background:var(--paper);width:34px;height:34px;color:var(--copper-deep);cursor:pointer;border-radius:999px;justify-content:center;align-items:center;display:inline-flex;position:relative}.notif-bell svg{width:18px;height:18px}.notif-badge{color:#5d4028;background:#e8b923;border-radius:999px;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 5px;font-size:.66rem;font-weight:800;display:flex;position:absolute;top:-6px;right:-6px}.notif-panel{z-index:30;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);text-transform:none;letter-spacing:normal;width:270px;max-height:360px;padding:8px;position:absolute;top:42px;right:0;overflow-y:auto;box-shadow:0 12px 30px #0000002e}.notif-title{font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft);padding:4px 6px 8px;font-size:.72rem}.notif-empty{color:var(--ink-soft);padding:6px;font-size:.82rem}.notif-item{border-top:1px solid var(--line);color:var(--ink);flex-direction:column;gap:2px;padding:8px 6px;font-size:.82rem;display:flex}.notif-item strong{color:var(--brown-dark);font-size:.84rem}.notif-item span{color:var(--ink-soft)}.notif-item.imminent{background:#fff7df;border-radius:8px}.brand:before{content:"";background:url(/spa-bruna-logo.png) 50%/contain no-repeat;width:58px;height:58px;margin-bottom:16px;display:block}.brand small{font-family:var(--font-body);letter-spacing:.2em;text-transform:uppercase;color:var(--copper-deep);margin-top:7px;font-size:.66rem;display:block}.nav-link{border-radius:var(--radius);color:var(--copper-deep);font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;align-items:center;gap:10px;padding:10px 12px;font-size:.78rem;font-weight:500;text-decoration:none;display:flex}.nav-link:hover{background:var(--champagne-soft);color:var(--brown-dark)}.nav-link.active{background:var(--brown);color:#fffaf3}.nav-link svg{flex-shrink:0;width:18px;height:18px}.sidebar-footer{color:var(--ink-soft);margin-top:auto;padding:12px;font-size:.82rem}.sidebar-footer button{margin-top:6px}.main{flex:1;width:100%;max-width:1320px;margin:0 auto;padding:34px clamp(18px,4vw,48px) 90px}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.page-head h1{letter-spacing:.01em}.bottom-nav{display:none}@media (width<=860px){.sidebar{display:none}.main{padding-top:18px}.bottom-nav{background:var(--paper);border-top:1px solid var(--line);z-index:50;padding:6px 4px calc(6px + env(safe-area-inset-bottom));display:flex;position:fixed;bottom:0;left:0;right:0}.bottom-nav .nav-link{text-align:center;flex-direction:column;flex:1;gap:3px;padding:6px 2px;font-size:.66rem}.bottom-nav .nav-link.active{color:var(--brown-dark);background:0 0}}.btn{border-radius:var(--radius);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;background:var(--brown);color:#fffaf3;border:1px solid #0000;align-items:center;gap:8px;padding:10px 16px;font-size:.78rem;font-weight:600;display:inline-flex}.btn:hover{background:var(--brown-dark)}.btn.secondary{color:var(--brown-dark);border-color:var(--brown-soft);background:0 0}.btn.secondary:hover{background:var(--surface)}.btn.ghost{color:var(--ink-soft);background:0 0}.btn.ghost:hover{color:var(--brown-dark);background:var(--champagne-soft)}.btn.danger{color:var(--danger);background:0 0;border-color:#dec9c4}.btn.small{padding:7px 11px;font-size:.68rem}.btn:disabled{opacity:.55;cursor:not-allowed}input,select,textarea{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);width:100%;color:var(--ink);font-size:.92rem;font-family:var(--font-body);padding:11px 12px}input:focus,select:focus,textarea:focus,.btn:focus-visible{outline:1px solid var(--copper);outline-offset:1px}textarea{resize:vertical;min-height:80px}label{font-family:var(--font-ui);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.12em;margin-bottom:6px;font-size:.68rem;font-weight:600;display:block}.field{margin-bottom:14px}.form-grid{grid-template-columns:1fr 1fr;gap:0 14px;display:grid}@media (width<=560px){.form-grid{grid-template-columns:1fr}}.check{cursor:pointer;align-items:center;gap:9px;padding:7px 0;font-size:.9rem;display:flex}.check input{width:17px;height:17px;accent-color:var(--brown)}.check span{flex:1}.card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffdf9f0;padding:22px}.card+.card{margin-top:16px}.list-row{border-bottom:1px solid var(--line);cursor:pointer;align-items:center;gap:14px;padding:14px 6px;display:flex}.list-row:last-child{border-bottom:none}.list-row:hover{background:var(--surface)}.list-row .grow{flex:1;min-width:0}.list-row .title{font-family:var(--font-ui);letter-spacing:.01em;font-weight:600}.list-row .sub{color:var(--ink-soft);font-size:.82rem}.avatar{background:var(--champagne-soft);width:38px;height:38px;color:var(--brown-dark);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:flex}.badge{font-family:var(--font-ui);letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;border-radius:999px;padding:3px 9px;font-size:.66rem;font-weight:700;display:inline-block}.badge.agendado{color:var(--ink-soft);background:#efeeeb}.badge.confirmado{background:var(--champagne-soft);color:var(--brown-dark)}.badge.concluido{color:var(--ok);background:#dcebe1}.badge.cancelado{color:var(--danger);background:#f0dcda}.badge.faltou{color:var(--warn);background:#f2e6cc}.empty{text-align:center;color:var(--ink-soft);padding:36px 12px;font-size:.92rem}.error-text{color:var(--danger);margin:8px 0;font-size:.86rem}.agenda-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.agenda-date{font-family:var(--font-display);text-transform:capitalize;min-width:200px;font-size:1.15rem}.agenda-grid-wrap{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow-x:auto}.agenda-grid{min-width:640px;display:grid}.agenda-col-head{background:var(--paper);border-bottom:1px solid var(--brown-soft);font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;text-align:center;z-index:2;padding:7px 8px;font-size:.7rem;font-weight:600;position:sticky;top:0}.agenda-time{color:var(--ink-soft);text-align:right;border-top:1px solid var(--line);background:var(--surface);padding:1px 7px 0;font-size:.68rem}.agenda-cell{border-top:1px solid var(--line);border-left:1px solid var(--line);cursor:pointer;min-height:34px;position:relative}.agenda-cell:hover{background:var(--surface)}.agenda-cell.blocked{background:repeating-linear-gradient(135deg,#6f4f3212 0 8px,#fffdf933 8px 16px),#eee7dc}.blocked-label{z-index:0;color:var(--ink-soft);pointer-events:none;font-size:.66rem;position:absolute;top:4px;left:7px}.appt{color:#fffaf3;cursor:pointer;z-index:1;border-left:4px solid #4a321f38;border-radius:4px;padding:3px 7px 6px;font-size:.68rem;line-height:1.18;position:absolute;left:3px;right:3px;overflow:hidden}.appt strong{text-overflow:ellipsis;white-space:nowrap;padding-right:56px;font-size:.7rem;display:block;overflow:hidden}.appt-service,.appt-detail{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.appt-detail{opacity:.96;font-size:.6rem}.appt.cancelado,.appt.faltou{opacity:.45;text-decoration:line-through}.appt.paid{box-shadow:inset 0 -3px #4b7360f2}.appt.unpaid{box-shadow:inset 0 -3px #a78345f2}.appt-pay{text-align:right;text-overflow:ellipsis;white-space:nowrap;text-transform:uppercase;max-width:54px;font-size:.56rem;font-weight:700;position:absolute;top:4px;right:5px;overflow:hidden}.appt-last-label{text-overflow:ellipsis;white-space:nowrap;color:#5d4028;letter-spacing:.04em;text-transform:uppercase;pointer-events:none;background:#fffdf9b3;border-radius:999px;max-width:calc(100% - 14px);padding:1px 6px;font-size:.52rem;font-weight:800;position:absolute;bottom:4px;left:7px;overflow:hidden}.agenda-list .list-row{cursor:pointer}.agenda-list-extra{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.time-pill{font-variant-numeric:tabular-nums;color:var(--ink);background:var(--champagne-soft);border-radius:var(--radius);text-align:center;min-width:52px;padding:6px 8px;font-size:.82rem;font-weight:700}.modal-overlay{z-index:100;background:#2c21187a;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.modal{background:#fffdf9fc;border-radius:12px 12px 0 0;width:100%;max-width:560px;max-height:92vh;padding:24px;overflow-y:auto}@media (width>=700px){.modal-overlay{align-items:center;padding:24px}.modal{border-radius:10px}}.modal-head{justify-content:space-between;align-items:center;margin-bottom:18px;display:flex}.modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.tabs{border-bottom:1px solid var(--line);gap:4px;margin-bottom:18px;display:flex;overflow-x:auto}.tab{color:var(--ink-soft);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;padding:10px 14px;font-size:.9rem;font-weight:600}.tab.active{color:var(--brown-dark);border-bottom-color:var(--copper)}.stats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:20px;display:grid}.stat{background:linear-gradient(180deg, var(--paper), #fbf6ee);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.stat .num{font-family:var(--font-display);color:var(--brown);font-size:2rem}.stat .lbl{font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft);font-size:.68rem}.status-row{flex-wrap:wrap;gap:8px;display:flex}.login-page{background:linear-gradient(180deg, #fffdf9c7, #eee3d3f5), var(--cream);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.login-card{text-align:center;width:100%;max-width:410px;padding:34px 30px}.login-card:before{content:"";background:url(/spa-bruna-logo.png) 50%/contain no-repeat;width:82px;height:82px;margin:0 auto 18px;display:block}.login-card h1{color:var(--brown-dark);font-family:var(--font-ui);letter-spacing:.24em;text-transform:uppercase;margin-bottom:8px;font-size:1.05rem;font-weight:500}.login-card p{color:var(--ink-soft);margin:0 0 22px;font-size:.9rem}.login-card .field{text-align:left}@media (prefers-reduced-motion:no-preference){.modal{animation:.18s ease-out rise}@keyframes rise{0%{opacity:.6;transform:translateY(14px)}to{opacity:1;transform:none}}}.ops-strip{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin:0 0 10px;display:grid}.ops-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);padding:8px 12px}.ops-item strong{font-family:var(--font-display);font-size:1.35rem;line-height:1;display:block}.ops-item span{font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin-top:4px;font-size:.62rem;display:block}.ops-item.scheduled{color:#1d5d91;background:#eef6ff;border-color:#9fc0df}.ops-item.paid{color:#3f7a4d;background:#edf7ef;border-color:#adc9b3}.ops-item.unpaid{color:#a7473d;background:#fff0ee;border-color:#e0aaa2}.ops-item.blocked{color:#68615a;background:#eeeeeb;border-color:#cac5bf}.agenda-legend{color:var(--ink-soft);font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 10px;font-size:.66rem;display:flex}.agenda-legend span{align-items:center;gap:7px;display:inline-flex}.dot{border-radius:999px;width:10px;height:10px;display:inline-block}.dot.scheduled{background:#2d7fbd}.dot.paid{background:#4f9a62}.dot.unpaid{background:#cf5147}.dot.blocked{background:#9a9690}.dot.last-session{background:#e8b923}.appt.scheduled,.appt.agendado{background:#2d7fbd}.appt.paid{box-shadow:none;background:#4f9a62}.appt.unpaid{box-shadow:none;background:#cf5147}.appt.last-session{color:#5d4028;box-shadow:none;background:#f2c94c}.appt.last-session .appt-pay,.appt.last-session .appt-last-label{color:#5d4028}.appt.confirmado{color:#fffaf3;border-color:#1f6399}.appt.last-session.confirmado{color:#5d4028}.block-appt{color:#56514c;border-color:#9a9690;background:#e2e0dc!important}.payment-chip{font-family:var(--font-ui);text-transform:uppercase;border-radius:999px;align-items:center;padding:3px 8px;font-size:.62rem;font-weight:700;display:inline-flex}.payment-chip.paid{color:#3f7a4d;background:#edf7ef}.payment-chip.unpaid{color:#a7473d;background:#fff0ee}.payment-chip.scheduled{color:#1d5d91;background:#eef6ff}.stepper{grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 18px;display:grid}.step-pill{border:1px solid var(--line);background:var(--paper);color:var(--ink-soft);border-radius:var(--radius);font-family:var(--font-ui);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;padding:8px 6px;font-size:.66rem;font-weight:700}.step-pill span{background:var(--champagne-soft);width:18px;height:18px;color:var(--brown-dark);border-radius:999px;justify-content:center;align-items:center;margin-right:5px;display:inline-flex}.step-pill.active{border-color:var(--brown-soft);background:var(--champagne-soft);color:var(--brown-dark)}.step-pill.done span{background:var(--brown);color:#fffaf3}.time-grid>.field:nth-child(-n+2){display:none}.notice-card,.review-box,.warning-item{border:1px solid var(--line);border-radius:var(--radius);background:var(--champagne-soft);margin-bottom:14px;padding:12px 14px}.notice-card strong,.review-box strong{color:var(--brown-dark);display:block}.notice-card span,.review-box span{color:var(--ink-soft);margin-top:3px;font-size:.88rem;display:block}.warning-stack{gap:8px;margin:12px 0 0;display:grid}.warning-item{color:#75572c;background:#fff7df;border-color:#dfc57d;margin:0;font-size:.88rem}.patient-summary{border:1px solid var(--line);border-radius:var(--radius);background:#fffdf9d1;margin-bottom:16px;padding:14px}.patient-summary-head,.patient-history-head,.history-title{justify-content:space-between;align-items:center;gap:8px;display:flex}.patient-summary-head span:first-child,.patient-history-head strong,.history-title span{font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);font-size:.68rem;font-weight:700}.patient-data-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px;margin-top:10px;display:grid}.patient-data-grid div,.patient-notes,.history-column{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper)}.patient-data-grid div{min-width:0;padding:9px 10px}.patient-data-grid span,.patient-notes span{font-family:var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);font-size:.6rem;font-weight:700;display:block}.patient-data-grid strong{text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:.88rem;display:block;overflow:hidden}.patient-notes{margin-top:8px;padding:10px}.patient-notes p{color:var(--ink-soft);white-space:pre-wrap;margin:3px 0 0;font-size:.86rem}.patient-history-head{margin-top:14px}.patient-history-head span{color:var(--ink-soft);font-size:.78rem}.patient-history-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-top:8px;display:grid}.history-column{overflow:hidden}.history-title{background:var(--champagne-soft);border-bottom:1px solid var(--line);padding:8px 10px}.history-title strong{color:var(--brown-dark);font-size:.78rem}.history-empty{color:var(--ink-soft);padding:14px 10px;font-size:.82rem}.history-row{border-bottom:1px solid var(--line);grid-template-columns:62px minmax(0,1fr);gap:8px;padding:9px 10px;display:grid}.history-row:last-child{border-bottom:none}.history-row.current{background:#fff7df}.history-date strong,.history-date span,.history-main strong,.history-main span{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.history-date strong{color:var(--brown-dark);font-size:.68rem}.history-date span,.history-main span{color:var(--ink-soft);font-size:.76rem}.history-main{min-width:0}.history-main strong{font-size:.84rem}.history-row>.badge{grid-column:2;justify-self:start;margin-top:2px}.agenda-cell.unavailable{opacity:.22;pointer-events:none}.agenda-cell.unavailable:hover{background:inherit}.appt-tooltip{z-index:30;width:min(280px,82vw);color:var(--ink);border:1px solid var(--brown-soft);border-radius:var(--radius);background:#fffdf9;padding:10px 12px;font-size:.78rem;line-height:1.35;text-decoration:none;display:none;position:absolute;top:calc(100% + 6px);left:8px;box-shadow:0 14px 38px #4a321f2e}.appt:hover .appt-tooltip{display:block}.appt-tooltip strong{color:var(--brown-dark);margin-bottom:5px;font-size:.86rem;display:block}.appt-tooltip span{color:var(--ink-soft);margin-top:3px;display:block}.undo-bar{border:1px solid var(--brown-soft);border-radius:var(--radius);background:var(--champagne-soft);color:var(--brown-dark);justify-content:space-between;align-items:center;gap:12px;margin:0 0 14px;padding:10px 12px;display:flex}.undo-bar span{font-weight:600}.reminders-panel{gap:8px;margin:0 0 12px;display:grid}.reminders-toggle{justify-self:start}.reminder-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--champagne-soft);justify-content:space-between;align-items:flex-start;gap:12px;padding:10px 14px;display:flex}.reminder-card.due{background:#fff7df;border-color:#dfc57d}.reminder-main{flex-direction:column;gap:2px;min-width:0;display:flex}.reminder-main strong{color:var(--brown-dark);align-items:center;gap:8px;display:flex}.reminder-unit{text-transform:uppercase;letter-spacing:.03em;color:var(--brown-dark);background:var(--champagne-soft);border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:.7rem;font-weight:600}.reminder-main span{color:var(--ink);white-space:pre-wrap;font-size:.9rem}.reminder-main small{color:var(--ink-soft);font-size:.8rem}.reminder-actions{flex-wrap:wrap;flex-shrink:0;gap:6px;display:flex}
