.ptui{font-feature-settings:"palt";--mono:var(--font-mono,"JetBrains Mono",monospace);--r-card:10px;--r-ctl:6px;--bd:var(--line)}.ptui a{color:inherit;text-decoration:none}.ptui button{font-family:inherit;cursor:pointer;border:none;background:none}.ptui .wrap{max-width:1080px;margin:0 auto;padding:36px 24px}.ptui .wrap-narrow{max-width:860px}.ptui .eyebrow{font-size:11.5px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);font-family:var(--mono)}.ptui .crumb{font-size:13px;color:var(--ink-3);display:inline-flex;align-items:center;gap:6px;cursor:pointer}.ptui .crumb:hover{color:var(--accent)}.ptui .btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:700;font-size:14px;padding:10px 18px;border-radius:var(--r-ctl);transition:background .12s,border-color .12s,color .12s;letter-spacing:.01em}.ptui .btn-primary{background:var(--accent);color:#fff}.ptui .btn-primary:hover{background:var(--accent-deep)}.ptui .btn-primary:disabled{opacity:.55;cursor:not-allowed}.ptui .btn-ghost{color:var(--ink);border:1px solid var(--ink-4);background:var(--paper)}.ptui .btn-ghost:hover{background:var(--bg)}.ptui .btn-ghost:disabled{opacity:.5;cursor:not-allowed}.ptui .btn-lg{padding:13px 24px;font-size:15px}.ptui .btn-sm{padding:8px 14px;font-size:13px}.ptui{-webkit-text-size-adjust:100%}.ptui .ce,.ptui .ctext,.ptui .ctxt,.ptui .ex-p,.ptui .q-text{overflow-wrap:anywhere;word-break:break-word}.ptui :focus-visible{outline:2px solid var(--accent);outline-offset:2px}.ptui .pill{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;padding:3px 9px;border-radius:4px;letter-spacing:.02em}.ptui .pill-free{background:var(--green-soft);color:#0c7a5e}.ptui .pill-pro{background:var(--amber-soft);color:var(--amber)}.ptui .pill-done{background:var(--accent-soft);color:var(--accent-deep)}.ptui .pill-new{background:var(--ink);color:#fff}.ptui .ex-hero{background:linear-gradient(135deg,var(--hero-bg) 0,var(--hero-bg-2) 100%);color:#fff;border-bottom:1px solid hsla(0,0%,100%,.06)}.ptui .ex-hero .inner{max-width:1080px;margin:0 auto;padding:44px 24px 38px}.ptui .ex-hero .eyebrow{color:#8fd8cf}.ptui .ex-hero h1{font-size:36px;font-weight:800;letter-spacing:-.025em;margin:12px 0 10px;color:#fff;line-height:1.25}.ptui .ex-hero p{font-size:15px;color:hsla(0,0%,100%,.78);max-width:640px;line-height:1.7}.ptui .ex-hero p strong{color:#fff}.ptui .ex-hero .stats{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.ptui .ex-hero .stat{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;padding:6px 13px;border-radius:4px;background:hsla(0,0%,100%,.08);border:1px solid hsla(0,0%,100%,.16);color:hsla(0,0%,100%,.92)}.ptui .ex-hero .stat strong{color:#fff;font-weight:800}.ptui .filter-row{display:flex;gap:8px;margin-bottom:22px;flex-wrap:wrap}.ptui .chip{font-size:13px;font-weight:700;padding:7px 14px;border-radius:999px;border:1px solid var(--ink-4);background:var(--paper);color:var(--ink-2);transition:all .12s}.ptui .chip:hover{background:var(--bg)}.ptui .chip.on{background:var(--ink);border-color:var(--ink);color:#fff}.ptui .exam-section{margin-bottom:40px}.ptui .exam-section:last-child{margin-bottom:0}.ptui .section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--bd)}.ptui .section-head h2{font-size:21px;font-weight:800;letter-spacing:-.015em}.ptui .section-head .sec-sub{font-size:12.5px;color:var(--ink-3);margin-top:2px}.ptui .section-head .sec-cnt{font-size:12.5px;color:var(--ink-3);white-space:nowrap}.ptui .ex-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:16px}.ptui .ex-card{background:var(--paper);border:1px solid var(--bd);border-radius:var(--r-card);padding:22px;display:flex;flex-direction:column;transition:border-color .15s,box-shadow .15s;cursor:pointer;position:relative;overflow:hidden}.ptui .ex-card:hover{border-color:var(--ink-4);box-shadow:0 2px 10px -4px rgba(14,26,43,.14)}.ptui .ex-card .top{display:flex;align-items:flex-start;gap:14px;margin-bottom:16px}.ptui .ex-badge{width:54px;height:54px;border-radius:8px;flex-shrink:0;display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:14px;color:#fff;letter-spacing:.01em;text-align:center;line-height:1.05}.ptui .ex-badge.has-img{background:transparent}.ptui .ex-badge.has-img img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 2px 5px rgba(14,26,43,.12))}.ptui .ex-card .level{font-size:11px;font-weight:700;padding:3px 8px;border-radius:4px;background:var(--bg);color:var(--ink-3);letter-spacing:.04em}.ptui .ex-card h3{font-size:18px;font-weight:800;letter-spacing:-.015em;margin-bottom:3px;line-height:1.35}.ptui .ex-card .sub{font-size:13px;color:var(--ink-3);line-height:1.5}.ptui .ex-card .domains{display:flex;flex-wrap:wrap;gap:5px;margin:14px 0 16px}.ptui .ex-card .domain{font-size:10.5px;font-weight:500;color:var(--ink-2);background:var(--bg);border:1px solid var(--bd);padding:3px 8px;border-radius:4px}.ptui .ex-card .foot{margin-top:auto;padding-top:14px;border-top:1px solid var(--line-2);display:flex;align-items:center;justify-content:space-between}.ptui .ex-card .meta{display:flex;gap:14px;font-size:12.5px;color:var(--ink-2)}.ptui .ex-card .meta span{display:inline-flex;align-items:center;gap:5px}.ptui .ex-card .go{color:var(--accent);font-size:13px;font-weight:700;display:inline-flex;align-items:center;gap:4px;transition:gap .15s}.ptui .ex-card:hover .go{gap:8px}.ptui .ex-card .prog{position:absolute;top:20px;right:20px;font-size:11px;font-weight:700;color:var(--accent-deep);background:var(--accent-soft);padding:3px 9px;border-radius:4px}.ptui .ex-card .progbar{height:4px;border-radius:2px;background:var(--line-2);overflow:hidden;margin:0 0 14px}.ptui .ex-card .progbar i{display:block;height:100%;background:var(--accent);border-radius:2px}.ptui .det-hero{background:var(--paper);border-bottom:1px solid var(--bd)}.ptui .det-hero .inner{max-width:860px;margin:0 auto;padding:24px 24px 28px}.ptui .det-head{display:flex;align-items:flex-start;gap:18px;margin-top:18px}.ptui .det-head .badge{width:64px;height:64px;border-radius:8px;flex-shrink:0;display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:16px;color:#fff;text-align:center;line-height:1.05}.ptui .det-head .badge.has-img{background:transparent}.ptui .det-head .badge.has-img img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 2px 5px rgba(14,26,43,.12))}.ptui .det-head h1{font-size:28px;font-weight:800;letter-spacing:-.025em;margin-bottom:5px;line-height:1.3}.ptui .det-head .sub{font-size:14px;color:var(--ink-3)}.ptui .det-head .tags{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}.ptui .det-tag{font-size:12px;font-weight:600;color:var(--ink-2);background:var(--bg);border:1px solid var(--bd);padding:5px 11px;border-radius:4px;display:inline-flex;gap:5px;align-items:center}.ptui .progress-banner{background:var(--accent-soft-2);border:1px solid var(--accent-soft);border-radius:var(--r-card);padding:18px 22px;margin:22px 0 24px;display:flex;align-items:center;gap:20px}.ptui .progress-banner .ring{width:58px;height:58px;flex-shrink:0;position:relative}.ptui .progress-banner .ring .t{position:absolute;inset:0;display:grid;place-items:center;font-size:14px;font-weight:800;color:var(--accent-deep)}.ptui .progress-banner .info .t1{font-size:14px;font-weight:700;margin-bottom:3px}.ptui .progress-banner .info .t2{font-size:12.5px;color:var(--ink-3)}.ptui .progress-banner .cta{margin-left:auto}.ptui .test-list{display:flex;flex-direction:column;gap:10px}.ptui .test-card{background:var(--paper);border:1px solid var(--bd);border-radius:var(--r-card);padding:18px 20px;display:flex;align-items:center;gap:18px;transition:border-color .15s,box-shadow .15s;position:relative;overflow:hidden}.ptui .test-card:hover{border-color:var(--ink-4);box-shadow:0 2px 10px -4px rgba(14,26,43,.12)}.ptui .test-card.locked{background:var(--bg)}.ptui .test-card.current{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.ptui .test-num{width:42px;height:42px;border-radius:8px;flex-shrink:0;display:grid;place-items:center;font-family:var(--mono);font-weight:700;font-size:15px;background:var(--accent-soft);color:var(--accent-deep)}.ptui .test-card.locked .test-num{background:var(--line);color:var(--ink-4)}.ptui .test-card.done .test-num{background:var(--green);color:#fff}.ptui .test-body{flex:1;min-width:0}.ptui .test-body .title-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;flex-wrap:wrap}.ptui .test-body .title{font-size:16px;font-weight:700}.ptui .test-body .title.muted{color:var(--ink-3)}.ptui .test-body .meta{display:flex;gap:14px;font-size:12.5px;color:var(--ink-3);flex-wrap:wrap}.ptui .test-body .meta span{display:inline-flex;align-items:center;gap:5px}.ptui .test-score{text-align:right;flex-shrink:0}.ptui .test-score .pct{font-size:18px;font-weight:800;color:var(--green);letter-spacing:-.02em;font-variant-numeric:tabular-nums}.ptui .test-score .pct.none{color:var(--ink-4);font-size:15px}.ptui .test-score .lbl{font-size:11px;color:var(--ink-4)}.ptui .test-cta{flex-shrink:0}.ptui .nw{white-space:nowrap}.ptui .det2-card-note,.ptui .det2-card-plan .p2,.ptui .det2-desc,.ptui .det2-lead,.ptui .det2-learn li,.ptui .paywall p{word-break:auto-phrase;text-wrap:pretty}.ptui .det2-box h2,.ptui .det2-hero h1,.ptui .paywall h2{text-wrap:balance}.ptui .det2-cols{max-width:1140px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:40px;padding:0 24px}.ptui .det2-hero{background:var(--ink);color:#fff}.ptui .det2-hero-inner{padding-top:22px;padding-bottom:34px}.ptui .det2-crumb{font-size:13px;color:hsla(0,0%,100%,.72);display:inline-flex;align-items:center;gap:6px;cursor:pointer;margin-bottom:14px}.ptui .det2-crumb:hover{color:#fff}.ptui .det2-hero h1{font-size:29px;font-weight:800;letter-spacing:-.025em;line-height:1.3;margin:0 0 10px;color:#fff}.ptui .det2-lead{font-size:14.5px;color:hsla(0,0%,100%,.82);line-height:1.75;margin:0 0 16px;max-width:640px}.ptui .det2-chips{display:flex;gap:8px;flex-wrap:wrap}.ptui .det2-chip{font-size:12px;font-weight:600;color:hsla(0,0%,100%,.92);background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.22);padding:5px 11px;border-radius:4px;display:inline-flex;gap:5px;align-items:center}.ptui .det2-body{padding-top:26px;padding-bottom:64px;align-items:start}.ptui .det2-main{min-width:0;display:flex;flex-direction:column;gap:20px}.ptui .det2-main .progress-banner{margin:0}.ptui .det2-box{background:var(--paper);border:1px solid var(--bd);border-radius:var(--r-card);padding:22px 26px}.ptui .det2-box h2{font-size:17px;font-weight:800;letter-spacing:-.015em;margin:0 0 14px}.ptui .det2-learn{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:9px 22px}.ptui .det2-learn li{display:flex;gap:9px;font-size:13.5px;color:var(--ink-2);line-height:1.6}.ptui .det2-learn li svg{color:var(--accent)}.ptui .det2-cur-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}.ptui .det2-cur-head h2{margin:0}.ptui .det2-cur-head span{font-size:12.5px;color:var(--ink-3)}.ptui .det2-curriculum .test-list{gap:8px}.ptui .det2-desc{font-size:14px;color:var(--ink-2);line-height:1.85;margin:0}.ptui .test-score .pct.fail{color:#d97706}.ptui .det2-side{position:relative;min-width:0}.ptui .det2-card{position:sticky;top:24px;margin-top:-158px;background:var(--paper);border:1px solid var(--bd);border-radius:12px;overflow:hidden;box-shadow:0 6px 24px -8px rgba(14,26,43,.28)}.ptui .det2-card-visual{background:linear-gradient(160deg,var(--bg) 0,var(--paper) 100%);border-bottom:1px solid var(--line-2);display:grid;place-items:center;padding:24px}.ptui .det2-card-visual img{width:148px;height:148px;-o-object-fit:contain;object-fit:contain;filter:drop-shadow(0 4px 10px rgba(14,26,43,.18))}.ptui .det2-card-visual .fallback{width:120px;height:120px;border-radius:16px;display:grid;place-items:center;color:#fff;font-family:var(--mono);font-weight:700;font-size:20px;text-align:center;line-height:1.1}.ptui .det2-card-body{padding:18px 20px 20px}.ptui .det2-card-cta{width:100%;justify-content:center}.ptui .det2-card-note{font-size:11.5px;color:var(--ink-3);text-align:center;margin-top:9px}.ptui .det2-card-includes{margin-top:16px}.ptui .det2-card-includes .hd{font-size:13px;font-weight:800;margin-bottom:8px}.ptui .det2-card-includes ul{list-style:none;margin:0;padding:0}.ptui .det2-card-includes li{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--ink-2);padding:4.5px 0}.ptui .det2-card-includes li svg{color:var(--ink-3);flex-shrink:0}.ptui .det2-card-plan{margin-top:15px;border-top:1px solid var(--line-2);padding-top:14px}.ptui .det2-card-plan .p1{font-size:13.5px}.ptui .det2-card-plan .p1 strong{font-size:19px;font-weight:800;letter-spacing:-.01em}.ptui .det2-card-plan .p1 span,.ptui .det2-card-plan .p2{font-size:12px;color:var(--ink-3)}.ptui .det2-card-plan .p2{line-height:1.6;margin:5px 0 11px}.ptui .det2-card-plan-btn{width:100%;justify-content:center}@media (max-width:980px){.ptui .det2-cols{grid-template-columns:1fr;gap:0}.ptui .det2-hero-inner>div[aria-hidden]{display:none}.ptui .det2-hero-inner{padding-bottom:26px}.ptui .det2-side{order:-1}.ptui .det2-card{position:static;margin-top:20px}.ptui .det2-learn{grid-template-columns:1fr}.ptui .det2-body{padding-top:20px}}.ptui .intro-card{background:var(--paper);border:1px solid var(--bd);border-radius:var(--r-card);padding:36px 36px 32px;max-width:660px;margin:0 auto}.ptui .intro-card .eyebrow{margin-bottom:8px}.ptui .intro-card h1{font-size:27px;font-weight:800;letter-spacing:-.025em;line-height:1.35}.ptui .stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:22px}.ptui .stat-box{background:var(--paper);border:1px solid var(--bd);border-radius:8px;padding:16px 12px;text-align:center}.ptui .stat-box .ico{color:var(--accent);margin-bottom:8px;display:flex;justify-content:center}.ptui .stat-box .v{font-size:17px;font-weight:800;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.ptui .stat-box .l{font-size:11px;color:var(--ink-3);margin-top:3px}.ptui .free-notice{display:flex;gap:12px;padding:14px 16px;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;margin-bottom:24px}.ptui .free-notice .ico{flex-shrink:0;font-size:18px}.ptui .free-notice .txt{font-size:13px;color:#92400e;line-height:1.6}.ptui .free-notice .txt strong{font-weight:700}.ptui .mode-label{font-size:12px;font-weight:800;color:var(--ink-3);margin-bottom:11px;text-transform:uppercase;letter-spacing:.08em}.ptui .mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:24px}.ptui .mode-card{text-align:left;padding:18px;border-radius:8px;cursor:pointer;border:1px solid var(--bd);background:var(--paper);transition:border-color .12s,background .12s;position:relative;width:100%}.ptui .mode-card:hover{border-color:var(--ink-4)}.ptui .mode-card.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft-2)}.ptui .mode-card .ico{width:38px;height:38px;border-radius:8px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);margin-bottom:12px}.ptui .mode-card.on .ico{background:var(--accent);color:#fff}.ptui .mode-card .t{font-size:15px;font-weight:800;margin-bottom:5px}.ptui .mode-card.on .t{color:var(--accent-deep)}.ptui .mode-card .d{font-size:12.5px;color:var(--ink-3);line-height:1.55}.ptui .mode-card .check{position:absolute;top:14px;right:14px;width:20px;height:20px;border-radius:50%;background:var(--accent);display:none;place-items:center}.ptui .mode-card.on .check{display:grid}.ptui .intro-title-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:22px}.ptui .intro-title-row h1{margin-bottom:0}.ptui .best-chip{font-size:12px;font-weight:700;color:var(--accent-deep);background:var(--accent-soft);padding:5px 12px;border-radius:4px;white-space:nowrap}.ptui .intro-stats{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.ptui .intro-tips{list-style:none;padding:16px 18px;margin:0 0 24px;display:flex;flex-direction:column;gap:9px;background:var(--bg);border-radius:8px}.ptui .intro-tips li{position:relative;padding-left:24px;font-size:13px;color:var(--ink-2);line-height:1.5}.ptui .intro-tips li:before{content:"✓";position:absolute;left:0;top:0;color:var(--accent);font-weight:800}.ptui .btn-start{width:100%;padding:15px;font-size:15.5px}.ptui .run-wrap{max-width:1100px}.ptui .run-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:60px;z-index:35;background:var(--paper);border-bottom:1px solid var(--bd);margin:-36px -24px 18px;padding:12px 24px}.ptui .run-bar .bar-title{font-size:14px;font-weight:800;letter-spacing:-.01em;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;text-align:center;padding:0 8px;color:var(--ink)}.ptui .run-shell{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}.ptui .run-shell.solo{display:block;max-width:760px;margin:0 auto}.ptui .run-main{min-width:0}.ptui .run-side{position:sticky;top:126px}.ptui .run-header{display:flex;align-items:center;gap:12px;margin-bottom:14px;flex-wrap:wrap}.ptui .run-header .qn{font-size:15px;font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}.ptui .run-header .qn span{color:var(--ink-3);font-weight:600}.ptui .run-progress{flex:1;height:5px;background:var(--line);border-radius:999px;overflow:hidden;min-width:80px}.ptui .run-progress i{display:block;height:100%;background:var(--accent);border-radius:999px;transition:width .2s}.ptui .run-timer{font-family:var(--mono);font-size:14px;font-weight:700;color:var(--ink);background:var(--paper);border:1px solid var(--bd);padding:6px 12px;border-radius:var(--r-ctl);white-space:nowrap;font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;gap:6px}.ptui .run-timer.warn{color:#92400e;background:var(--amber-soft);border-color:#fcd34d}.ptui .run-timer.danger{color:#fff;background:var(--red);border-color:var(--red)}.ptui .run-tally{font-size:12.5px;font-weight:700;color:#0c7a5e;background:var(--green-soft);padding:6px 10px;border-radius:var(--r-ctl);white-space:nowrap;font-variant-numeric:tabular-nums}.ptui .q-mark{font-size:12.5px;font-weight:700;color:var(--ink-2);border:1px solid var(--ink-4);border-radius:var(--r-ctl);padding:6px 12px;white-space:nowrap;background:var(--paper)}.ptui .q-mark:hover{background:var(--bg)}.ptui .q-mark.on{color:#92400e;background:var(--amber-soft);border-color:#fcd34d}.ptui .run-palette-btn{display:none;align-items:center;gap:6px;font-size:12.5px;font-weight:700;color:var(--ink-2);background:var(--paper);border:1px solid var(--ink-4);border-radius:var(--r-ctl);padding:7px 13px;font-variant-numeric:tabular-nums}.ptui .q-card{background:var(--paper);border:1px solid var(--bd);border-radius:var(--r-card);padding:30px 30px 26px}.ptui .q-card .q-head{display:flex;align-items:center;gap:10px;margin-bottom:18px;flex-wrap:wrap}.ptui .q-card .q-tag{color:var(--ink-3);background:var(--bg)}.ptui .q-card .q-prompt,.ptui .q-card .q-tag{font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:4px}.ptui .q-card .q-prompt{color:var(--accent-deep);background:var(--accent-soft)}.ptui .q-card .q-text{font-size:clamp(16px,2.6vw,17.5px);color:var(--ink);line-height:1.8;margin-bottom:24px;white-space:pre-wrap}.ptui .check-banner{font-size:14px;font-weight:800;margin-bottom:12px}.ptui .check-banner.ok{color:#0c7a5e}.ptui .check-banner.ng{color:var(--red)}.ptui .choices{display:flex;flex-direction:column;gap:9px}.ptui .choice{display:flex;gap:13px;align-items:flex-start;padding:15px 16px;border:1px solid var(--ink-4);background:var(--paper);border-radius:8px;cursor:pointer;transition:background .1s,border-color .1s,box-shadow .1s}@media (hover:hover){.ptui .choice:hover{background:var(--bg)}}.ptui .choice.sel{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:var(--accent-soft-2)}.ptui .choice .box{width:20px;height:20px;border-radius:50%;border:2px solid var(--ink-4);flex-shrink:0;margin-top:2px;display:grid;place-items:center;transition:all .12s;background:var(--paper)}.ptui .choice.multi .box{border-radius:4px}.ptui .choice.sel .box{border-color:var(--accent);background:var(--accent)}.ptui .choice .box .dot{width:8px;height:8px;border-radius:50%;background:#fff;opacity:0}.ptui .choice.multi .box .dot{border-radius:1.5px}.ptui .choice.sel .box .dot{opacity:1}.ptui .choice .letter{font-family:var(--mono);font-weight:700;font-size:13px;color:var(--ink-3);width:18px;flex-shrink:0;margin-top:3px}.ptui .choice.sel .letter{color:var(--accent)}.ptui .choice .ctext{font-size:15.5px;color:var(--ink);line-height:1.65;flex:1;white-space:pre-wrap}.ptui .run-footer{display:flex;align-items:center;gap:10px;margin-top:16px;position:sticky;bottom:0;z-index:25;background:var(--paper);border:1px solid var(--bd);border-radius:8px 8px 0 0;padding:12px 14px;box-shadow:0 -4px 16px -8px rgba(14,26,43,.12)}.ptui .run-footer .nav-main{margin-left:auto}.ptui .palette-panel{background:var(--paper);border:1px solid var(--bd);border-radius:var(--r-card);padding:16px}.ptui .pal-counts{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--ink-3);margin-bottom:12px;font-variant-numeric:tabular-nums}.ptui .pal-counts b{color:var(--ink)}.ptui .pal-legend{display:flex;gap:14px;margin-bottom:12px;font-size:11px;color:var(--ink-3);flex-wrap:wrap}.ptui .pal-legend span{display:inline-flex;align-items:center;gap:5px}.ptui .pal-legend .sw{width:13px;height:13px;border-radius:3px;border:1px solid var(--ink-4);background:var(--paper);flex-shrink:0}.ptui .pal-legend .sw.answered{background:var(--accent);border-color:var(--accent)}.ptui .pal-legend .sw.marked{border:2px solid #f59e0b}.ptui .pal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));gap:7px;margin-bottom:14px}.ptui .pal-q{aspect-ratio:1/1;min-height:40px;border-radius:var(--r-ctl);font-size:13px;font-weight:700;border:1px solid var(--ink-4);background:var(--paper);color:var(--ink-2);display:grid;place-items:center;cursor:pointer;position:relative;font-variant-numeric:tabular-nums}.ptui .pal-q:hover{background:var(--bg)}.ptui .pal-q.visited{border-color:var(--ink-3)}.ptui .pal-q.answered{background:var(--accent);color:#fff;border-color:var(--accent)}.ptui .pal-q.current{outline:2px solid var(--ink);outline-offset:1px}.ptui .pal-q.marked:after{content:"";position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:50%;background:#f59e0b}.ptui .pal-locked{grid-column:1/-1;display:flex;align-items:center;justify-content:center;gap:5px;padding:9px 13px;border-radius:var(--r-ctl);border:1px dashed var(--ink-4);color:var(--ink-3);font-size:12.5px;font-weight:600}.ptui .pal-submit{width:100%}.ptui .palette-drawer{display:none}.ptui .palette-drawer.open{display:block}.ptui .palette-scrim{position:fixed;inset:0;background:rgba(14,26,43,.45);z-index:80}.ptui .palette-sheet{position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--paper);border-radius:14px 14px 0 0;max-height:80vh;overflow:auto;padding:0 16px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -10px 40px -12px rgba(14,26,43,.35)}.ptui .sheet-handle{width:40px;height:4px;border-radius:2px;background:var(--line);margin:10px auto 4px}.ptui .sheet-head{display:flex;align-items:center;justify-content:space-between;padding:6px 0 12px;font-size:14px;font-weight:800;position:sticky;top:0;background:var(--paper);z-index:1}.ptui .palette-sheet .palette-panel{border:none;padding:0 0 8px}.ptui .result-hero{background:var(--paper);border:1px solid var(--bd);border-radius:var(--r-card);padding:36px 30px;text-align:center;margin-bottom:16px;position:relative;overflow:hidden}.ptui .result-hero.pass{background:var(--paper);border-color:#86efac;border-top:4px solid var(--green)}.ptui .result-hero:not(.pass){border-top:4px solid var(--ink-4)}.ptui .result-hero .tlabel{font-size:12.5px;font-weight:700;color:var(--ink-3);margin-bottom:16px}.ptui .ring-wrap{position:relative;width:clamp(120px,32vw,150px);aspect-ratio:1/1;margin:0 auto}.ptui .ring-wrap .t{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}.ptui .ring-wrap .t .pct{font-size:36px;font-weight:800;letter-spacing:-.03em;font-variant-numeric:tabular-nums}.ptui .ring-wrap .t .lbl{font-size:11px;color:var(--ink-3)}.ptui .result-verdict{margin-top:18px;font-size:22px;font-weight:800;letter-spacing:-.015em}.ptui .result-verdict .pass{color:#0c7a5e}.ptui .result-verdict .fail{color:var(--red)}.ptui .result-verdict .line{font-size:13px;font-weight:600;color:var(--ink-3);margin-left:8px}.ptui .result-sub{font-size:14px;color:var(--ink-2);margin-top:6px}.ptui .result-actions{display:flex;gap:10px;justify-content:center;margin-top:22px;flex-wrap:wrap}.ptui .result-wrap{max-width:780px}.ptui .result-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:16px}.ptui .result-stat{background:var(--paper);border:1px solid var(--bd);border-radius:8px;padding:14px 10px;text-align:center}.ptui .result-stat .v{font-size:21px;font-weight:800;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.ptui .result-stat .l{font-size:11px;color:var(--ink-3);margin-top:3px}.ptui .review-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin:8px 4px 14px}.ptui .review-head h3{font-size:16px;font-weight:800}.ptui .result-filters{display:flex;gap:7px;flex-wrap:wrap}.ptui .result-filters .chip{padding:6px 12px}.ptui .result-filters .chip .cnt{font-variant-numeric:tabular-nums;opacity:.7;margin-left:3px}.ptui .result-filters .chip.on .cnt{opacity:.85}.ptui .panel{background:var(--paper);border:1px solid var(--bd);border-radius:var(--r-card);padding:22px 24px;margin-bottom:16px}.ptui .panel h3{font-size:14px;font-weight:800;margin-bottom:16px}.ptui .dom-row{margin-bottom:14px}.ptui .dom-row:last-child{margin-bottom:0}.ptui .dom-row .lbl{display:flex;justify-content:space-between;font-size:12.5px;margin-bottom:6px;gap:10px}.ptui .dom-row .lbl .nm{color:var(--ink-2);font-weight:600}.ptui .dom-row .lbl .sc{color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}.ptui .dom-bar{height:8px;background:var(--line);border-radius:999px;overflow:hidden}.ptui .dom-bar i{display:block;height:100%;border-radius:999px}.ptui .weak-note{margin-top:16px;padding:12px 14px;background:var(--red-soft);border-radius:8px;font-size:13px;color:var(--red);line-height:1.6}.ptui .weak-note strong{font-weight:700}.ptui .review-item{background:var(--paper);border-radius:8px;border:1px solid var(--bd);border-left:4px solid var(--green);padding:18px 20px;margin-bottom:12px}.ptui .review-item.wrong{border-left-color:var(--red)}.ptui .review-item.skip{border-left-color:var(--ink-4)}.ptui .review-item.skip .verdict{color:var(--ink-3)}.ptui .review-item .head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.ptui .review-item .verdict{font-size:12px;font-weight:800}.ptui .review-item.right .verdict{color:#0c7a5e}.ptui .review-item.wrong .verdict{color:var(--red)}.ptui .review-item .qmeta{font-size:11.5px;color:var(--ink-3)}.ptui .review-item .qtext{font-size:14.5px;color:var(--ink);line-height:1.75;margin-bottom:14px;white-space:pre-wrap}.ptui .rchoice{border:1px solid var(--bd);border-radius:var(--r-ctl);padding:11px 13px;margin-bottom:8px;display:flex;gap:9px;align-items:flex-start}.ptui .rchoice.correct{background:#f0fdf4;border-color:#86efac}.ptui .rchoice.your-wrong{background:#fef2f2;border-color:#fecaca}.ptui .rchoice .mk{font-size:13px;flex-shrink:0}.ptui .rchoice .ctxt{font-size:13.5px;color:var(--ink);line-height:1.6;flex:1;white-space:pre-wrap}.ptui .rchoice .tag{font-size:10.5px;font-weight:700;color:var(--ink-3);flex-shrink:0}.ptui .rchoice .ctxt .ce{display:block;font-size:12px;color:var(--ink-3);line-height:1.6;margin-top:5px}.ptui .rchoice .ctxt .ce a{color:var(--accent)}.ptui .explain{background:var(--bg);border-radius:var(--r-ctl);padding:13px 15px;margin-top:6px;border-left:3px solid var(--accent)}.ptui .explain .h{font-size:11.5px;font-weight:700;color:var(--ink-3);margin-bottom:6px}.ptui .explain .ex-p,.ptui .explain p{font-size:13px;color:var(--ink-2);line-height:1.75}.ptui .explain .ex-p{display:block}.ptui .explain .ex-p a,.ptui .explain a{color:var(--accent)}.ptui .paywall{background:var(--paper);border:1px solid var(--accent);border-top:4px solid var(--accent);border-radius:var(--r-card);padding:28px;text-align:center;max-width:560px;margin:0 auto}.ptui .paywall.wide{max-width:none}.ptui .paywall .ico{font-size:30px;margin-bottom:8px}.ptui .paywall h2{font-size:20px;font-weight:800;margin-bottom:8px;letter-spacing:-.015em}.ptui .paywall p{font-size:13.5px;color:var(--ink-2);line-height:1.7;margin-bottom:18px}.ptui .paywall .acts{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}.ptui .finish-overlay{position:fixed;inset:0;z-index:100;background:rgba(14,26,43,.5);display:flex;align-items:center;justify-content:center;padding:20px}.ptui .finish-modal{background:var(--paper);border-radius:var(--r-card);max-width:520px;width:100%;padding:24px 26px;box-shadow:0 24px 60px -12px rgba(14,26,43,.4)}.ptui .finish-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.ptui .finish-head h3{font-size:18px;font-weight:800;letter-spacing:-.015em}.ptui .finish-x{font-size:22px;color:var(--ink-3);line-height:1;padding:0 4px}.ptui .finish-x:hover{color:var(--ink)}.ptui .finish-modal p{font-size:13.5px;color:var(--ink-2);line-height:1.75;margin-bottom:22px}.ptui .finish-modal p strong{color:var(--ink);font-weight:700}.ptui .finish-actions{display:flex;justify-content:flex-end;gap:10px}.ptui .finish-summary{display:flex;flex-direction:column;gap:2px;margin-bottom:16px;border:1px solid var(--bd);border-radius:8px;overflow:hidden}.ptui .fs-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;font-size:13.5px;color:var(--ink-2);background:var(--paper);width:100%;text-align:left}.ptui .fs-row+.fs-row{border-top:1px solid var(--bd)}.ptui .fs-row b{font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}.ptui .fs-row b.warn{color:var(--amber)}.ptui button.fs-row.link:not(:disabled){cursor:pointer}.ptui button.fs-row.link:not(:disabled):hover{background:var(--bg)}.ptui button.fs-row.link:disabled{cursor:default;opacity:.7}.ptui .finish-note{font-size:13px;color:var(--ink-3);line-height:1.7;margin-bottom:22px}.ptui .loading{font-size:14px;padding:40px 0}.ptui .empty,.ptui .loading{color:var(--ink-3);text-align:center}.ptui .empty{padding:48px 24px;background:var(--paper);border:1px solid var(--bd);border-radius:var(--r-card)}@media (max-width:980px){.ptui .run-shell{grid-template-columns:1fr}.ptui .run-side{display:none}.ptui .run-palette-btn{display:inline-flex}.ptui .run-bar .bar-title{display:none}}@media (max-width:720px){.ptui .wrap{padding:20px 16px}.ptui .ex-grid,.ptui .mode-grid{grid-template-columns:1fr}.ptui .ex-hero .inner{padding:32px 16px 24px}.ptui .ex-hero h1{font-size:27px}.ptui .det-hero .inner{padding:18px 16px 22px}.ptui .det-head{gap:14px}.ptui .det-head h1{font-size:22px}.ptui .progress-banner{flex-wrap:wrap;gap:14px;padding:16px}.ptui .progress-banner .cta{margin-left:0;width:100%}.ptui .progress-banner .cta .btn{width:100%}.ptui .test-card{flex-wrap:wrap;gap:12px;padding:16px}.ptui .test-card .test-cta,.ptui .test-card .test-cta .btn{width:100%}.ptui .intro-card{padding:24px 18px}.ptui .q-card{padding:20px 16px}.ptui .run-bar{margin:-20px -16px 14px;padding:10px 16px}.ptui .run-header{position:sticky;top:104px;z-index:30;background:var(--bg);margin:0 -16px 14px;padding:10px 16px;border-bottom:1px solid var(--bd);gap:8px}.ptui .run-footer{position:fixed;left:0;right:0;bottom:0;z-index:30;margin:0;background:var(--paper);border:none;border-top:1px solid var(--bd);border-radius:0;box-shadow:none;padding:10px 16px calc(10px + env(safe-area-inset-bottom))}.ptui .run-footer .btn{flex:1;min-height:48px}.ptui .run-footer .nav-main{margin-left:0}.ptui .run-main{padding-bottom:84px}.ptui .btn{min-height:44px}.ptui .btn-sm{min-height:38px}.ptui .chip{min-height:40px}.ptui .choice{padding:15px 16px}.ptui .result-stats{grid-template-columns:repeat(2,1fr)}.ptui .result-hero{padding:26px 18px}.ptui .review-item{padding:16px}}@media (max-width:400px){.ptui .intro-stats{grid-template-columns:1fr 1fr}.ptui .pal-grid{grid-template-columns:repeat(5,1fr)}.ptui .run-header .run-progress{order:5;flex-basis:100%;min-width:0}}@media (prefers-reduced-motion:reduce){.ptui *{transition:none!important}}