:root{--bg:#f3f6f8;--paper:#fff;--ink:#233c4d;--muted:#657b89;--line:#dce6ed;--blue:#235f83;--tint:#eaf3f9;--green:#316658;--shadow:0 3px 14px #1a3e5610;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.5}*{box-sizing:border-box}body{margin:0}h1,h2,h3,p{margin:0}h1{font-size:clamp(25px,3vw,34px);letter-spacing:-.7px;line-height:1.25}h2{font-size:18px;line-height:1.4}small{font-size:12px}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font:inherit}button,.button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:9px 14px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);cursor:pointer;font-weight:600;font-size:14px;text-decoration:none;line-height:1.4}button:hover,.button:hover{background:var(--tint);text-decoration:none}button.primary,.button.primary{background:var(--blue);border-color:var(--blue);color:white}button.primary:hover,.button.primary:hover{background:#16496a}button.quiet{background:transparent;border-color:transparent;color:var(--muted);padding:6px}button.danger,.danger{color:#a53939}input:not([type=checkbox]),select,textarea{display:block;width:100%;min-height:43px;padding:10px 12px;border:1px solid #c5d5df;border-radius:7px;color:var(--ink);background:white}textarea{min-height:80px;resize:vertical}input[type=checkbox]{accent-color:var(--blue);width:18px;height:18px;flex-shrink:0}label{display:grid;gap:6px;font-size:14px;font-weight:600}form>label,form>.form-grid,form>.picker{margin:16px 0}input:focus,select:focus,textarea:focus{outline:2px solid #82b3d1;outline-offset:2px}:focus-visible{outline:3px solid #82b3d1;outline-offset:3px}.muted{color:var(--muted)}.eyebrow{font-size:11px;font-weight:750;letter-spacing:1.6px;color:var(--blue);margin-bottom:9px}.card{background:var(--paper);border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);overflow:hidden}.brand-mark{display:grid;place-items:center;width:43px;height:43px;background:var(--blue);color:white;border-radius:12px;font-size:23px;font-weight:700}.app-header{height:92px;padding:0 max(24px,calc((100vw - 1380px)/2));display:flex;align-items:center;justify-content:space-between;background:var(--paper);border-bottom:1px solid var(--line);gap:20px}.brand{display:flex;gap:13px;align-items:center;font-size:20px;font-weight:700;color:var(--ink)}.brand:hover{text-decoration:none}.brand small{display:block;font-weight:400;font-size:12px;color:var(--muted)}.header-actions,.actions{display:flex;align-items:center;gap:13px;flex-wrap:wrap}.container{max-width:1428px;margin:auto;padding:26px 24px 0}.tabs{display:flex;gap:7px;border-bottom:1px solid var(--line);padding-bottom:15px;overflow-x:auto}.tabs a{white-space:nowrap;padding:10px 15px;font-size:14px;font-weight:600;border-radius:7px;color:var(--muted)}.tabs a.selected{background:var(--tint);color:var(--blue)}.count{background:#e9f0f5;color:var(--blue);padding:3px 7px;border-radius:5px;font-size:11px;font-weight:600;white-space:nowrap}.tabs .count{margin-left:5px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:30px 0 23px}.page-heading p.muted{margin-top:8px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:20px}.visit-select{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.visit-select select{width:auto;max-width:440px}.layout{display:grid;grid-template-columns:minmax(0,1fr) 285px;gap:22px;align-items:start}.week{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.day{min-width:0}.section-heading{display:flex;gap:14px;align-items:center;justify-content:space-between;padding:18px 20px;border-bottom:1px solid var(--line)}.section-heading h2{font-size:17px}.add-day{display:grid;place-items:center;width:32px;height:32px;background:var(--tint);border-radius:7px;font-size:23px;line-height:1}.appointment{display:flex;flex-direction:column;align-items:flex-start;gap:7px;padding:16px 18px;margin:14px;border:1px solid var(--line);border-radius:9px;color:var(--ink);border-left:3px solid #5e9fc5;overflow-wrap:anywhere}.appointment:hover{background:#f6fafc;text-decoration:none}.appointment strong{font-size:16px}.appointment small{color:var(--muted);white-space:normal}.time{font-size:12px;font-weight:700;color:var(--muted);font-variant-numeric:tabular-nums}.host{font-size:11px;font-weight:600;color:var(--blue);background:var(--tint);border-radius:5px;padding:3px 7px;display:inline-block}.host-wife{background:#f1edf8;color:#6b5685}.host-both{background:#e9f4ee;color:#3c6b52}.available{border-style:dashed;border-left-width:1px;background:#fafcfd}.available strong{font-size:14px;color:var(--muted)}.empty{padding:26px 20px;color:var(--muted);font-size:14px;line-height:1.8}.empty-state{padding:45px;text-align:center}.empty-state p{margin:10px 0 24px;color:var(--muted)}.empty-state .button{margin:5px}.sidebar-intro{padding:16px 18px 0;font-size:12px}.wait-person{padding:18px;border-bottom:1px solid var(--line)}.wait-person strong{display:block;font-size:14px}.wait-person small{display:block;color:var(--muted);margin-top:4px}.wait-person p{font-size:12px;margin:8px 0 12px;overflow-wrap:anywhere}.button.small{min-height:32px;padding:6px 10px;font-size:12px}.sidebar-footer{padding:18px;font-size:13px}.visit-note{grid-column:1/-1;padding:20px}.visit-note p{margin-top:9px;font-size:14px;overflow-wrap:anywhere}.editor{padding:0 24px 24px;margin:22px 0}.editor>.section-heading{padding:20px 0}.editor>h2{padding-top:24px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}.picker{border:1px solid var(--line);border-radius:9px;padding:15px;min-width:0}.picker legend{font-size:14px;font-weight:700}.picker legend small{font-weight:400;color:var(--muted)}.picker-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));max-height:260px;overflow:auto;gap:3px;padding-top:10px}.check{display:flex;align-items:center;gap:10px;padding:9px;font-size:14px;cursor:pointer;font-weight:500}.check small{display:block;color:var(--muted);font-weight:400}.delete-form{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.alert{padding:14px 18px;background:var(--tint);border:1px solid #c7deed;border-radius:8px;margin:18px 0;font-size:14px}.alert.success{background:#edf6f0;border-color:#c6dfcf;color:#2d6042}.alert.error{background:#fff1ef;border-color:#efc5bf;color:#95372c}.table-tools{display:flex;padding:18px;gap:20px;align-items:center;justify-content:space-between}.table-tools input[type=search]{max-width:340px}.inline{display:flex;align-items:center;white-space:nowrap;font-size:13px}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:14px}th{padding:14px 18px;background:#edf3f7;color:var(--blue);font-weight:600}td{padding:16px 18px;border-bottom:1px solid var(--line)}td small{display:block;color:var(--muted);margin-top:5px;overflow-wrap:anywhere}td .actions{flex-wrap:nowrap;font-size:13px}.person-history{margin:20px 0;padding:24px}.person-history>p{margin:5px 0 15px}.history-item{display:flex;flex-wrap:wrap;gap:12px;padding:16px 0;border-top:1px solid var(--line)}.history-item small{width:100%;color:var(--muted)}.wait-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,340px),1fr));gap:18px}.wait-card{padding:0 20px 20px}.wait-card>.section-heading{padding:18px 0;align-items:flex-start;flex-wrap:wrap}.wait-card>p{margin:14px 0;overflow-wrap:anywhere}.wait-card .actions{margin-top:18px}.history-note{display:block;color:var(--muted)}.archive{padding:24px;display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line)}.archive p{margin-top:7px;font-size:13px}.app-footer{padding:32px 0;color:#80939e;font-size:11px}.login-shell{min-height:100vh;display:grid;place-items:center;padding:24px}.login{width:100%;max-width:440px;padding:36px}.login .brand-mark{margin-bottom:25px}.login .muted{margin:12px 0}.login small{display:block;text-align:center;margin-top:22px}.login form{margin-top:25px}.full{width:100%}.print-sheet{max-width:1000px;margin:25px auto;background:white;padding:35px;border:1px solid var(--line)}.print-sheet>p{margin:10px 0 24px}.print-sheet>h2{margin-top:24px}.print-toolbar{margin:24px 0}.print-table{margin-top:25px}.print-day th{background:#e6eef3}.print-footer{font-size:11px;color:var(--muted)}[hidden]{display:none!important}@media(min-width:1650px){.week{grid-template-columns:repeat(4,minmax(0,1fr))}.container{max-width:1760px}.app-header{padding-left:32px;padding-right:32px}}@media(max-width:1000px){.layout{grid-template-columns:1fr}.sidebar{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.sidebar>.section-heading,.sidebar-intro,.sidebar-footer{grid-column:1/-1}}@media(max-width:600px){.app-header{height:78px;padding:0 16px}.brand{font-size:16px;gap:9px}.brand small{font-size:10px}.brand-mark{width:35px;height:35px;font-size:20px}.header-actions{font-size:12px;gap:8px}.container{padding:15px 14px 0}.tabs{gap:0}.tabs a{padding:9px 10px;font-size:12px}.page-heading{align-items:flex-start;flex-direction:column;margin:24px 0 18px}.week,.sidebar{grid-template-columns:1fr}.toolbar{gap:14px}.visit-select{width:100%}.visit-select select{width:100%;max-width:none}.visit-select label{width:100%}.editor{padding:0 16px 20px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.table-tools{flex-wrap:wrap}.archive{align-items:flex-start;flex-direction:column}.login{padding:26px}.print-sheet{padding:15px}.empty-state{padding:30px 20px}}@media print{@page{size:A4 portrait;margin:14mm}body{background:white;color:#111;font-size:11pt}.app-header,.tabs,.app-footer,.print-toolbar,.alert,.editor{display:none!important}.container{padding:0;max-width:none}.print-sheet{padding:0;border:0;max-width:none;margin:0}.print-sheet h1{font-size:24pt}.print-sheet .eyebrow{color:#333}.print-table{font-size:10pt}.print-table th,.print-table td{padding:9px 10px;border:1px solid #ccd3d9;color:#111}.print-table th{background:#edf1f4}thead{display:table-header-group}tr{break-inside:avoid}.print-day{break-after:avoid}.print-table td:first-child{width:23%;white-space:nowrap}.print-table td:nth-child(2){width:25%}a{color:inherit;text-decoration:none}.print-footer{color:#555}}

/* Editable weekly grid */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.schedule-panel .section-heading p{font-size:12px;margin-top:5px}.schedule-table{table-layout:fixed;width:100%;min-width:570px}.schedule-table>thead th{background:#172e3d;color:#fff;text-align:center;font-size:15px;padding:11px 14px;border:1px solid #172e3d}.schedule-table>thead th:first-child{width:155px;text-align:left}.schedule-table .day-band th{background:#dce3e8;border:1px solid #bdcbd4;padding:6px 12px;font-size:12px;color:#354d5c}.day-band span{font-weight:400;margin-left:8px}.schedule-table td,.schedule-table .schedule-time{border:1px solid #bdcbd4;vertical-align:top;padding:10px 12px;background:white}.schedule-table .schedule-time{font-size:13px;color:var(--ink);font-weight:500;line-height:1.7}.schedule-time small{display:block;color:var(--muted);font-weight:400}.cell-form .cell-names{padding:8px 9px;min-height:64px;border:1px solid transparent;border-radius:5px;resize:vertical;line-height:1.5;background:#fafcfd;font-size:14px}.cell-form .cell-names:hover{border-color:#c5d5df}.cell-form .cell-names:focus{background:white}.cell-form>input:not([type=hidden]){margin-top:8px;font-size:13px}.cell-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:8px;font-size:11px}.cell-actions button{min-height:28px;padding:4px 10px;font-size:11px}.cell-actions a{font-size:11px}.cell-note{display:block;font-size:12px;color:var(--muted);margin-top:7px;overflow-wrap:anywhere;white-space:pre-line}.shared-cell{text-align:center}.shared-cell .cell-names{text-align:center}.shared-cell input{text-align:center}.shared-cell .cell-actions{justify-content:center}.empty-cell{display:block;min-height:72px;padding:13px 4px;font-size:12px;color:var(--muted)}.schedule-table .add-row td{padding:9px 12px;background:#f8fafb}.add-row summary{font-size:12px;color:var(--blue);cursor:pointer}.row-form{display:flex;gap:10px;align-items:end;flex-wrap:wrap;padding:10px 0}.row-form>label{margin:0;font-size:12px;flex:1;min-width:100px}.row-form button{font-size:12px}.template-form{padding:16px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}.template-form small{font-size:12px}.is-dirty .cell-names{border-color:#c2a348;background:#fffdf4}.dirty-label{color:#856612;font-size:11px}.schedule-print{min-width:0}.schedule-print td{height:43px;vertical-align:middle}.schedule-print strong{font-weight:500}.schedule-print .shared-cell{font-size:16px;font-weight:600}.schedule-print .shared-cell .cell-note{font-size:15px;color:var(--ink)}
@media(max-width:600px){.schedule-table{min-width:540px}.schedule-table>thead th:first-child{width:125px}.schedule-table td,.schedule-table .schedule-time{padding:8px}.schedule-panel>.section-heading{padding:15px}.schedule-table .cell-names{font-size:13px}.schedule-table .cell-actions{gap:7px}}
@media print{.schedule-table{min-width:0;table-layout:fixed;font-size:10pt}.schedule-table>thead th{background:#111!important;color:#fff!important;print-color-adjust:exact;-webkit-print-color-adjust:exact}.schedule-table>thead th:first-child{width:25%}.schedule-table td,.schedule-table .schedule-time{border:1px solid #333;padding:7px 9px;font-size:10pt}.schedule-table .day-band th{background:#ddd!important;print-color-adjust:exact;-webkit-print-color-adjust:exact;color:#111;padding:4px 9px}.schedule-day{break-inside:auto}.schedule-table tr{break-inside:avoid}.day-band{break-after:avoid}.schedule-print td{height:35px}.schedule-time small,.cell-note{color:#333;font-size:9pt}.schedule-print .shared-cell .cell-note{color:#111;font-size:12pt}.schedule-table thead{display:table-header-group}}
