.cf{gap:var(--s5);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}.cf-input,.cf-receipt{min-width:0;padding:var(--s5);border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface-1)}.cf-input.is-dragging{border-color:var(--brass);background:var(--brass-wash)}.cf-heading,.cf-receipt-head,.cf-output-actions{justify-content:space-between;align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.cf-heading>label,.cf-output-label,.cf-indent legend{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}.cf-heading-actions{align-items:center;gap:var(--s4);display:flex}.cf-file span,.cf-link{min-width:44px;min-height:44px;padding-inline:var(--s2);border-bottom:1px solid var(--brass);color:var(--ink-1);font-size:var(--step--1);cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.cf-file input:focus-visible+span{outline:3px solid var(--focus);outline-offset:2px}.cf textarea{width:100%;padding:var(--s4);border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface-0);color:var(--ink-0);font-family:var(--font-mono);font-size:var(--step--1);resize:vertical;tab-size:4;white-space:pre;line-height:1.55}.cf-input>textarea{margin-top:var(--s3)}.cf textarea:focus{border-color:var(--brass)}.cf textarea:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.cf textarea::placeholder{color:var(--ink-2);opacity:.56}.cf-indent{align-items:center;gap:var(--s2) var(--s4);margin-top:var(--s4);border:0;flex-wrap:wrap;padding:0;display:flex}.cf-indent legend{float:left;width:100%;margin-bottom:var(--s2);padding:0}.cf-choice{align-items:center;gap:var(--s2);min-height:44px;padding-inline:var(--s2);font-size:var(--step--1);color:var(--ink-1);cursor:pointer;display:inline-flex}.cf-choice input{accent-color:var(--brass);width:18px;height:18px}.cf-choice input:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.cf-notice{margin-top:var(--s3);color:var(--ink-2);font-size:var(--step--1);line-height:1.55}.cf-endings{color:var(--ink-1)}.cf-status{gap:var(--s3);margin-top:var(--s4);padding:var(--s3) var(--s4);border-left:3px solid var(--line-firm);border-radius:var(--r-md);background:var(--surface-2);min-height:82px;display:grid}.cf-status[data-state=formatted]{border-left-color:var(--ok)}.cf-status[data-state=invalid]{border-left-color:var(--error)}.cf-status strong{font-family:var(--font-mono);font-size:var(--step--1);color:var(--ink-1)}.cf-status[data-state=formatted] strong{color:var(--ok)}.cf-status[data-state=invalid] strong{color:var(--error)}.cf-status dl,.cf-result-facts{gap:var(--s3) var(--s5);flex-wrap:wrap;margin:0;display:flex}.cf-status dl>div,.cf-result-facts>div{min-width:7ch}.cf-status dt,.cf-result-facts dt{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);font-size:.7rem}.cf-status dd,.cf-result-facts dd{font-size:var(--step--1);overflow-wrap:anywhere;margin:2px 0 0}.cf-submit,.cf-secondary{border-radius:var(--r-md);min-height:44px;font-size:var(--step--1);font-weight:600}.cf-actions{margin-top:var(--s4)}.cf-submit{width:100%;padding:0 var(--s4);background:var(--brass);color:var(--on-brass)}.cf-submit:disabled{opacity:.45;cursor:not-allowed}.cf-receipt{min-height:486px;box-shadow:var(--shadow-1)}.cf-receipt.has-result{border-color:var(--line-firm);box-shadow:var(--shadow-2)}.cf-receipt-head{color:var(--ink-2);font-size:var(--step--1)}.cf-number{color:var(--brass-lo);font-family:var(--font-mono);letter-spacing:.04em}.cf-perforation{height:1px;margin:var(--s4) calc(-1 * var(--s5));background-image:linear-gradient(90deg, var(--line-firm) 55%, transparent 0);background-size:9px 1px;position:relative}.cf-empty,.cf-error{max-width:54ch;color:var(--ink-2);font-size:var(--step--1);line-height:1.6}.cf-error{padding:var(--s4);border-left:3px solid var(--error);background:var(--surface-2);color:var(--ink-1)}.cf-error strong{color:var(--error)}.cf-error p{margin-top:var(--s2)}.cf-error-pos{font-family:var(--font-mono);font-size:var(--step--1)}.cf-error-excerpt{margin:var(--s2) 0 0;padding:var(--s2) var(--s3);background:var(--surface-0);border:1px solid var(--line);border-radius:var(--r-sm);font-family:var(--font-mono);font-size:var(--step--1);white-space:pre;line-height:1.4;overflow-x:auto}.cf-progress{gap:var(--s3);margin-top:var(--s4);padding:var(--s3) var(--s4);border:1px solid var(--line-firm);border-radius:var(--r-md);background:var(--surface-2);display:grid}.cf-stages{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.cf-stages li{font-size:var(--step--1);color:var(--ink-2);padding-left:1.6rem;position:relative}.cf-stages li:before{content:"";border:1px solid var(--line-firm);border-radius:50%;width:9px;height:9px;position:absolute;top:.42em;left:0}.cf-stages li[data-state=done]{color:var(--ink-1)}.cf-stages li[data-state=done]:before{background:var(--ok);border-color:var(--ok)}.cf-stages li[data-state=active]{color:var(--ink-0);font-weight:600}.cf-stages li[data-state=active]:before{background:var(--brass);border-color:var(--brass)}.cf-progress-read{justify-content:flex-end;display:flex}.cf-progress-read span{color:var(--ink-2);font-family:var(--font-mono);font-size:var(--step--1)}.cf-progress progress{width:100%;accent-color:var(--brass)}.cf-result-facts{padding-top:var(--s4);border-top:1px solid var(--line)}.cf-proof{margin:var(--s4) 0;color:var(--ink-2);font-size:var(--step--1);line-height:1.5}.cf-proof strong{color:var(--ok)}.cf-warning{margin:0 0 var(--s4);padding:var(--s3) var(--s4);border-left:3px solid var(--warn-surface);border-radius:var(--r-md);background:var(--surface-2);color:var(--ink-1);font-size:var(--step--1);line-height:1.5}.cf-output-label{margin-bottom:var(--s2);display:block}.cf-output-actions{margin-top:var(--s3);justify-content:flex-start}.cf-secondary{padding:0 var(--s4);border:1px solid var(--line-firm);color:var(--ink-1)}.cf-secondary:hover{border-color:var(--brass);color:var(--ink-0)}@media (width<=820px){.cf{grid-template-columns:1fr}.cf-receipt{min-height:300px}}@media (width<=480px){.cf-input,.cf-receipt{padding:var(--s4)}.cf-perforation{margin-inline:calc(-1 * var(--s4))}.cf-indent{gap:var(--s1) var(--s3)}}
