:root{--t-primary: #2e72d2;--t-primary-strong: #1b4b8f;--t-primary-soft: #e6f0fb;--t-primary-soft-2: #eaf2fc;--t-navy: #0f1e33;--t-navy-2: #10243f;--t-admin: #7a3fd2;--t-admin-soft: #f1ebfb;--t-success: #1e9e6a;--t-success-strong: #1e7a4f;--t-success-soft: #e6f6ee;--t-warn: #c2791a;--t-warn-soft: #fbf1e0;--t-danger: #b53d3d;--t-danger-soft: #fdecec;--t-ink: #10243f;--t-text: #3f4f63;--t-muted: #7a8799;--t-faint: #9aa7b6;--t-line: #e2e9f1;--t-line-2: #cdd9e6;--t-surface: #ffffff;--t-surface-2: #f0f4f9;--t-surface-3: #f8fafd;--t-bg: #eef2f7;--t-font: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--t-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--t-radius: 12px;--t-radius-sm: 8px;--t-shadow: 0 1px 3px rgba(8, 18, 33, .28);--t-shadow-sm: 0 1px 2px rgba(8, 18, 33, .12);--t-shadow-lg: 0 10px 28px rgba(8, 18, 33, .14)}*{box-sizing:border-box}body{margin:0;font-family:var(--t-font);color:var(--t-text);background:var(--t-bg);-webkit-font-smoothing:antialiased}a{color:var(--t-primary);text-decoration:none}.t-shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.t-sidebar{background:var(--t-navy);color:#fff;padding:22px 16px;display:flex;flex-direction:column;gap:6px}.t-brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:20px;color:#fff;padding:4px 8px 18px}.t-brand-mark{height:30px;width:auto;display:block}.t-brand .dot{color:var(--t-primary)}.t-nav{display:flex;flex-direction:column;gap:2px}.t-navitem{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--t-radius-sm);color:#c2cede;font-size:14px;font-weight:500;cursor:pointer;border:none;background:none;text-align:left;width:100%}.t-navitem:hover{background:#ffffff0f;color:#fff}.t-navitem.active{background:var(--t-primary);color:#fff}.t-sidebar-footer{margin-top:auto;font-size:12px;color:#6b7a8d;padding:12px 8px 0}.t-sidebar-footer .t-legal{margin-top:6px;font-size:11px;line-height:1.4;color:#55647a}.t-legal-link{color:inherit;text-decoration:underline}.t-main{display:flex;flex-direction:column;min-width:0}.t-topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 28px;background:var(--t-surface);border-bottom:1px solid var(--t-line)}.t-topbar h1{font-size:18px;margin:0;color:var(--t-ink)}.t-topbar .sub{font-size:13px;color:var(--t-muted)}.t-topbar-lead{display:flex;align-items:center;gap:12px}.t-navtoggle{display:none;align-items:center;justify-content:center;padding:6px;border:none;border-radius:var(--t-radius-sm);background:none;color:var(--t-ink);cursor:pointer}.t-navtoggle:hover{background:#0f1a2b0f}.t-nav-backdrop{display:none}.t-content{padding:28px;display:flex;flex-direction:column;gap:20px}.t-card{background:var(--t-surface);border:1px solid var(--t-line);border-radius:var(--t-radius);box-shadow:var(--t-shadow);padding:20px}.t-card-title{font-size:15px;font-weight:700;color:var(--t-ink);margin:0 0 4px}.t-card-sub{font-size:13px;color:var(--t-muted);margin:0 0 16px}.t-grid{display:grid;gap:16px}.t-grid.cols-2{grid-template-columns:repeat(2,1fr)}.t-grid.cols-3{grid-template-columns:repeat(3,1fr)}.t-grid.cols-4{grid-template-columns:repeat(4,1fr)}@media(max-width:900px){.t-grid.cols-2,.t-grid.cols-3,.t-grid.cols-4,.t-shell{grid-template-columns:1fr}.t-sidebar{position:fixed;top:0;bottom:0;left:0;width:264px;z-index:50;transform:translate(-100%);transition:transform .2s ease;overflow-y:auto}.t-sidebar.open{transform:none}.t-navtoggle{display:inline-flex}.t-nav-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:49;background:#0f1a2b73}@media(prefers-reduced-motion:reduce){.t-sidebar{transition:none}}}.t-stat{background:var(--t-surface);border:1px solid var(--t-line);border-radius:var(--t-radius);padding:18px 20px}.t-stat .label{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--t-muted);margin-bottom:8px}.t-stat .value{font-size:26px;font-weight:800;color:var(--t-ink);font-family:var(--t-mono)}.t-stat .delta{font-size:12px;margin-top:6px}.t-stat .delta.up{color:var(--t-success)}.t-stat .delta.down{color:var(--t-danger)}.t-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 16px;border-radius:var(--t-radius-sm);font-size:14px;font-weight:600;border:1px solid transparent;cursor:pointer;background:var(--t-primary);color:#fff}.t-btn:hover{background:var(--t-primary-strong)}.t-btn:disabled{opacity:.5;cursor:not-allowed}.t-btn.secondary{background:var(--t-surface);color:var(--t-ink);border-color:var(--t-line-2)}.t-btn.secondary:hover{background:var(--t-surface-2)}.t-btn.ghost{background:transparent;color:var(--t-primary)}.t-btn.danger{background:var(--t-danger)}.t-btn.sm{padding:6px 12px;font-size:13px}.t-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--t-surface-2);color:var(--t-text)}.t-badge.success{background:var(--t-success-soft);color:var(--t-success)}.t-badge.warn{background:var(--t-warn-soft);color:var(--t-warn)}.t-badge.danger{background:var(--t-danger-soft);color:var(--t-danger)}.t-badge.info{background:var(--t-primary-soft);color:var(--t-primary)}.t-badge.admin{background:var(--t-admin-soft);color:var(--t-admin)}.t-table{width:100%;border-collapse:collapse;font-size:14px}.t-table th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--t-muted);padding:10px 12px;border-bottom:1px solid var(--t-line)}.t-table td{padding:12px;border-bottom:1px solid var(--t-line);color:var(--t-text)}.t-table tr:last-child td{border-bottom:none}.t-field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.t-field label{font-size:13px;font-weight:600;color:var(--t-ink)}.t-input,.t-select,.t-textarea{padding:10px 12px;border:1px solid var(--t-line-2);border-radius:var(--t-radius-sm);font-size:14px;font-family:inherit;color:var(--t-ink);background:#fff}.t-input:focus,.t-select:focus,.t-textarea:focus{outline:2px solid var(--t-primary-soft);border-color:var(--t-primary)}.t-row{display:flex;align-items:center;gap:12px}.t-spread{display:flex;align-items:center;justify-content:space-between;gap:12px}.t-avatar{width:38px;height:38px;border-radius:999px;background:var(--t-primary-soft);color:var(--t-primary);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.t-empty{text-align:center;color:var(--t-muted);padding:32px;font-size:14px}.t-muted{color:var(--t-muted)}.t-mono{font-family:var(--t-mono)}.t-section-title{font-size:16px;font-weight:700;color:var(--t-ink);margin:0}.t-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f1e3373;display:flex;align-items:center;justify-content:center;padding:24px;z-index:100}.t-modal{background:var(--t-surface);border-radius:var(--t-radius);box-shadow:var(--t-shadow-lg);width:100%;max-height:90vh;display:flex;flex-direction:column}.t-modal-full{max-width:min(1100px,96vw);width:96vw;height:92vh}.t-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px 20px;border-bottom:1px solid var(--t-line)}.t-modal-head .t-card-title{margin:0}.t-modal-close{border:none;background:none;cursor:pointer;color:var(--t-muted);font-size:14px;padding:4px 6px;border-radius:var(--t-radius-sm)}.t-modal-close:hover{background:var(--t-surface-2);color:var(--t-ink)}.t-modal-body{padding:20px;overflow-y:auto;flex:1;min-height:0}.t-modal-foot{display:flex;justify-content:flex-end;gap:10px;padding:14px 20px;border-top:1px solid var(--t-line)}.t-tabs{display:flex;flex-wrap:wrap;gap:6px}.t-tab{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:999px;border:1px solid transparent;background:transparent;color:#5c6b7e;font-size:13px;font-weight:600;cursor:pointer}.t-tab:hover{background:var(--t-surface-2)}.t-tab.active{background:var(--t-primary-soft);color:var(--t-primary)}.t-tab-badge{background:var(--t-primary);color:#fff;border-radius:999px;font-size:11px;line-height:1;padding:3px 7px;font-weight:700}.t-tab:not(.active) .t-tab-badge{background:var(--t-line-2);color:var(--t-text)}.t-tabs.admin .t-tab.active{background:var(--t-admin-soft);color:var(--t-admin)}.t-tabs.admin .t-tab.active .t-tab-badge{background:var(--t-admin)}.t-tabs.solid .t-tab{background:var(--t-surface);border:1px solid var(--t-line);color:#5c6b7e}.t-tabs.solid .t-tab.active{background:var(--t-admin);color:#fff;border-color:var(--t-admin)}.t-chipgroup{display:flex;flex-wrap:wrap;gap:8px}.t-chip{display:inline-flex;flex-direction:column;align-items:center;gap:2px;padding:8px 14px;border-radius:10px;border:1px solid var(--t-line-2);background:#fff;color:#5c6b7e;font-size:13px;font-weight:600;cursor:pointer}.t-chip:hover{border-color:var(--t-primary)}.t-chip:disabled{opacity:.5;cursor:not-allowed}.t-chip.on{background:var(--t-primary-soft);border-color:var(--t-primary);color:var(--t-primary)}.t-chip.solid.on{background:var(--t-primary);color:#fff}.t-chip-sub{font-size:11px;font-weight:500;color:var(--t-faint)}.t-chip.on .t-chip-sub{color:inherit;opacity:.8}.t-switch{display:inline-flex;align-items:center;gap:10px;border:none;background:none;padding:0;cursor:pointer;font-size:14px;color:var(--t-text)}.t-switch:disabled{opacity:.5;cursor:not-allowed}.t-switch-track{width:38px;height:22px;border-radius:999px;background:var(--t-line-2);position:relative;transition:background .15s ease;flex:none}.t-switch-knob{position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:999px;background:#fff;box-shadow:var(--t-shadow);transition:left .15s ease}.t-switch.on .t-switch-track{background:var(--t-primary)}.t-switch.on .t-switch-knob{left:18px}.t-switch-label{font-weight:500}.t-stepper{display:flex;align-items:center;gap:14px;list-style:none;margin:0;padding:0;flex-wrap:wrap}.t-step{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--t-faint);font-weight:500}.t-step-dot{width:24px;height:24px;border-radius:999px;border:1px solid var(--t-line-2);background:#fff;color:var(--t-faint);display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex:none}.t-step.active{color:var(--t-ink);font-weight:600}.t-step.active .t-step-dot{background:var(--t-primary);border-color:var(--t-primary);color:#fff}.t-step.done{color:var(--t-success)}.t-step.done .t-step-dot{background:var(--t-success-soft);border-color:var(--t-success);color:var(--t-success)}.t-toaster{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:8px;z-index:200;max-width:360px}.t-toast{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--t-navy-2);color:#fff;border-radius:var(--t-radius-sm);box-shadow:var(--t-shadow-lg);padding:12px 14px;font-size:13px;font-weight:500}.t-toast.success{background:var(--t-success)}.t-toast.warn{background:var(--t-warn)}.t-toast.danger{background:var(--t-danger)}.t-toast.info{background:var(--t-primary)}.t-toast-close{border:none;background:none;color:inherit;opacity:.7;cursor:pointer;font-size:12px;padding:2px}.t-toast-close:hover{opacity:1}.t-progress{height:8px;border-radius:999px;background:var(--t-surface-2);overflow:hidden}.t-progress-bar{height:100%;border-radius:999px;background:var(--t-primary);transition:width .2s ease}.t-kv{margin:0;display:flex;flex-direction:column}.t-kv-row{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-bottom:1px solid var(--t-line);font-size:14px}.t-kv-row:last-child{border-bottom:none}.t-kv-row dt{color:var(--t-muted);margin:0}.t-kv-row dd{color:var(--t-ink);font-weight:600;margin:0;text-align:right}.t-odontogram{display:flex;flex-direction:column;gap:14px}.t-odo-arch{display:grid;gap:4px}.t-odo-tooth{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}.t-odo-svg{width:100%;max-width:34px;display:block}.t-odo-svg polygon:focus-visible{outline:2px solid var(--t-primary)}.t-odo-num{border:none;background:none;cursor:pointer;font-family:var(--t-mono);font-size:11px;color:var(--t-faint);padding:2px 4px;border-radius:4px}.t-odo-num:hover{background:var(--t-surface-2)}.t-odo-num.active{color:var(--t-primary);font-weight:700}.t-odo-legend{display:flex;flex-wrap:wrap;gap:10px 16px;font-size:12px;color:var(--t-text)}.t-odo-legend-item{display:inline-flex;align-items:center;gap:6px}.t-odo-swatch{width:12px;height:12px;border-radius:3px;border:1px solid;display:inline-block}.t-perio{display:flex;flex-direction:column;gap:12px}.t-perio-side{font-size:12px}.t-perio-arch{display:flex;gap:3px;overflow-x:auto;padding-bottom:4px}.t-perio-tooth{display:flex;flex-direction:column;align-items:center;gap:3px;padding:3px 2px;border-radius:6px;flex:none}.t-perio-tooth.active{background:var(--t-primary-soft-2)}.t-perio-num{font-size:11px;color:var(--t-faint)}.t-perio-sites{display:flex;gap:2px}.t-perio-cell{width:20px;height:22px;border-radius:4px;border:1px solid var(--t-line-2);background:#fff;color:var(--t-ink);font-family:var(--t-mono);font-size:11px;cursor:pointer;padding:0;position:relative}.t-perio-cell.empty{border-color:#dde6f0;color:#c2cdda}.t-perio-cell.warn{background:var(--t-warn-soft);border-color:#e8c98f;color:var(--t-warn)}.t-perio-cell.deep{background:#f6d6d6;border-color:#e06b6b;color:var(--t-danger)}.t-perio-cell.bop:after{content:"";position:absolute;top:1px;right:1px;width:5px;height:5px;border-radius:999px;background:#e06b6b}.t-perio-cell:disabled{cursor:default}.t-perio-bop{width:12px;height:12px;border-radius:999px;border:1px solid var(--t-line-2);background:#fff;cursor:pointer;padding:0}.t-perio-bop.on{background:#e06b6b;border-color:#e06b6b}.t-perio-bop:disabled{cursor:default}.t-perio-summary{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;color:var(--t-text)}.t-perio-summary .warn{color:var(--t-warn)}.t-perio-summary .danger{color:var(--t-danger)}.t-rolebtn{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border:1px solid var(--t-line);border-radius:999px;background:var(--t-surface);cursor:pointer;font:inherit;color:var(--t-ink)}.t-roleavatar{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;font-size:11px;font-weight:700;flex:none}.t-rolemeta{display:flex;flex-direction:column;align-items:flex-start;line-height:1.2;text-align:left}.t-rolemeta strong{font-size:12.5px;color:var(--t-ink)}.t-rolemeta small{font-size:11px;color:var(--t-muted)}.t-rolemenu{position:absolute;right:0;top:calc(100% + 6px);z-index:40;min-width:240px;display:flex;flex-direction:column;gap:2px;padding:6px;border:1px solid var(--t-line);border-radius:12px;background:var(--t-surface);box-shadow:0 10px 28px #0f1e3324}.t-roleoption{display:flex;align-items:center;gap:8px;padding:6px 8px;border:0;border-radius:8px;background:transparent;cursor:pointer;font:inherit;text-align:left}.t-roleoption:hover{background:var(--t-surface-2)}.t-roleoption.active{background:var(--t-primary-soft)}.t-scopenote{margin:0 0 14px;padding:8px 12px;border:1px solid var(--t-line);border-radius:10px;background:var(--t-surface-2);color:var(--t-muted);font-size:12.5px}.t-gate{min-height:100vh;display:grid;place-items:center;background:var(--t-surface-2);padding:24px}.t-gate-card{width:min(400px,92vw);text-align:center;padding:28px 26px}.t-gate-logo{width:128px;height:auto;margin:0 auto 4px;display:block}.t-gate-icon{font-size:26px;margin-top:2px}.t-gate-legal{color:var(--t-muted);font-size:11px;line-height:1.4;margin-top:10px}.t-gate-tag{letter-spacing:1.6px;font-size:11px;font-weight:800;margin-top:6px}.t-gate-title{margin:6px 0 2px;font-size:22px}.t-gate-sub{color:var(--t-muted);font-size:13px;margin-top:0}.t-gate-form{display:flex;flex-direction:column;gap:10px;margin-top:14px;text-align:left}.t-gate-error{color:var(--t-danger);font-size:12px;margin:0}.t-gate-foot{color:var(--t-muted);font-size:12px;margin-top:12px}.t-gate-link{background:none;border:0;padding:0;margin-top:2px;cursor:pointer;font:500 12.5px var(--t-font);color:var(--t-primary);text-align:center}.t-gate-link:hover{text-decoration:underline}
