:root{--plum-950: #1d0f2c;--plum-900: #2b1840;--plum-800: #3a2255;--plum-700: #4d2f6e;--plum-100: #efe7f7;--plum-50: #f7f2fb;--rose-600: #c9486b;--rose-500: #e0587d;--rose-400: #e58aa4;--rose-100: #fbe4ea;--gold-500: #c79a3b;--gold-400: #d8b45a;--gold-100: #f8efd6;--cream: #faf6f1;--paper: #ffffff;--line: #e8dfd6;--line-strong: #d6c9bc;--ink: #241a2e;--ink-2: #5b4f66;--ink-3: #8a7f94;--ok: #1f8a5b;--ok-bg: #dcf3e8;--warn: #a76a00;--warn-bg: #fdecc8;--err: #c0302f;--err-bg: #fde0df;--info: #2a63b8;--info-bg: #dfeafb;--radius: 12px;--radius-sm: 8px;--shadow: 0 1px 2px rgba(43,24,64,.06), 0 8px 24px rgba(43,24,64,.08);--font: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Fraunces", Georgia, "Times New Roman", serif;--sidebar-w: 268px;--topbar-h: 60px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);color:var(--ink);background:var(--cream);font-size:14.5px;line-height:1.45;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-family:var(--font-display);color:var(--plum-900);letter-spacing:-.01em}h1{font-size:1.7rem}h2{font-size:1.25rem}h3{font-size:1.05rem}a{color:var(--rose-600);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--rose-500);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.muted{color:var(--ink-3)}.small{font-size:.85rem}.right{text-align:right}.nowrap{white-space:nowrap}.mono{font-variant-numeric:tabular-nums}.row{display:flex;align-items:center;gap:10px}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.row.end{justify-content:flex-end}.col{display:flex;flex-direction:column;gap:12px}.grow{flex:1;min-width:0}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.stack-sm>*+*{margin-top:8px}.mt{margin-top:16px}.mb{margin-bottom:16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);padding:9px 14px;border-radius:var(--radius-sm);font-weight:600;min-height:40px;transition:background .15s,border-color .15s,transform .05s}.btn:hover{background:var(--plum-50)}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--plum-800);border-color:var(--plum-800);color:#fff}.btn.primary:hover{background:var(--plum-700)}.btn.accent{background:var(--rose-500);border-color:var(--rose-500);color:#fff}.btn.accent:hover{background:var(--rose-600)}.btn.danger{background:var(--err);border-color:var(--err);color:#fff}.btn.danger:hover{filter:brightness(.92)}.btn.ghost{background:transparent;border-color:transparent}.btn.ghost:hover{background:var(--plum-50)}.btn.sm{min-height:32px;padding:5px 10px;font-size:.85rem}.btn[disabled]{opacity:.55;cursor:not-allowed}.icon{width:18px;height:18px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.field{display:flex;flex-direction:column;gap:5px;min-width:0}.field>label,.label{font-size:.8rem;font-weight:600;color:var(--ink-2)}.input,.select,.textarea{width:100%;border:1px solid var(--line-strong);background:#fff;border-radius:var(--radius-sm);padding:9px 12px;font:inherit;color:var(--ink);min-height:40px}.input,.select,.textarea{font-family:var(--font);font-weight:400;letter-spacing:normal}.textarea{min-height:84px;resize:vertical}.input:focus,.select:focus,.textarea:focus{border-color:var(--rose-500);outline:2px solid var(--rose-100)}.input[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--err)}.hint{font-size:.78rem;color:var(--ink-3)}.error-text{font-size:.8rem;color:var(--err)}.check{display:flex;gap:8px;align-items:center;font-size:.9rem}.form-grid{display:grid;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid .full{grid-column:1 / -1}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-body{padding:18px}.card-head{padding:14px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px}.table-wrap{overflow-x:auto}table.table{width:100%;border-collapse:collapse}.table th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);padding:10px 14px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--plum-50)}.table td{padding:11px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.table tr:last-child td{border-bottom:0}.table tbody tr:hover{background:#fcf9fe}.table td.num,.table th.num{text-align:right;font-variant-numeric:tabular-nums}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:.75rem;font-weight:600;background:var(--plum-100);color:var(--plum-800);white-space:nowrap}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.err{background:var(--err-bg);color:var(--err)}.badge.info{background:var(--info-bg);color:var(--info)}.badge.gold{background:var(--gold-100);color:#7a5a10}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);overflow-x:auto;margin-bottom:16px}.tab{border:0;background:none;padding:10px 14px;font-weight:600;color:var(--ink-3);border-bottom:2px solid transparent;white-space:nowrap}.tab[aria-selected=true]{color:var(--plum-900);border-bottom-color:var(--rose-500)}.stat{padding:16px 18px}.stat .k{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-weight:600}.stat .v{font-family:var(--font-display);font-size:1.7rem;color:var(--plum-900);margin-top:4px}.stat .d{font-size:.8rem;color:var(--ink-3);margin-top:2px}.alert{padding:10px 14px;border-radius:var(--radius-sm);font-size:.9rem}.alert.err{background:var(--err-bg);color:var(--err)}.alert.warn{background:var(--warn-bg);color:var(--warn)}.alert.info{background:var(--info-bg);color:var(--info)}.alert.ok{background:var(--ok-bg);color:var(--ok)}.empty{text-align:center;padding:40px 20px;color:var(--ink-3)}.empty h3{color:var(--ink-2);margin-bottom:6px}.empty .icon{width:36px;height:36px;color:var(--rose-400);margin-bottom:8px}.spinner{width:22px;height:22px;border:3px solid var(--plum-100);border-top-color:var(--rose-500);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading{display:flex;align-items:center;justify-content:center;gap:10px;padding:36px;color:var(--ink-3)}.bar{height:8px;background:var(--plum-100);border-radius:99px;overflow:hidden}.bar>i{display:block;height:100%;background:linear-gradient(90deg,var(--rose-400),var(--gold-400))}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#1d0f2c8c;display:flex;align-items:center;justify-content:center;padding:16px;z-index:60}.modal{background:var(--paper);border-radius:16px;width:min(640px,100%);max-height:calc(100dvh - 32px);display:flex;flex-direction:column;box-shadow:0 24px 60px #00000059}.modal.wide{width:min(900px,100%)}.modal-head{padding:16px 20px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.modal-body{padding:20px;overflow-y:auto}.modal-foot{padding:14px 20px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:10px;flex-wrap:wrap}.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:80;max-width:min(380px,calc(100vw - 32px))}.toast{padding:12px 16px;border-radius:10px;color:#fff;background:var(--plum-900);box-shadow:var(--shadow);font-weight:500}.toast.ok{background:var(--ok)}.toast.err{background:var(--err)}.shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);min-height:100dvh}.sidebar{background:linear-gradient(180deg,var(--plum-900),var(--plum-950));color:#e9defa;display:flex;flex-direction:column;position:sticky;top:0;height:100dvh;overflow-y:auto}.brand{padding:20px 20px 14px;display:flex;align-items:center;gap:12px}.brand-mark{width:38px;height:38px;border-radius:11px;background:linear-gradient(135deg,var(--rose-500),var(--gold-400));display:grid;place-items:center;color:#fff}.brand-name{font-family:var(--font-display);font-size:1.15rem;color:#fff;line-height:1.05}.brand-name small{display:block;font-family:var(--font);font-size:.66rem;letter-spacing:.2em;color:var(--gold-400);text-transform:uppercase}.nav{padding:6px 12px 20px;display:flex;flex-direction:column;gap:2px}.nav-group{margin:14px 10px 4px;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:#a592c0}.nav a{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:9px;color:#dccff0;font-weight:500;text-decoration:none}.nav a:hover{background:#ffffff14}.nav a[aria-current=page]{background:#e58aa42e;color:#fff;box-shadow:inset 3px 0 0 var(--rose-400)}.main{min-width:0;display:flex;flex-direction:column}.topbar{height:var(--topbar-h);background:#faf6f1eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 22px;position:sticky;top:0;z-index:20}.content{padding:24px;max-width:1400px;width:100%;margin:0 auto}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:20px;flex-wrap:wrap}.page-head p{margin:4px 0 0;color:var(--ink-3)}.switcher{max-width:220px}.menu-btn{display:none}.avatar{width:34px;height:34px;border-radius:50%;background:var(--plum-100);color:var(--plum-800);display:grid;place-items:center;font-weight:700;font-size:.85rem}.scrim{display:none}@media (max-width: 960px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;z-index:50;width:min(300px,86vw);transform:translate(-102%);transition:transform .2s}.sidebar.open{transform:none}.scrim.open{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:40}.menu-btn{display:inline-flex}.content{padding:16px}.topbar{padding:0 14px}.g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 600px){.g2,.g3,.g4,.form-grid{grid-template-columns:1fr}.switcher{max-width:130px}.hide-sm{display:none}h1{font-size:1.4rem}.modal{border-radius:16px 16px 0 0;align-self:flex-end}.overlay{padding:0}}.auth{min-height:100dvh;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr)}.auth-hero{background:radial-gradient(1200px 500px at 0% 0%,#5a2f86 0%,transparent 60%),linear-gradient(160deg,var(--plum-900),var(--plum-950));color:#efe4ff;padding:48px;display:flex;flex-direction:column;justify-content:space-between}.auth-hero h1{color:#fff;font-size:2.4rem;line-height:1.1;max-width:14ch}.auth-hero p{max-width:42ch;color:#cdbbe6}.auth-panel{display:grid;place-items:center;padding:28px}.auth-card{width:min(420px,100%)}@media (max-width: 860px){.auth{grid-template-columns:1fr}.auth-hero{display:none}}.cal{display:block;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff}.cal-head{display:grid;background:var(--plum-50);border-bottom:1px solid var(--line);font-weight:600;font-size:.85rem}.cal-head>div{padding:10px 8px;border-left:1px solid var(--line);text-align:center}.cal-head>div:first-child{border-left:0}.cal-body{position:relative;display:grid}.cal-hours>div{height:60px;font-size:.72rem;color:var(--ink-3);padding:2px 6px;border-top:1px solid var(--line)}.cal-col{position:relative;border-left:1px solid var(--line);background-image:repeating-linear-gradient(to bottom,transparent 0 59px,var(--line) 59px 60px)}.evt{position:absolute;left:3px;right:3px;border-radius:8px;padding:4px 7px;font-size:.78rem;overflow:hidden;border-left:4px solid var(--plum-700);background:var(--plum-100);color:var(--plum-900);cursor:pointer;text-align:left;border-top:0;border-right:0;border-bottom:0}.evt.completed{background:var(--ok-bg);border-left-color:var(--ok)}.evt.cancelled,.evt.no_show{background:#eee;border-left-color:#999;color:#666;text-decoration:line-through}.evt.confirmed{background:var(--info-bg);border-left-color:var(--info)}.evt.in_progress{background:var(--gold-100);border-left-color:var(--gold-500)}.evt.block{background:repeating-linear-gradient(45deg,#f1ecf5,#f1ecf5 6px,#e7e0ee 6px,#e7e0ee 12px);border-left-color:#8a7f94;cursor:default}.evt b{display:block}.slot-btn{border:1px solid var(--line-strong);background:#fff;border-radius:8px;padding:6px 10px;font-weight:600}.slot-btn[aria-pressed=true]{background:var(--plum-800);color:#fff;border-color:var(--plum-800)}.chips{display:flex;gap:6px;flex-wrap:wrap}.chip{border:1px solid var(--line-strong);background:#fff;border-radius:99px;padding:4px 12px;font-size:.85rem}.chip[aria-pressed=true]{background:var(--rose-100);border-color:var(--rose-400);color:var(--rose-600);font-weight:600}.chart{width:100%;height:auto;display:block}.chart text{font-size:11px;fill:var(--ink-3)}
