:root{--bg-page:#f4f6f8;--bg-surface:#fff;--bg-subtle:#eef1f5;--bg-inset:#f8fafb;--bg-canvas:#21262d;--border:#d8dee6;--border-strong:#b9c2cd;--text:#1a2531;--text-muted:#5a6875;--text-faint:#8b95a1;--text-inverse:#fff;--accent:#1e5f8f;--accent-hover:#17496e;--accent-soft:#e7eff6;--status-good:#1a7f5a;--status-good-soft:#e6f3ed;--status-warn:#b8791f;--status-warn-soft:#fbf2e2;--status-bad:#b5453a;--status-bad-soft:#fbeceb;--status-neutral:#8b95a1;--status-neutral-soft:#f0f2f5;--text-on-canvas:#e7ebef;--overlay-pill:#1a2531d1;--scrim:#1a25316b;--shadow-sm:0 1px 2px #1a25310f;--shadow-md:0 2px 8px #1a253114;--shadow-lg:0 8px 28px #1a253124;--radius:6px;--radius-lg:10px;--font:"Inter", "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Malgun Gothic", sans-serif;--font-mono:"SF Mono", "Consolas", "D2Coding", monospace}*{box-sizing:border-box}[hidden],.hidden{display:none!important}html,body{margin:0;padding:0}body{font-family:var(--font);background:var(--bg-page);color:var(--text);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.55}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:600}button{font-family:inherit;font-size:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:inherit}.btn{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-surface);color:var(--text);justify-content:center;align-items:center;gap:6px;padding:8px 14px;font-weight:500;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--bg-subtle);border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--text-inverse)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-danger{color:var(--status-bad);border-color:var(--status-bad)}.btn-danger:hover:not(:disabled){background:var(--status-bad-soft);border-color:var(--status-bad)}.btn-sm{padding:5px 10px;font-size:12.5px}.btn-block{width:100%}.input-control,select.input-control,textarea.input-control{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-surface);width:100%;color:var(--text);padding:8px 10px;transition:border-color .12s,box-shadow .12s}.input-control:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input-control::placeholder{color:var(--text-faint)}.field{flex-direction:column;gap:4px;display:flex}.field label{color:var(--text-muted);font-size:12px;font-weight:500}.field-row{gap:10px;display:flex}.field-row>.field{flex:1;min-width:0}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm)}.card-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.card-header h2{font-size:14px;font-weight:600}.card-body{flex-direction:column;gap:12px;padding:16px;display:flex}.card-body>.field-row,.card-body>.field{margin:0}.badge{white-space:nowrap;border-radius:100px;align-items:center;padding:2px 9px;font-size:12px;font-weight:600;display:inline-flex}.badge-good{background:var(--status-good-soft);color:var(--status-good)}.badge-warn{background:var(--status-warn-soft);color:var(--status-warn)}.badge-bad{background:var(--status-bad-soft);color:var(--status-bad)}.badge-neutral{background:var(--status-neutral-soft);color:var(--status-neutral)}.data-table{border-collapse:collapse;width:100%;font-size:13px}.data-table th{text-align:left;color:var(--text-muted);border-bottom:1px solid var(--border-strong);white-space:nowrap;padding:8px 10px;font-size:12px;font-weight:600}.data-table td{border-bottom:1px solid var(--border);font-variant-numeric:tabular-nums;padding:8px 10px}.data-table tbody tr:last-child td{border-bottom:0}.data-table tbody tr.clickable{cursor:pointer;transition:background .1s}.data-table tbody tr.clickable:hover{background:var(--bg-inset)}.table-scroll{overflow-x:auto}.empty-note{text-align:center;color:var(--text-faint);padding:20px;font-size:13px}.muted{color:var(--text-faint)}.banner{border-radius:var(--radius);border-left:3px solid var(--status-neutral);background:var(--bg-inset);padding:10px 14px;font-size:13px;line-height:1.55}.banner-error{border-left-color:var(--status-bad);background:var(--status-bad-soft);color:var(--status-bad)}.banner-warn{border-left-color:var(--status-warn);background:var(--status-warn-soft);color:var(--status-warn)}.banner-success{border-left-color:var(--status-good);background:var(--status-good-soft);color:var(--status-good)}.banner-info{border-left-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.field-hint{color:var(--text-muted);margin:4px 0 0;font-size:12px;line-height:1.5}.advanced-block{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);margin:16px 0 0}.advanced-block>summary{cursor:pointer;color:var(--text-muted);padding:10px 12px;font-size:13px;font-weight:600;list-style:none}.advanced-block>summary::-webkit-details-marker{display:none}.advanced-block>summary:before{content:"▸";width:14px;color:var(--text-faint);display:inline-block}.advanced-block[open]>summary:before{content:"▾"}.advanced-block>:not(summary){margin-left:12px;margin-right:12px}.advanced-block>:last-child{margin-bottom:12px}.trend-chart{width:100%;height:auto;display:block}.trend-chart .tc-grid{stroke:var(--border);stroke-width:1px}.trend-chart .tc-line{fill:none;stroke:var(--accent);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.trend-chart .tc-dot{fill:var(--accent)}.trend-chart .tc-target{stroke:var(--status-good);stroke-width:1.5px;stroke-dasharray:4 3}.trend-chart .tc-target-label{fill:var(--status-good);font-size:9px}.trend-chart .tc-axis-label{fill:var(--text-faint);font-size:9px}.text-muted{color:var(--text-muted)}.text-faint{color:var(--text-faint)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.app-header{background:var(--bg-surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;height:56px;padding:0 24px;display:flex}.brand{align-items:baseline;gap:10px;display:flex}.brand h1{letter-spacing:-.02em;font-size:16px;font-weight:700}.header-actions{align-items:center;gap:12px;display:flex}.who{color:var(--text-muted);font-size:13px}main{flex-direction:column;gap:20px;max-width:760px;margin:0 auto;padding:24px 20px 48px;display:flex}.auth-shell{max-width:380px;margin:64px auto 0;padding:0 16px}.auth-shell .card-body{gap:14px}section.card>h2{border-bottom:1px solid var(--border);padding:12px 16px;font-size:14px}section.card>.card-body{padding:16px}.section-note{color:var(--text-muted);margin:-4px 0 4px;font-size:12px;line-height:1.5}fieldset.form-block{border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:10px;margin:4px 0 0;padding:14px;display:flex}fieldset.form-block legend{color:var(--text-muted);padding:0 6px;font-size:12px;font-weight:600}.data-table td.row-actions{white-space:nowrap;text-align:right}.data-table td.row-actions>.btn+.btn{margin-left:6px}.form-actions{justify-content:flex-end;gap:8px;margin-top:2px;display:flex}.back-link{color:var(--accent);background:0 0;border:none;align-items:center;gap:6px;padding:6px 2px;font-size:13px;font-weight:500;display:inline-flex}.back-link:hover{text-decoration:underline}.patient-summary{grid-template-columns:repeat(2,1fr);gap:10px 24px;display:grid}.patient-summary dt{color:var(--text-muted);margin-bottom:2px;font-size:11px}.patient-summary dd{margin:0;font-size:15px;font-weight:600}.rx-row{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;display:flex}.rx-row+.rx-row{margin-top:6px}.rx-row-main{flex-direction:column;gap:2px;display:flex}.rx-row-name{font-size:13px;font-weight:600}.rx-row-detail{color:var(--text-muted);font-size:12px}.list-plain{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.list-plain li{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-inset);justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;font-size:12.5px;display:flex}.qr-wrap{border:1px solid var(--border);border-radius:var(--radius);background:#fff;width:180px;margin:8px auto 0;padding:10px}.qr-wrap svg{width:100%;height:auto;display:block}.token-box{word-break:break-all;background:var(--bg-inset);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-mono);margin-top:8px;padding:10px 12px;font-size:12px}.token-actions{align-items:center;gap:10px;margin-top:8px;display:flex}.adherence-grid{grid-template-columns:repeat(auto-fill,minmax(64px,1fr));gap:6px;display:grid}.adherence-day{text-align:center;border-radius:var(--radius);background:var(--bg-inset);border:1px solid var(--border);padding:8px 2px}.adherence-day .d{color:var(--text-muted);font-size:10px}.adherence-day .v{font-variant-numeric:tabular-nums;color:var(--text-faint);font-size:15px;font-weight:700}.adherence-day.done{border-color:var(--status-good);background:var(--status-good-soft)}.adherence-day.done .v{color:var(--status-good)}.adherence-day.partial{border-color:var(--status-warn);background:var(--status-warn-soft)}.adherence-day.partial .v{color:var(--status-warn)}@media (width<=640px){.app-header{padding:0 14px}main{padding:16px 12px 40px}.field-row{flex-direction:column}.patient-summary{grid-template-columns:1fr}}.attention-reason{color:var(--text-muted);white-space:nowrap;margin-top:3px;font-size:11px}.progress-block+.progress-block{border-top:1px solid var(--border);margin-top:20px;padding-top:20px}.progress-block-head{justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px;font-size:13px;display:flex}.progress-block-title{font-weight:600}.cohort-range{color:var(--text-muted);margin:0 0 12px;font-size:13px}.cohort-subhead{color:var(--text);margin:20px 0 8px;font-size:13px;font-weight:600}#cohortBody p{margin:0 0 8px;font-size:13px;line-height:1.6}.input-sm{width:auto;padding:4px 8px;font-size:13px}@media print{body.print-cohort-only .app-header,body.print-cohort-only #patientListSection,body.print-cohort-only #newPatientSection,body.print-cohort-only #adminUsersSection,body.print-cohort-only #demoBanner,body.print-cohort-only .header-actions{display:none!important}body.print-cohort-only .card{box-shadow:none;border:none}}.token-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.token-row-main{flex-direction:column;gap:2px;min-width:0;display:flex}.token-row-meta{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:12px}.token-row-meta.token-row-warn{color:var(--status-warn);font-weight:600}.token-row-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.audit-filters{flex-wrap:wrap;gap:12px;margin-bottom:12px;display:flex}.audit-filters .field{flex:160px;min-width:0;margin-bottom:0}.ops-list{margin:6px 0 0;padding-left:18px}.client-error{border-bottom:1px solid var(--border);padding:12px 0}.client-error:last-child{border-bottom:none}.client-error-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.client-error-meta{color:var(--text-muted);flex:1;font-size:12px}.client-error-message{font-family:var(--font-mono);color:var(--text);word-break:break-word;margin-top:6px;font-size:13px}.client-error-stack{background:var(--bg-inset);border-radius:var(--radius);max-height:140px;font-family:var(--font-mono);color:var(--text-muted);white-space:pre-wrap;margin:6px 0 0;padding:8px;font-size:11px;line-height:1.5;overflow:auto}.client-error-ua{color:var(--text-faint);word-break:break-all;margin-top:4px;font-size:11px}.warn-text{color:var(--status-warn)}.set-invalidated td{opacity:.55;text-decoration:line-through}.set-invalidated td .btn,.set-invalidated td .badge{opacity:1;text-decoration:none}.stage{background:var(--bg-canvas);border-radius:var(--radius-lg);aspect-ratio:3/4;max-height:60vh;box-shadow:var(--shadow-sm);margin:12px 0;position:relative;overflow:hidden}.stage video,.stage canvas{object-fit:cover;width:100%;height:100%;position:absolute;top:0;left:0;transform:scaleX(-1)}.stage .pose-hint{z-index:2;background:var(--overlay-pill);border-radius:var(--radius);text-align:center;color:var(--text-on-canvas);padding:8px 10px;font-size:13px;position:absolute;top:8px;left:8px;right:8px}.readout{grid-template-columns:1fr auto;gap:5px 8px;margin:10px 0 0;font-size:13px;display:grid}.readout dt{color:var(--text-muted)}.readout dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:600}.sheet-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.sheet{box-sizing:border-box;background:var(--bg-surface);border:1px solid var(--border);color:#000;max-width:210mm;margin:0 auto;padding:10mm 12mm;font-size:11.5pt;line-height:1.45}.sheet h1{margin:0;font-size:20pt}.sheet h2{margin:0 0 2mm;font-size:14pt}.sheet h3{margin:2mm 0 1mm;font-size:11pt}.sheet ul{margin:0;padding-left:5mm}.sheet li{margin-bottom:.5mm}.sheet-head{border-bottom:2px solid #000;margin-bottom:4mm;padding-bottom:3mm}.sheet-meta{justify-content:space-between;align-items:flex-end;margin-top:4mm;display:flex}.sheet-name{align-items:flex-end;gap:2mm;display:inline-flex}.sheet-blank{border-bottom:1px solid #000;width:60mm;height:1.2em;display:inline-block}.sheet-ex{break-inside:avoid;border:1px solid #000;margin-bottom:4mm;padding:3mm 4mm}.sheet-rows{font-weight:700;list-style:none;margin-bottom:2mm!important;padding-left:0!important}.sheet-ex-body{align-items:flex-start;gap:5mm;display:flex}.sheet-ex-text{flex:1;min-width:0}.sheet-qr{text-align:center;width:34mm;font-size:8.5pt;line-height:1.3}.sheet-qr p{margin:1mm 0 0}.sheet-qr-img svg{width:30mm;height:30mm;margin:0 auto;display:block}.sheet-qr-url{word-break:break-all;font-size:7.5pt}.sheet-images{gap:3mm;margin-top:2mm;display:flex}.sheet-images figure{flex:1;margin:0}.sheet-images img{object-fit:contain;border:1px solid #000;width:100%;max-height:42mm;display:block}.sheet-images figcaption{text-align:center;font-size:9pt}.sheet-common{border-top:2px solid #000;padding-top:2mm}.sheet-notice{margin:2mm 0 0;font-weight:700}.sheet-foot{margin:2mm 0 0;font-size:9pt}@page{size:A4;margin:10mm}@media print{body.print-sheet-only .app-header,body.print-sheet-only #demoBanner,body.print-sheet-only #opsBanner,body.print-sheet-only .sheet-toolbar,body.print-sheet-only #sheetMsg{display:none!important}body.print-sheet-only{background:#fff}body.print-sheet-only main{max-width:none;padding:0}body.print-sheet-only .sheet{border:none;max-width:none;padding:0}}
