:root{--c-bg:#f4f6f7;--c-surface:#fff;--c-text:#1b2428;--c-muted:#5b6b72;--c-border:#d5dde0;--c-primary:#0f766e;--c-primary-dark:#0b5a54;--c-primary-soft:#e3f4f2;--c-success:#146c43;--c-success-soft:#e2f4ea;--c-error:#b42318;--c-error-soft:#fdecea;--c-warning:#9a5b00;--c-warning-soft:#fff4dc;--c-info-soft:#e8f0fb;--radius:12px;--tap:52px;--tabbar-h:64px;--safe-bottom:env(safe-area-inset-bottom,0px);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--c-text);background:var(--c-bg);-webkit-text-size-adjust:100%;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:17px;line-height:1.45}*,:before,:after{box-sizing:border-box}body{background:var(--c-bg);min-height:100dvh;margin:0}h1,h2,p{margin:0 0 .6em}button,input,select{font:inherit;color:inherit}code{background:#eef1f2;border-radius:4px;padding:0 .3em;font-size:.92em}[hidden]{display:none!important}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app{min-height:100dvh;padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom))}.app-header{z-index:20;background:var(--c-primary);color:#fff;padding-top:env(safe-area-inset-top,0px);position:sticky;top:0}.app-header-inner{align-items:center;gap:.6rem;max-width:760px;margin:0 auto;padding:.65rem 1rem;display:flex}.app-title{font-size:1.05rem;font-weight:700}.demo-banner{background:var(--c-warning-soft);color:#5c3700;text-align:center;border-bottom:2px solid #f0b429;padding:.45rem 1rem;font-size:.85rem}.app-main{max-width:760px;margin:0 auto}.screen{padding:1rem 1rem 1.5rem}.screen-title{margin-bottom:.75rem;font-size:1.45rem}.section-title{margin:1.25rem 0 .5rem;font-size:1.1rem}.count{color:var(--c-muted);font-weight:400}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);margin-bottom:1rem;padding:1rem}.card-title{font-size:1.1rem}.card-error{border-color:var(--c-error)}.hint{color:var(--c-muted);font-size:.88rem}.empty{color:var(--c-muted);font-style:italic}.tabbar{z-index:30;background:var(--c-surface);border-top:1px solid var(--c-border);padding-bottom:var(--safe-bottom);grid-template-columns:repeat(4,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tab{min-height:var(--tabbar-h);color:var(--c-muted);cursor:pointer;background:0 0;border:0;flex-direction:column;justify-content:center;align-items:center;gap:2px;font-size:.78rem;display:flex}.tab-icon{font-size:1.3rem;line-height:1}.tab-active{color:var(--c-primary);box-shadow:inset 0 3px 0 var(--c-primary);font-weight:700}@media (width>=900px){.app{padding-bottom:0}.tabbar{border-top:0;border-bottom:1px solid var(--c-border);justify-content:center;gap:.5rem;padding:0;display:flex;position:sticky;top:0;bottom:auto}.tab{flex-direction:row;gap:.4rem;min-height:48px;padding:0 1.25rem;font-size:.95rem}.tab-active{box-shadow:inset 0 -3px 0 var(--c-primary)}.app-header{position:static}}.btn{border:1px solid var(--c-border);background:var(--c-surface);cursor:pointer;touch-action:manipulation;border-radius:10px;min-height:44px;padding:.5rem 1rem;font-weight:600}.btn:disabled{opacity:.45;cursor:not-allowed}.btn:focus-visible,.segment:focus-visible,.tab:focus-visible,.input:focus-visible,.btn-link:focus-visible,.roster-row:focus-within{outline-offset:2px;outline:3px solid #5fb3ab}.btn-primary{background:var(--c-primary);border-color:var(--c-primary);color:#fff}.btn-primary:not(:disabled):active{background:var(--c-primary-dark)}.btn-secondary{background:var(--c-primary-soft);color:var(--c-primary-dark);border-color:#b6dfda}.btn-warning{color:var(--c-warning);background:var(--c-warning-soft);border-color:#e9c98a}.btn-small{min-height:40px;padding:.3rem .7rem;font-size:.88rem}.btn-icon{min-width:var(--tap);min-height:var(--tap);padding:0;font-size:1.5rem;line-height:1}.btn-icon.btn-small{min-width:40px;min-height:40px;font-size:1.1rem}.btn-block{width:100%;min-height:var(--tap);font-size:1.05rem;display:block}.btn-link{color:var(--c-primary-dark);cursor:pointer;text-align:left;background:0 0;border:0;padding:.4rem 0;font-weight:600;text-decoration:underline}.field-label{margin:.75rem 0 .3rem;font-weight:600;display:block}.field-label:first-child{margin-top:0}.input{border:1px solid var(--c-border);background:#fff;border-radius:10px;width:100%;min-height:48px;padding:.5rem .75rem}.inline-form{align-items:center;gap:.5rem;width:100%;display:flex}.inline-form .input{flex:1;min-width:0}.badge{vertical-align:middle;border-radius:999px;margin-left:.4rem;padding:.1rem .45rem;font-size:.72rem;font-weight:700;display:inline-block}.badge-demo{color:#3d2600;background:#f0b429}.badge-muted{color:var(--c-muted);background:#e7ebec}.notice{border:1px solid #0000;border-radius:10px;justify-content:space-between;align-items:flex-start;gap:.5rem;margin:0 0 .75rem;padding:.75rem .9rem;display:flex}.notice p{margin:0}.notice-success{background:var(--c-success-soft);color:var(--c-success);border-color:#9fd6b8}.notice-error{background:var(--c-error-soft);color:var(--c-error);border-color:#f1a9a0;flex-wrap:wrap}.notice-info{background:var(--c-info-soft);border-color:#b9cdea}.notice-close{cursor:pointer;color:inherit;background:0 0;border:0;padding:0 .2rem;font-size:1.4rem;line-height:1}.loading{color:var(--c-muted);align-items:center;gap:.75rem;padding:1.5rem .5rem;display:flex}.spinner{border:3px solid var(--c-border);border-top-color:var(--c-primary);border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}.full-page{place-items:center;min-height:100dvh;padding:1rem;display:grid}.full-page-card{width:100%;max-width:420px}.full-page-card h1{font-size:1.4rem}.full-page-card .btn-block{margin-top:1rem}.date-row{align-items:center;gap:.5rem;display:flex}.date-field{flex-direction:column;flex:1;align-items:center;gap:.3rem;min-width:0;display:flex}.date-long{text-align:center;font-size:1.05rem;font-weight:700}.date-field input{border:1px solid var(--c-border);background:#fff;border-radius:10px;max-width:100%;min-height:44px;padding:.3rem .6rem}.segmented{grid-template-columns:repeat(3,1fr);gap:.5rem;margin-top:1rem;display:grid}.segment{border:2px solid var(--c-border);cursor:pointer;touch-action:manipulation;background:#fff;border-radius:10px;min-height:56px;font-size:1.05rem;font-weight:700}.segment-active{border-color:var(--c-primary);background:var(--c-primary);color:#fff}.segment-done{color:var(--c-success)}.segment-active .segment-done{color:#c9f2dc}.round-status{background:var(--c-info-soft);border-radius:10px;padding:.6rem .8rem;font-size:.92rem}.round-status-existing{background:var(--c-warning-soft)}.roster-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;margin:.25rem 0 .6rem;display:flex}.roster-count{font-size:1.05rem}.roster-actions{gap:.4rem;display:flex}.roster{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.roster-row{background:var(--c-surface);border:2px solid var(--c-border);border-radius:var(--radius);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;align-items:center;gap:.9rem;min-height:64px;padding:.5rem .9rem;display:flex}.roster-row-present{border-color:var(--c-success);background:var(--c-success-soft)}.big-check{appearance:none;cursor:pointer;background:#fff;border:2px solid #8a9aa1;border-radius:8px;flex:none;place-content:center;width:36px;height:36px;margin:0;display:grid}.big-check:after{content:"";opacity:0;border:4px solid #fff;border-width:0 4px 4px 0;width:10px;height:18px;transform:rotate(45deg)translate(-1px,-2px)}.big-check:checked{background:var(--c-success);border-color:var(--c-success)}.big-check:checked:after{opacity:1}.big-check:focus-visible{outline-offset:2px;outline:3px solid #5fb3ab}.roster-name{overflow-wrap:anywhere;flex:1;font-size:1.08rem;font-weight:600}.roster-state{color:var(--c-muted);font-size:.85rem}.roster-row-present .roster-state{color:var(--c-success);font-weight:700}.save-bar{bottom:calc(var(--tabbar-h) + var(--safe-bottom));background:linear-gradient(to top, var(--c-bg) 80%, #f4f6f700);margin:1rem -1rem 0;padding:.75rem 1rem;position:sticky}@media (width>=900px){.save-bar{bottom:0}}.unsaved{color:var(--c-warning);text-align:center;margin:0 0 .4rem;font-size:.88rem;font-weight:600}.patient-list{gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.patient-item{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.6rem .75rem;display:flex}.patient-item-archived{color:var(--c-muted);background:#f7f8f8}.patient-name{overflow-wrap:anywhere;font-weight:600}.patient-actions{flex-wrap:wrap;gap:.35rem;display:flex}.archived{margin-top:1.25rem}.archived summary{cursor:pointer;min-height:44px;padding:.6rem 0;font-weight:700}.month-row{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.month-label{font-size:1.15rem;font-weight:700}.print-button{margin-top:1rem}.totals{grid-template-columns:repeat(2,1fr);gap:.5rem;margin-bottom:1rem;display:grid}@media (width>=560px){.totals{grid-template-columns:repeat(4,1fr)}}.total-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);flex-direction:column;padding:.6rem .75rem;display:flex}.total-card-main{background:var(--c-primary-soft);border-color:#b6dfda}.total-label{color:var(--c-muted);font-size:.85rem;font-weight:600}.total-value{font-size:1.6rem;font-weight:800}.total-sub{color:var(--c-muted);font-size:.78rem}.table-wrap{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);overflow-x:auto}.history-table{border-collapse:collapse;width:100%;font-size:.92rem}.history-table th,.history-table td{text-align:center;border-bottom:1px solid #edf0f1;padding:.45rem .5rem}.history-table th[scope=row]{text-align:left;white-space:nowrap;font-weight:600}.history-table thead th{background:#f0f3f4;position:sticky;top:0}.history-table tfoot th,.history-table tfoot td{background:#f0f3f4;border-bottom:0;font-weight:800}.summary-table th[scope=row]{white-space:normal}.row-weekend th[scope=row]{color:var(--c-muted)}.cell-present{color:var(--c-success);font-weight:700}.cell-absent{color:var(--c-error)}.cell-none{color:#a3b0b5}.cell-label{margin-left:.25rem;font-size:.8rem}@media (width<=420px){.cell-label{display:none}}.cell-total{font-weight:800}.date-long:first-letter,.month-label:first-letter{text-transform:uppercase}.syncbar{text-align:center;color:var(--c-text);background:var(--c-info-soft);flex-wrap:wrap;justify-content:center;align-items:center;gap:.25rem .75rem;padding:.4rem 1rem;font-size:.85rem;display:flex}.syncbar-ok{background:var(--c-success-soft);color:var(--c-success)}.syncbar-warn{background:var(--c-warning-soft);color:#5c3700}.syncbar-error{background:var(--c-error-soft);color:var(--c-error)}.syncbar-btn{color:inherit;cursor:pointer;background:#fff;border:1px solid;border-radius:999px;min-height:32px;padding:.15rem .75rem;font-weight:700}.notice-warn{background:var(--c-warning-soft);color:#5c3700;border-color:#e9c98a;flex-wrap:wrap}.legacy-notice{max-width:728px;margin:.75rem auto 0}.round-status{background:var(--c-info-soft);border-radius:10px;margin-bottom:.75rem;padding:.6rem .8rem;font-size:.92rem}.round-status p{margin:0}.round-status-draft{background:var(--c-warning-soft)}.round-status-completed{background:var(--c-success-soft)}.round-sync{font-size:.85rem;margin-top:.3rem!important}.segment-mark-completed{color:var(--c-success)}.segment-mark-draft{color:var(--c-warning)}.segment-active .segment-mark{color:#fff}.unfinished{flex-wrap:wrap;align-items:center;gap:.4rem;margin:0 0 1rem;display:flex}.unfinished-title{font-size:.9rem;font-weight:700}.chip{background:var(--c-warning-soft);color:#5c3700;cursor:pointer;border:1px solid #e9c98a;border-radius:999px;min-height:36px;padding:.3rem .75rem;font-size:.85rem}.chip-pending{background:var(--c-info-soft);color:var(--c-text);border-color:#b9cdea}.chip-attention{background:var(--c-error-soft);color:var(--c-error);border-color:#f1a9a0}.chip-current{outline:2px solid var(--c-primary)}.sync-tag{text-transform:uppercase;letter-spacing:.02em;margin-top:.15rem;font-size:.72rem;font-weight:700;display:block}.sync-tag-pending{color:var(--c-warning)}.sync-tag-syncing{color:var(--c-primary)}.sync-tag-conflict,.sync-tag-error{color:var(--c-error)}.roster-state{text-align:right}.roster-row-conflict,.roster-row-error{border-color:var(--c-error)}.conflict-box{background:var(--c-warning-soft);border:1px solid #e9c98a;border-radius:10px;margin:.35rem 0 .25rem;padding:.6rem .8rem;font-size:.9rem}.conflict-box p,.conflict-box ul{margin:0 0 .5rem}.conflict-box-error{background:var(--c-error-soft);border-color:#f1a9a0}.conflict-actions{flex-wrap:wrap;gap:.4rem;display:flex}.cell-draft{color:var(--c-warning)}.save-bar .notice{margin-bottom:.5rem}:root{--pr-font:"Helvetica Neue", Arial, sans-serif;--pr-font-size:10.5pt;--pr-title-size:15pt;--pr-border:#555;--pr-header-bg:#e8e8e8;--pr-absent-color:#8a1c1c;--pr-page-margin:12mm}.print-only{display:none}@media print{@page{size:A4 portrait;margin:var(--pr-page-margin)}.screen-only,.app-header,.tabbar,.save-bar{display:none!important}.print-only{display:block}html,body,.app,.app-main,.screen{color:#000!important;background:#fff!important;max-width:none!important;margin:0!important;padding:0!important}.pr-report{font-family:var(--pr-font);font-size:var(--pr-font-size);line-height:1.25}.pr-header{margin-bottom:4mm}.pr-app{letter-spacing:.04em;text-transform:uppercase;color:#444;margin:0 0 1mm;font-size:9pt}.pr-draft{color:#666;font-style:italic}.pr-unfinished{margin:2mm 0 0;font-size:9.5pt}.pr-title{font-size:var(--pr-title-size);margin:0 0 1mm}.pr-subtitle{margin:0}.pr-table{border-collapse:collapse;width:100%}.pr-table th,.pr-table td{border:.5pt solid var(--pr-border);text-align:left;padding:.9mm 2mm}.pr-table thead th,.pr-table tfoot th{background:var(--pr-header-bg);-webkit-print-color-adjust:exact;print-color-adjust:exact}.pr-table tr{break-inside:avoid}.pr-cell,.pr-num{text-align:center!important}.pr-absent{color:var(--pr-absent-color)}.pr-muted{color:#666;font-size:.9em}.pr-total{margin:3mm 0 0}.pr-footer{color:#555;margin-top:5mm;font-size:8.5pt}}
