:root{--color-primary:#01286d;--color-primary-on-dark:#f6ed22;--color-canvas:#fff;--color-canvas-parchment:#eef1f7;--color-tile-dark-1:#01286d;--color-tile-dark-2:#072a70;--color-ink:#121830;--color-body-on-dark:#f6ed22;--color-body-muted:#b9c3de;--color-ink-muted-80:#33395a;--color-ink-muted-48:#5b6478;--color-hairline:#01286d;--rounded-sm:7px;--rounded-md:12px;--rounded-lg:20px;--rounded-pill:999px;--font-display:"Space Grotesk", ui-sans-serif, system-ui, sans-serif;--font-body:"Karla", system-ui, -apple-system, sans-serif;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--color-good:#1f9e6d;--color-warn:#d99a1f;--color-bad:#d64545;--shadow-hero:0 12px 32px -12px #01286d59;--cursor-custom:url(/app/laptapcursor.png) 4 2, pointer}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-body);letter-spacing:0;color:var(--color-ink);background:var(--color-canvas-parchment);cursor:url(/app/laptapcursor.png) 4 2,auto;font-size:17px;font-weight:400;line-height:1.5}h1,h2,h3{font-family:var(--font-display)}.container{background:var(--color-canvas);max-width:100%;margin:0 auto;overflow:hidden}.header{background:linear-gradient(160deg, var(--color-tile-dark-1) 0%, var(--color-tile-dark-2) 100%);color:var(--color-body-on-dark);padding:var(--space-4) var(--space-5);text-align:center;position:relative;overflow:hidden}.header h1{letter-spacing:-.01em;margin-bottom:2px;font-size:28px;font-weight:700}.shimmer-title{background:linear-gradient(100deg, var(--color-primary-on-dark) 35%, #fffde8 48%, var(--color-primary-on-dark) 61%);color:#0000;background-size:240% 100%;-webkit-background-clip:text;background-clip:text;animation:5s ease-in-out infinite titleShimmer}@keyframes titleShimmer{0%{background-position:100% 0}50%{background-position:0 0}to{background-position:100% 0}}@media (prefers-reduced-motion:reduce){.shimmer-title{background-position:0 0;animation:none}}.header h2{letter-spacing:-.01em;color:var(--color-primary-on-dark);margin-bottom:0;font-size:19px;font-weight:600}.header h3{color:var(--color-body-muted);margin-bottom:var(--space-1);font-size:15px;font-weight:400}.header p{color:var(--color-body-muted);font-size:14px;font-family:var(--font-body)}.header .meta{color:var(--color-body-muted);margin-top:var(--space-1);opacity:.7;font-size:12px}.header.scan-in:after{content:"";pointer-events:none;background:linear-gradient(100deg,#0000 40%,#f6ed2240 50%,#0000 60%);animation:1.1s ease-out .15s scanSweep;position:absolute;inset:0;transform:translate(-100%)}@keyframes scanSweep{to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.header.scan-in:after{animation:none;display:none}}.price-spinner{border:2.5px solid #f6ed2240;border-top-color:var(--color-primary-on-dark);border-radius:50%;width:20px;height:20px;margin:10px auto 0;animation:.8s linear infinite priceSpin}@keyframes priceSpin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.price-spinner{animation:none}}.export-report-group{top:var(--space-5);right:var(--space-5);z-index:2;align-items:center;gap:var(--space-2);display:flex;position:absolute}.export-report-btn{align-items:center;gap:var(--space-2);color:#fff;border:1px solid var(--color-primary-on-dark);border-radius:var(--rounded-pill);font-family:var(--font-body);cursor:var(--cursor-custom);background:#ffffff14;padding:10px 18px;font-size:14px;font-weight:600;transition:background .15s,transform .15s;display:inline-flex}.export-report-btn:hover{background:#ffffff29;transform:translateY(-1px)}@media (width<=640px){.export-report-group{margin-top:var(--space-4);flex-wrap:wrap;position:static}}.report-print-view{display:none}@media print{body>:not(.report-print-view){display:none!important}.report-print-view{color:#111;font-family:var(--font-sans,Arial, sans-serif);background:#fff;padding:0;display:block!important}.report-print-view,.report-print-view *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;color-adjust:exact!important}}.rp-header{border-bottom:3px solid #111;margin-bottom:24px;padding-bottom:16px}.rp-header h1{margin-bottom:4px;font-size:26px}.rp-header p{color:#555;font-size:12px}.rp-section{break-inside:avoid;page-break-inside:avoid;margin-bottom:22px}.rp-section h2{border-bottom:1px solid #ddd;margin-bottom:8px;padding-bottom:6px;font-size:16px}.rp-row{border-bottom:1px solid #f0f0f0;justify-content:space-between;gap:12px;padding:5px 0;font-size:13px;display:flex}.rp-row .rp-label{color:#333}.rp-row .rp-value{text-align:right;font-weight:600}.rp-value.rp-good{color:#1a7f37}.rp-value.rp-warn{color:#b36b00}.rp-value.rp-bad{color:#c0392b}.rp-value.rp-neutral{color:#555}.rp-footer{color:#888;border-top:1px solid #ddd;margin-top:28px;padding-top:10px;font-size:11px}.rp-snippet{break-inside:avoid;page-break-inside:avoid;margin-top:12px}.rp-snippet-label{text-transform:uppercase;letter-spacing:.04em;color:#777;margin-bottom:6px;font-size:11px}.rp-snippet-box{background:#fafafa;border:1px solid #ddd;border-radius:10px;padding:10px;overflow:hidden}.rp-snippet-box canvas,.rp-snippet-box img,.rp-snippet-box video{max-width:100%}.rp-snippet-empty{color:#888;padding:6px 2px;font-size:12px;font-style:italic}@media print{@page{margin:.5in}.rp-section,.rp-snippet{break-inside:avoid}}.tabs{gap:var(--space-1);background:var(--color-tile-dark-1);padding:var(--space-2);display:flex;overflow-x:auto}.tab-button{align-items:center;gap:var(--space-2);border-radius:var(--rounded-pill);color:var(--color-body-muted);cursor:var(--cursor-custom);font-family:var(--font-body);white-space:nowrap;background:0 0;border:none;padding:11px 20px;font-size:14px;font-weight:600;transition:color .15s,background .15s;display:inline-flex}.tab-button svg{opacity:.8;flex-shrink:0}.tab-button:hover{color:#fff;background:#ffffff14}.tab-button.active{color:var(--color-primary);background:var(--color-primary-on-dark)}.tab-button.active svg{opacity:1}.tab-content{padding:var(--space-4) var(--space-6);animation:.3s fadeIn;display:none}.tab-content.active{display:block}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.cards{gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(300px,1fr));display:grid}.card{background:var(--color-canvas);padding:var(--space-4);border-radius:var(--rounded-lg);border:1px solid var(--color-hairline)}.card h3{align-items:center;gap:var(--space-2);letter-spacing:-.01em;color:var(--color-ink);margin-bottom:var(--space-2);font-size:17px;font-weight:600;display:flex}.card h3 svg{color:var(--color-primary);flex-shrink:0}.card-row{justify-content:space-between;gap:var(--space-3);border-bottom:1px solid #01286d1f;padding:7px 0;display:flex}.card-row:last-child{border-bottom:none}.search-cta{background:var(--color-primary);color:#fff;border:1.5px solid var(--color-primary-on-dark);border-radius:var(--rounded-pill);font-family:var(--font-body);white-space:nowrap;cursor:var(--cursor-custom);align-items:center;gap:8px;padding:9px 18px 9px 14px;font-size:13px;font-weight:700;text-decoration:none;transition:transform .2s cubic-bezier(.34,1.56,.64,1),box-shadow .2s,background .2s;display:inline-flex;position:relative;overflow:hidden}.search-cta svg{color:var(--color-primary-on-dark);flex-shrink:0;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.search-cta:before{content:"";pointer-events:none;background:linear-gradient(100deg,#0000 30%,#ffffff59 45%,#0000 60%);transition:transform .6s;position:absolute;inset:0;transform:translate(-120%)}.search-cta:hover{background:var(--color-tile-dark-2);transform:translateY(-2px)scale(1.03);box-shadow:0 10px 24px -8px #f6ed228c}.search-cta:hover svg{transform:rotate(-12deg)scale(1.15)}.search-cta:hover:before{transform:translate(120%)}.search-cta:active{transform:translateY(0)scale(.97)}.search-cta:focus-visible{outline:2px solid var(--color-primary-on-dark);outline-offset:3px}@media (prefers-reduced-motion:reduce){.search-cta,.search-cta svg,.search-cta:before{transition:none}.search-cta:hover{transform:none}}.label{color:var(--color-ink-muted-48);font-size:14px}.value{color:var(--color-ink);text-align:right;word-break:break-word;font-variant-numeric:tabular-nums;max-width:60%;font-size:14px;font-weight:700}.good{color:var(--color-good)!important}.warn{color:var(--color-warn)!important}.bad{color:var(--color-bad)!important}.neutral{color:var(--color-ink-muted-48)!important}.orange{color:var(--color-warn)!important}.yellowgreen{color:#7fa32e!important}.tier-clickable{cursor:var(--cursor-custom);text-underline-offset:3px;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.no-data-notice{align-items:flex-start;gap:var(--space-4);border-radius:var(--rounded-lg);padding:var(--space-5);margin-bottom:var(--space-6);background:#fff8ed;border:1px solid #f5c842;display:flex}.no-data-notice .notice-icon{flex-shrink:0;margin-top:2px;font-size:22px;line-height:1}.no-data-notice .notice-body{flex:1}.no-data-notice .notice-title{font-family:var(--font-display);color:#7a5c00;margin-bottom:var(--space-1);font-size:15px;font-weight:600}.no-data-notice .notice-text{color:#7a5c00;font-size:13px;line-height:1.5}.no-data-notice code{cursor:var(--cursor-custom);-webkit-user-select:none;user-select:none;color:#7a5c00;background:#fef3cc;border:1px solid #f5c842;border-radius:4px;padding:2px 7px;font-family:SF Mono,Menlo,monospace;font-size:12px;transition:background .15s;display:inline-block}.no-data-notice code:hover{background:#fde88a}.card .null-row{opacity:.45;border-bottom:1px solid #01286d1f;justify-content:space-between;padding:9px 0;display:flex}.card .null-row:last-child{border-bottom:none}.card .null-row .value{color:var(--color-ink-muted-48);font-weight:400}.test-section{background:var(--color-canvas);padding:var(--space-5);border-radius:var(--rounded-lg);border:1px solid var(--color-hairline);margin-bottom:var(--space-4)}.test-section h3{align-items:center;gap:var(--space-2);color:var(--color-ink);margin-bottom:var(--space-4);font-size:20px;font-weight:600;display:flex}.camera-preview-wrap{border-radius:var(--rounded-lg);aspect-ratio:16/9;background:#000;width:100%;max-width:100%;max-height:75vh;margin:0 auto;position:relative;overflow:hidden}#cameraPreview{object-fit:contain;width:100%;height:100%;transition:transform .2s;display:block}#cameraPreview.flipped{transform:scaleX(-1)}.camera-shutter{width:56px;height:56px;cursor:var(--cursor-custom);background:0 0;border:4px solid #fff;border-radius:50%;padding:0;transition:opacity .2s,transform .1s;position:absolute;bottom:18px;left:50%;transform:translate(-50%);box-shadow:0 0 0 2px #00000059}.camera-shutter:hover:not(:disabled){background:#ffffff26}.camera-shutter:active:not(:disabled){transform:translate(-50%)scale(.92)}.camera-shutter:disabled{opacity:.35;cursor:not-allowed}:root{--key-unit:44px;--key-gap:4px;--color-key-bg:#0d2049;--color-key-border:#22376e;--color-key-text:#c9d3ea;--color-key-pressed:#1f9e6d;--color-key-repeat:#f6ed22;--color-kb-bg:#01286d}.kb-wrap{background:var(--color-kb-bg);border-radius:var(--rounded-lg);padding:var(--space-4);overflow-x:auto}.kb-log-wrap{margin-bottom:var(--space-4)}.kb-log-label{color:var(--color-primary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-2);font-size:11px;font-weight:700}.kb-log{scroll-behavior:smooth;gap:6px;padding:4px 2px 10px;display:flex;overflow-x:auto}.kb-log:empty:after{content:"Press any key to begin…";color:var(--color-ink-muted-48);padding:8px 0;font-size:13px;font-style:italic}.kb-log-chip{border-radius:var(--rounded-pill);white-space:nowrap;border:1px solid var(--color-key-border);background:var(--color-key-bg);color:var(--color-key-text);flex:none;padding:7px 12px;font-size:12px;font-weight:600;animation:.18s chipIn}.kb-log-chip.st-1{background:#113c51;background:color-mix(in srgb, var(--color-key-pressed) 22%, var(--color-key-bg));border-color:var(--color-key-pressed);color:var(--color-key-pressed)}.kb-log-chip.st-2{background:#404d40;background:color-mix(in srgb, var(--color-key-repeat) 22%, var(--color-key-bg));border-color:var(--color-key-repeat);color:var(--color-key-repeat)}@keyframes chipIn{0%{opacity:0;transform:translateY(4px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}.kb-legend{gap:var(--space-4);margin-bottom:var(--space-4);flex-wrap:wrap;align-items:center;display:flex}.kb-legend-item{color:var(--color-ink-muted-48);align-items:center;gap:7px;font-size:12px;font-weight:500;display:flex}.kb-legend-swatch{border:1px solid var(--color-key-border);background:var(--color-key-bg);border-radius:4px;width:14px;height:14px}.kb-legend-swatch.st-1{background:var(--color-key-pressed);border-color:var(--color-key-pressed)}.kb-legend-swatch.st-2{background:var(--color-key-repeat);border-color:var(--color-key-repeat)}.kb-progress{color:var(--color-ink-muted-48);font-variant-numeric:tabular-nums;margin-left:auto;font-size:12px;font-weight:600}.kb-progress b{color:var(--color-key-pressed)}.keyboard-grid{flex-wrap:wrap;align-items:flex-start;gap:22px;display:flex}.kb-block{gap:var(--key-gap);flex-direction:column;flex:none;display:flex}.kb-block-row{gap:var(--key-gap);display:flex}.kb-gap{flex:0 0 calc(var(--key-unit) * .5)}.kb-block-label{color:var(--color-primary-on-dark);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px;font-size:10px;font-weight:700}.key{background:var(--color-key-bg);border:1px solid var(--color-key-border);border-radius:var(--rounded-sm);text-align:center;color:var(--color-key-text);width:var(--key-unit);height:var(--key-unit);-webkit-user-select:none;user-select:none;justify-content:center;align-items:center;padding:2px;font-size:11px;font-weight:600;line-height:1.15;transition:transform .1s,background .15s,color .15s,border-color .15s;display:flex;position:relative}.key.w-1_25{width:calc(var(--key-unit) * 1.25)}.key.w-1_5{width:calc(var(--key-unit) * 1.5)}.key.w-1_75{width:calc(var(--key-unit) * 1.75)}.key.w-2{width:calc(var(--key-unit) * 2)}.key.w-2_25{width:calc(var(--key-unit) * 2.25)}.key.w-2_75{width:calc(var(--key-unit) * 2.75)}.key.w-6_25{width:calc(var(--key-unit) * 6.25)}.key.st-1{background:#113950;background:color-mix(in srgb, var(--color-key-pressed) 20%, var(--color-key-bg));border-color:var(--color-key-pressed);color:var(--color-key-pressed)}.key.st-2{background:#404d40;background:color-mix(in srgb, var(--color-key-repeat) 22%, var(--color-key-bg));border-color:var(--color-key-repeat);color:var(--color-key-repeat)}.key.flash{transform:scale(.92)}.kb-numpad{gap:var(--key-gap);grid-template-columns:repeat(4, var(--key-unit));grid-template-rows:repeat(5, var(--key-unit));display:grid}.kb-numpad .key{width:auto;height:auto}.kb-nav{gap:var(--key-gap);grid-template-columns:repeat(3, var(--key-unit));grid-template-rows:repeat(2, var(--key-unit)) calc(var(--key-unit) * .4) repeat(2, var(--key-unit));display:grid}.kb-nav .key{width:auto;height:auto}.kb-nav .empty{visibility:hidden}@media (width<=720px){:root{--key-unit:32px}.key{font-size:9px}}.trackpad-test{background:var(--color-canvas);border:1px solid var(--color-hairline);border-radius:var(--rounded-lg);cursor:crosshair;height:400px;position:relative}.status-grid{gap:var(--space-2);flex-wrap:wrap;margin:0;display:flex}.status-item{align-items:center;gap:var(--space-2);background:var(--color-canvas-parchment);border:1px solid var(--color-hairline);border-radius:var(--rounded-pill);white-space:nowrap;padding:7px 16px;display:inline-flex}.status-item .label{color:var(--color-ink-muted-48);margin-bottom:0;font-size:13px}.status-item .value{color:var(--color-ink);font-size:13px;font-weight:700}.mt-hint{color:var(--color-ink-muted-48);margin-bottom:var(--space-5);font-size:14px}.mt-panel{background:var(--color-kb-bg);border-radius:var(--rounded-lg);padding:var(--space-5)}.mt-grid{gap:var(--space-5);grid-template-columns:240px 1fr 240px;align-items:start;display:grid}@media (width<=900px){.mt-grid{grid-template-columns:1fr}}.mt-card{background:var(--color-key-bg);border:1px solid var(--color-key-border);border-radius:var(--rounded-lg);padding:var(--space-4) var(--space-4);margin-bottom:var(--space-4)}.mt-card:last-child{margin-bottom:0}.mt-card-head{color:var(--color-key-text);opacity:.85;margin-bottom:var(--space-3);justify-content:space-between;align-items:center;font-size:12px;font-weight:700;display:flex}.mt-reset-btn{border:1px solid var(--color-key-border);color:var(--color-key-text);border-radius:var(--rounded-pill);cursor:var(--cursor-custom);font-size:11px;font-family:var(--font-body);background:0 0;padding:4px 12px;font-weight:600}.mt-reset-btn:hover{border-color:var(--color-key-repeat);color:var(--color-key-repeat)}.mt-value-lg{font-family:var(--font-display);color:#fff;margin-bottom:var(--space-1);font-variant-numeric:tabular-nums;font-size:36px;font-weight:700;line-height:1}.mt-value-sub{color:#8a93a3;font-size:12px}.mt-unit{color:var(--color-key-text);font-size:15px;font-weight:400}.mt-log{max-height:230px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;overflow-y:auto}.mt-log-row{border-bottom:1px solid var(--color-key-border);color:var(--color-key-text);justify-content:space-between;gap:8px;padding:6px 0;display:flex}.mt-log-row:last-child{border-bottom:none}.mt-log-time{color:#7d8aa8;white-space:nowrap}.mt-log:empty:after{content:"No events yet — click or scroll anywhere in this panel to begin.";color:#7d8aa8;font-size:12px;font-style:italic}.mt-counter-grid{gap:var(--space-3);grid-template-columns:1fr 1fr;display:grid}.mt-counter .mt-c-label{color:#8a93a3;margin-bottom:var(--space-1);font-size:11px;font-weight:600}.mt-counter .mt-c-value{font-family:var(--font-display);color:#fff;font-variant-numeric:tabular-nums;font-size:22px;font-weight:700}.mt-mouse-stage{flex-direction:column;align-items:center;padding:6px 0 0;display:flex}.mt-mouse-svg{-webkit-user-select:none;user-select:none;touch-action:none;width:100%;max-width:240px;height:auto}.mt-btn-shape{fill:var(--color-key-bg);stroke:var(--color-key-border);stroke-width:2px;transition:fill .15s,stroke .15s}.mt-btn-shape.mt-tested{fill:color-mix(in srgb, var(--color-key-pressed) 22%, var(--color-key-bg));stroke:var(--color-key-pressed)}.mt-btn-shape.mt-flash{fill:var(--color-key-repeat);stroke:var(--color-key-repeat)}.mt-body-shape{fill:#0a1730;stroke:var(--color-key-border);stroke-width:2px}.mt-wheel-arrow{fill:#3a4a72;transition:fill .15s}.mt-wheel-arrow.mt-flash{fill:var(--color-key-repeat)}.mt-sensor-pill{margin-top:var(--space-4);align-items:center;gap:var(--space-2);background:var(--color-key-bg);border:1px solid var(--color-key-border);border-radius:var(--rounded-pill);color:#8a93a3;padding:8px 18px;font-size:12px;display:inline-flex}#mtSensorStatus{color:#8a93a3;font-weight:700;transition:color .2s}.mt-tip{background:var(--color-key-bg);border:1px solid var(--color-key-border);border-radius:var(--rounded-lg);padding:var(--space-4);color:#c9d3ea;margin-top:var(--space-5);font-size:13px;line-height:1.5}.mt-tip b{color:var(--color-key-repeat)}.ts-status-grid{gap:var(--space-3);margin:var(--space-5) 0;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));display:grid}.ts-status-item{background:var(--color-kb-bg);border:1px solid var(--color-key-border);border-radius:var(--rounded-lg);padding:var(--space-4);text-align:center}.ts-status-item .label{color:var(--color-key-text);opacity:.85;margin-bottom:var(--space-2);font-size:12px;font-weight:600}.ts-status-item .value{font-family:var(--font-display);color:#fff;font-variant-numeric:tabular-nums;font-size:34px;font-weight:700;line-height:1}.ts-status-item .value.ts-max{color:var(--color-key-repeat)}.ts-canvas-wrap{background:var(--color-canvas);border:1px solid var(--color-hairline);border-radius:var(--rounded-lg);touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:640px;position:relative;overflow:hidden}.ts-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.ts-points-layer{pointer-events:none;position:absolute;inset:0}.ts-point{border-radius:50%;justify-content:center;align-items:center;width:64px;height:64px;margin-top:-32px;margin-left:-32px;display:flex;position:absolute}.ts-point-inner{border-radius:50%;width:22px;height:22px;box-shadow:0 0 0 2px #fff9}.ts-empty-hint{color:var(--color-ink-muted-48);pointer-events:none;text-align:center;justify-content:center;align-items:center;padding:20px;font-size:15px;display:flex;position:absolute;inset:0}.ts-fullscreen-btn{z-index:6;border-radius:var(--rounded-lg);color:#fff;width:38px;height:38px;cursor:var(--cursor-custom);background:#0000008c;border:1px solid #ffffff40;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:12px;right:12px}.ts-fullscreen-btn:hover{background:#000000bf}.ts-canvas-wrap.ts-fullscreen-active .ts-fullscreen-btn{display:none}.ts-close-btn{z-index:6;border-radius:var(--rounded-lg);color:#fff;width:38px;height:38px;cursor:var(--cursor-custom);background:#0000008c;border:1px solid #ffffff40;justify-content:center;align-items:center;padding:0;display:none;position:absolute;top:12px;right:12px}.ts-close-btn:hover{background:#000000bf}.ts-canvas-wrap.ts-fullscreen-active .ts-close-btn{display:flex}.ts-floating-status{z-index:6;border-radius:var(--rounded-lg);pointer-events:none;background:#0000008c;border:1px solid #ffffff40;gap:18px;padding:10px 18px;display:none;position:absolute;top:12px;left:12px}.ts-canvas-wrap.ts-fullscreen-active .ts-floating-status{display:flex}.ts-floating-item{flex-direction:column;align-items:center;min-width:60px;display:flex}.ts-floating-label{color:#c9d3ea;opacity:.85;font-size:10px;font-weight:700}.ts-floating-value{font-family:var(--font-display);color:#fff;font-variant-numeric:tabular-nums;font-size:24px;font-weight:700;line-height:1.3}.ts-floating-value.ts-max{color:var(--color-key-repeat)}.ts-floating-actions{z-index:6;gap:10px;display:none;position:absolute;bottom:12px;left:12px}.ts-canvas-wrap.ts-fullscreen-active .ts-floating-actions{display:flex}.ts-floating-action-btn{border-radius:var(--rounded-pill);color:#fff;font-family:var(--font-body);cursor:var(--cursor-custom);background:#0000008c;border:1px solid #ffffff40;padding:10px 16px;font-size:13px;font-weight:600}.ts-floating-action-btn:hover{background:#000000bf}.ts-canvas-wrap:fullscreen{border-radius:0;width:100%;height:100%}.ts-canvas-wrap:fullscreen{border-radius:0;width:100%;height:100%}body.touch-lock-active{touch-action:pan-y;-webkit-user-select:none;user-select:none}@media (width<=640px){.ts-canvas-wrap{height:460px}}.ts-chooser-wrap{background:var(--color-canvas);border:1px solid var(--color-hairline);border-radius:var(--rounded-lg);justify-content:center;align-items:center;width:100%;height:640px;display:none;position:relative;overflow:hidden}:-webkit-any(.ts-chooser-wrap:fullscreen,.ts-chooser-wrap:-webkit-full-screen){border-radius:0;width:100%;height:100%}:is(.ts-chooser-wrap:fullscreen,.ts-chooser-wrap:fullscreen){border-radius:0;width:100%;height:100%}@media (width<=640px){.ts-chooser-wrap{height:460px}}.ts-chooser-inner{text-align:center;max-width:560px;padding:20px}.ts-chooser-inner p{color:var(--color-ink-muted-48);margin-bottom:var(--space-6);font-size:15px}.ts-chooser-close-btn{z-index:6;background:var(--color-kb-bg);border:1px solid var(--color-key-border);border-radius:var(--rounded-lg);color:#fff;width:38px;height:38px;cursor:var(--cursor-custom);justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:16px;right:16px}.ts-chooser-close-btn:hover{background:var(--color-key-border)}.ts-chooser-options{gap:var(--space-4);flex-wrap:wrap;justify-content:center;display:flex}.ts-chooser-card{width:220px;padding:var(--space-5) var(--space-4);background:var(--color-kb-bg);border:1px solid var(--color-key-border);border-radius:var(--rounded-lg);cursor:var(--cursor-custom);font-family:var(--font-body);text-align:center;flex-direction:column;align-items:center;transition:transform .15s,border-color .15s;display:flex}.ts-chooser-card:hover{border-color:var(--color-primary-on-dark);transform:translateY(-2px)}.ts-chooser-icon{color:#fff;margin-bottom:var(--space-3);font-size:30px;display:block}.ts-chooser-name{font-family:var(--font-display);color:#fff;margin-bottom:var(--space-1);font-size:16px;font-weight:600}.ts-chooser-desc{color:#fff;opacity:.85;font-size:13px}.ts-grid-layer{box-sizing:border-box;gap:2px;padding:2px;display:grid;position:absolute;inset:0}.ts-grid-cell{border:1px solid var(--color-hairline);background:#01286d12;border-radius:4px;justify-content:center;align-items:center;transition:background .15s,color .15s,border-color .15s;display:flex}.ts-grid-cell.touched{background:var(--color-good);border-color:var(--color-good);color:#fff}.test-button{background:var(--color-primary);color:#fff;border-radius:var(--rounded-pill);cursor:var(--cursor-custom);font-family:var(--font-body);border:none;margin:5px;padding:12px 22px;font-size:15px;font-weight:600;transition:opacity .2s,transform .15s}.test-button:hover{opacity:.88;transform:translateY(-1px)}.test-button:disabled{opacity:.4;cursor:not-allowed;transform:none}.test-button:disabled:hover{opacity:.4}.mic-viz-wrap{border-radius:var(--rounded-lg);background:#0d1730;border:1px solid #0d1730;margin-top:4px;padding:16px 18px 10px}.mic-freq-labels{color:#8a93a3;justify-content:space-between;padding:0 2px 8px;font-size:12px;display:flex}.mic-canvas-box{border-radius:var(--rounded-md);background:#0d1730;overflow:hidden}#micWaveformCanvas{width:100%;height:180px;display:block}#micSpectrogramCanvas{width:100%;height:160px;margin-top:14px;display:block}.mic-canvas-footer{justify-content:space-between;align-items:center;padding:8px 2px 2px;font-size:13px;display:flex}.mic-info-link{color:#8a93a3;cursor:default;align-items:center;gap:6px;display:inline-flex}.mic-canvas-footer .mic-actions a{color:#8a93a3;cursor:var(--cursor-custom);margin-left:16px;text-decoration:none}.mic-canvas-footer .mic-actions a:hover{color:#e8eaed;text-decoration:underline}.mic-btn-row{margin-bottom:var(--space-4);flex-wrap:wrap;align-items:center;gap:10px;display:flex}.mic-btn-record{background:var(--color-bad);color:#fff}.mic-btn-record.is-recording{background:#b3202e}.mic-btn-hear{color:#fff;background:#2c2f36}.mic-btn-hear.is-hearing{background:#2997ff}.mic-hint{color:var(--color-ink-muted-48);margin:-8px 0 16px;font-size:12px}.mic-device-select{border-radius:var(--rounded-pill);border:1px solid var(--color-hairline);font-family:var(--font-body);background:var(--color-canvas-parchment);color:var(--color-ink);cursor:var(--cursor-custom);padding:8px 14px;font-size:14px}.spk-viz-wrap{border-radius:var(--rounded-lg);background:#0d1730;border:1px solid #0d1730;flex-direction:column;flex:1;min-height:130px;margin-top:14px;padding:14px 18px 10px;display:flex}.spk-canvas-box{border-radius:var(--rounded-md);background:#0d1730;flex:1;min-height:0;overflow:hidden}#spkOutCanvas{width:100%;height:100%;display:block}.audio-test-grid{gap:var(--space-5);margin-bottom:var(--space-5);grid-template-columns:1fr 1fr;align-items:stretch;display:grid}.audio-buttons-col,.audio-youtube-col{flex-direction:column;margin-bottom:0;display:flex}.audio-buttons-col>div{flex-wrap:wrap;align-content:flex-start;gap:5px;display:flex}.audio-buttons-col .test-button{margin:0}.yt-player-wrap{aspect-ratio:16/9;border-radius:var(--rounded-md);background:#0d1730;width:100%;margin-top:auto;position:relative;overflow:hidden}.yt-player-wrap iframe{border:0;width:100%;height:100%;display:block}.yt-player-wrap.has-video{display:none}@media (width<=720px){.audio-test-grid{grid-template-columns:1fr}}.mic-control-bar{margin-bottom:4px}.mic-state-idle{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.mic-state-recording{display:flex}.mic-recording-pill{border:2px solid var(--color-bad);border-radius:var(--rounded-pill);background:#d645451f;align-items:center;gap:14px;padding:6px 10px 6px 6px;display:inline-flex}.mic-pill-stop{color:#fff;border-radius:var(--rounded-pill);font-family:var(--font-body);cursor:var(--cursor-custom);background:#2c2f36;border:none;padding:10px 20px;font-size:14px;font-weight:600}.mic-pill-stop:hover{opacity:.85}.mic-pill-timer{color:var(--color-bad);font-variant-numeric:tabular-nums;text-align:center;min-width:74px;font-size:16px;font-weight:700}.mic-pill-cancel{color:var(--color-bad);cursor:var(--cursor-custom);background:0 0;border:none;padding:4px 8px;font-size:20px;line-height:1}.mic-pill-cancel:hover{opacity:.7}.mic-state-recorded{display:none}.mic-recorded-row{margin-bottom:var(--space-4);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.mic-recorded-row-left{align-items:center;gap:8px;display:flex}.mic-clear-btn{color:var(--color-ink-muted-48);cursor:var(--cursor-custom);background:0 0;border:none;padding:4px 8px;font-size:22px;line-height:1}.mic-clear-btn:hover{color:var(--color-ink)}.mic-playback-bar{background:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--rounded-pill);align-items:center;gap:12px;margin-bottom:4px;padding:10px 14px;display:flex}.mic-play-btn{color:#fff;width:40px;height:40px;cursor:var(--cursor-custom);background:#2997ff;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:15px;display:flex}.mic-play-btn:hover{opacity:.88}.mic-scrub-wrap{height:32px;cursor:var(--cursor-custom);flex:1;position:relative}#micScrubCanvas{width:100%;height:100%;display:block}.mic-download-btn{color:#fff;width:36px;height:36px;cursor:var(--cursor-custom);background:#2997ff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:14px;text-decoration:none;display:flex}.mic-download-btn:hover{opacity:.88}@media (width<=834px){.cards{grid-template-columns:1fr}.tabs{flex-wrap:wrap}}@media (width<=640px){.header{padding:var(--space-3) var(--space-4)}.header h1{font-size:22px}.header h2{font-size:16px}.tab-content{padding:var(--space-4) var(--space-4)}}.pw-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:9999;background:#01071499;justify-content:center;align-items:center;display:none;position:fixed;inset:0}.pw-overlay.open{display:flex}.pw-modal{background:var(--color-canvas);border-radius:var(--rounded-lg);width:100%;max-width:400px;box-shadow:var(--shadow-hero);padding:36px 32px 28px;animation:.22s modalIn;position:relative}@keyframes modalIn{0%{opacity:0;transform:translateY(-16px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.pw-modal h2{margin-bottom:var(--space-2);color:var(--color-ink);font-size:20px;font-weight:600}.pw-modal p{color:var(--color-ink-muted-48);margin-bottom:var(--space-5);font-size:14px}.pw-modal .pw-field-wrap{margin-bottom:var(--space-3);position:relative}.pw-modal input[type=password],.pw-modal input[type=text]{border:1px solid var(--color-hairline);border-radius:var(--rounded-md);width:100%;font-family:var(--font-body);color:var(--color-ink);background:var(--color-canvas-parchment);outline:none;padding:11px 44px 11px 14px;font-size:15px;transition:border-color .15s}.pw-modal input:focus{border-color:var(--color-primary)}.pw-modal input.pw-error{border-color:var(--color-bad)}.pw-modal .pw-toggle{cursor:var(--cursor-custom);color:var(--color-ink-muted-48);background:0 0;border:none;padding:4px;font-size:16px;line-height:1;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.pw-modal .pw-toggle:hover{color:var(--color-ink)}.pw-error-msg{color:var(--color-bad);min-height:18px;margin-bottom:var(--space-4);font-size:13px}.pw-actions{gap:var(--space-3);justify-content:flex-end;display:flex}.pw-actions .btn-cancel{border:1px solid var(--color-hairline);color:var(--color-ink);border-radius:var(--rounded-pill);cursor:var(--cursor-custom);font-family:var(--font-body);background:0 0;padding:10px 20px;font-size:15px;transition:background .15s}.pw-actions .btn-cancel:hover{background:var(--color-canvas-parchment)}.pw-actions .btn-unlock{background:var(--color-primary);color:#fff;border-radius:var(--rounded-pill);cursor:var(--cursor-custom);font-family:var(--font-body);border:none;padding:10px 22px;font-size:15px;font-weight:600;transition:opacity .15s}.pw-actions .btn-unlock:hover{opacity:.85}.pw-lock-icon{margin-bottom:var(--space-3);font-size:32px;display:block}
