:root{color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:#f5f7fb;color:#111827}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}code{word-break:break-word;color:#0f766e;font-family:JetBrains Mono,Consolas,monospace;font-size:12px}.gate{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(120deg,#ecfdf5d9,#eff6ffeb),#f8fafc}.gate-panel{width:min(100%,460px);padding:30px;border:1px solid #d9e2ec;border-radius:8px;background:#fff;box-shadow:0 20px 60px #0f172a1f}.gate-panel.wide{width:min(100%,860px)}.gate-panel h1,.gate-panel h2{margin:12px 0 8px}.gate-panel p,.muted,.hint{color:#64748b;line-height:1.55}.hint{margin-bottom:18px;font-size:14px}.primary,.secondary{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:8px;border:1px solid transparent;padding:9px 12px;font-weight:750;text-decoration:none}.primary{background:#111827;color:#fff}.secondary{background:#fff;color:#111827;border-color:#cbd5e1}.danger{color:#991b1b;border-color:#fecaca}.check-row{display:flex;align-items:center;gap:8px;color:#475569;font-size:14px}.check-row input{width:auto;min-height:auto}.error-box{margin:12px 0;padding:10px 12px;border-radius:8px;border:1px solid #fecaca;background:#fef2f2;color:#991b1b;font-size:14px}.setup-grid,.two-col{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.stack{display:grid;gap:12px}.qr{width:220px;height:220px;border:1px solid #e2e8f0;border-radius:8px}.codes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:18px 0}.app-shell{min-height:100vh;display:grid;grid-template-columns:236px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;padding:22px;background:#0f172a;color:#fff}.logo{width:42px;height:42px;display:grid;place-items:center;border-radius:8px;background:#14b8a6;color:#042f2e;font-weight:900}nav{display:grid;gap:8px;margin-top:26px}nav button{min-height:42px;display:flex;align-items:center;gap:10px;border:0;border-radius:8px;background:transparent;color:#cbd5e1;padding:10px;text-align:left}nav button:hover,nav button.active{background:#ffffff1a;color:#fff}.content{padding:24px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:22px}.eyebrow{margin:0 0 4px;color:#0f766e;font-size:12px;font-weight:800;text-transform:uppercase}.topbar h1{margin:0;font-size:28px}.metric-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px;margin-bottom:24px}.metric,.panel,.group-card,.user-card{border:1px solid #dbe4ee;border-radius:8px;background:#fff}.metric{min-height:108px;padding:14px;display:grid;align-content:space-between}.metric span{color:#64748b;font-size:13px}.metric strong{font-size:26px}.page-stack{display:grid;gap:28px}.panel{padding:20px}.panel.quiet{background:#fbfdff}.panel-title{display:flex;align-items:center;gap:9px;margin-bottom:18px}.panel-title h2{margin:0;font-size:19px}.inline-form,.routine-form,.calendar-form,.limits{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end;margin-bottom:18px}.routine-form{grid-template-columns:repeat(5,minmax(0,1fr))}.calendar-form{grid-template-columns:1fr 1fr 1fr 1fr 1fr 1.6fr auto}.routine-settings{grid-column:1 / -1;display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:12px;align-items:end;margin-top:8px;padding-top:18px;border-top:1px solid #edf2f7}.routine-settings h3{grid-column:1 / -1;margin:0;font-size:14px}.field{display:grid;gap:6px}.field span{color:#475569;font-size:12px;font-weight:800}input,select{width:100%;min-height:40px;border:1px solid #cbd5e1;border-radius:8px;padding:9px 10px;background:#fff;color:#111827}.table{display:grid;gap:8px;max-height:360px;overflow:auto}.table-row{display:grid;grid-template-columns:minmax(140px,.9fr) minmax(180px,1.2fr) minmax(120px,.8fr);gap:12px;align-items:center;padding:10px;border:1px solid #edf2f7;border-radius:8px}.table-row span{font-weight:650}.table-row small{color:#64748b}.group-list,.user-list,.routine-list{display:grid;gap:14px}.group-card,.user-card,.routine-card{padding:16px}.group-head,.user-main,.routine-main,.toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px}.group-card h3,.user-card h2,.routine-card h3{margin-bottom:4px}.group-card p,.user-card p,.routine-card p{margin-bottom:0;color:#64748b;font-size:13px}.resource-pills{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}.pill{min-height:32px;border:1px solid #cbd5e1;border-radius:999px;background:#fff;color:#334155;padding:6px 10px;font-size:12px}.pill.active{border-color:#0f766e;background:#ccfbf1;color:#134e4a}.search{width:min(100%,440px);display:flex;align-items:center;gap:8px;border:1px solid #cbd5e1;border-radius:8px;padding:0 10px;background:#fff}.search input{border:0;padding-left:0}.user-actions{display:flex;gap:8px;flex-wrap:wrap}.routine-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.readonly-badge{display:inline-flex;min-height:32px;align-items:center;border-radius:999px;border:1px solid #e2e8f0;padding:5px 10px;color:#64748b;font-size:12px;font-weight:750}.routine-card.readonly{background:#fbfdff}.user-stats,.routine-stats{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:16px 0}.routine-stats{grid-template-columns:repeat(5,minmax(0,1fr))}.user-stats span,.routine-stats span{display:grid;gap:4px;padding:10px;border-radius:8px;background:#f8fafc;color:#64748b;font-size:12px}.user-stats strong,.routine-stats strong{color:#111827;font-size:13px}.user-columns{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.mini-list{display:grid;gap:8px;align-content:start;padding:12px;border:1px solid #edf2f7;border-radius:8px}.mini-list h3{margin:0;font-size:13px}.mini-list span,.mini-list small{color:#64748b;font-size:12px}.audit-table{display:grid;gap:8px}.audit-row{display:grid;grid-template-columns:minmax(190px,1fr) minmax(220px,1fr) minmax(100px,.6fr) minmax(150px,.8fr);gap:12px;align-items:center;padding:12px;border:1px solid #edf2f7;border-radius:8px}.audit-row span,.audit-row small{color:#64748b}.log-box{display:grid;gap:8px;max-height:420px;overflow:auto;padding:12px;border:1px solid #edf2f7;border-radius:8px;background:#0f172a}.log-box code{color:#cbd5e1}.log-box small{color:#94a3b8}.calendar-toolbar{display:flex;align-items:start;justify-content:space-between;gap:16px;margin-bottom:16px}.calendar-actions{display:flex;align-items:end;gap:10px}.year-picker{display:grid;gap:6px;min-width:120px}.year-picker span{color:#475569;font-size:12px;font-weight:800}.year-calendar{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.month-card{min-width:0;padding:12px;border:1px solid #edf2f7;border-radius:8px;background:#fbfdff}.month-card h3{margin:0 0 10px;font-size:14px}.weekday-row,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.weekday-row{margin-bottom:6px}.weekday-row span{color:#64748b;font-size:11px;font-weight:800;text-align:center}.day-cell{aspect-ratio:1;min-width:0;display:grid;place-items:center;border-radius:6px;border:1px solid transparent;font-size:12px;font-weight:800;cursor:default}.day-cell.open{background:#ecfdf5;color:#047857}.day-cell.closed{background:#fee2e2;color:#991b1b}.day-cell.partial{background:#fef3c7;color:#92400e}.day-cell.override{background:#dbeafe;border-color:#60a5fa;color:#1d4ed8}.day-cell.missing{background:#f8fafc;color:#94a3b8}.day-cell.empty{background:transparent}.day-cell:hover{outline:2px solid #0f172a;outline-offset:1px}.override-table{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.override-table small{color:#64748b;font-size:13px}.override-pill{min-height:30px;border:1px solid #fbbf24;border-radius:999px;background:#fffbeb;color:#92400e;padding:5px 10px;font-size:12px;font-weight:800}@media(max-width:1180px){.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.inline-form,.routine-form,.calendar-form,.limits,.user-stats,.routine-stats,.user-columns,.routine-settings,.year-calendar,.setup-grid,.two-col{grid-template-columns:1fr}}@media(max-width:760px){.app-shell{grid-template-columns:1fr}.sidebar{position:static;height:auto}nav{grid-template-columns:repeat(3,minmax(0,1fr))}.content{padding:14px}.metric-grid{grid-template-columns:1fr}.topbar,.group-head,.user-main,.routine-main,.toolbar,.calendar-toolbar,.calendar-actions{align-items:stretch;flex-direction:column}.table-row,.audit-row{grid-template-columns:1fr}}
