.jsf{gap:var(--s5);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.jsf-in,.jsf-out{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--r-lg);padding:var(--s5)}.jsf-in{transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease)}.jsf-in.jsf-over{border-color:var(--brass);background:var(--brass-wash)}.jsf-head,.jsf-stub,.jsf-result-head,.jsf-settings>div{justify-content:space-between;align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.jsf-label,.jsf-setting-label,.jsf-kicker,.jsf-facts dt,.jsf-receipt dt{font-family:var(--font-mono);font-size:var(--step--1);text-transform:uppercase;letter-spacing:.07em;color:var(--ink-2)}.jsf-head-actions,.jsf-result-actions{align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.jsf-result-actions{margin-top:var(--s3)}.jsf-file span,.jsf-clear{cursor:pointer;min-height:44px;color:var(--ink-1);font-size:var(--step--1);border-bottom:1px solid var(--brass);align-items:center;display:inline-flex}.jsf-file input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}.jsf-in textarea{width:100%;margin-top:var(--s3);padding:var(--s4);background:var(--surface-0);color:var(--ink-0);border:1px solid var(--line);border-radius:var(--r-md);resize:vertical;min-height:300px;font-family:var(--font-mono);font-size:var(--step--1);tab-size:2;contain:paint;line-height:1.55}.jsf-in textarea:focus{border-color:var(--brass);outline:none}.jsf-in textarea::placeholder{color:var(--ink-2);opacity:.55}.jsf-error{color:var(--error)}.jsf-notice{color:var(--ink-2)}.jsf-error,.jsf-notice{margin-top:var(--s3);font-size:var(--step--1);line-height:1.55}.jsf-status{margin-top:var(--s4);padding:var(--s3) var(--s4);border-radius:var(--r-md);background:var(--surface-2);border-left:3px solid var(--line-firm);align-items:center;min-height:65px;display:flex}.jsf-status[data-state=done]{border-left-color:var(--ok)}.jsf-status[data-state=refused]{border-left-color:var(--error)}.jsf-status[data-state=working]{border-left-color:var(--brass)}.jsf-facts{gap:var(--s3) var(--s5);flex-wrap:wrap;margin:0;display:flex}.jsf-facts dd{font-size:var(--step--1);color:var(--ink-1);margin:2px 0 0}.jsf-settings{gap:var(--s3);margin-top:var(--s4);padding-top:var(--s4);border-top:1px solid var(--line);display:grid}.jsf-segments{background:var(--surface-2);border-radius:var(--r-md);gap:2px;padding:3px;display:flex}.jsf-segments button{min-height:44px;padding:0 var(--s4);color:var(--ink-1);font-size:var(--step--1);border-radius:7px}.jsf-segments button[aria-pressed=true]{background:var(--surface-0);color:var(--ink-0);box-shadow:var(--shadow-1)}.jsf-actions{margin-top:var(--s4)}.jsf-run{width:100%;min-height:48px;padding:0 var(--s5);background:var(--brass);color:var(--on-brass);border-radius:var(--r-md);font-weight:700}.jsf-run:disabled{opacity:.45;cursor:not-allowed}.jsf-out{min-height:520px;box-shadow:var(--shadow-1)}.jsf-out.has-result{border-color:var(--line-firm);box-shadow:var(--shadow-2)}.jsf-stub{color:var(--ink-2);font-size:var(--step--1)}.jsf-number{color:var(--brass-lo);letter-spacing:.04em}.jsf-perforation{margin:var(--s4) calc(-1 * var(--s5));border-top:1px dashed var(--line-firm)}.jsf-live{min-height:1.55em;color:var(--ink-2);font-size:var(--step--1);margin:0;line-height:1.55}.jsf-stages{margin:var(--s5) 0 0;gap:var(--s3);padding:0;list-style:none;display:grid}.jsf-stages li{align-items:center;gap:var(--s3);color:var(--ink-2);font-size:var(--step--1);display:flex}.jsf-stages li:before{content:"";border-radius:var(--r-full);border:1px solid var(--line-firm);flex:none;width:10px;height:10px}.jsf-stages li[data-state=done]{color:var(--ink-1)}.jsf-stages li[data-state=done]:before{background:var(--ok);border-color:var(--ok)}.jsf-stages li[data-state=running]{color:var(--ink-0)}.jsf-stages li[data-state=running]:before{background:var(--brass);border-color:var(--brass);animation:1.2s ease-in-out infinite jsf-pulse}@keyframes jsf-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.5)}}.jsf-refusal,.jsf-empty{align-content:center;min-height:360px;display:grid}.jsf-refusal h2,.jsf-result-head h2{margin:var(--s2) 0 0;font-size:var(--step-1)}.jsf-refusal p,.jsf-empty p{max-width:52ch;color:var(--ink-1);line-height:1.6}.jsf-refusal .jsf-kicker{color:var(--error)}.jsf-excerpt{max-width:100%;margin:var(--s2) 0 0;padding:var(--s2) var(--s3);text-align:left;background:var(--surface-0);border:1px solid var(--line);border-radius:var(--r-sm);font-size:var(--step--1);white-space:pre;line-height:1.4;overflow-x:auto}.jsf-position{color:var(--error)}.jsf-next{margin-top:var(--s4);padding-left:var(--s4);border-left:3px solid var(--brass);color:var(--ink-0)}.jsf-result-actions button{min-height:44px;padding:0 var(--s4);border:1px solid var(--line-firm);border-radius:var(--r-md);color:var(--ink-1)}.jsf-result-actions button:first-child{background:var(--brass);color:var(--on-brass);border-color:var(--brass)}.jsf-code{max-height:420px;margin:var(--s4) 0 0;padding:var(--s4);background:var(--surface-0);border:1px solid var(--line);border-radius:var(--r-md);white-space:pre;font-family:var(--font-mono);font-size:var(--step--1);tab-size:4;contain:paint;line-height:1.55;overflow:auto}.jsf-preview-note{margin-top:var(--s3);color:var(--ink-2);font-size:var(--step--1)}.jsf-receipt{margin:var(--s5) 0 0;border-top:1px solid var(--line);gap:0;display:grid}.jsf-receipt div{gap:var(--s4);padding:var(--s3) 0;border-bottom:1px solid var(--line);grid-template-columns:minmax(110px,.7fr) 1.6fr;display:grid}.jsf-receipt dd{font-size:var(--step--1);color:var(--ink-1);margin:0;line-height:1.55}.jsf-changes{margin-top:var(--s5)}.jsf-changes p{margin:var(--s2) 0 0;color:var(--ink-1);font-size:var(--step--1);line-height:1.6}.jsf-changes ul{margin:var(--s2) 0 0;padding-left:var(--s5)}.jsf-changes li{margin-top:var(--s2);color:var(--ink-1);font-size:var(--step--1);line-height:1.6}@media (width<=760px){.jsf{grid-template-columns:1fr}.jsf-in,.jsf-out{padding:var(--s4)}.jsf-in textarea{min-height:260px;font-size:16px}.jsf-perforation{margin-inline:calc(-1 * var(--s4))}.jsf-out{min-height:340px}.jsf-refusal,.jsf-empty{min-height:240px}.jsf-receipt div{grid-template-columns:1fr;gap:2px}}@media (prefers-reduced-motion:reduce){.jsf-in{transition:none}.jsf-stages li[data-state=running]:before{animation:none}}
