@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--brand-50:#eff6ff;--brand-100:#dbeafe;--brand-200:#bfdbfe;--brand-500:#3b82f6;--brand-600:#2563eb;--brand-700:#1d4ed8;--slate-50:#f8fafc;--slate-100:#f1f5f9;--slate-200:#e2e8f0;--slate-300:#cbd5e1;--slate-500:#64748b;--slate-600:#475569;--slate-700:#334155;--slate-900:#0f172a;--bg:#f7f9fc;--surface:#fff;--surface-2:var(--slate-50);--line:var(--slate-200);--line-strong:var(--slate-300);--fg:var(--slate-900);--body:var(--slate-700);--muted:var(--slate-500);--accent:var(--brand-600);--accent-hover:var(--brand-700);--accent-fg:#fff;--accent-soft:var(--brand-50);--accent-text:var(--brand-700);--select:#d9692a;--select-soft:#fbe6d8;--ok:#047857;--warn:#b45309;--danger:#dc2626;--danger-soft:#fef2f2;--accent-ink:var(--brand-600);--accent-line:var(--brand-100);--ok-fg:#fff;--icon:var(--slate-600);--hover:var(--slate-100);--hover-soft:var(--slate-50);--seg-on:#fff;--track:var(--slate-300);--off-bg:var(--slate-300);--off-fg:#fff;--off-text:var(--slate-300);--card-line:#e2e8f0cc;--row-line:var(--slate-100);--chip-fg:var(--slate-600);--glow:color-mix(in srgb, var(--brand-600) 6%, transparent);--view:var(--slate-100);--scrim:#0f172a73;--ring:0 0 0 4px #3b82f633;--shadow-card:0 8px 28px #0f172a0d;--shadow:0 1px 2px #0f172a0f, 0 8px 24px #0f172a1a;--shadow-btn:0 1px 2px #0f172a14;--shadow-seg:0 1px 2px #0f172a14, 0 0 0 1px #0f172a0a;--shadow-dialog:0 24px 48px -12px #0f172a40;--tap:44px;--tap-min:40px;--radius:12px;--radius-card:16px;--font:"Inter Variable", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0e0f11;--surface:#17181b;--surface-2:#1e1f23;--line:#2b2d32;--line-strong:#3d4047;--fg:#f3f4f6;--body:#d1d5db;--muted:#9ca3af;--accent:var(--brand-600);--accent-hover:var(--brand-700);--accent-fg:#fff;--accent-soft:#3b82f629;--accent-text:#93c5fd;--accent-ink:#60a5fa;--accent-line:#3b82f652;--select:#f08a45;--select-soft:#40281a;--ok:#34d399;--ok-fg:#052e1f;--warn:#fbbf24;--danger:#f87171;--danger-soft:#f871711f;--icon:#c4c8cf;--hover:#26282c;--hover-soft:#1e1f23;--seg-on:#2e3035;--track:#3d4047;--off-bg:#2b2d32;--off-fg:#6b7079;--off-text:#4b4f57;--card-line:#2b2d32;--row-line:#222428;--chip-fg:#c4c8cf;--glow:color-mix(in srgb, var(--brand-600) 12%, transparent);--view:#1c1d21;--scrim:#0009;--ring:0 0 0 4px #3b82f659;--shadow-card:0 8px 28px #0000004d;--shadow:0 1px 2px #0006, 0 8px 24px #00000073;--shadow-btn:none;--shadow-seg:0 1px 2px #0006;--shadow-dialog:0 24px 48px -12px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#0e0f11;--surface:#17181b;--surface-2:#1e1f23;--line:#2b2d32;--line-strong:#3d4047;--fg:#f3f4f6;--body:#d1d5db;--muted:#9ca3af;--accent:var(--brand-600);--accent-hover:var(--brand-700);--accent-fg:#fff;--accent-soft:#3b82f629;--accent-text:#93c5fd;--accent-ink:#60a5fa;--accent-line:#3b82f652;--select:#f08a45;--select-soft:#40281a;--ok:#34d399;--ok-fg:#052e1f;--warn:#fbbf24;--danger:#f87171;--danger-soft:#f871711f;--icon:#c4c8cf;--hover:#26282c;--hover-soft:#1e1f23;--seg-on:#2e3035;--track:#3d4047;--off-bg:#2b2d32;--off-fg:#6b7079;--off-text:#4b4f57;--card-line:#2b2d32;--row-line:#222428;--chip-fg:#c4c8cf;--glow:color-mix(in srgb, var(--brand-600) 12%, transparent);--view:#1c1d21;--scrim:#0009;--ring:0 0 0 4px #3b82f659;--shadow-card:0 8px 28px #0000004d;--shadow:0 1px 2px #0006, 0 8px 24px #00000073;--shadow-btn:none;--shadow-seg:0 1px 2px #0006;--shadow-dialog:0 24px 48px -12px #0009;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html{font-family:var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;letter-spacing:-.006em}body{background:radial-gradient(900px 420px at 88% -14%, var(--glow), transparent 60%), var(--bg);color:var(--body);overscroll-behavior:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-size:15px;line-height:1.5}h1,h2,h3{text-wrap:balance;color:var(--fg);letter-spacing:-.015em;margin:0;line-height:1.25}p{margin:0}button,input,select{font:inherit;color:inherit;letter-spacing:inherit}:focus-visible{outline:2px solid var(--brand-500);outline-offset:2px;box-shadow:var(--ring)}.ic{flex:none}.mono{font-variant-numeric:tabular-nums}.app{flex-direction:column;height:100dvh;display:flex;position:relative;overflow:hidden}.topbar{z-index:10;min-height:56px;padding-block:max(6px, env(safe-area-inset-top,0px)) 6px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));background:var(--surface);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:10px;display:flex;position:relative}.brand{color:var(--fg);min-height:var(--tap);border-radius:var(--radius);cursor:pointer;background:0 0;border:0;align-items:center;gap:10px;padding:0 4px;display:flex}.brand .mark{background:linear-gradient(to bottom right, var(--brand-500), var(--brand-700));border-radius:10px;flex:none;place-items:center;width:32px;height:32px;display:grid;box-shadow:0 6px 14px -4px #2563eb59}.brand .mark svg{fill:#fff;width:100%;height:100%}.brand .word{letter-spacing:-.025em;white-space:nowrap;font-size:16px;font-weight:700}.brand .dmd{color:var(--accent-ink)}.brand .cad{background:var(--accent-soft);color:var(--accent-text);letter-spacing:0;vertical-align:2px;border-radius:999px;margin-left:6px;padding:1px 7px;font-size:12px;font-weight:600}.case-chip{border-left:1px solid var(--line);flex-direction:column;min-width:0;padding-left:12px;display:flex}.case-chip b{color:var(--fg);font-size:14px;font-weight:600}.case-chip span{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.spacer{flex:1}.step-time{min-height:var(--tap-min);border:1px solid var(--line);background:var(--surface-2);min-width:0;max-width:300px;color:var(--muted);font:inherit;white-space:nowrap;cursor:pointer;border-radius:999px;flex:0 auto;align-items:center;gap:6px;padding:0 10px;font-size:12px;display:inline-flex}.step-time.st-new-a{animation:1.2s ease-out step-time-new-a}.step-time.st-new-b{animation:1.2s ease-out step-time-new-b}.step-time .ic{flex:none}.step-time .st-words{text-overflow:ellipsis;white-space:pre;overflow:hidden}.step-time .st-secs{color:var(--fg);font-variant-numeric:tabular-nums;font-weight:600}.step-time[aria-expanded=true]{border-color:var(--accent)}@keyframes step-time-new-a{0%{background:var(--accent-soft);border-color:var(--accent)}}@keyframes step-time-new-b{0%{background:var(--accent-soft);border-color:var(--accent)}}[data-layout=phone] .step-time .st-words{display:none}[data-layout=phone] .step-time{gap:4px;padding:0 8px}.step-time-list{top:calc(100% + 6px);right:max(16px, env(safe-area-inset-right,0px));background:var(--surface);width:min(340px,100% - 32px);max-height:min(560px,75vh);color:var(--body);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:8px;padding:12px 14px;font-size:13px;display:flex;position:absolute;overflow-y:auto}.step-time-list .st-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.step-time-list .st-head b{color:var(--fg);font-size:14px}.step-time-list .x{width:var(--tap-min);height:var(--tap-min);cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:8px;flex:none;place-items:center;margin:-8px -8px -8px 0;display:grid}.st-rows{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.st-rows li{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:5px 0;display:flex}.st-rows li:last-child{border-bottom:0}.st-rows li span:last-child{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--fg)}.step-time-list .lbl,.step-time-list .help{margin:0}.icon-btn{width:var(--tap);height:var(--tap);border-radius:var(--radius);color:var(--icon);cursor:pointer;background:0 0;border:0;flex:none;place-items:center;transition:background-color .15s ease-out,color .15s ease-out;display:inline-grid}.icon-btn:disabled{color:var(--off-text);cursor:default}@media (hover:hover){.icon-btn:not(:disabled):hover,.case-row:hover{background:var(--hover);color:var(--fg)}.step-btn:not(:disabled,[aria-current=step]):hover{background:var(--hover-soft);color:var(--fg)}.btn-primary:not(:disabled):hover{background:var(--accent-hover)}.btn-quiet:not(:disabled):hover{background:var(--hover-soft);color:var(--fg)}.vbtn:hover{color:var(--fg)}.vbtn[aria-pressed=true]:hover{color:var(--accent-text)}}.btn{min-height:var(--tap);border-radius:var(--radius);cursor:pointer;text-align:center;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-size:14px;font-weight:600;transition:background-color .15s ease-out,border-color .15s ease-out,color .15s ease-out;display:inline-flex}.btn-primary{background:var(--accent);color:var(--accent-fg);box-shadow:var(--shadow-btn)}.btn-primary:disabled{background:var(--off-bg);color:var(--off-fg);box-shadow:none}.btn-quiet{background:var(--surface);border-color:var(--line-strong);color:var(--body)}.btn-danger{background:var(--danger);color:#fff}.btn-danger:disabled{opacity:.5}.btn-quiet:disabled{color:var(--off-text)}.btn:disabled{cursor:default}.seg{background:var(--hover-soft);border:1px solid var(--line);border-radius:10px;gap:2px;padding:2px;display:flex}.seg button{min-height:var(--tap-min);cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:8px;flex:1;padding:0 10px;font-size:14px;font-weight:500;transition:background-color .15s ease-out,color .15s ease-out}.seg button[aria-pressed=true]{background:var(--seg-on);box-shadow:var(--shadow-seg);color:var(--fg)}.switch{min-height:var(--tap);cursor:pointer;color:var(--fg);justify-content:space-between;align-items:center;gap:16px;font-size:14px;font-weight:500;display:flex}.switch input{appearance:none;background:var(--track);cursor:pointer;border-radius:999px;flex:none;width:44px;height:24px;margin:0;transition:background-color .15s ease-out;position:relative}.switch input:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .15s ease-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 2px #0f172a33}.switch input:checked{background:var(--accent)}.switch input:checked:after{transform:translate(20px)}.switch small{color:var(--muted);font-size:12px;font-weight:400;display:block}.lbl{color:var(--body);margin-bottom:6px;font-size:12px;font-weight:600;display:block}.help{color:var(--muted);margin-top:6px;font-size:12px}.pages{flex:1;min-height:0;overflow-y:auto}.page{padding-block:28px max(48px, env(safe-area-inset-bottom,0px));padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px))}.wrap{flex-direction:column;gap:20px;max-width:820px;margin:0 auto;display:flex}.page h1{font-size:24px;font-weight:700}.page h2{font-size:16px;font-weight:600}.title-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.card{background:var(--surface);border:1px solid var(--card-line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:20px 24px}.how-to{color:var(--body);font-size:13px}.how-to summary{min-height:var(--tap);color:var(--accent-text);cursor:pointer;align-items:center;gap:6px;font-weight:600;list-style:none;display:inline-flex}.how-to summary::-webkit-details-marker{display:none}.how-to ol{flex-direction:column;gap:6px;margin:0 0 8px;padding-left:20px;display:flex}.practice-card{border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:12px;flex-direction:column;align-items:flex-start;gap:8px;padding:12px 14px;display:flex}.practice-head{align-items:center;gap:8px;width:100%;font-size:14px;display:flex}.practice-head>span:first-child{flex:1}.practice-tasks{flex-direction:column;gap:6px;width:100%;margin:0;padding:0;list-style:none;display:flex}.practice-task{width:100%;min-height:var(--tap);border:1px solid var(--line-strong);background:var(--surface);color:var(--body);font:inherit;text-align:left;cursor:pointer;border-radius:10px;align-items:flex-start;gap:10px;padding:8px 10px;font-size:13px;display:flex}.practice-task .tick{border:1.5px solid var(--line-strong);width:22px;height:22px;color:var(--muted);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:inline-flex}.practice-task.done{border-color:var(--line);color:var(--muted)}.practice-task.done .tick{background:var(--ok);border-color:var(--ok);color:var(--ok-fg)}.practice-done{color:var(--ok)}.field{width:100%;min-height:var(--tap);border-radius:var(--radius);border:1px solid var(--line-strong);background:var(--surface);color:var(--fg);font:inherit;padding:0 14px;font-size:16px}.field:focus-visible{border-color:var(--accent);box-shadow:var(--ring);outline:none}.field[aria-invalid=true]{border-color:var(--danger)}.grid2{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:16px;display:grid}.btn-row{flex-wrap:wrap;gap:10px;display:flex}.file-slot{flex-direction:column;gap:10px;min-width:0;transition:border-color .15s ease-out;display:flex}.file-slot.dragging{border-color:var(--accent);box-shadow:var(--ring)}.file-slot .picked{background:var(--surface-2);overflow-wrap:anywhere;border-radius:12px;align-items:flex-start;gap:10px;padding:12px;font-size:14px;display:flex}.file-slot .help{margin-top:0}.slot-busy{flex-direction:column;gap:8px;display:flex}.slot-busy .btn{align-self:flex-start}.slot-problem{background:var(--danger-soft);color:var(--danger);border-radius:12px;align-items:flex-start;gap:8px;padding:10px 12px;font-size:14px;display:flex}.slot-question{border:1px solid var(--line-strong);border-radius:12px;flex-direction:column;gap:8px;padding:12px;font-size:14px;display:flex}.stack{flex-direction:column;gap:16px;display:flex}.case-list{background:var(--surface);border:1px solid var(--card-line);border-radius:var(--radius-card);box-shadow:var(--shadow-card);flex-direction:column;display:flex;overflow:hidden}.case-row{border:0;border-bottom:1px solid var(--row-line);text-align:left;cursor:pointer;width:100%;min-height:68px;color:var(--body);background:0 0;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 20px;transition:background-color .15s ease-out;display:grid}.case-row:last-child{border-bottom:0}.case-row .thumb{border-radius:var(--radius);background:var(--accent-soft);width:44px;height:44px;color:var(--accent-ink);place-items:center;display:grid}.case-row b{color:var(--fg);font-size:15px;font-weight:600}.case-row .meta{color:var(--muted);font-size:13px;display:block}.case-item{border-bottom:1px solid var(--row-line);align-items:center;padding-right:8px;display:flex}.case-item:last-child{border-bottom:0}.case-item .case-row{border-bottom:0;flex:1;min-width:0;padding-right:8px}.case-file h2{font-size:17px}.case-file-name{background:var(--surface-2);overflow-wrap:anywhere;border-radius:12px;align-items:flex-start;gap:10px;padding:12px;font-size:14px;display:flex}.case-file-name small{color:var(--muted);font-size:12px;display:block}.banner{background:var(--accent-soft);color:var(--body);border-radius:var(--radius-card);flex-wrap:wrap;align-items:flex-start;gap:14px;padding:12px 14px;display:flex}.banner>svg{color:var(--accent-ink);flex:none}.banner .txt{flex:220px;min-width:0}.banner .txt b{color:var(--fg)}.case-row.broken .thumb{background:var(--danger-soft);color:var(--danger)}.chip{border:1px solid var(--line);background:var(--surface);color:var(--chip-fg);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 10px;font-size:12px;font-weight:500;display:inline-flex}.chip.go{background:var(--accent-soft);border-color:var(--accent-line);color:var(--accent-text);font-weight:600}.privacy{color:var(--muted);align-items:center;gap:10px;font-size:13px;display:flex}.build-line{color:var(--muted);flex-wrap:wrap;align-items:center;gap:8px 20px;font-size:12px;display:flex}.privacy a{color:var(--accent-ink);min-height:var(--tap-min);align-items:center;font-weight:500;text-decoration:none;display:inline-flex}.privacy a:hover{text-decoration:underline}.plain-list{gap:8px;margin:0;padding-left:20px;display:grid}.build-line a{color:var(--accent-ink);min-height:var(--tap-min);align-items:center;font-weight:500;text-decoration:none;display:inline-flex}.build-line a:hover{text-decoration:underline}.work{flex:1;grid-template-columns:200px minmax(0,1fr) 320px;min-height:0;display:grid}.rail{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;gap:2px;min-height:0;padding:12px 10px;display:flex;overflow-y:auto}.step-btn{min-height:var(--tap);text-align:left;color:var(--body);cursor:pointer;background:0 0;border:0;border-radius:8px;flex:none;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:10px;padding:4px 10px;font-size:14px;font-weight:500;transition:background-color .15s ease-out,color .15s ease-out;display:grid;position:relative}.step-btn .num{border:1.5px solid var(--line-strong);width:24px;height:24px;color:var(--muted);font-variant-numeric:tabular-nums;border-radius:50%;place-items:center;font-size:12px;font-weight:600;display:grid}.step-btn .sub{color:var(--muted);font-size:12px;font-weight:400;display:block}.step-btn.done .num{border-color:var(--ok);background:var(--ok);color:var(--ok-fg)}.step-btn.skipped .num{border-style:dashed}.step-btn[aria-current=step]{background:var(--accent-soft);color:var(--accent-text);font-weight:600}.step-btn[aria-current=step]:before{content:"";background:var(--accent);border-radius:0 999px 999px 0;width:4px;height:20px;position:absolute;top:50%;left:0;transform:translateY(-50%)}.step-btn[aria-current=step] .num{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}.step-btn:disabled{color:var(--muted);cursor:default}.step-btn:disabled .num{border-color:var(--line)}.rail-foot{color:var(--muted);margin-top:auto;padding:10px;font-size:12px}.viewport{background:var(--view);touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;min-width:0;min-height:0;position:relative;overflow:hidden}.viewer{position:absolute;inset:0}.viewer canvas{touch-action:none;display:block}.viewer-message{text-align:center;color:var(--muted);flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex;position:absolute;inset:0}.viewer-message b{color:var(--fg)}.viewer-message.covered{background:color-mix(in srgb, var(--view) 85%, transparent);color:var(--body);z-index:3}.vp-busy{z-index:4;background:var(--surface);width:min(320px,100% - 32px);color:var(--body);border:1px solid var(--line);box-shadow:var(--shadow);touch-action:manipulation;border-radius:16px;flex-direction:column;gap:10px;padding:18px 22px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.vp-busy .btn{align-self:flex-end}.busy-step{color:var(--muted);font-size:13px}.bar{background:var(--surface-2);border-radius:999px;height:8px;overflow:hidden}.bar i{background:var(--accent);transform-origin:0;width:100%;height:100%;transition:transform .2s linear;display:block;transform:scaleX(0)}.toast[hidden]{display:none}.toast{z-index:5;background:var(--fg);max-width:calc(100% - 32px);color:var(--bg);box-shadow:var(--shadow);pointer-events:none;border-radius:12px;padding:12px 18px;font-size:14px;position:absolute;bottom:72px;left:50%;transform:translate(-50%)}.practice{flex-direction:column;align-items:flex-start;gap:4px;display:flex}.color-fix{border-top:1px solid var(--line);flex-direction:column;gap:6px;margin-top:18px;padding-top:14px;display:flex}.color-fix h3{font-size:14px}.color-fix input[type=range]{width:100%}.color-fix>.btn{align-self:flex-start}.usual-card{border:1px solid var(--accent-line);background:var(--accent-soft);border-radius:12px;flex-direction:column;align-items:flex-start;gap:8px;margin-top:16px;padding:12px 14px;display:flex}.usual-card h3{font-size:14px}.usual-lines{flex-direction:column;gap:4px;margin:0;padding-left:18px;font-size:14px;display:flex}.practice .btn{margin-top:6px}.vp-hint{z-index:2;background:var(--surface);max-width:min(340px,100% - 24px);color:var(--body);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);align-items:center;gap:6px;padding:4px 4px 4px 12px;font-size:13px;display:flex;position:absolute;top:12px;left:12px}.vp-top{z-index:2;align-items:center;gap:8px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.vp-top .seg{background:var(--surface);box-shadow:var(--shadow);min-width:270px}.seg button .ic{vertical-align:-4px;margin-right:2px}.vp-top .seg button{white-space:nowrap;justify-content:center;align-items:center;gap:4px;display:inline-flex}.seg.paint button[aria-pressed=true].is-paint{color:var(--select);font-weight:600}.viewport.has-modes .vp-hint{top:68px}.vp-lasso{z-index:3;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);white-space:nowrap;gap:2px;padding:2px;display:flex;position:absolute;bottom:68px;left:50%;transform:translate(-50%)}.vp-lasso .close-loop{color:var(--select);font-weight:600}.vp-lasso .close-loop:disabled{color:var(--off-text)}.paint-ring{pointer-events:none;z-index:1;border:2px solid #fffffff2;border-radius:50%;outline:1px solid #00000073;display:none;position:absolute;top:0;left:0}.paint-ring[data-erase=true]{border-style:dashed}.paint-lasso{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.paint-lasso polyline{fill:none;stroke:var(--select);stroke-width:2.5px;stroke-linejoin:round;stroke-linecap:round}.paint-lasso .dots circle{fill:var(--select)}.paint-lasso circle.first{fill:#fff;stroke:var(--select);stroke-width:3px}.paint-lasso circle.first.ready{fill:var(--select)}.magnifier{border:3px solid var(--surface);box-shadow:var(--shadow);pointer-events:none;z-index:4;border-radius:50%;display:none;position:absolute;top:0;left:0}.paint-wait{z-index:2;border-radius:var(--radius);background:var(--surface);color:var(--body);box-shadow:var(--shadow);margin:0;padding:8px 14px;font-size:13px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.trim-tools{flex-direction:column;gap:14px;display:flex}.trim-tools .help{margin-top:0}.trim-tools .painted{color:var(--body);margin:0;font-size:14px;font-weight:600}.vp-alert{z-index:3;background:var(--surface);width:min(460px,100% - 24px);color:var(--danger);border:1px solid var(--danger);border-radius:var(--radius);box-shadow:var(--shadow);align-items:flex-start;gap:8px;margin:0;padding:8px 12px;font-size:13px;display:flex;position:absolute;top:12px;left:50%;transform:translate(-50%)}.case-chip .save-problem{color:var(--danger);font-weight:600}.vp-hint .x{width:var(--tap-min);height:var(--tap-min);cursor:pointer;color:var(--muted);background:0 0;border:0;border-radius:8px;flex:none;place-items:center;display:grid}.vp-contacts{z-index:2;background:var(--surface);max-width:min(360px,100% - 24px);color:var(--body);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:8px 12px;font-size:13px;position:absolute;top:12px;right:12px}.vp-contacts p{margin:0}.viewport.has-modes .vp-contacts{top:68px}[data-layout^=phone] .vp-contacts{max-width:none;padding:6px 10px;font-size:12px;left:12px}.vp-contacts.warn{border-color:var(--warn)}.vp-contacts.warn p:first-child{color:var(--warn);font-weight:500}.vp-contacts .contact-key{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 6px;margin-top:6px;font-size:12px;display:flex}.contact-key span{border-radius:3px;width:10px;height:10px;display:inline-block}.contact-key .k-overlap{background:#e5484d}.contact-key .k-touch{background:#2f6fe4;margin-left:6px}.contact-key .k-close{background:#8cc8ff;margin-left:6px}.ruler{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.ruler line{stroke:var(--brand-600);stroke-width:2.5px;stroke-linecap:round}.ruler circle{fill:#fff;stroke:var(--brand-600);stroke-width:3px}.ruler-label{z-index:1;pointer-events:none;background:var(--brand-600);color:#fff;font-variant-numeric:tabular-nums;white-space:nowrap;box-shadow:var(--shadow-btn);border-radius:999px;margin:0;padding:3px 9px;font-size:14px;font-weight:600;position:absolute;top:0;left:0}.ruler-label[hidden]{display:none}.step-tools{display:contents}.step-tools[hidden]{display:none}.measure-tools{flex-direction:column;gap:16px;display:flex}.measure-tools .ruler-row,.measure-tools .cut-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.measure-tools .ruler-line{color:var(--body);margin:4px 0}.measure-tools .ruler-line.value{color:var(--fg);font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.measure-cuts{flex-wrap:wrap;margin-bottom:8px}.measure-cuts button{white-space:nowrap;flex:auto}.measure-tools input[type=range]{width:100%}.vp-views,.vp-show{z-index:2;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);gap:2px;padding:2px;display:flex;position:absolute;bottom:12px}.vp-views{left:12px}.vp-show{right:12px}.vbtn{min-width:var(--tap-min);min-height:var(--tap-min);cursor:pointer;color:var(--body);background:0 0;border:0;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:13px;font-weight:500;transition:background-color .15s ease-out,color .15s ease-out;display:inline-flex}.vbtn[aria-pressed=true]{background:var(--accent-soft);color:var(--accent-text);font-weight:600}.vbtn[aria-pressed=false]{color:var(--muted)}.panel{background:var(--surface);border-left:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.panel-body{flex-direction:column;flex:1;gap:14px;min-height:0;padding:20px;display:flex;overflow-y:auto}.panel-body h2{font-size:18px;font-weight:700}.panel-body .lead{color:var(--muted);font-size:14px}.panel-foot{padding:12px 16px max(12px, env(safe-area-inset-bottom,0px));border-top:1px solid var(--line);flex:none;gap:8px;display:flex}.panel-foot .btn-primary{white-space:nowrap;flex:1;min-width:0;padding:0 14px}.panel-foot .btn-quiet:has(>.ic:only-child){width:var(--tap);padding:0}.panel-handle{display:none}.checks{flex-direction:column;gap:10px;margin:0;padding:0;font-size:14px;list-style:none;display:flex}.checks li{grid-template-columns:24px minmax(0,1fr);align-items:start;gap:10px;display:grid}.checks b{color:var(--fg);font-weight:600}.s-ok{color:var(--ok)}.s-wait,.s-note{color:var(--muted)}.s-warn{color:var(--warn)}.note{border-radius:var(--radius);background:var(--hover-soft);border:1px solid var(--line);color:var(--body);align-items:flex-start;gap:10px;padding:12px 14px;font-size:13px;display:flex}.note .ic{color:var(--muted)}.note.phone{background:var(--accent-soft);border-color:var(--accent-line)}.note.phone .ic{color:var(--accent-ink)}[data-layout=portrait] .work,[data-layout=phone] .work{grid-template-rows:auto minmax(0,1fr) minmax(0,40%);grid-template-columns:minmax(0,1fr)}[data-layout=phone] .work{grid-template-rows:auto minmax(0,1fr) minmax(0,48%)}[data-layout=phone] .work.collapsed{grid-template-rows:auto minmax(0,1fr) auto}[data-layout=portrait] .rail{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;gap:4px;padding:8px 12px;overflow:auto hidden}[data-layout=portrait] .step-btn{white-space:nowrap;grid-template-columns:24px auto}[data-layout=portrait] .step-btn[aria-current=step]:before{border-radius:999px 999px 0 0;width:20px;height:3px;top:auto;bottom:0;left:50%;transform:translate(-50%)}[data-layout=portrait] .step-btn .sub{display:none}[data-layout=portrait] .panel,[data-layout=phone] .panel{border-left:0;border-top:1px solid var(--line)}[data-layout=portrait] .panel-body{padding:16px 20px}[data-layout=phone] .rail{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;align-items:center;gap:4px;padding:4px 8px;overflow:hidden}.phone-step{text-align:center;flex:1;min-width:0}.phone-step b{color:var(--fg);font-size:16px;font-weight:600;display:block}.phone-step span{color:var(--muted);font-size:12px}[data-layout=phone] .panel-handle{min-height:var(--tap-min);width:100%;color:var(--muted);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;gap:6px;font-size:13px;font-weight:600;display:flex}[data-layout=phone] .work.collapsed .panel-body{display:none}[data-layout=phone] .panel-body{padding:4px 16px 16px}[data-layout=phone] .topbar{gap:4px}[data-layout=phone] .brand .word,[data-layout=phone] .not-phone,[data-layout=phone-sideways] .brand .word,[data-layout=phone-sideways] .not-phone{display:none}[data-layout=phone-sideways] .topbar{gap:4px;min-height:48px;padding-block:2px}[data-layout=phone-sideways] .work{grid-template-columns:minmax(0, 1fr) calc(300px + env(safe-area-inset-right,0px));grid-template-rows:auto minmax(0,1fr);grid-template-areas:"view rail""view panel"}[data-layout=phone-sideways] .viewport{grid-area:view}[data-layout=phone-sideways] .rail{border-right:0;border-left:1px solid var(--line);border-bottom:1px solid var(--line);padding:2px max(4px, env(safe-area-inset-right,0px)) 2px 4px;flex-direction:row;grid-area:rail;align-items:center;gap:4px;overflow:hidden}[data-layout=phone-sideways] .panel{padding-right:env(safe-area-inset-right,0px);grid-area:panel}[data-layout=phone-sideways] .panel-body{gap:10px;padding:12px 16px}[data-layout=phone] .vp-top .seg,[data-layout=phone-sideways] .vp-top .seg{min-width:0}[data-layout=phone] .vp-top .seg button,[data-layout=phone-sideways] .vp-top .seg button{padding:0 8px}[data-layout=phone-sideways] .vp-views{left:max(12px, env(safe-area-inset-left,0px))}[data-layout=phone-sideways] .vp-views,[data-layout=phone-sideways] .vp-show{bottom:max(12px, env(safe-area-inset-bottom,0px))}.overlay{background:var(--scrim);z-index:50;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);color:var(--body);border-radius:var(--radius-card);width:100%;max-width:480px;box-shadow:var(--shadow-dialog);flex-direction:column;gap:14px;max-height:calc(100% - 32px);padding:24px;display:flex;overflow-y:auto}.dialog h2{font-size:18px;font-weight:700}.steps-list{flex-direction:column;gap:2px;display:flex}.update-bar{padding-block:max(8px, env(safe-area-inset-top,0px)) 8px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));background:var(--accent);color:var(--accent-fg);flex-wrap:wrap;flex:none;align-items:center;gap:8px 12px;font-weight:700;display:flex}.update-bar .txt{flex:220px;min-width:0}.update-bar .btn{background:var(--accent-fg);color:var(--accent)}.update-bar .btn:disabled{opacity:.7;cursor:default}.update-bar .icon-btn{color:inherit}.update-bar+.topbar{padding-top:6px}.install-steps{grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:16px;display:grid}.install-steps .card{flex-direction:column;align-items:flex-start;gap:12px;display:flex}.fake-ui{background:var(--surface-2);height:120px;color:var(--fg);border-radius:12px;align-self:stretch;place-items:center;display:grid}.fake-ui .pill{background:var(--surface);white-space:nowrap;box-shadow:var(--shadow);border-radius:10px;align-items:center;gap:8px;padding:10px 14px;font-weight:600;display:inline-flex}.fake-ui .pill img{border-radius:6px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}.trim-tools .crumbs{align-self:flex-start}.hole-tools{flex-direction:column;gap:14px;display:flex}.hole-tools .help{margin:0}.hole-list{flex-direction:column;display:flex}.hole-row{min-height:var(--tap);border-bottom:1px solid var(--line);grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:4px 0;display:grid}.hole-row:last-child{border-bottom:0}.hole-name{min-height:var(--tap-min);color:var(--body);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0;font-size:14px}.hole-name b{color:var(--fg)}.hole-name .too-big{color:var(--danger)}.base-tools{flex-direction:column;gap:14px;display:flex}.base-tools .help{margin:4px 0 0}.base-tools .note .btn-row{margin-top:8px}.label-preview{border:1px solid var(--line);border-radius:var(--radius);flex-direction:column;gap:6px;padding:10px 12px;display:flex}.label-preview-row{grid-template-columns:56px 1fr;align-items:baseline;gap:12px;display:grid}.label-preview-row .help{margin:0}.label-preview-row b{letter-spacing:.04em;overflow-wrap:anywhere;flex-direction:column;display:flex}.label-tools .label-fill{margin-top:8px}.drain-holes{border-top:1px solid var(--line);flex-direction:column;gap:14px;padding-top:12px;display:flex}.stepper{align-items:center;gap:10px;display:flex}.stepper .val{text-align:center;font-variant-numeric:tabular-nums;min-width:72px;color:var(--fg);font-size:16px;font-weight:600}.stepper button{width:var(--tap);height:var(--tap);border:1.5px solid var(--line);background:var(--surface);cursor:pointer;color:var(--fg);border-radius:50%;font-size:20px;font-weight:700}.stepper button:disabled{color:var(--off-text);cursor:default}.base-tools input[type=range]{width:100%;height:var(--tap);accent-color:var(--accent);cursor:pointer;margin:0}.bite-tools{flex-direction:column;gap:12px;display:flex}.bite-tools p,.bite-tools ul{margin:0}.bite-tools .lbl{margin:4px 0 -4px}.bite-turns .btn,.bite-tools>.btn-row .btn{white-space:nowrap;flex:1 1 0}.btn-attention{background:var(--surface);border:2px solid var(--warn);color:var(--fg)}.btn-attention .ic{color:var(--warn)}.bite-tools>.btn-primary{width:100%}.bite-rows{flex-direction:column;gap:8px;display:flex}.bite-row-head{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.bite-row .lbl{margin:0;font-size:14px;font-weight:500}.bite-row .val{font-variant-numeric:tabular-nums;color:var(--fg);font-size:15px;font-weight:600}.bite-row input[type=range]{width:100%;height:var(--tap);accent-color:var(--accent);cursor:pointer;touch-action:pan-y;margin:0}.bite-row .help{margin:-4px 0 0;font-size:13px}.export-tools{flex-direction:column;gap:14px;display:flex}.export-tools .help{margin:4px 0 0}.export-tools .note{flex-wrap:wrap}.export-tools .note>span{flex:200px}.s-bad{color:var(--danger)}.file-out{border-bottom:1px solid var(--line);color:var(--body);grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 0;font-size:14px;display:grid}.file-out:last-child{border-bottom:0}.file-out .file-name{flex-direction:column;min-width:0;display:flex}.file-out b{color:var(--fg);overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-weight:500}.file-out .help{margin:0}.file-out .file-dl{width:var(--tap);padding:0}.file-out .file-print{flex:none;gap:6px;padding:0 12px}.note.warn{border-color:var(--warn)}.note.warn .ic{color:var(--warn)}.die-pending{flex-direction:column;gap:12px;display:flex}.tooth-chart{grid-template-columns:repeat(8,minmax(0,1fr));gap:4px;display:grid}.tooth-chart button{min-height:var(--tap);border:1.5px solid var(--line);background:var(--surface);color:var(--fg);font-variant-numeric:tabular-nums;cursor:pointer;border-radius:8px;font-size:15px;font-weight:600}.tooth-chart button.guess{border-style:dashed;border-color:var(--accent)}.tooth-chart button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.die-tools .stepper input[type=range]{flex:1;min-width:0}.die-tools .checks li{grid-template-columns:24px minmax(0,1fr) auto;align-items:center}.die-tools .die-remove{min-height:var(--tap)}.printer-in-use{border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.printer-in-use b{color:var(--fg);overflow-wrap:anywhere;font-size:16px}.printer-in-use .lbl{margin-bottom:2px}.printer-numbers{grid-template-columns:max-content 1fr;gap:6px 16px;margin:0;font-size:14px;display:grid}.printer-numbers dt{color:var(--body)}.printer-numbers dd{margin:0}.printer-numbers b{color:var(--fg);font-variant-numeric:tabular-nums;font-size:16px}.calib-preview{aspect-ratio:16/9;border-radius:var(--radius);background:var(--hover-soft);pointer-events:none;width:100%;max-height:320px;overflow:hidden}.calib-seg button{font-variant-numeric:tabular-nums;padding:0 4px;font-size:17px;font-weight:600}.calib-for b{color:var(--fg)}.calib-measure{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.calib-measure .field{font-variant-numeric:tabular-nums}.calib-measure .help{margin-top:6px}.calib-measure .bad{color:var(--danger)}.hinge-moves{flex-wrap:wrap;margin-bottom:8px}.hinge-moves button{white-space:nowrap;flex:auto}.hinge-angles{flex-direction:column;gap:8px;display:flex}.hinge-angles .lbl{margin:0}.hinge-angles p.hinge-side{margin:4px 0 0}.hinge-joint{flex-direction:column;gap:6px;display:flex}.hinge-angle{justify-content:space-between;align-items:center;gap:10px;display:flex}.hinge-angle .lbl{font-size:14px;font-weight:500}.hinge-tools .note .btn{white-space:normal}.note.quick-look{background:var(--accent-soft);border-color:var(--accent-line)}.note.quick-look .ic{color:var(--accent-ink)}.note.quick-look p{margin:0 0 6px}.note.quick-look .btn{margin-top:2px}.vp-quick{z-index:2;background:var(--accent-soft);border:1px solid var(--accent-line);color:var(--accent-ink);white-space:nowrap;box-shadow:var(--shadow);pointer-events:none;border-radius:999px;margin:0;padding:6px 12px;font-size:13px;font-weight:500;position:absolute;bottom:64px;left:50%;transform:translate(-50%)}.note.early-base{margin-top:12px}.note.early-base[data-state=ready] .ic{color:var(--accent-ink)}.quick-ready summary{min-height:var(--tap);cursor:pointer;align-items:center;gap:10px;list-style:none;display:flex}.quick-ready summary::-webkit-details-marker{display:none}.quick-ready summary:after{content:"Details";color:var(--accent);margin-left:auto;font-size:14px}.quick-ready[open] summary:after{content:"Hide"}.quick-ready>.checks{margin:4px 0 12px}.rail .show-all{margin-top:8px}[data-layout=portrait] .rail .show-all{white-space:nowrap;margin:0 0 0 auto}.lbl-row{align-items:center;gap:2px;margin-bottom:6px;display:flex}.lbl-row .lbl,.card-title{margin-bottom:0}.card-title h2{margin:0}.lbl-row .lbl-val{font-variant-numeric:tabular-nums;color:var(--fg);margin-left:auto;font-size:15px;font-weight:600}.info-tip{width:var(--tap);height:var(--tap);color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:50%;flex:none;place-items:center;margin:-14px -10px;padding:0;display:inline-grid}.info-tip[aria-expanded=true]{color:var(--accent-text)}.info-tip:focus-visible{outline:2px solid var(--accent);outline-offset:-8px}.help.info-text{color:var(--body);margin:0 0 8px}.switch-field .help.info-text{margin:-6px 0 6px}.switch .switch-name{cursor:pointer}.switch .switch-gap{cursor:pointer;flex:1;align-self:stretch}.switch:has(.info-tip){gap:4px}.more{flex-direction:column;gap:14px;display:flex}.more-toggle{align-self:flex-start}.more-body{border-left:3px solid var(--line);flex-direction:column;gap:14px;padding-left:12px;display:flex}.more-body[hidden]{display:none}.made-head{flex-wrap:wrap;align-items:center;gap:2px;display:inline-flex}.made-line .help.info-text{margin:4px 0 0}
