:root{--paper: #f3efe6;--paper-raised: #faf7f0;--paper-sunken: #ede8db;--ink: #15110c;--ink-soft: #4a4238;--taupe: #6b6154;--taupe-faint: #8a8072;--rule: #ddd6c8;--rule-strong: #c9c0ae;--accent: #d8442b;--accent-ink: #a83a22;--accent-soft: rgba(216, 68, 43, .11);--accent-soft-strong: rgba(216, 68, 43, .2);--shrink: #c79a4e;--drop: #8b3a26;--hide: #8a7a63;--content-compact: #a68a5b;--crop: #6f7a63;--compact-spacing: #9c9284;--winner-tint: rgba(216, 68, 43, .07);--cta-fill: #2e2924;--font-serif: Georgia, "Iowan Old Style", "Palatino Linotype", Palatino, "Times New Roman", serif;--font-sans: -apple-system, "Helvetica Neue", Helvetica, Arial, sans-serif;--font-mono: "IBM Plex Mono", "Geist Mono", ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--text-body: 15.5px;--text-ui: 15px;--text-mono: 13px;--text-mono-faint: 11.5px;--text-trace: 13.5px;--s1: 4px;--s2: 8px;--s3: 12px;--s4: 16px;--s5: 24px;--s6: 32px;--s7: 48px;--s8: 64px;--r-edit: 0px;--r-sm: 3px;--r-cta: 5px;--r-ui: 10px;--r-media: 26px;--r-pill: 999px;--ease: cubic-bezier(.2, .7, .3, 1)}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--text-body);line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,p,dl,dd{margin:0}button{font:inherit}::selection{background:var(--accent-soft-strong)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.tabular{font-variant-numeric:tabular-nums}.mono-label{display:block;font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.07em;text-transform:uppercase;color:var(--taupe)}.app{min-height:100vh;max-width:1360px;margin:0 auto;padding:var(--s8) var(--s7) var(--s7)}.app-header{display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s6);padding-bottom:var(--s6);margin-bottom:var(--s7);border-bottom:1px solid var(--rule)}.app-header .lead{max-width:640px}.kicker{font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--accent-ink);margin-bottom:var(--s3)}.app-header h1{font-family:var(--font-serif);font-weight:400;font-size:44px;letter-spacing:-.01em;line-height:1.05;text-wrap:balance;margin-bottom:var(--s3)}.status-chip{display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:var(--text-mono);color:var(--ink-soft);border:1px solid var(--rule);border-radius:var(--r-pill);padding:8px 14px 8px 10px;white-space:nowrap;flex-shrink:0}.status-chip .dot,.status-dot{width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);flex-shrink:0}.status-chip .dot-fail,.status-dot-fail{background:var(--drop);box-shadow:0 0 0 3px #8b3a2629}.app-body{display:grid;grid-template-columns:280px 1fr;grid-template-areas:"controls preview" "trace    trace";gap:var(--s5);align-items:start;margin-bottom:var(--s5)}.panel{border:1px solid var(--rule);border-radius:var(--r-edit)}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:var(--s4) var(--s4) var(--s3);gap:var(--s3);flex-wrap:wrap}.panel-head-right{display:flex;align-items:center;gap:var(--s4)}.panel.controls{grid-area:controls;background:var(--paper);padding-bottom:var(--s4)}.rail-section{padding:0 var(--s4);margin-bottom:var(--s5)}.rail-section:last-child{margin-bottom:0}.preset-list{border-top:1px solid var(--rule)}.preset-row{display:flex;align-items:center;justify-content:space-between;gap:var(--s2);width:100%;padding:10px var(--s2) 10px var(--s3);border:none;border-bottom:1px solid var(--rule);border-left:3px solid transparent;background:transparent;cursor:pointer;transition:background var(--ease) .12s,border-color var(--ease) .12s;font-size:var(--text-ui);color:var(--ink-soft);text-align:left}.preset-row:hover{background:var(--paper-sunken)}.preset-row .idx{font-family:var(--font-mono);font-size:var(--text-mono-faint);color:var(--taupe-faint);width:18px;flex-shrink:0}.preset-row .lbl{flex:1}.preset-row .dim{font-family:var(--font-mono);font-size:var(--text-mono-faint);color:var(--taupe-faint)}.preset-row.selected{border-left-color:var(--accent);background:var(--accent-soft);color:var(--ink);font-weight:600}.preset-row.selected .lbl:before{content:"→ ";color:var(--accent-ink);font-weight:700}.preset-row.selected .idx{color:var(--accent-ink)}.preset-row.custom{border-top:1px dashed var(--rule-strong);border-bottom:none}.field-block{margin-top:var(--s4)}.field-row-line{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}.field-row-line .fval{font-family:var(--font-mono);font-size:var(--text-mono);color:var(--ink)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:16px;background:transparent;margin:0}input[type=range]::-webkit-slider-runnable-track{height:2px;background:var(--rule-strong);border-radius:0}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;margin-top:-6px;background:var(--ink);border-radius:var(--r-sm);border:1px solid var(--ink);transition:background var(--ease) .12s}input[type=range]:active::-webkit-slider-thumb{background:var(--accent);border-color:var(--accent)}input[type=range]::-moz-range-track{height:2px;background:var(--rule-strong);border-radius:0}input[type=range]::-moz-range-thumb{width:14px;height:14px;background:var(--ink);border:1px solid var(--ink);border-radius:var(--r-sm)}.field-row-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3);margin-top:var(--s4)}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field .mono-label{display:flex;align-items:center;gap:4px}.tip{position:relative;color:var(--accent-ink);cursor:help;font-style:normal}.tip:after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 8px);transform:translate(-50%) translateY(4px);width:max-content;max-width:220px;background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:11.5px;text-transform:none;letter-spacing:.02em;line-height:1.4;padding:8px 10px;border-radius:var(--r-sm);opacity:0;pointer-events:none;transition:opacity var(--ease) .12s,transform var(--ease) .12s;z-index:5}.tip:hover:after,.tip:focus-visible:after{opacity:1;transform:translate(-50%) translateY(0)}input[type=number],select{width:100%;min-width:0;background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--r-ui);padding:8px 10px;font-family:var(--font-sans);font-size:var(--text-ui);color:var(--ink);transition:border-color var(--ease) .12s}input[type=number]:hover,select:hover{border-color:var(--rule-strong)}input[type=number]:focus-visible,select:focus-visible{border-color:var(--accent);outline-offset:1px}.toggle-row{flex-direction:row;align-items:center;justify-content:space-between;margin-top:22px}.switch{position:relative;width:38px;height:22px;flex-shrink:0}.switch input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;margin:0;cursor:pointer}.switch .track{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--rule);border-radius:var(--r-pill);transition:background var(--ease) .15s}.switch .knob{position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:var(--paper-raised);border:1px solid var(--rule-strong);transition:transform var(--ease) .15s}.switch input:checked~.track{background:var(--accent)}.switch input:checked~.knob{transform:translate(16px);border-color:var(--accent)}.switch input:focus-visible~.track{outline:2px solid var(--accent);outline-offset:2px}.safe-area-label{margin-bottom:8px}.safe-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s3)}.panel.preview{grid-area:preview;background:var(--paper-raised);padding:var(--s5)}.preview-caption{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:var(--s4)}.preview-caption .surface-id{font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.06em;color:var(--taupe);text-transform:uppercase;margin-bottom:4px}.preview-caption .stat{font-family:var(--font-serif);font-size:42px;color:var(--ink)}.preview-caption .stat span{font-size:20px;color:var(--taupe-faint);font-family:var(--font-sans)}.strategy-pill{font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.05em;text-transform:uppercase;background:var(--accent-soft);border:1px solid rgba(216,68,43,.28);color:var(--accent-ink);padding:5px 12px;border-radius:var(--r-pill);white-space:nowrap}.preview-stage{display:flex;align-items:center;justify-content:center;border-radius:var(--r-media);border:1px solid var(--rule);background:var(--paper-sunken)}.preview-surface{overflow:hidden;flex-shrink:0}.surface-canvas{position:relative;background:var(--paper);border:1px solid var(--ink);overflow:hidden}.safe-area-outline{position:absolute;border:1px dashed rgba(216,68,43,.35);pointer-events:none}.failure-box{display:flex;align-items:center;justify-content:center;background:var(--paper-sunken);border:1px solid var(--drop);color:var(--drop);font-family:var(--font-mono);font-size:var(--text-trace);text-align:center;padding:var(--s4)}.el-text{position:absolute;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.el-role-primary{font-family:var(--font-serif);color:var(--ink);font-weight:600;line-height:1}.el-role-secondary{font-family:var(--font-sans);color:var(--ink-soft);font-weight:500;line-height:1}.el-image{display:flex;align-items:center;justify-content:center;color:var(--taupe);font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;text-align:center;padding:4px;border:1px solid var(--rule);background:var(--paper)}.el-role-hero{background-image:repeating-linear-gradient(45deg,var(--rule) 0 1px,transparent 1px 10px);background-color:var(--paper)}.el-brandmark{display:flex;align-items:center;justify-content:center;border:1px solid var(--ink);border-radius:var(--r-sm);color:var(--ink);font-family:var(--font-mono);font-weight:600;letter-spacing:.08em;text-transform:uppercase;text-align:center;overflow:hidden;white-space:nowrap;padding:0 4px}.el-brandmark span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-button{display:flex;align-items:center;justify-content:center;background:var(--cta-fill);color:var(--paper);font-family:var(--font-sans);font-weight:600;letter-spacing:.01em;border:none;border-radius:var(--r-cta);cursor:default;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.panel.trace{grid-area:trace;background:var(--paper-sunken)}.panel.trace .panel-head{padding:var(--s3) var(--s5) var(--s2)}.trace-body{padding:0 var(--s5) var(--s4)}.status-live{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink)}.status-live .status-dot{margin-right:8px}.icon-btn{display:inline-flex;align-items:center;gap:6px;background:var(--paper-raised);border:1px solid var(--rule);border-radius:var(--r-ui);padding:7px 12px;font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);cursor:pointer;transition:background var(--ease) .12s,border-color var(--ease) .12s}.icon-btn:hover{background:var(--paper);border-color:var(--rule-strong)}.icon-btn:active{background:var(--accent-soft)}.icon-btn[aria-disabled=true]{color:var(--taupe-faint);cursor:not-allowed}.icon-btn .glyph{color:var(--accent-ink)}.trace-head{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:var(--s4);margin-bottom:var(--s4)}.score-block{display:flex;align-items:baseline;gap:var(--s5);flex-wrap:wrap}.score-num{font-family:var(--font-serif);font-size:56px;line-height:1;color:var(--ink)}.score-meta{display:flex;flex-direction:column;gap:8px}.score-bar{width:180px;height:3px;background:var(--rule);overflow:hidden}.score-bar i{display:block;height:100%;background:var(--accent)}.readout-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--s6);margin-bottom:var(--s3)}.reject-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s3);padding:7px 0;border-bottom:1px solid var(--rule);font-size:var(--text-trace)}.reject-row:last-child{border-bottom:none}.reject-row .strategy{font-family:var(--font-mono);color:var(--ink-soft);flex-shrink:0}.reject-row .reason{color:var(--taupe);text-align:right}.side-list{display:flex;flex-direction:column;gap:var(--s4)}.row-list{border-top:1px solid var(--rule)}.deg-row,.empty-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--rule);font-size:var(--text-trace)}.badge{flex-shrink:0;width:20px;height:20px;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:11px;font-weight:700}.badge.shrink{background:var(--shrink);color:var(--ink)}.badge.drop{background:var(--drop);color:var(--paper)}.badge.hide{background:var(--hide);color:var(--paper)}.badge.compact{background:var(--content-compact);color:var(--ink)}.badge.crop{background:var(--crop);color:var(--paper)}.badge.compact-spacing{background:var(--compact-spacing);color:var(--ink)}.deg-row .id{font-family:var(--font-mono);font-size:var(--text-trace);color:var(--ink)}.deg-row .detail{color:var(--taupe);font-size:var(--text-trace)}.empty-row{color:var(--taupe);font-family:var(--font-mono)}.trace-disclosure summary{cursor:pointer;font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.05em;text-transform:uppercase;color:var(--taupe);list-style:none;padding:10px 0;-webkit-user-select:none;user-select:none;border-top:1px solid var(--rule)}.trace-disclosure summary::-webkit-details-marker{display:none}.trace-disclosure summary:hover{color:var(--ink)}.trace-disclosure .chev{display:inline-block;margin-right:6px;color:var(--accent-ink);transition:transform var(--ease) .15s}.trace-disclosure[open] .chev{transform:rotate(90deg)}.trace-log{font-family:var(--font-mono);font-size:var(--text-trace);line-height:1.85;max-height:280px;overflow-y:auto;background:var(--paper);border:1px solid var(--rule);padding:var(--s3) var(--s4);margin-top:var(--s2)}.tl-row{padding:2px 0;color:var(--ink-soft);white-space:pre-wrap;word-break:break-word}.tl-row.indent{padding-left:16px}.tl-row .m{color:var(--taupe);margin-right:6px}.tl-row.header{margin-top:8px;padding-top:8px;border-top:1px solid var(--rule);color:var(--ink);font-weight:600}.tl-row.header:first-child{margin-top:0;padding-top:0;border-top:none}.tl-row.reject .m{color:var(--drop)}.tl-row.winner{background:var(--winner-tint);font-weight:600;color:var(--ink);margin:2px -8px;padding:2px 8px;border-left:2px solid var(--accent)}.tl-row.winner .m{color:var(--accent-ink)}.resolver-failure{display:grid;grid-template-columns:1fr auto;gap:var(--s6);align-items:center;background:var(--ink);color:var(--paper);border:1px solid var(--accent);padding:var(--s6)}.failure-reason{font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.1em;color:var(--accent);text-transform:uppercase;margin-bottom:var(--s3)}.failure-message{font-size:14.5px;color:#f3efe6d1;max-width:52ch}.failure-stat{text-align:right}.failure-stat .num{font-family:var(--font-serif);font-size:44px;color:var(--paper)}.failure-stat .lbl{font-family:var(--font-mono);font-size:var(--text-mono);letter-spacing:.08em;text-transform:uppercase;color:#f3efe68c;margin-top:4px}.resolver-failure+.trace-disclosure{margin-top:var(--s4)}.app-footer{border-top:1px solid var(--rule);padding-top:var(--s5);margin-top:var(--s7)}.app-footer p{font-family:var(--font-mono);font-size:var(--text-mono-faint);letter-spacing:.05em;color:var(--taupe-faint)}@media (max-width: 1000px){.app{padding:var(--s6) var(--s4) var(--s5)}.app-header{flex-direction:column;align-items:flex-start}.status-chip{display:none}.app-body{grid-template-columns:1fr;grid-template-areas:"preview" "controls" "trace"}.readout-grid{grid-template-columns:1fr;gap:var(--s5)}.resolver-failure{grid-template-columns:1fr;text-align:left}.trace-log{max-height:200px}}@media (prefers-reduced-motion: reduce){*{transition:none!important}}
