:root{--bg:#f3f6fa;--card:#fff;--text:#172033;--muted:#718096;--line:#dfe5ec;--accent:#2563eb;--soft:#eef4ff;--danger:#b42318;--dangerbg:#fff0ee;--ok:#16794c;--okbg:#ecfdf3;--warn:#8a5b00;--warnbg:#fff8e7;--alert:#9a3412;--alertbg:#fff7ed}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"SF Pro Display","Segoe UI",sans-serif}button,input,select{font:inherit}button{cursor:pointer}.app{max-width:1400px;margin:auto;padding:env(safe-area-inset-top) 8px 32px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:14px 4px 10px}.eyebrow{font-size:10px;font-weight:800;letter-spacing:.12em;color:#8793a5}.topbar h1{margin:2px 0 0;font-size:23px}.saveState{font-size:11px;color:var(--ok);background:var(--okbg);padding:7px 10px;border-radius:999px}.tabs{display:flex;gap:7px;overflow-x:auto;padding:2px 0 10px;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{white-space:nowrap;border:1px solid var(--line);background:#fff;color:#68758a;padding:10px 12px;border-radius:12px;font-weight:750}.tab.active{background:var(--text);color:#fff;border-color:var(--text)}.tabBadge{display:inline-block;background:#f97316;color:#fff;border-radius:999px;padding:1px 6px;font-size:9px;margin-left:3px}.hidden{display:none!important}.view{display:none}.view.active{display:block}.weekbar,.card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:0 3px 18px #1720330b}.weekbar{display:flex;align-items:center;justify-content:space-between;padding:12px;margin-bottom:10px}.weekcenter{text-align:center;display:flex;flex-direction:column;gap:2px}.weekcenter strong{font-size:18px}.weekcenter span{font-size:13px;color:var(--muted)}.round{width:46px;height:46px;border:0;border-radius:14px;background:#edf2f8;color:var(--text);font-size:34px;line-height:1}.quickrow{display:flex;gap:8px;align-items:center;margin-bottom:10px}.secondary{border:1px solid var(--line);background:#fff;border-radius:11px;padding:9px 12px;font-weight:700}.stats{display:flex;gap:7px;overflow:auto}.stat{white-space:nowrap;background:#fff;border:1px solid var(--line);border-radius:11px;padding:8px 10px;font-size:11px;color:var(--muted)}.stat b{color:var(--text);font-size:15px}.schedule-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px}.weekgrid{display:grid;grid-template-columns:repeat(4,minmax(210px,1fr));gap:8px;min-width:870px}.daycol{background:#fff;border:1px solid var(--line);border-radius:16px;padding:8px}.dayhead{position:sticky;top:0;background:#fff;z-index:2;border-bottom:2px solid var(--line);padding:7px 5px 9px;display:flex;justify-content:space-between;align-items:center}.dayhead.today{border-bottom-color:var(--accent)}.dayname{font-size:16px;font-weight:850}.daydate{font-size:10px;color:var(--muted)}.block{border:1px solid var(--line);border-radius:12px;margin-top:7px;padding:8px;background:#fafbfd}.blockhead{display:flex;justify-content:space-between;font-size:11px;font-weight:850}.capacity{color:var(--muted)}.fullblock{border-color:#f2c7c3;background:#fff9f8}.fullblock .capacity{color:var(--danger)}.slot{margin-top:6px;border-top:1px solid #e9edf2;padding-top:5px}.slotline{display:flex;justify-content:space-between;font-size:10px;color:var(--muted);margin-bottom:3px}.person{width:100%;background:#fff;border:1px solid #e6eaf0;border-radius:8px;padding:6px 7px;margin-top:3px;font-size:11px;font-weight:750;display:flex;align-items:center;gap:6px;text-align:left}.person.moved{border-style:dashed}.person .dot{width:6px;height:6px;border-radius:50%;background:#60a5fa;flex:0 0 6px}.free{color:#a0aabd;font-size:10px;padding:6px 0}.hint{font-size:11px;color:var(--muted);padding:10px 3px}.card{padding:16px;max-width:980px;margin:auto}.sectionHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.sectionHead h2{margin:3px 0 0;font-size:20px}label{display:block;font-size:12px;font-weight:750;color:#536176;margin-bottom:10px}input,select{display:block;width:100%;margin-top:5px;border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:#fff;color:var(--text);outline:none}input:focus,select:focus{border-color:var(--accent);box-shadow:0 0 0 3px #2563eb18}.two{display:grid;grid-template-columns:1fr 1fr;gap:9px}.dayChoices{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:6px 0 12px}.dayChoice input{display:none}.dayChoice span{display:block;text-align:center;padding:10px 4px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:11px;font-weight:800}.dayChoice input:checked+span{background:var(--soft);border-color:#93b5ff;color:#1d4ed8}.primary{border:0;background:var(--accent);color:#fff;border-radius:11px;padding:12px 14px;font-weight:800}.full{width:100%}.result{margin-top:12px;border-top:1px solid var(--line);padding-top:12px}.notice{padding:11px;border-radius:11px;font-size:12px;margin-top:8px}.notice.ok{background:var(--okbg);color:var(--ok)}.notice.warn{background:var(--warnbg);color:var(--warn)}.notice.danger{background:var(--dangerbg);color:var(--danger)}.notice.alert{background:var(--alertbg);color:var(--alert)}.option{border:1px solid var(--line);border-radius:12px;padding:10px;margin-top:7px;background:#fff}.option b{font-size:13px}.option small{display:block;color:var(--muted);margin-top:3px}.actions{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap}.small{padding:8px 10px;border-radius:9px;font-size:11px;font-weight:800}.tiny{padding:6px 8px;border-radius:8px;font-size:10px;font-weight:800}.patientRow{border:1px solid var(--line);border-radius:13px;padding:11px;margin-top:7px;display:flex;gap:9px;align-items:center}.patientMain{min-width:0;flex:1}.patientName{font-weight:850}.patientMeta{font-size:11px;color:var(--muted);margin-top:3px;line-height:1.45}.badge{font-size:10px;font-weight:800;background:#eef2f7;padding:5px 7px;border-radius:999px;color:#566276;white-space:nowrap}.dangerBtn{border:0;background:var(--dangerbg);color:var(--danger);border-radius:9px;padding:8px 10px;font-weight:800}.search{margin-bottom:5px}.empty{padding:25px 8px;text-align:center;color:var(--muted);font-size:13px}.modal{position:fixed;inset:0;background:#0b122099;display:flex;align-items:flex-end;justify-content:center;padding:12px;z-index:20}.modal.hidden{display:none}.modalBox{background:#fff;width:min(760px,100%);max-height:90vh;overflow:auto;border-radius:20px;padding:18px;position:relative}.close{position:absolute;right:12px;top:10px;border:0;background:#eef2f6;border-radius:10px;width:36px;height:36px;font-size:23px}.detail h3{margin:0 40px 3px 0;font-size:20px}.detail p{margin:6px 0;font-size:12px;color:var(--muted)}.sessionList{display:grid;gap:6px;margin-top:10px}.session{font-size:10px;background:#f7f9fb;border:1px solid var(--line);border-radius:9px;padding:7px}.sessionActions{display:flex;gap:5px;flex-wrap:wrap;margin-top:5px}.checkrow{display:flex;align-items:center;gap:8px;margin-top:10px;font-size:12px}.checkrow input{width:auto;margin:0}.phone{color:var(--accent);text-decoration:none;font-weight:750}.alertRow{border-color:#fdba74;background:#fffaf5}.alertCard{border:1px solid #fdba74;background:#fffaf5;border-radius:13px;padding:12px;margin-top:8px}.alertCard p{font-size:12px;color:#6b7280;margin:6px 0}.muted{color:var(--muted)}@media(max-width:700px){.app{padding-left:6px;padding-right:6px}.topbar h1{font-size:20px}.card{padding:12px}.weekgrid{grid-template-columns:repeat(4,210px);min-width:870px}.two{grid-template-columns:1fr}.dayChoices{grid-template-columns:repeat(4,1fr)}.patientRow{align-items:flex-start}.patientRow .actions{flex-direction:column}.sessionActions{display:grid;grid-template-columns:1fr 1fr}.sessionActions .tiny:last-child{grid-column:1/-1}}
.break{margin:9px -8px;border-top:1px dashed #cfd6df;border-bottom:1px dashed #cfd6df;background:#f1f4f7;padding:8px 6px;display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#7a8595;letter-spacing:.03em}.break b{font-size:9px;letter-spacing:.12em}@media(max-width:700px){.weekgrid{grid-template-columns:repeat(5,210px);min-width:1090px}.dayChoices{grid-template-columns:repeat(5,1fr)}}
.break{margin:9px -8px;border-top:1px dashed #cfd6df;border-bottom:1px dashed #cfd6df;background:#f1f4f7;padding:8px 6px;display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#7a8595;letter-spacing:.03em}.break b{font-size:9px;letter-spacing:.12em}@media(max-width:700px){.weekgrid{grid-template-columns:repeat(5,210px);min-width:1090px}.dayChoices{grid-template-columns:repeat(5,1fr)}}
.progressCard{background:#f5f7fb;border:1px solid #e2e6ef;border-radius:14px;padding:12px 14px;margin:12px 0}.progressTop{display:flex;justify-content:space-between;gap:12px;align-items:center}.progressTop strong{font-size:18px}.progressBar{height:8px;background:#e1e5ec;border-radius:99px;overflow:hidden;margin:9px 0 6px}.progressBar span{display:block;height:100%;background:#172033;border-radius:99px}.okBadge{margin-left:6px}.completedSession{opacity:.75}.doneLabel{font-weight:700}.primary.tiny{font-size:12px}
.availabilityChoices{display:grid;gap:9px;margin:-2px 0 12px}.availDay,.editDay{border:1px solid var(--line);border-radius:12px;padding:9px;background:#fafbfd}.availHead{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-bottom:7px}.slotChoices{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.slotChoice{margin:0}.slotChoice input{display:none}.slotChoice span{display:block;text-align:center;padding:8px 4px;border:1px solid var(--line);border-radius:9px;background:#fff;font-size:10px;font-weight:750;color:#5c687a}.slotChoice input:checked+span{background:var(--soft);border-color:#93b5ff;color:#1d4ed8}.editAvail{display:grid;gap:8px}.editDay>.dayChoice{margin-bottom:7px}.editSlots{padding-left:2px}.availabilityNote{font-size:10px;color:var(--muted);margin:-4px 0 9px}
@media(max-width:700px){.slotChoices{grid-template-columns:repeat(2,1fr)}.availDay{padding:8px}.slotChoice span{padding:9px 3px;font-size:10px}}

.headerTools{display:flex;align-items:center;gap:7px}.integrity{white-space:nowrap;font-size:10px;font-weight:800;padding:7px 9px;border-radius:999px;margin-left:auto}.integrity.ok{background:#ecfdf3;color:#16794c}.integrity.bad{background:#fff0ee;color:#b42318}.backupRow{display:flex;justify-content:flex-end;margin-top:10px}.search{margin-bottom:5px}
@media(min-width:701px){.weekgrid{grid-template-columns:repeat(5,minmax(180px,1fr));min-width:0}}
@media(max-width:700px){.topbar{gap:7px}.headerTools{flex-direction:column;align-items:flex-end}.integrity{margin-left:0}.weekgrid{grid-template-columns:repeat(5,210px);min-width:1090px}}
