:root{--ink:#2b211d;--brown:#6b5148;--olive:#a3a641;--pink:#e780a8;--mauve:#be84b1;--gold:#c6975c;--ivory:#fbf8f4;--paper:#fffdf9;--line:#eadfd7;--muted:#7f746e;--dark:#171513;--ok:#3c8a5d;--warn:#b97725;--bad:#b85151;--shadow:0 14px 40px rgba(54,36,27,.09)}*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:#f7f2ee}body{margin:0}button,input,select,textarea{font:inherit}button,a{cursor:pointer}a{text-decoration:none;color:inherit}.muted{color:var(--muted)}.tiny{font-size:11px}.eyebrow{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--mauve);font-weight:850}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:9px;padding:10px 14px;font-weight:800}.btn.primary{background:linear-gradient(135deg,var(--gold),#a87536);color:white;box-shadow:0 8px 18px rgba(166,117,54,.2)}.btn.secondary{background:white;border-color:#dbcac0;color:var(--ink)}.btn.small{padding:8px 10px;font-size:11px}.link{border:0;background:none;color:#8d5f32;font-weight:800;padding:4px}.link.danger{color:var(--bad)}.alert{padding:13px 15px;border-radius:10px;margin-bottom:14px;border:1px solid}.alert.success{background:#eaf7ef;color:#2f704b;border-color:#bde1ca}.alert.danger{background:#fff0f0;color:#984343;border-color:#ebc1c1}.badge{display:inline-flex;border-radius:99px;padding:5px 8px;font-size:9px;font-weight:850;text-transform:capitalize}.badge.ok{background:#e9f6ee;color:var(--ok)}.badge.warn{background:#fff3df;color:var(--warn)}.badge.bad{background:#fdeaea;color:var(--bad)}.badge.neutral{background:#f0ece9;color:#71655f}.app-shell{display:grid;grid-template-columns:250px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,#171513,#231f1d);color:white;padding:14px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;z-index:50}.side-brand{padding:4px 8px 15px;border-bottom:1px solid rgba(255,255,255,.09)}.side-brand img{width:205px;height:80px;object-fit:contain;filter:brightness(1.35)}.side-brand small{display:block;color:#9d9490;text-align:center}.sidebar nav{display:grid;gap:3px;margin-top:13px;overflow:auto}.nav-item{display:flex;align-items:center;gap:11px;color:#cfc8c3;padding:10px 12px;border-radius:8px;font-size:12px}.nav-item>span{width:22px;height:22px;border:1px solid rgba(255,255,255,.13);border-radius:6px;display:grid;place-items:center}.nav-item:hover,.nav-item.active{background:linear-gradient(90deg,rgba(198,151,92,.32),rgba(198,151,92,.10));color:white}.side-user{margin-top:auto;padding:13px 8px;border-top:1px solid rgba(255,255,255,.09);display:grid}.side-user span{font-size:10px;color:#9f9792;text-transform:capitalize}.side-user a{font-size:11px;color:#e8b6ca;margin-top:8px}.main{min-width:0}.topbar{height:76px;background:rgba(255,255,255,.95);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:40}.topbar h1{font-family:Georgia,serif;font-size:23px;font-weight:500;margin:2px 0}.top-actions{display:flex;align-items:center;gap:9px}.version{font-size:10px;color:var(--muted);border:1px solid var(--line);border-radius:99px;padding:6px 9px}.menu-btn{display:none;border:1px solid var(--line);background:#fff;border-radius:8px;width:38px;height:38px}.content{padding:22px;max-width:1600px;margin:auto}.card{background:white;border:1px solid var(--line);border-radius:15px;padding:18px;box-shadow:var(--shadow);margin-bottom:18px}.card.narrow{max-width:850px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:15px}.card-head h2{font-family:Georgia,serif;font-weight:500;margin:0;font-size:20px}.card-head p{font-size:11px;color:var(--muted);margin:4px 0 0}.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:18px}.kpi{background:white;border:1px solid var(--line);border-radius:13px;padding:15px;box-shadow:var(--shadow)}.kpi span{font-size:9px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:850}.kpi strong{font-family:Georgia,serif;font-size:28px;display:block;margin:6px 0}.kpi small{color:var(--ok)}.grid{display:grid;gap:18px}.grid.two{grid-template-columns:1.4fr 1fr}.schedule-layout{grid-template-columns:1.5fr 1fr}.list{display:grid;gap:9px}.list-row{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;border:1px solid #efe7e2;border-radius:11px;padding:11px}.list-row strong,.list-row small{display:block}.list-row small{font-size:10px;color:var(--muted);margin-top:4px}.date-box{width:48px;text-align:center;background:#fff5f8;border:1px solid #f1ccd9;border-radius:9px;padding:6px}.date-box b{font-size:21px;color:var(--mauve);display:block}.date-box span{font-size:9px;text-transform:uppercase}.room-icon{width:39px;height:39px;border-radius:10px;background:#faf3ec;display:grid;place-items:center;color:#9f6f3d}.status-list{display:grid;gap:10px}.status-list div{display:flex;align-items:center;gap:10px;padding:9px;border-bottom:1px solid #f1e9e4}.status-list span{width:25px;height:25px;border-radius:50%;display:grid;place-items:center;background:#e9f6ee;color:var(--ok)}.empty{text-align:center;color:var(--muted);padding:30px}.empty.mini{padding:15px 5px;font-size:10px}.empty.full{grid-column:1/-1}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:780px}th{text-align:left;padding:10px;font-size:9px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line)}td{padding:11px 10px;border-bottom:1px solid #f0e8e3;font-size:11px;vertical-align:top}td small{display:block;color:var(--muted);margin-top:4px;max-width:350px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.toolbar,.filters{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.filters label{min-width:180px}.filters .btn{margin-bottom:1px}.week-grid{display:grid;grid-template-columns:repeat(7,minmax(135px,1fr));overflow:auto;border:1px solid var(--line);border-radius:10px}.day-column{min-height:440px;border-right:1px solid var(--line);padding:7px}.day-column:last-child{border:0}.day-column header{text-align:center;padding:8px;border-bottom:1px solid var(--line);margin-bottom:7px}.day-column header b,.day-column header span{display:block}.day-column header span{font-size:10px;color:var(--muted)}.calendar-appt{display:grid;border-left:3px solid var(--mauve);background:#fbf8f5;border-radius:7px;padding:8px;margin-bottom:6px}.calendar-appt b{font-size:10px}.calendar-appt span{font-size:10px;margin:3px 0}.calendar-appt small{font-size:8px;color:var(--muted)}.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:9px;margin-top:18px}.slot{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fffcfa;display:grid}.slot b{font-family:Georgia,serif;font-size:20px;color:#9e6a33}.slot span{font-size:10px;font-weight:800;margin:4px 0}.slot small{font-size:9px;color:var(--muted)}.staff-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px}.staff-card{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:13px}.staff-card .btn{grid-column:1/-1}.staff-card h3{margin:0;font-size:14px}.staff-card p{margin:3px 0;font-size:10px;color:var(--muted)}.avatar{width:48px;height:48px;border-radius:50%;display:grid;place-items:center;color:white;font-weight:850}.hours-list{display:grid;gap:7px;margin-bottom:15px}.hours-row{display:grid;grid-template-columns:120px 1fr auto 1fr auto 1fr auto 1fr;gap:7px;align-items:center;border-bottom:1px solid #f0e8e3;padding:8px 0}.day-check{display:flex!important;flex-direction:row!important;align-items:center;gap:8px}.notice{background:#fbf5ef;border:1px solid #e8d6c7;border-radius:10px;padding:12px;font-size:11px;color:#6b5a51;margin-top:12px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid .full{grid-column:1/-1}label{display:flex;flex-direction:column;gap:6px;font-size:10px;font-weight:850;color:#5f5049}input,select,textarea{width:100%;border:1px solid #ddcec4;border-radius:8px;padding:10px;background:white;color:var(--ink);outline:none}textarea{min-height:80px;resize:vertical}input:focus,select:focus,textarea:focus{border-color:var(--mauve);box-shadow:0 0 0 3px rgba(190,132,177,.12)}label.check{flex-direction:row;align-items:center;font-size:11px}label.check input{width:auto}fieldset{border:1px solid var(--line);border-radius:10px;padding:12px}legend{font-size:11px;font-weight:850}.check-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.dialog{border:0;border-radius:16px;width:min(720px,94vw);max-height:90vh;padding:0;box-shadow:0 30px 90px rgba(0,0,0,.3)}.dialog::backdrop{background:rgba(23,21,19,.65);backdrop-filter:blur(4px)}.dialog form{padding:20px}.dialog header,.dialog footer{display:flex;justify-content:space-between;align-items:center;gap:10px}.dialog header{margin-bottom:16px}.dialog header h2{font-family:Georgia,serif;font-weight:500;margin:0}.dialog header button{width:34px;height:34px;border:0;border-radius:8px;background:#f2ece8}.dialog footer{justify-content:flex-end;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.installer-body,.login-shell{min-height:100vh;background:radial-gradient(circle at 10% 10%,rgba(231,128,168,.12),transparent 30%),linear-gradient(135deg,#fffdf9,#f2ebe5);padding:28px}.installer{max-width:850px;margin:auto}.install-logo,.login-card img{width:250px;max-height:110px;object-fit:contain}.installer h1,.login-card h1{font-family:Georgia,serif;font-weight:500;font-size:34px;margin:5px 0}.installer .card{margin-top:16px}.installer .check-grid{grid-template-columns:repeat(2,1fr)}.login-shell{display:grid;place-items:center}.login-card{width:min(440px,100%);background:white;border:1px solid var(--line);border-radius:20px;padding:28px;box-shadow:0 24px 70px rgba(57,38,29,.14);text-align:center}.login-card form{display:grid;gap:13px;text-align:left;margin-top:20px}.login-card .btn{width:100%}@media(max-width:1100px){.kpis{grid-template-columns:repeat(3,1fr)}.grid.two,.schedule-layout{grid-template-columns:1fr}.week-grid{grid-template-columns:repeat(7,150px)}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;left:-260px;width:250px;transition:.25s}.sidebar.open{left:0}.menu-btn{display:block}.topbar{padding:0 12px}.topbar h1{font-size:19px}.content{padding:12px}.kpis{grid-template-columns:1fr 1fr}.version{display:none}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.check-grid{grid-template-columns:1fr}.hours-row{grid-template-columns:1fr 1fr 1fr}.hours-row .day-check{grid-column:1/-1}.hours-row small{display:none}.installer-body{padding:14px}.installer .check-grid{grid-template-columns:1fr}}@media(max-width:440px){.kpis{grid-template-columns:1fr}.top-actions .btn{display:none}}

.quick-installer{max-width:920px}
.installer-hero{display:grid;grid-template-columns:260px 1fr;gap:26px;align-items:center;margin-bottom:18px}
.installer-hero .install-logo{width:250px;height:115px}
.installer-hero h1{margin:3px 0 7px}
.installer-hero p{line-height:1.55;margin:0}
.installer-checks{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
.installer-check{display:flex;align-items:center;gap:9px;padding:11px;border:1px solid var(--line);border-radius:10px;background:#fffdfb;font-size:11px;font-weight:750}
.check-symbol{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:900}
.check-symbol.ready{background:var(--ok)}
.check-symbol.failed{background:var(--bad)}
.installer-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.installer-mode{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start;border:1px solid #ddcec4;border-radius:12px;padding:14px;background:#fff;cursor:pointer}
.installer-mode:has(input:checked){border-color:var(--gold);box-shadow:0 0 0 3px rgba(198,151,92,.12);background:#fffbf5}
.installer-mode input{width:auto;margin-top:3px}
.installer-mode strong,.installer-mode small{display:block}
.installer-mode small{font-weight:500;color:var(--muted);line-height:1.4;margin-top:5px}
.installer-fieldset{margin-top:16px}
.installer-fieldset legend{padding:0 7px}
.installer-security-note{margin:0 0 12px;font-size:11px}
.password-row{display:grid;grid-template-columns:1fr auto;gap:8px}
.password-row .btn{white-space:nowrap}
.installer-starter-data{border:1px solid var(--line);border-radius:11px;padding:13px;background:#fbf8f5;align-items:flex-start!important}
.installer-starter-data span{display:block}
.installer-starter-data strong,.installer-starter-data small{display:block}
.installer-starter-data small{font-weight:500;color:var(--muted);margin-top:4px;line-height:1.4}
.installer-final-step{display:flex;justify-content:space-between;align-items:center;gap:20px;background:linear-gradient(135deg,#fff,#fbf2eb)}
.installer-final-step h2{font-family:Georgia,serif;font-weight:500;margin:4px 0}
.install-submit{min-width:250px;padding:14px 18px}
.install-submit:disabled{opacity:.5;cursor:not-allowed}
.installer-success{text-align:center;padding:35px}
.success-mark{width:72px;height:72px;border-radius:50%;background:var(--ok);color:#fff;display:grid;place-items:center;font-size:39px;font-weight:900;margin:0 auto 15px}
.installer-success h2{font-family:Georgia,serif;font-weight:500;font-size:30px;margin:6px 0}
.install-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:22px 0}
.install-summary div{border:1px solid var(--line);border-radius:10px;padding:12px;background:#fff}
.install-summary span,.install-summary strong{display:block}
.install-summary span{font-size:9px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:5px}
.install-summary strong{font-size:11px;overflow-wrap:anywhere}
.install-open-button{min-width:220px;margin-top:8px}
.notice code{display:block;margin-top:7px;background:#241f1c;color:#fff;padding:9px;border-radius:7px;overflow:auto}
@media(max-width:760px){
  .installer-hero{grid-template-columns:1fr;text-align:center;gap:8px}
  .installer-hero .install-logo{margin:auto}
  .installer-checks,.installer-mode-grid,.install-summary{grid-template-columns:1fr}
  .installer-final-step{display:grid}
  .install-submit{width:100%;min-width:0}
  .password-row{grid-template-columns:1fr}
}

.top-actions a{text-decoration:none}.card input[type=file]{padding:10px;background:#fff}.status-list>div{min-height:44px}
