.portal{--p-bg:#f4f6f9;--p-surface:#fff;--p-line:#e4e9f0;--p-line-soft:#eef1f6;--p-text:#0f1720;--p-muted:#6b7a8d;--p-faint:#93a1b2;--p-accent:#0284c7;--p-accent-dark:#026da6;--p-attention:#b45309;--p-attention-bg:#fff8ec;--p-danger:#dc2626;--p-ok:#15803d;--p-shadow:0 1px 2px #1017200f;background:var(--p-bg);min-height:100%;color:var(--p-text);font-size:14px;line-height:1.5}.portal button{font:inherit;color:inherit;cursor:pointer}.topbar{background:var(--bg);color:var(--text)}.topbar__row{justify-content:space-between;align-items:center;gap:24px;height:58px;padding:0 28px;display:flex}.mark{letter-spacing:-.015em;color:#fff;align-items:center;gap:9px;font-size:16px;display:flex}.mark svg{color:var(--p-accent)}.mark strong{font-weight:700}.topbar__right{align-items:center;gap:8px;display:flex}.icon-btn{color:#b8c6d6;background:0 0;border:0;border-radius:9px;place-items:center;width:34px;height:34px;transition:background .12s,color .12s;display:grid;position:relative}.icon-btn:hover{color:#fff;background:#1a232e}.icon-btn__dot{width:6px;height:6px;box-shadow:0 0 0 2px var(--bg);background:#f59e0b;border-radius:50%;position:absolute;top:7px;right:8px}.who{color:#cdd8e4;background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:5px 10px 5px 6px;transition:background .12s;display:flex}.who:hover{background:#1a232e}.who__avatar{color:#fff;background:linear-gradient(150deg,#0ea5e9,#0369a1);border-radius:50%;place-items:center;width:30px;height:30px;font-size:13px;font-weight:600;display:grid}.who__text{flex-direction:column;align-items:flex-start;line-height:1.25;display:flex}.who__text strong{color:#fff;font-size:13px;font-weight:600}.who__text em{color:#8fa3b8;font-size:11.5px;font-style:normal}.tabs{background:#111820;border-top:1px solid #1c2530;gap:2px;padding:0 20px;display:flex}.tab{color:#94a6b8;background:0 0;border:0;padding:12px 16px 13px;font-size:13.5px;transition:color .12s;position:relative}.tab:hover{color:#dbe6f1}.tab.is-on{color:#fff;font-weight:600}.tab.is-on:after{content:"";background:var(--p-accent);border-radius:2px 2px 0 0;height:2px;position:absolute;inset:auto 12px -1px}.portal__main{padding:28px}.page{max-width:1180px;margin:0 auto}.page__head{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:22px;display:flex}.page__head h1{letter-spacing:-.02em;margin:0;font-size:23px;font-weight:700}.page__head p{color:var(--p-muted);margin:5px 0 0;font-size:13.5px}.btn{white-space:nowrap;border:1px solid #0000;border-radius:9px;align-items:center;gap:7px;padding:9px 16px;font-size:13.5px;font-weight:600;transition:background .12s,box-shadow .12s;display:inline-flex}.btn--primary{background:var(--p-accent);color:#fff;box-shadow:0 1px 2px #0284c74d}.btn--primary:hover{background:var(--p-accent-dark)}.btn--lg{padding:12px 22px;font-size:14.5px}.cards{grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px;display:grid}.card{border:1px solid var(--p-line);background:var(--p-surface);box-shadow:var(--p-shadow);text-align:left;border-radius:12px;flex-direction:column;gap:2px;padding:15px 17px;display:flex}.card--link{transition:border-color .12s,transform .12s}.card--link:hover{border-color:#d8bd8f;transform:translateY(-1px)}.card__value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-size:25px;font-weight:700}.card__label{color:var(--p-muted);font-size:12.5px}.card--attention{background:var(--p-attention-bg);border-color:#f0d9ae}.card--attention .card__value,.card--attention .card__label{color:var(--p-attention)}.card--done .card__value{color:var(--p-ok)}.toolbar{justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px;display:flex}.chips{gap:6px;display:flex}.chip{border:1px solid var(--p-line);background:var(--p-surface);color:var(--p-muted);border-radius:999px;align-items:center;gap:6px;padding:7px 13px;font-size:13px;transition:border-color .12s,color .12s;display:inline-flex}.chip:hover{color:var(--p-text);border-color:#cfd8e3}.chip.is-on{border-color:var(--p-accent);color:var(--p-accent-dark);background:#eef8fd;font-weight:600}.chip__count{background:var(--p-attention);color:#fff;text-align:center;font-variant-numeric:tabular-nums;border-radius:999px;min-width:18px;padding:0 5px;font-size:11px;font-weight:700}.search{border:1px solid var(--p-line);background:var(--p-surface);width:300px;color:var(--p-faint);border-radius:9px;align-items:center;gap:8px;padding:8px 13px;transition:border-color .12s,box-shadow .12s;display:flex}.search:focus-within{border-color:var(--p-accent);box-shadow:0 0 0 3px #0284c71f}.search input{min-width:0;color:var(--p-text);font:inherit;background:0 0;border:0;outline:0;flex:1;font-size:13.5px}.search input::placeholder{color:var(--p-faint)}.table{border:1px solid var(--p-line);background:var(--p-surface);box-shadow:var(--p-shadow);border-radius:14px;overflow:hidden}.table__head,.row{grid-template-columns:2.1fr 1.2fr .9fr 1.5fr;align-items:center;gap:20px;display:grid}.table__head{border-bottom:1px solid var(--p-line);color:var(--p-faint);letter-spacing:.03em;background:#fafbfd;padding:11px 22px;font-size:11.5px;font-weight:600}.row{border-bottom:1px solid var(--p-line-soft);padding:16px 22px;transition:background .12s}.row:last-child{border-bottom:0}.row:hover{background:#fbfcfe}.row--attention{background:var(--p-attention-bg);box-shadow:inset 3px 0 #e0a44a}.row--attention:hover{background:#fef4e2}.row__patient{align-items:center;gap:12px;min-width:0;display:flex}.avatar{color:#5b6b7f;background:#eef2f7;border-radius:12px;flex:none;place-items:center;width:38px;height:38px;font-size:13px;font-weight:600;display:grid}.row__name{letter-spacing:-.01em;font-size:14.5px;font-weight:600;display:block}.row__meta{color:var(--p-faint);font-variant-numeric:tabular-nums;margin-top:1px;font-size:12px;display:block}.row__range{flex-wrap:wrap;gap:5px;display:flex}.pill{border:1px solid var(--p-line);color:#46586c;white-space:nowrap;background:#f7f9fc;border-radius:7px;padding:3px 9px;font-size:12px;font-weight:500}.row__date{color:var(--p-muted);font-variant-numeric:tabular-nums;font-size:13px}.row__due{color:var(--p-faint);margin-top:2px;font-size:11.5px}.table__empty{text-align:center;color:var(--p-faint);padding:44px;font-size:13.5px}.track__bar{grid-template-columns:repeat(5,1fr);gap:3px;margin-bottom:7px;display:grid}.track__seg{background:#e6ebf2;border-radius:2px;height:3px}.track__seg.is-done{background:#9fd2ec}.track__seg.is-now{background:var(--p-accent)}.track--attention .track__seg.is-done{background:#edcf9c}.track--attention .track__seg.is-now{background:#e0a44a}.track--danger .track__seg.is-now{background:var(--p-danger)}.track--done .track__seg{background:#a7dcbb}.track--muted .track__seg{background:#e6ebf2}.track__label{letter-spacing:-.01em;font-size:13.5px;font-weight:600}.track--attention .track__label{color:var(--p-attention)}.track--danger .track__label{color:var(--p-danger)}.track--done .track__label{color:var(--p-ok)}.track--muted .track__label{color:var(--p-faint)}.track__hint{color:var(--p-faint);margin-top:1px;font-size:12px}.track__action{color:var(--p-accent-dark);background:0 0;border:1px solid;border-radius:7px;margin-top:4px;padding:5px 12px;font-size:12.5px;font-weight:600;text-decoration:none;transition:background .12s,color .12s;display:inline-block}.track__action:hover{background:var(--p-accent);border-color:var(--p-accent);color:#fff}.track--attention .track__action{background:var(--p-attention);border-color:var(--p-attention);color:#fff}.track--attention .track__action:hover{background:#96450a;border-color:#96450a}.track--danger .track__action{color:var(--p-danger)}.track--danger .track__action:hover{background:var(--p-danger);border-color:var(--p-danger)}.welcome{border:1px solid var(--p-line);background:var(--p-surface);text-align:center;border-radius:18px;max-width:680px;margin:56px auto;padding:44px 44px 40px;box-shadow:0 2px 10px #1017200d}.welcome h1{letter-spacing:-.025em;margin:0;font-size:25px;font-weight:700}.welcome p{color:var(--p-muted);margin:10px 0 0;font-size:14px}.steps{text-align:left;grid-template-columns:repeat(3,1fr);gap:12px;margin:30px 0;padding:0;list-style:none;display:grid}.steps li{border:1px solid var(--p-line);background:#fafbfd;border-radius:12px;padding:16px}.steps__n{background:var(--p-accent);color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;margin-bottom:9px;font-size:11.5px;font-weight:700;display:grid}.steps strong{font-size:13.5px;font-weight:600;display:block}.steps em{color:var(--p-muted);margin-top:3px;font-size:12.5px;font-style:normal;line-height:1.45;display:block}.account{position:relative}.menu{z-index:20;border:1px solid var(--p-line);background:var(--p-surface);border-radius:11px;min-width:200px;padding:5px;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #0b0f142e}.menu__head{border-bottom:1px solid var(--p-line-soft);color:var(--p-faint);overflow-wrap:anywhere;margin-bottom:4px;padding:8px 11px 9px;font-size:12px}.menu button{width:100%;color:var(--p-text);text-align:left;background:0 0;border:0;border-radius:7px;padding:8px 11px;font-size:13.5px;display:block}.menu button:hover{background:#f2f5f9}.waiting{color:#6b7a8d;min-height:100vh;font-family:var(--font);background:#f4f6f9;place-items:center;font-size:14px;display:grid}.auth{flex-direction:column;align-items:center;min-height:100vh;padding:48px 20px 64px;display:flex}.auth__card{border:1px solid var(--p-line);background:var(--p-surface);border-radius:16px;width:100%;max-width:420px;padding:34px 34px 30px;box-shadow:0 2px 12px #1017200f}.auth__card--wide{max-width:540px}.auth__mark{color:var(--p-text);letter-spacing:-.015em;align-items:center;gap:8px;margin-bottom:22px;font-size:16px;text-decoration:none;display:inline-flex}.auth__mark svg{color:var(--p-accent)}.auth__card h1{letter-spacing:-.025em;margin:0;font-size:22px;font-weight:700}.auth__lead{color:var(--p-muted);margin:8px 0 0;font-size:13.5px;line-height:1.55}.auth__footer{color:var(--p-muted);margin-top:18px;font-size:13.5px}.auth a{color:var(--p-accent-dark);font-weight:500}.form{flex-direction:column;gap:14px;margin-top:22px;display:flex}.form__group{flex-direction:column;gap:13px;padding-bottom:4px;display:flex}.form__group+.form__group{border-top:1px solid var(--p-line-soft);padding-top:16px}.form__title{color:var(--p-faint);letter-spacing:.04em;font-size:11.5px;font-weight:700}.form__grid{grid-template-columns:1fr 1fr;gap:13px;display:grid}.form__aside{align-self:center;font-size:13px}.field{flex-direction:column;gap:5px;min-width:0;display:flex}.field__label{color:#3d4c5e;font-size:12.5px;font-weight:600}.field input{border:1px solid var(--p-line);background:var(--p-surface);width:100%;color:var(--p-text);font:inherit;border-radius:9px;padding:10px 12px;font-size:14px;transition:border-color .12s,box-shadow .12s}.field input::placeholder{color:#b3bfcd}.field input:focus{border-color:var(--p-accent);outline:0;box-shadow:0 0 0 3px #0284c71f}.field--bad input{border-color:#e9a1a1}.field--bad input:focus{border-color:var(--p-danger);box-shadow:0 0 0 3px #dc26261a}.field__hint{color:var(--p-faint);font-size:12px;line-height:1.45}.field__error{color:var(--p-danger);font-size:12px}.input-with{display:flex;position:relative}.input-with input{padding-right:62px}.input-with button{color:var(--p-muted);background:0 0;border:0;border-radius:6px;padding:5px 8px;font-size:12.5px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.input-with button:hover{color:var(--p-text);background:#f2f5f9}.agree{border:1px solid var(--p-line);cursor:pointer;background:#fafbfd;border-radius:10px;align-items:flex-start;gap:9px;padding:12px 13px;font-size:13px;line-height:1.5;display:flex}.agree--bad{border-color:#e9a1a1}.agree input{width:15px;height:15px;accent-color:var(--p-accent);flex:none;margin:2px 0 0}.btn--block{justify-content:center;width:100%;padding:11px 16px}.btn--ghost{border-color:var(--p-line);background:var(--p-surface);color:var(--p-text)}.btn--ghost:hover{background:#f4f7fa}.btn:disabled{opacity:.55;cursor:default}.notice{border:1px solid;border-radius:10px;padding:11px 13px;font-size:13px;line-height:1.55}.notice code{background:#0f172012;border-radius:4px;padding:1px 5px;font-size:12px}.notice--bad{color:#a72020;background:#fdf3f3;border-color:#f0c4c4}.notice--warn{background:var(--p-attention-bg);color:var(--p-attention);border-color:#f0d9ae;margin-top:16px}.notice--ok{color:var(--p-ok);background:#f2fbf5;border-color:#b6e0c5}.tips{color:var(--p-muted);margin:20px 0;padding-left:18px;font-size:13px;line-height:1.7}.table__head--ops,.row--ops{grid-template-columns:1.9fr 1.3fr 1.4fr .8fr .9fr}.row--ops>*{min-width:0}.btn--sm{margin-left:auto;padding:6px 12px;font-size:12.5px}.row--link{color:inherit;text-decoration:none}.row--link:hover{background:#f6f9fc}.tag{color:#46586c;white-space:nowrap;background:#eef2f7;border-radius:999px;justify-self:start;padding:4px 11px;font-size:12.5px;font-weight:600}.tag--lg{padding:7px 15px;font-size:13.5px}.tag--attention{background:var(--p-attention-bg);color:var(--p-attention)}.tag--danger{color:var(--p-danger);background:#fdf3f3}.tag--done{color:var(--p-ok);background:#f2fbf5}.tag--normal{color:var(--p-accent-dark);background:#eaf6fd}.back{color:var(--p-muted);margin-bottom:6px;font-size:13px;text-decoration:none;display:inline-block}.back:hover{color:var(--p-accent-dark)}.facts{grid-template-columns:84px 1fr;gap:7px 14px;margin:0;font-size:13.5px;display:grid}.facts dt{color:var(--p-faint);font-size:12.5px}.facts dd{margin:0}.quote{border-left:3px solid var(--p-line);color:#3d4c5e;background:#fafbfd;margin:16px 0 0;padding:12px 14px;font-size:13.5px;line-height:1.6}.file{border:1px solid var(--p-line);background:#fafbfd;border-radius:10px;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;display:flex}.file strong{font-size:13.5px;display:block}.trail{flex-direction:column;gap:11px;margin:0;padding:0;font-size:13.5px;list-style:none;display:flex}.trail li{grid-template-columns:158px 1fr;gap:4px 14px;display:grid}.trail__at{color:var(--p-faint);font-variant-numeric:tabular-nums;font-size:12.5px}.trail__note{color:var(--p-muted);grid-column:2;font-size:12.5px}.ask{flex-direction:column;gap:13px;display:flex}.ask__row{justify-content:flex-end;gap:9px;display:flex}.page--narrow{max-width:760px}.sheet{border:1px solid var(--p-line);background:var(--p-surface);box-shadow:var(--p-shadow);border-radius:14px}.sheet__block{border-bottom:1px solid var(--p-line-soft);padding:22px 24px}.sheet__block h2{letter-spacing:-.015em;margin:0 0 14px;font-size:15px;font-weight:700}.sheet__lead{color:var(--p-muted);margin:-8px 0 14px;font-size:12.5px}.sheet .notice{margin:16px 24px 0}.sheet__foot{justify-content:flex-end;align-items:center;gap:16px;padding:18px 24px;display:flex}.sheet__status{color:var(--p-muted);font-size:13px}.arch{border:1px solid var(--p-line);background:#fafbfd;border-radius:12px}.arch+.arch{margin-top:10px}.arch.is-on{background:var(--p-surface)}.arch__head{cursor:pointer;align-items:center;gap:10px;padding:13px 16px;font-size:14px;display:flex}.arch__head input{width:16px;height:16px;accent-color:var(--p-accent)}.arch__body{flex-direction:column;gap:12px;padding:0 16px 16px;display:flex}.teeth__row{gap:3px;display:flex}.teeth__gap{margin-left:12px}.tooth{border:1px solid var(--p-line);background:var(--p-surface);width:100%;min-width:0;color:var(--p-faint);font-variant-numeric:tabular-nums;border-radius:7px;padding:9px 0;font-size:11.5px;transition:border-color .1s,background .1s,color .1s}.teeth__row>span{flex:1;min-width:0}.tooth:hover{color:var(--p-text);border-color:#b9cbd9}.tooth.is-on{border-color:var(--p-accent);background:var(--p-accent);color:#fff;font-weight:600}.teeth__read{color:var(--p-muted);align-items:baseline;gap:8px;margin-top:8px;font-size:12.5px;display:flex}.teeth__read strong{color:var(--p-text);font-size:14px}.teeth__none{color:var(--p-danger)}.drop{background:#fafbfd;border:1px dashed #c3d0dd;border-radius:10px;transition:border-color .12s,background .12s;position:relative}.drop:hover{border-color:var(--p-accent);background:#f5fbfe}.drop--bad{border-color:#e9a1a1}.drop input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.drop__face{text-align:center;pointer-events:none;flex-direction:column;gap:2px;padding:16px;display:flex}.drop__face strong{overflow-wrap:anywhere;font-size:13.5px;font-weight:600}.drop__face em{color:var(--p-faint);font-size:12px;font-style:normal}.notice--wide{margin-bottom:18px}.notice small{opacity:.8;font-variant-numeric:tabular-nums}@media (max-width:900px){.cards,.steps{grid-template-columns:repeat(2,1fr)}.table__head{display:none}.row{grid-template-columns:1fr;gap:12px}}:root{--bg:#121a28;--panel:#1b2536;--panel-2:#233046;--line:#33445f;--text:#e9eff7;--muted:#99abc2;--accent:#38bdf8;--accent-dim:#0e4a63;--warn:#f87171;--ok:#4ade80;--font:"Pretendard", -apple-system, "Segoe UI", "Malgun Gothic", system-ui, sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;font-size:13px}.app{grid-template-columns:288px 1fr;height:100%;display:grid}.app--job{grid-template-rows:48px 1fr}.app--job>.jobbar{grid-column:1/-1}.jobbar{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:16px;padding:0 16px;display:flex}.jobbar__back{color:var(--muted);font-size:12.5px;text-decoration:none}.jobbar__back:hover{color:var(--text)}.jobbar__who{align-items:baseline;gap:10px;margin-right:auto;display:flex}.jobbar__who span{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.jobbar__ok{color:#6fcf97;font-size:12.5px}.jobbar__note{color:var(--muted);font-size:12.5px}.jobbar__bad{color:#f08a84;font-size:12.5px}.stage__busy{color:var(--muted);background:#1b2536db;border-radius:999px;padding:6px 12px;font-size:12px;position:absolute;top:14px;right:14px}.panel{background:var(--panel);padding:0 0 32px;overflow-y:auto}.panel--left{border-right:1px solid var(--line)}.panel::-webkit-scrollbar{width:9px}.panel::-webkit-scrollbar-thumb{background:#2b3846;border-radius:9px}.brand{border-bottom:1px solid var(--line);padding:14px 18px 12px}.brand h1{letter-spacing:-.01em;margin:0;font-size:17px}.brand__row{justify-content:space-between;align-items:center;gap:10px;display:flex}.brand__row a{color:#bae6fd;font-size:10.5px;text-decoration:none}.brand__row a:hover{color:#fff}.brand p{color:var(--muted);margin:4px 0 0;font-size:11.5px}.block{border-bottom:1px solid var(--line);padding:10px 18px}.block h2{color:var(--muted);letter-spacing:.02em;margin:0 0 10px;font-size:12px;font-weight:600}.meta{color:var(--text);word-break:break-all;margin:10px 0 0;font-size:11.5px;line-height:1.5}.meta span{color:var(--muted)}.meta.warn{color:#fcd34d;background:#3a331d;border-radius:6px;padding:8px 10px}.overlap-readout{border:1px solid var(--line);background:#0f172a6b;border-radius:6px;margin-top:10px;padding:8px 9px;font-size:11px}.overlap-button{margin-top:10px}.overlap-title,.overlap-row{grid-template-columns:1fr auto;align-items:center;gap:8px;display:grid}.overlap-title{color:var(--muted);margin-bottom:5px;font-weight:600}.overlap-loading{color:#7dd3fc;grid-column:2;font-weight:400}.overlap-row{color:var(--muted);font-variant-numeric:tabular-nums;padding:3px 0}.overlap-row strong{color:var(--text)}.overlap-row.has-overlap span{color:#fbbf24}.ipr-tag{color:#405d78;font-variant-numeric:tabular-nums;pointer-events:none;background:#d2e5f5eb;border:1px solid #8eb6db;place-items:center;width:22px;height:22px;font-size:15px;font-weight:700;display:grid;transform:rotate(45deg)}.ipr-tag span{transform:rotate(-45deg)}.ipr-progress-layer,.stage__progress{pointer-events:none;place-items:center;display:grid;position:absolute;inset:0}.stage__progress{z-index:30}.stage__tray-freeze{z-index:29;object-fit:fill;cursor:wait;pointer-events:auto;background:radial-gradient(120% 92% at 50% 44%,#27364e 0%,#1c2839 66%,#16202e 100%);width:100%;height:100%;display:block;position:absolute;inset:0}.ipr-progress{color:#d7efff;letter-spacing:.02em;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:linear-gradient(110deg,#121f33f0,#1f3854f5);border:1px solid #60a5fa94;border-radius:12px;align-items:center;gap:11px;padding:11px 17px;font-size:13px;font-weight:650;display:flex;box-shadow:0 8px 28px #00000047,0 0 22px #38bdf82e}.error{color:#fca5a5;background:#3a1d1d;border-radius:6px;margin:10px 0 0;padding:8px 10px;font-size:11.5px;line-height:1.5}button,select,input[type=number]{color:var(--text);font-family:inherit;font-size:12px}button{cursor:pointer;border:1px solid var(--line);background:var(--panel-2);border-radius:7px;padding:8px 10px;transition:border-color .12s,background .12s}button:hover:not(:disabled){background:#202b38;border-color:#3a4a5c}button:disabled{opacity:.4;cursor:not-allowed}button.wide{width:100%;margin-top:8px;display:block}.arrange-pair{gap:6px;margin-top:8px;display:flex;position:relative}.arrange-pair button{flex:1;padding:8px 6px}.arrange-progress{z-index:2;color:#d7efff;letter-spacing:.02em;pointer-events:none;background:linear-gradient(110deg,#16263df0,#1f3854f5);border:1px solid #60a5fa8c;border-radius:8px;justify-content:center;align-items:center;gap:9px;font-size:12px;font-weight:650;display:flex;position:absolute;inset:-2px;box-shadow:0 0 18px #38bdf829,inset 0 0 12px #60a5fa14}.arrange-spinner{border:2px solid #7dd3fc;border-color:#7dd3fc #38bdf8 #7dd3fc38 #7dd3fc38;border-radius:50%;width:20px;height:20px;animation:.72s linear infinite arrange-spin;position:relative;box-shadow:0 0 9px #38bdf873}.arrange-spinner:after{content:"";border:2px solid #0000;border-bottom-color:#c4b5fd;border-radius:50%;animation:.52s linear infinite reverse arrange-spin;position:absolute;inset:4px}@keyframes arrange-spin{to{transform:rotate(1turn)}}button.primary{background:var(--accent-dim);color:#d6f3ff;border-color:#17607e}button.danger{color:#fca5a5}.project-row{grid-template-columns:1fr 1fr;gap:6px;display:grid}.project-row>button{min-width:0}.project-file{min-width:0;display:grid;position:relative}.project-file input{opacity:0;cursor:pointer;position:absolute;inset:0}.project-file span{text-overflow:ellipsis;white-space:nowrap;cursor:pointer;border:1px solid var(--line);background:var(--panel-2);min-width:0;color:var(--text);border-radius:7px;place-items:center;padding:8px 6px;display:grid;overflow:hidden}.project-file:hover span{background:#202b38;border-color:#3a4a5c}.project-file.is-disabled{opacity:.4;pointer-events:none}.filebtn,.scanfile{display:block;position:relative}.filebtn input,.scanfile input{opacity:0;cursor:pointer;position:absolute;inset:0}.filebtn span,.scanfile span{text-align:center;background:var(--panel-2);color:var(--accent);text-overflow:ellipsis;white-space:nowrap;border:1px dashed #35485c;border-radius:8px;padding:10px;display:block;overflow:hidden}.filebtn.is-on span,.scanfile.is-on span{border-color:var(--accent);background:#10303e;border-style:solid}.wizard{gap:6px;display:grid}.wizard-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.wizard-row.upload-row{grid-template-columns:repeat(2,minmax(0,1fr))}.wizard button.wide{margin-top:0;padding:8px 3px}.wizard .filebtn,.wizard .scanfile{display:grid}.wizard .filebtn span,.wizard .scanfile span{place-items:center;padding:8px 6px;display:grid}.archcol{flex-direction:column;gap:4px;min-width:0;display:flex}.mdarches{min-width:0}.mdarches button{min-width:0;padding:8px 3px;font-size:11px}.segmented{grid-template-columns:1fr 1fr;gap:6px;margin-top:6px;display:grid}.bondrow,.pairrow{grid-template-columns:1fr 1fr;gap:6px;margin-top:8px;display:grid}.trayrow{grid-template-columns:repeat(2,minmax(0,1fr))}.bondrow button.wide,.pairrow button.wide{margin-top:0}.segmented button.is-on{background:var(--accent-dim);color:#d6f3ff;border-color:#17607e}.segmented button.is-parked{color:#5f6b74}.segmented button.is-parked.is-on{color:#9fb4c0}.placementlist{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.bracketlist{grid-template-columns:repeat(3,1fr);gap:6px;margin:12px 0 0;padding:0;list-style:none;display:grid}.bracketlist li{display:grid}.bracketlist button{text-align:center;width:100%;padding:8px 4px;line-height:1.4}.bracketlist strong{font-size:12px}.bracketlist button.is-on{border-color:var(--accent);background:#10303e}.tag{letter-spacing:.06em;background:var(--accent);color:#04222e;border-radius:4px;padding:1px 5px;font-size:9.5px;font-style:normal}.tag--warn{color:#f0d68a;background:#4a3c12}.gauge-tag{font-variant-numeric:tabular-nums;color:#bef264;white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;background:#17250ae6;border:1px solid #4d6b16;border-radius:3px;padding:1px 4px;font-size:11px}.palette{grid-template-columns:repeat(8,1fr);gap:3px;display:grid}.palette__tooth{color:var(--muted);border-radius:5px;padding:6px 0;font-size:10.5px}.palette__tooth.is-anterior{color:var(--text)}.palette__tooth.is-placed{background:#16301f;border-color:#2d6a4a}.palette__tooth.is-segmented{border-bottom-width:3px}.palette__tooth.is-active{border-color:var(--accent);color:#d6f3ff;background:#10303e}.placementlist button{text-align:left;align-items:center;gap:8px;width:100%;display:flex}.placementlist strong{min-width:26px}.placementlist span{color:var(--muted);flex:1;font-size:11px}.placementlist button.is-on{background:#302713;border-color:#b58a12}.placementlist .empty{color:var(--muted);font-size:11.5px;line-height:1.6}.dot{border-radius:50%;flex:none;width:8px;height:8px}.dot--ok{background:var(--ok)}.dot--warn{background:var(--warn)}.dot--unknown{background:#4a5a6b}.field{margin-bottom:12px;display:block}.field__head{justify-content:space-between;align-items:baseline;margin-bottom:3px;display:flex}.field__label{color:var(--muted);font-size:11.5px}.field__value{align-items:baseline;gap:3px;display:flex}.field__value input{text-align:right;border:1px solid var(--line);background:#0e151d;border-radius:5px;width:58px;padding:2px 4px}.field__value em{color:var(--muted);font-size:10.5px;font-style:normal}.field__slider{width:100%;accent-color:var(--accent)}.field__hint{color:#d3a04a;margin:3px 0 0;font-size:10.5px;line-height:1.5}.select{align-items:center;gap:8px;margin-bottom:10px;display:flex}.select span{color:var(--muted);min-width:52px;font-size:11.5px}.select select{border:1px solid var(--line);background:#0e151d;border-radius:6px;flex:1;padding:6px}.check{color:var(--muted);align-items:center;gap:6px;margin-top:10px;font-size:11.5px;display:flex}.readout{grid-template-columns:auto 1fr;gap:4px 10px;margin:12px 0 0;font-size:11.5px;display:grid}.readout dt{color:var(--muted)}.readout dd{font-variant-numeric:tabular-nums;margin:0}.readout dd.is-warn{color:var(--warn)}.stage,.review__stage{background:radial-gradient(120% 92% at 50% 44%,#27364e 0%,#1c2839 66%,#16202e 100%);min-width:0;position:relative}.stage__viewport{position:absolute;inset:0;overflow:hidden}.stage__viewport-canvas{inset:0;width:100%!important;height:100%!important;position:absolute!important}.stage__model-preview{z-index:4;aspect-ratio:4/3;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background:#0a121db8;border:1px solid #67e8f9ad;border-radius:12px;width:clamp(220px,27vw,360px);padding:0;position:absolute;bottom:16px;left:16px;overflow:hidden;box-shadow:0 12px 32px #00000061}.stage__model-preview:active{cursor:grabbing}.stage__model-preview-canvas{pointer-events:none;inset:0;width:100%!important;height:100%!important;position:absolute!important}.stage__model-preview-canvas canvas{pointer-events:none}.stage__model-preview:hover{border-color:#a5f3fc;box-shadow:0 12px 32px #0000006b,0 0 0 2px #67e8f92e}.stage__model-preview:focus-visible{outline-offset:2px;outline:2px solid #a5f3fc}.stage__model-preview-resize{z-index:2;width:20px;height:20px;position:absolute}.stage__model-preview-resize--nw{cursor:nwse-resize;border-top:2px solid #a5f3fce0;border-left:2px solid #a5f3fce0;border-radius:7px 0 0;top:3px;left:3px}.stage__model-preview-resize--ne{cursor:nesw-resize;border-top:2px solid #a5f3fce0;border-right:2px solid #a5f3fce0;border-radius:0 7px 0 0;top:3px;right:3px}.stage__model-preview-resize--sw{cursor:nesw-resize;border-bottom:2px solid #a5f3fce0;border-left:2px solid #a5f3fce0;border-radius:0 0 0 7px;bottom:3px;left:3px}.stage__model-preview-resize--se{cursor:nwse-resize;border-bottom:2px solid #a5f3fce0;border-right:2px solid #a5f3fce0;border-radius:0 0 7px;bottom:3px;right:3px}.stage__plane-prompt{z-index:20;color:#facc15;letter-spacing:.01em;pointer-events:none;background:#0f172ae0;border:1px solid #38bdf88c;border-radius:999px;padding:8px 14px;font-size:18px;font-weight:700;position:absolute;top:18px;left:50%;transform:translate(-50%);box-shadow:0 5px 18px #0000003d}.viewtools{z-index:5;-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);background:#101b2dd1;border:1px solid #4b6180b8;border-radius:12px;flex-direction:column;gap:8px;padding:5px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%);box-shadow:0 5px 18px #04091147}.viewtools__stations{gap:8px;display:flex}.modelviews{border-top:1px solid #5b718f73;grid-template-columns:repeat(3,1fr);gap:4px;padding-top:5px;display:grid}.modelview__button{color:#aebfd0;background:#ffffff08;border-color:#0000;border-radius:6px;min-width:0;padding:5px 8px;font-size:11px;font-weight:600}.modelview__button:hover:not(.is-on){color:#e5eef7;background:#263b55;border-color:#55769c}.modelview__button.is-on{color:#e4f8ff;background:#19485f;border-color:#55c5ee}.viewtool__button{background:0 0;border-color:#0000;border-radius:8px;width:52px;height:52px;padding:3px;overflow:hidden}.viewtool__button img{filter:brightness(1.55)contrast(1.18);object-fit:cover;-webkit-user-select:none;user-select:none;pointer-events:none;border-radius:5px;width:100%;height:100%;display:block}.viewtool__button--flip,.viewtool__button--compare{place-items:center;display:grid}.viewtool__button--compare{margin-left:8px}.viewtool__button--flip svg,.viewtool__button--compare svg{fill:none;stroke:#b9d7ee;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;pointer-events:none;width:30px;height:30px}.viewtool__button:hover:not(:disabled):not(.is-on){background:#263b55;border-color:#55769c}.viewtool__button.is-on,.viewtool__button.is-on:hover:not(:disabled){background:#19485f;border-color:#55c5ee;box-shadow:0 0 0 1px #55c5ee4d,0 0 10px #55c5ee1a}.viewtool__button:disabled{opacity:.44}.stage__axis{background:#0b1119;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;gap:1px;display:grid;position:absolute;inset:0;overflow:hidden}.stage__axis-cell{background:#1c2839;min-width:0;min-height:0;position:relative}.stage__axis-canvas{pointer-events:none;inset:0;width:100%!important;height:100%!important;position:absolute!important}.stage__axis-canvas canvas{pointer-events:none}.stage__axis-labels{pointer-events:none;z-index:2;grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;display:grid;position:absolute;inset:0}.stage__axis-labels span{letter-spacing:.02em;color:#c5d4e4;text-shadow:0 1px 2px #000000a6;place-self:start;padding:8px 10px;font-size:11px;font-weight:600}.stage__axis-readout{color:#eef4fb;text-shadow:0 1px 3px #000c;pointer-events:none;z-index:3;margin-left:-12px;font-size:12px;font-weight:600;position:absolute;top:50%;left:50%;transform:translate(-100%,6px)}.stage__axis-step{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:3;background:#10161edb;border-radius:8px;align-items:center;gap:4px;margin:6px 8px 0 0;padding:3px 4px;display:flex;position:absolute;top:50%;right:0}.stage__axis-step button{padding:1px 6px;font-size:11px;line-height:1.4}.stage__axis-step b{text-align:center;color:#eef4fb;font-variant-numeric:tabular-nums;min-width:22px;font-size:11px;font-weight:600}.stage__hint{pointer-events:none;text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.stage__hint h2{margin:0 0 8px;font-size:16px;font-weight:600}.stage__hint p{color:var(--muted);margin:0;font-size:12px;line-height:1.7}.archbuttons{grid-template-columns:1fr 1fr;gap:6px;margin-top:8px;display:grid}.archbuttons button{width:100%}.archbuttons .overlap-button{margin-top:0}.archbuttons button.is-on{border-color:var(--accent);color:#d6f3ff;background:#10303e}.floater{border:1px solid var(--line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:4;background:#10161edb;border-radius:10px;padding:10px 12px 11px;position:absolute;box-shadow:0 8px 24px #00000059}.floater .archdialog__head,.floater .nudge__head{background:#303f54b8;border-bottom:1px solid #5b718f73;border-radius:9px 9px 0 0;margin:-10px -12px 8px;padding:8px 12px}.archdialog{width:232px;top:14px;left:14px}.archdialog__head{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px;font-weight:600;display:flex}.archdialog__close{color:var(--muted);padding:0 5px;font-size:14px;line-height:1.1}.archdialog__forms{grid-template-columns:repeat(4,1fr);gap:4px;display:grid}.archdialog__forms button{white-space:nowrap;padding:5px 0;font-size:11px}.archdialog__forms button.is-on{border-color:var(--accent);color:#d6f3ff;background:#10303e}.archdialog__body{align-items:center;gap:12px;margin-top:10px;display:flex}.archdialog__pad{flex:none;grid-template-rows:repeat(3,22px);grid-template-columns:repeat(3,22px);gap:2px;display:grid}.archdialog__pad button{padding:0;font-size:12px;line-height:1}.archdialog__pad button:first-child{grid-area:1/2}.archdialog__pad button:nth-child(2){grid-area:2/1}.archdialog__pad button:nth-child(3){grid-area:2/3}.archdialog__pad button:nth-child(4){grid-area:3/2}.archdialog__pad-home{color:var(--muted);grid-area:2/2}.archdialog__sliders{flex-direction:column;flex:1;gap:7px;min-width:0;display:flex}.archdialog__sliders label{color:var(--muted);flex-direction:column;gap:2px;font-size:11px;display:flex}.archdialog__sliders em{color:#d6e6f5;font-variant-numeric:tabular-nums;font-style:normal}.archdialog__sliders label span{align-items:baseline;gap:6px;display:flex}.archdialog__sliders i{color:#6f8394;font-variant-numeric:tabular-nums;margin-left:auto;font-size:10px;font-style:normal}.archdialog__sliders input[type=range]{width:100%;margin:0}.archdialog__slots{border-top:1px solid var(--line);color:var(--muted);align-items:center;gap:4px;margin-top:9px;padding-top:8px;font-size:11px;display:flex}.archdialog__slots span{flex:1;align-items:baseline;gap:6px;min-width:0;display:flex}.archdialog__slots em{color:#d6e6f5;font-variant-numeric:tabular-nums;font-style:normal}.archdialog__slots button{width:22px;padding:3px 0;font-size:12px;line-height:1}.archdialog__slots--position{border-top:0;margin-top:0;padding-top:5px}.archdialog__read{color:var(--muted);font-variant-numeric:tabular-nums;margin:9px 0 0;font-size:10.5px;line-height:1.6}.movedialog,.brktdialog{width:216px;top:14px;right:14px}.nudge__head{justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:12px;font-weight:600;display:flex}.nudge__reset{color:var(--muted);padding:2px 6px;font-size:10px;font-weight:400}.nudge__close{color:var(--muted);padding:0 5px;font-size:14px;line-height:1.1}.nudge__reset--wide{width:100%;margin-top:8px;padding:5px 0}.movedialog__resets{gap:6px;margin-top:8px;display:flex}.movedialog__resets button{flex:1;padding:5px 3px}.movedialog__axes{margin-top:0}.nudge__axis{grid-template-columns:1fr auto 22px 22px;align-items:center;gap:4px;margin-bottom:3px;display:grid}.nudge__axis span{color:var(--muted);font-size:10.5px}.nudge__axis em{color:#d6e6f5;font-variant-numeric:tabular-nums;font-size:11px;font-style:normal}.nudge__axis--reading{border-top:1px solid var(--line);margin-top:6px;padding-top:6px}.nudge__axis--reading em{text-align:right;grid-column:2/5}.nudge__axis button{padding:1px 0;font-size:12px;line-height:1.2}.nudge__hint{color:var(--muted);margin:9px 0 0;font-size:10.5px;line-height:1.5}.nudge__hint.is-warn{color:var(--warn)}.contact-burst{pointer-events:none;width:0;height:0;display:block;position:relative}.contact-burst__spark,.contact-burst__ring,.contact-burst__flash{pointer-events:none;display:block;position:absolute;top:0;left:0}.contact-burst__spark{background:var(--burst-colour);width:6px;height:6px;box-shadow:0 0 3px #fff, 0 0 10px var(--burst-colour);animation:contact-burst-spark .38s cubic-bezier(.08, .82, .18, 1) var(--burst-delay) both;border-radius:50%;margin:-3px}.contact-burst__ring{border:3px solid #fde68a;border-radius:50%;width:14px;height:14px;margin:-7px;animation:.34s ease-out both contact-burst-ring;box-shadow:0 0 12px #facc15}.contact-burst__flash{background:#fff7c2;border-radius:50%;width:18px;height:18px;margin:-9px;animation:.16s ease-out both contact-burst-flash;box-shadow:0 0 12px #fff,0 0 24px #facc15}@keyframes contact-burst-spark{0%{opacity:0;transform:translate(0)scale(.2)}18%{opacity:1}to{opacity:0;transform:translate(var(--burst-x), var(--burst-y)) scale(.3)}}@keyframes contact-burst-ring{0%{opacity:.95;transform:scale(.35)}to{opacity:0;transform:scale(3.4)}}@keyframes contact-burst-flash{0%{opacity:1;transform:scale(.2)}to{opacity:0;transform:scale(1.8)}}.tooth-tag{color:#cfe0f0;font-family:var(--font);font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;pointer-events:none;white-space:nowrap;background:#0a1016d1;border:1px solid #2f3f50;border-radius:4px;padding:1px 5px;font-size:10px;display:inline-block}.tooth-tag--on{color:#ffe6a3;border-color:#d8a01a}.toothbadge{font-family:var(--font);-webkit-user-select:none;user-select:none;position:relative}.toothbadge__dot{border:1.5px solid var(--line);color:#cfe0f0;width:18px;height:18px;font-family:var(--font);font-variant-numeric:tabular-nums;background:#0a1016db;border-radius:50%;place-items:center;padding:0;font-size:8px;font-weight:600;line-height:1;display:grid}.toothbadge__dot.is-on{color:#fff;background:#0e6f96;border-width:2px;border-color:#7ad4ff;width:21px;height:21px;font-size:9px;font-weight:700;box-shadow:0 0 0 2px #7ad4ff59,0 2px 7px #0000008c}.crowding{border:1px solid var(--line);background:#ffffff08;border-left:3px solid #3f8f5f;border-radius:6px;flex-direction:column;gap:2px;margin:8px 0 0;padding:8px 10px;display:flex}.crowding.is-off{border-left-color:#c08a2e}.crowding strong{color:#e8eef4;font-variant-numeric:tabular-nums;font-size:14px}.crowding span{color:#8b97a1;font-variant-numeric:tabular-nums;font-size:11px}.iprrows{grid-template-columns:1fr 1fr;gap:4px;margin-top:8px;display:grid}.iprrow{border:1px solid var(--line);color:#b6c2cc;border-radius:5px;justify-content:space-between;align-items:center;gap:6px;padding:3px 6px;font-size:11px;display:flex}.iprrow span{font-variant-numeric:tabular-nums;flex-direction:column;line-height:1.3;display:flex}.iprrow em{color:#7f8b94;font-size:10px;font-style:normal}.iprrow input{border:1px solid var(--line);color:#e8eef4;width:44px;font-family:var(--font);font-variant-numeric:tabular-nums;text-align:right;background:#00000040;border-radius:4px;padding:2px 4px;font-size:11px}.setuprows{gap:4px;margin-top:8px;display:grid}.setuprow{align-items:stretch;gap:4px;display:flex}.setuprow__pick{text-align:left;flex:1;justify-content:space-between;align-items:baseline;gap:6px;min-width:0;padding:3px 6px;font-size:11px;display:flex}.setuprow__seat{flex:none;padding:3px 7px;font-size:10px}.setuprow__pick.is-on{background:var(--accent-dim);color:#d6f3ff;border-color:#17607e}.setuprow__state{color:#7f8b94;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:10px}.setuprow[data-settled=no] .setuprow__state{color:#e0b055}.setuprow__pick.is-on .setuprow__state{color:#9fd8ef}.toothbadge__picker{border:1px solid var(--line);background:#0d141cf5;border-radius:6px;grid-template-columns:repeat(5,1fr);gap:3px;padding:4px;display:grid;position:absolute;top:24px;left:50%;transform:translate(-50%);box-shadow:0 6px 17px #00000080}.toothbadge__picker button{font-family:var(--font);font-variant-numeric:tabular-nums;border-radius:4px;padding:4px;font-size:8px}.toothbadge__picker button.is-on{border-color:var(--accent);color:#d6f3ff;background:#10303e}.slice-workspace{background:#172033;grid-template-columns:minmax(0,1fr) 290px;display:grid;position:absolute;inset:0}.slice-workspace__canvas{min-width:0;min-height:0}.slice-workspace__canvas canvas{display:block}.slice-workspace--empty{grid-template-columns:1fr;place-content:center;justify-items:center;gap:12px}.slice-inspector{border-left:1px solid var(--line);background:#141d2bf5;overflow-y:auto}.slice-inspector__head{z-index:2;border-bottom:1px solid var(--line);background:var(--panel-2);justify-content:space-between;align-items:center;min-height:44px;padding:0 12px;display:flex;position:sticky;top:0}.slice-inspector__head button{color:var(--muted);cursor:pointer;background:0 0;border:0;font-size:22px}.slice-tabs{grid-template-columns:1fr 1fr;gap:6px;padding:10px 10px 0;display:grid}.slice-tabs button,.slice-actions button{border:1px solid var(--line);background:var(--panel);min-height:30px;color:var(--muted);cursor:pointer;border-radius:6px}.slice-tabs button.is-on,.slice-actions button.is-on{border-color:var(--accent);background:var(--accent-dim);color:var(--text)}.slice-profile{border:1px solid var(--line);background:#233046b3;border-radius:7px;gap:3px;margin:10px;padding:10px;display:grid}.slice-profile b{color:#bae6fd;font-size:12px}.slice-profile small{color:var(--muted);line-height:1.45}.slice-inspector section{border-top:1px solid var(--line);padding:10px}.slice-inspector h3{margin:0 0 8px;font-size:12px}.slice-parts{gap:5px;display:grid}.slice-parts label{border:1px solid #0000;border-radius:5px;grid-template-columns:52px 1fr auto;align-items:center;gap:6px;min-height:33px;padding:3px 6px;display:grid}.slice-parts label.is-selected{background:#fbbf2414;border-color:#fbbf24}.slice-parts button{color:var(--text);text-align:left;cursor:pointer;background:0 0;border:0}.slice-parts span{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:9.5px;overflow:hidden}.slice-actions{grid-template-columns:1fr 1fr;gap:6px;margin-bottom:7px;display:grid}.slice-actions button:disabled{cursor:default;opacity:.45}.slice-ok{color:var(--ok)}.slice-layer-preview{aspect-ratio:71/36;border:1px solid var(--line);width:100%;height:auto;image-rendering:pixelated;background:#020617;border-radius:5px;display:block}.slice-layer-slider{width:100%;margin-top:8px}.slice-export-progress{z-index:12;background:#0c1420eb;border:1px solid #7dd3fc73;border-radius:10px;justify-items:center;gap:7px;min-width:190px;padding:18px 22px;display:grid;position:absolute;top:50%;left:calc(50% - 145px);transform:translate(-50%,-50%);box-shadow:0 14px 38px #00000073}.slice-export-progress small{color:var(--muted)}.slice-export-progress progress{width:150px;accent-color:var(--accent)}
