.f-page{max-width:var(--max);padding:clamp(2rem, 1.5rem + 2vw, 3.5rem) var(--edge) 0;gap:clamp(3rem,2rem + 3vw,5rem);margin-inline:auto;display:grid}.f-tool{grid-template-columns:minmax(18rem,4fr) minmax(0,8fr);align-items:start;gap:1.5rem;display:grid}.f-panel{border:1px solid var(--line);background:var(--paper);align-content:start;gap:1.1rem;min-width:0;padding:clamp(1.25rem,1rem + .8vw,1.75rem);display:grid}.f-panel>h2,.f-panel>h3{letter-spacing:-.005em;font-size:1.125rem;font-weight:700}.f-panel+.f-panel{margin-top:1rem}.f-stack{gap:1rem;min-width:0;display:grid}.f-field{gap:.35rem;display:grid}.f-field label,.f-legend{font-size:var(--fs-s);color:var(--ink);font-weight:600}.f-field input,.f-field select,.f-field textarea{font:inherit;border:1px solid var(--line-strong);background:var(--paper);color:var(--ink);border-radius:0;width:100%;padding:.65rem .75rem;font-size:1rem}.f-field input.mono,.f-field textarea.mono{font-family:var(--font-mono);font-size:.95rem}.f-field input:focus-visible,.f-field select:focus-visible,.f-field textarea:focus-visible{outline:2px solid var(--brand);outline-offset:-1px;border-color:var(--brand)}.f-field [aria-invalid=true]{border-color:var(--error)}.f-help{font-size:var(--fs-s);color:var(--ink-2)}.f-row{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.f-seg{border:0;gap:.35rem;margin:0;padding:0;display:grid}.f-seg>div{flex-wrap:wrap;display:flex}.f-seg label{border:1px solid var(--line-strong);cursor:pointer;background:var(--paper);color:var(--ink);align-items:center;margin-right:-1px;padding:.5rem .85rem;font-size:.95rem;font-weight:500;display:inline-flex}.f-seg label:has(input:checked){background:var(--brand);border-color:var(--brand);color:#fff;position:relative}.f-seg input{opacity:0;pointer-events:none;position:absolute}.f-seg label:has(input:focus-visible){outline:2px solid var(--brand);outline-offset:2px}.f-ex{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.f-ex span{font-size:var(--fs-s);color:var(--ink-2);margin-right:.2rem}.f-ex button{font:inherit;font-family:var(--font-mono);border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer;padding:.3rem .55rem;font-size:.8125rem;transition:border-color .14s}.f-ex button:hover{border-color:var(--brand)}.f-sum{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:2rem;margin:0;display:grid}.f-sum>div{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:1rem;padding:.6rem 0;display:flex}.f-sum dt{color:var(--ink-2);font-size:.95rem}.f-sum dd{font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;overflow-wrap:anywhere;margin:0;font-size:.95rem}.f-sum .key dd{color:var(--brand);font-weight:600}.f-sum.one{grid-template-columns:1fr}.f-answer{border-left:3px solid var(--brand);background:var(--surface);padding:.9rem 1rem;font-size:1.0625rem}.f-answer strong{font-family:var(--font-mono);font-weight:600}.f-msgs{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.f-msgs li,.f-msg{border-left:3px solid;padding:.65rem .85rem;font-size:.95rem}.f-msgs .bad,.f-msg.bad{border-color:var(--error);background:var(--error-tint);color:var(--ink)}.f-msgs .warn,.f-msg.warn{border-color:var(--dev);background:var(--dev-tint);color:var(--ink)}.f-msgs .ok,.f-msg.ok{border-color:var(--ok);background:var(--ok-tint);color:var(--ink)}.f-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.f-actions .btn:disabled{opacity:.45;cursor:not-allowed}.f-btn-line{background:var(--paper);color:var(--ink);border:1px solid var(--line-strong)}.f-btn-line:hover{border-color:var(--brand);color:var(--ink)}.f-note{font-size:var(--fs-s);color:var(--ink-2)}.f-code{color:#d5dcf2;white-space:pre;background:#0e1530;max-height:24rem;margin:0;padding:1rem 1.1rem;font-size:.8rem;line-height:1.65;overflow:auto}.f-code:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.f-table-wrap{border:1px solid var(--line);overflow-x:auto}.f-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.9rem}.f-table th{text-align:left;background:var(--surface);white-space:nowrap;border-bottom:1px solid var(--line);padding:.55rem .75rem;font-weight:600}.f-table td{border-bottom:1px solid var(--line);vertical-align:top;padding:.5rem .75rem}.f-table tr:last-child td{border-bottom:0}.f-table .mono{font-family:var(--font-mono);white-space:nowrap;font-size:.85rem}.f-table .num{text-align:right}.f-tag{white-space:nowrap;padding:.1rem .45rem;font-size:.78rem;font-weight:600;display:inline-block}.f-tag.ok{background:var(--ok-tint);color:var(--ok)}.f-tag.bad{background:var(--error-tint);color:var(--error)}.f-tag.warn{background:var(--dev-tint);color:var(--dev)}.f-tag.off{background:var(--surface);color:var(--ink-2)}.f-explain{grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;display:grid}.f-explain h2{letter-spacing:-.02em;grid-column:1/-1;font-size:clamp(1.75rem,1.3rem + 1.4vw,2.5rem);font-weight:500}.f-explain h3{margin-bottom:.4rem;font-size:1.125rem;font-weight:700}.f-explain p{color:var(--ink-2)}.f-faq h2,.f-more h2{letter-spacing:-.02em;margin-bottom:1.25rem;font-size:clamp(1.75rem,1.3rem + 1.4vw,2.5rem);font-weight:500}.f-faq-list{border-top:1px solid var(--line);max-width:56rem}.f-faq details{border-bottom:1px solid var(--line)}.f-faq summary{cursor:pointer;padding:1rem 2rem 1rem 0;font-weight:600;list-style:none;position:relative}.f-faq summary::-webkit-details-marker{display:none}.f-faq summary:after{content:"+";color:var(--brand);font-size:1.25rem;font-weight:400;position:absolute;top:.9rem;right:.25rem}.f-faq details[open] summary:after{content:"−"}.f-faq details p{color:var(--ink-2);max-width:48rem;padding:0 0 1.1rem}.f-more ul{border-top:1px solid var(--line);grid-template-columns:repeat(3,minmax(0,1fr));gap:1.5rem;margin:0;padding:1.25rem 0 0;list-style:none;display:grid}.f-more a{font-size:1.0625rem;font-weight:700}.f-more li p{color:var(--ink-2);margin-top:.3rem;font-size:.95rem}.f-more .f-help{margin-top:2rem;font-size:1rem}@media (width<=64rem){.f-tool,.f-explain,.f-more ul{grid-template-columns:1fr}}@media (width<=36rem){.f-sum,.f-row{grid-template-columns:1fr}}.f-answer.bad{border-color:var(--error);background:var(--error-tint)}
