:root{--font-ui: "Inter", ui-sans-serif, system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--bg: #ffffff;--surface: #fafaf8;--surface-card: #fdfdfb;--surface-soft: #fcfcfb;--surface-row: #fafaf8;--input-bg: #ffffff;--hover: #ececea;--chip-bg: #f3f2ee;--border: #ececea;--border-strong: #e3e2dd;--border-input: #d6d4cc;--border-dashed: #c8c8c0;--line: #f3f2ee;--ink: #1f2024;--body: #2a2b30;--muted: #6b6b62;--muted-2: #8a8a82;--faint: #b3b3aa;--icon: #5a5a52;--accent: #5b54d8;--on-accent: #ffffff;--accent-soft: #eceaff;--accent-soft-fg: #5b54d8;--accent-soft-border: #d6d4ff;--accent-glow: #a8a3f1;--warn-fg: #a96e1b;--warn-bg: #fcf3da;--warn-border: #ecdca8;--warn-note-bg: #fcf8ee;--warn-note-border: #f0e7cf;--ok-fg: #1f8a5b;--ok-bg: #e6f4ec;--err-fg: #c0392b;--err-bg: #fdecea;--err-hover-bg: #fdecea;--err-hover-fg: #c0392b;--shadow-panel: 0 12px 24px rgba(20, 20, 30, .06);--shadow-pop: 0 12px 30px rgba(20, 20, 30, .12);--shadow-card: 0 4px 10px rgba(20, 20, 30, .06);color-scheme:light}html[data-theme=dark]{--bg: #16171b;--surface: #1a1b20;--surface-card: #1a1b20;--surface-soft: #191a1f;--surface-row: #1d1e23;--input-bg: #23242a;--hover: #26272c;--chip-bg: #26272c;--border: #26272c;--border-strong: #2f3035;--border-input: #3a3b41;--border-dashed: #3a3b41;--line: #222227;--ink: #e6e6e2;--body: #cdcec5;--muted: #9b9b91;--muted-2: #8a8a82;--faint: #5a5a52;--icon: #a3a39a;--accent: #5b54d8;--on-accent: #ffffff;--accent-soft: #28275a;--accent-soft-fg: #bdb9ff;--accent-soft-border: #3a3990;--accent-glow: #5b54d8;--warn-fg: #e0a366;--warn-bg: #3a2b13;--warn-border: #5a4420;--warn-note-bg: #231d10;--warn-note-border: #3a2f14;--ok-fg: #2fae77;--ok-bg: #15301f;--err-fg: #e98273;--err-bg: #3a1612;--err-hover-bg: #3a1612;--err-hover-fg: #e98273;--shadow-panel: 0 12px 24px rgba(0, 0, 0, .4);--shadow-pop: 0 12px 30px rgba(0, 0, 0, .5);--shadow-card: 0 4px 10px rgba(0, 0, 0, .3);color-scheme:dark}html,body,#root{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-ui);transition:background .2s ease}*,*:before,*:after{box-sizing:border-box}.app{height:100vh;display:grid;grid-template-rows:52px 1fr;background:var(--bg)}.hdr{display:flex;align-items:center;gap:12px;padding:0 14px;border-bottom:1px solid var(--border);background:var(--surface)}.hdr .iconbtn{width:28px;height:28px;border-radius:6px;border:1px solid transparent;background:transparent;display:grid;place-items:center;cursor:pointer;color:var(--icon)}.hdr .iconbtn:hover{background:var(--hover)}.hdr .logo{width:22px;height:22px;border-radius:5px;background:conic-gradient(from 220deg,#5b54d8,#7a73e8,#5b54d8)}.hdr .ws-name{font:600 12.5px/1 var(--font-ui);letter-spacing:-.005em;white-space:nowrap}.hdr .ws-name span{font-weight:400;color:var(--muted-2);margin-left:6px}.hdr .title-field{margin:0 14px 0 18px;flex:1;min-width:0;display:flex;align-items:center;gap:8px}.hdr .session-title{font:500 13px/1 var(--font-ui);color:var(--ink);min-width:0;max-width:360px;display:flex;align-items:center}.hdr .session-title .v.editable{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:3px 7px;border-radius:6px;border:1px solid transparent;font:inherit;color:inherit;cursor:text;overflow:hidden;transition:background .12s ease,border-color .12s ease}.hdr .session-title .v.editable.faint{color:var(--muted-2);font-weight:400}.hdr .session-title .v.editable:hover{background:var(--hover);border-color:var(--border)}.hdr .session-title .v.editable .pencil{display:inline-flex;flex:none;color:var(--faint);opacity:0;transition:opacity .12s ease,color .12s ease}.hdr .session-title .v.editable:hover .pencil{opacity:1;color:var(--accent)}.hdr .session-title .v.editing{display:inline-flex}.hdr .session-title .v-input{font:500 13px/1 var(--font-ui);color:var(--ink);margin:0;padding:3px 7px;border:1px solid var(--accent);border-radius:6px;background:var(--input-bg);min-width:180px;max-width:320px}.hdr .session-id{font:400 10.5px/1 var(--font-mono);color:var(--faint);flex:none}.hdr .cta{display:flex;align-items:center;gap:6px;padding:7px 12px;border-radius:6px;border:1px solid var(--accent-soft-border);background:var(--accent-soft);color:var(--accent-soft-fg);font:500 12px/1 var(--font-ui);cursor:not-allowed;opacity:.7;transition:all .15s ease}.hdr .cta.enabled{background:var(--accent);color:var(--on-accent);border-color:var(--accent);cursor:pointer;opacity:1}.hdr .cta.enabled:hover{filter:brightness(1.08)}.hdr .theme-tgl{width:42px;height:24px;border-radius:99px;background:var(--hover);position:relative;border:1px solid var(--border-strong);cursor:pointer;flex-shrink:0}.hdr .theme-tgl:after{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:var(--bg);box-shadow:0 1px 2px #00000026;transition:transform .15s ease}html[data-theme=dark] .hdr .theme-tgl:after{transform:translate(18px)}.app-body{display:grid;grid-template-columns:var(--rail, 56px) 1fr var(--rightpane, 0px);min-height:0}.rail{border-right:1px solid var(--border);background:var(--surface);display:flex;flex-direction:column;align-items:stretch;padding:10px 8px;gap:2px}.rail .new-btn{display:none}.rail.expanded{padding:10px 12px}.rail.expanded .new-btn{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:6px;border:1px dashed var(--border-dashed);color:var(--icon);font:500 12px/1 var(--font-ui);background:transparent;margin-bottom:8px;cursor:pointer}.rail.expanded .new-btn:hover{border-color:var(--accent);color:var(--accent-soft-fg)}.rail .item{display:flex;align-items:center;gap:10px;padding:8px;border-radius:6px;color:var(--muted);cursor:pointer;position:relative}.rail .item.active{background:var(--accent-soft);color:var(--accent-soft-fg)}.rail .item.disabled{opacity:.45;cursor:not-allowed}.rail .item .lbl{display:none;font:500 12.5px/1 var(--font-ui)}.rail.expanded .item .lbl{display:inline}.rail .item .glyph{width:22px;height:22px;display:grid;place-items:center}.rail .item .soon{display:none}.rail.expanded .item .soon{display:inline;margin-left:auto;font:500 9.5px/1 var(--font-mono);background:var(--hover);color:var(--muted-2);padding:3px 5px;border-radius:4px}.main{display:flex;flex-direction:column;min-width:0;min-height:0;position:relative;background:var(--bg)}.rightpane{border-left:1px solid var(--border);background:var(--bg);display:flex;flex-direction:column;overflow:hidden;min-height:0;position:relative;flex:1;min-width:0}html[data-theme=dark] .rightpane{background:var(--surface);box-shadow:-12px 0 30px #0000004d}.resizer{position:absolute;left:-3px;top:0;bottom:0;width:7px;cursor:col-resize;z-index:20;display:flex;align-items:center;justify-content:center}.resizer:before{content:"";width:1px;height:100%;background:transparent;transition:background .12s}.resizer:hover:before,.resizer.dragging:before{background:var(--accent);width:2px}.resizer .grip{position:absolute;width:3px;height:36px;border-radius:3px;background:var(--border-input);opacity:0;transition:opacity .12s}.resizer:hover .grip,.resizer.dragging .grip{opacity:1;background:var(--accent)}body.is-resizing,body.is-resizing *{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}.rightpane .rp-hdr{display:flex;align-items:center;justify-content:space-between;padding:14px 16px;border-bottom:1px solid var(--border)}.rightpane .rp-title{font:600 13px/1 var(--font-ui)}.rightpane .rp-title .count{color:var(--muted-2);margin-left:6px;font:500 12px/1 var(--font-mono)}.rightpane .x{width:26px;height:26px;border-radius:6px;border:0;background:transparent;cursor:pointer;color:var(--muted-2);display:grid;place-items:center}.rightpane .x:hover{background:var(--hover)}.rightpane .rp-summary{display:flex;gap:16px;padding:10px 16px;border-bottom:1px solid var(--border);font:500 12px/1 var(--font-ui);flex-wrap:wrap}.rightpane .rp-summary .s{color:var(--muted)}.rightpane .rp-summary .s b{font:600 12px/1 var(--font-mono);color:var(--ink);margin-right:5px}.rightpane .rp-body{flex:1;overflow:auto}.muted{color:var(--muted-2)}.faint{color:var(--faint)}.mono{font:500 11.5px/1 var(--font-mono);color:var(--icon)}html[data-theme=dark] .mono{color:var(--muted)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-input);border-radius:6px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}.mode-switch{display:inline-flex;gap:2px;background:var(--hover);border-radius:7px;padding:2px;margin-right:4px;flex-shrink:0}.mode-switch .opt{border:0;background:transparent;font:500 11.5px/1 var(--font-ui);color:var(--muted);padding:5px 10px;border-radius:5px}.mode-switch .opt.on{background:var(--bg);color:var(--ink);box-shadow:0 1px 2px #0000000f}.mode-switch .opt.on.manual{background:var(--warn-bg);color:var(--warn-fg)}.inputs-bar{display:flex;align-items:center;gap:10px;padding:9px 16px;border-bottom:1px solid var(--border);background:var(--surface);cursor:pointer;-webkit-user-select:none;user-select:none;flex-shrink:0}.inputs-bar.static{cursor:default}.inputs-bar .count{font:500 12px/1 var(--font-ui);color:var(--ink)}.inputs-bar .pct{font:500 11px/1 var(--font-mono);color:var(--accent-soft-fg);background:var(--accent-soft);padding:3px 6px;border-radius:4px}.inputs-bar .note{font-size:11.5px;color:var(--muted-2)}.inputs-bar .chev{margin-left:auto;color:var(--muted-2);transition:transform .2s;display:inline-flex}.inputs-bar.open .chev{transform:rotate(180deg)}.inputs-panel{position:absolute;left:0;right:0;top:42px;background:var(--bg);border-bottom:1px solid var(--border);box-shadow:var(--shadow-panel);z-index:5;max-height:min(72vh,640px);overflow:auto;display:none}html[data-theme=dark] .inputs-panel{background:var(--surface)}.inputs-panel.open{display:block}.inputs-panel .ip-sec{padding:12px 16px;border-bottom:1px dashed var(--border)}.inputs-panel .ip-sec:last-child{border-bottom:0}.ip-title{font:600 11px/1 var(--font-ui);text-transform:uppercase;letter-spacing:.08em;color:var(--muted-2);margin-bottom:8px}.ip-row{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:12.5px}.ip-row .k{color:var(--muted);min-width:150px}.ip-row .v{color:var(--ink);font-weight:500}.ip-row.dim .v{color:var(--faint);font-style:italic;font-weight:400}.ip-row .v.editable{cursor:text;padding:3px 6px;margin:-3px -6px;border-radius:5px;display:inline-flex;align-items:center;gap:6px;border:1px solid transparent}.ip-row .v.editable:hover{background:var(--chip-bg);border-color:var(--border-strong)}html[data-theme=dark] .ip-row .v.editable:hover{background:var(--input-bg);border-color:var(--border-input)}.ip-row .v.editable .pencil{color:var(--faint);opacity:0;transition:opacity .12s;display:inline-flex}.ip-row .v.editable:hover .pencil{opacity:1;color:var(--accent)}.ip-row .v.editing{padding:0}.v-input{font:500 12.5px/1.2 var(--font-ui);color:var(--ink);padding:3px 6px;margin:-3px -6px;border:1px solid var(--accent);border-radius:5px;outline:none;background:var(--input-bg);min-width:140px}.v-select{font:500 12.5px/1.2 var(--font-ui);color:var(--ink);padding:3px 22px 3px 6px;margin:-3px -6px;border:1px solid var(--accent);border-radius:5px;outline:none;background:var(--input-bg)}.ip-note{padding:10px 16px;font-size:11.5px;line-height:1.5;color:var(--muted-2);background:var(--surface);border-top:1px dashed var(--border)}.ip-note b{color:var(--warn-fg);font-weight:600}.stage-row{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:12.5px}.stage-row .st-name{color:var(--ink);font-weight:500;min-width:150px}.stage-row .st-summary{color:var(--muted);font-size:12px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.stage-row .st-edit{color:var(--faint);cursor:pointer;flex-shrink:0;display:inline-flex;border:0;background:transparent;padding:2px}.stage-row .st-edit:hover{color:var(--accent)}.stage-row.clickable{cursor:pointer;border-radius:6px;margin:0 -6px;padding-left:6px;padding-right:6px}.stage-row.clickable:hover{background:var(--surface-soft)}.block-badge.unset{background:transparent;color:var(--faint);border:1px dashed var(--border-input);text-transform:none;letter-spacing:0}.block-badge{font:500 10.5px/1.4 var(--font-mono);padding:3px 7px;border-radius:4px;flex-shrink:0;text-transform:uppercase;letter-spacing:.04em;border:1px solid transparent}.block-badge.computed{background:var(--accent-soft);color:var(--accent-soft-fg);border-color:var(--accent-soft-border)}.block-badge.literal{background:var(--warn-bg);color:var(--warn-fg);border-color:var(--warn-border)}.block-badge.ported{background:var(--hover);color:var(--muted);border-color:var(--border-strong)}.val-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.val-chip{font:500 10.5px/1.3 var(--font-mono);padding:3px 7px;border-radius:4px;border:1px solid transparent}.val-chip.ok{background:var(--ok-bg);color:var(--ok-fg)}.val-chip.missing{background:var(--warn-bg);color:var(--warn-fg);border-color:var(--warn-border)}.val-chip.error{background:var(--err-bg);color:var(--err-fg)}.thread{flex:1;overflow:auto;padding:24px 16px;display:flex;flex-direction:column;gap:18px;scroll-behavior:smooth}.thread.center{max-width:780px;margin:0 auto;width:100%}.msg{display:grid;grid-template-columns:30px 1fr;gap:12px;position:relative;animation:msg-in .25s ease both}@keyframes msg-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.msg .avatar{width:28px;height:28px;border-radius:7px;background:var(--hover);display:grid;place-items:center;font:600 11px/1 var(--font-ui);color:var(--icon)}.msg.agent .avatar{background:var(--accent-soft);color:var(--accent-soft-fg)}.msg.user .avatar{background:var(--warn-bg);color:var(--warn-fg)}.msg .meta{display:flex;align-items:baseline;gap:8px;margin-bottom:4px;font-size:11.5px}.msg .who{font-weight:600;color:var(--ink)}.msg .ts{color:var(--muted-2);font:400 11px/1 var(--font-mono)}.msg .body{font-size:13.5px;line-height:1.55;color:var(--body);white-space:pre-wrap;overflow-wrap:break-word}.msg .body .md{white-space:normal}.msg .body .md>:first-child{margin-top:0}.msg .body .md>:last-child{margin-bottom:0}.msg .body .md p,.msg .body .md ul,.msg .body .md ol{margin:0 0 8px}.msg .body .md ul,.msg .body .md ol{padding-left:20px}.msg .body .md li{margin:2px 0}.msg .body .md h1,.msg .body .md h2,.msg .body .md h3,.msg .body .md h4{font-size:13.5px;margin:10px 0 6px}.msg .body .md code{font:500 12px/1.4 var(--font-mono);background:var(--surface-soft);border:1px solid var(--border);border-radius:4px;padding:1px 4px}.msg .body .md pre{background:var(--surface-soft);border:1px solid var(--border);border-radius:6px;padding:8px 10px;overflow-x:auto;margin:0 0 8px}.msg .body .md pre code{background:transparent;border:0;padding:0}.msg .body .md table{border-collapse:collapse;margin:0 0 8px;font-size:12.5px}.msg .body .md th,.msg .body .md td{border:1px solid var(--border);padding:4px 8px;text-align:left}.msg .body .md blockquote{margin:0 0 8px;padding-left:10px;border-left:3px solid var(--border);color:var(--muted)}.pending-dots{display:inline-flex;gap:4px;padding:6px 2px}.pending-dots i{width:6px;height:6px;border-radius:50%;background:var(--accent-glow);animation:dot-pulse 1.2s ease-in-out infinite}.pending-dots i:nth-child(2){animation-delay:.15s}.pending-dots i:nth-child(3){animation-delay:.3s}@keyframes dot-pulse{0%,60%,to{opacity:.25;transform:scale(.85)}30%{opacity:1;transform:scale(1)}}.card{border:1px solid var(--border);border-radius:8px;background:var(--surface-card);padding:14px;margin-top:4px;max-width:560px}.card .card-title{font:600 12px/1.2 var(--font-ui);margin-bottom:4px}.card .card-sub{font-size:12px;color:var(--muted);margin-bottom:10px}.gen-card .row{display:flex;justify-content:space-between;align-items:center;gap:12px}.gen-card .stats{display:flex;gap:18px;font:500 13px/1 var(--font-ui)}.gen-card .stats span{color:var(--ink)}.gen-card .stats span b{font-weight:600;color:var(--accent-soft-fg);margin-right:4px;font-family:var(--font-mono)}.gen-card .runtime{font:400 11.5px/1 var(--font-mono);color:var(--muted-2);margin-top:8px}.view-btn{padding:7px 12px;border:1px solid var(--border-input);background:var(--input-bg);border-radius:6px;font:500 12px/1 var(--font-ui);cursor:pointer;color:var(--ink)}.view-btn:hover{background:var(--surface);border-color:var(--faint)}html[data-theme=dark] .view-btn:hover{background:var(--hover)}.approve-card .row{display:flex;gap:10px;margin-top:10px}.approve-card .btn{flex:1;padding:10px 12px;border-radius:6px;font:500 13px/1.2 var(--font-ui);cursor:pointer;text-align:center;border:1px solid var(--border-input);background:var(--input-bg);color:var(--ink)}.approve-card .btn .sub{display:block;font:400 11px/1.3 var(--font-ui);opacity:.7;margin-top:4px}.approve-card .btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.approve-card .btn.on{outline:2px solid var(--accent-glow);outline-offset:1px}.approve-card .btn[disabled]{opacity:.5;cursor:not-allowed}.composer{border-top:1px solid var(--border);padding:12px 16px 14px;background:var(--bg);flex-shrink:0}.composer .box{display:flex;align-items:flex-end;gap:8px;border:1px solid var(--border-input);border-radius:8px;padding:8px;background:var(--input-bg);transition:border-color .15s}.composer .box:focus-within{border-color:var(--accent)}.composer textarea{flex:1;resize:vertical;border:0;outline:0;font:400 13.5px/1.5 var(--font-ui);color:inherit;background:transparent;min-height:36px;max-height:50vh}.composer .send{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:var(--ink);color:var(--bg);border:0;border-radius:6px;font:500 12.5px/1 var(--font-ui);cursor:pointer}.composer .send[disabled]{opacity:.5;cursor:not-allowed}.composer .hint{font-size:11px;color:var(--muted-2);margin-top:6px}.welcome-wrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;gap:24px}.welcome{max-width:620px;text-align:center;padding:28px 28px 24px;border:1px solid var(--border);border-radius:12px;background:var(--surface);animation:msg-in .3s ease both}.welcome .icon{width:36px;height:36px;margin:0 auto 12px;border-radius:9px;background:conic-gradient(from 200deg,#5b54d8,#7a73e8,#5b54d8)}.welcome p{font-size:14.5px;line-height:1.5;color:var(--body);margin:0 0 4px}.mode-cards{display:flex;gap:14px;max-width:680px;width:100%;justify-content:center}.mode-card{flex:1;max-width:320px;text-align:left;border:1px solid var(--border-strong);border-radius:10px;background:var(--bg);padding:18px;cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s;animation:msg-in .3s ease both}.mode-card:nth-child(2){animation-delay:.06s}.mode-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-card)}.mode-card.computed:hover{border-color:var(--accent)}.mode-card.manual:hover{border-color:var(--warn-fg)}.mode-card .mc-badge{display:inline-block;font:500 10.5px/1.4 var(--font-mono);text-transform:uppercase;letter-spacing:.04em;padding:3px 7px;border-radius:4px;margin-bottom:10px}.mode-card.computed .mc-badge{background:var(--accent-soft);color:var(--accent-soft-fg);border:1px solid var(--accent-soft-border)}.mode-card.manual .mc-badge{background:var(--warn-bg);color:var(--warn-fg);border:1px solid var(--warn-border)}.mode-card h3{margin:0 0 6px;font:600 14px/1.3 var(--font-ui);color:var(--ink)}.mode-card p{margin:0;font-size:12.5px;line-height:1.5;color:var(--muted);text-align:left}.mode-card[disabled]{opacity:.6;cursor:wait}table.setup{width:100%;border-collapse:collapse;font:400 12px/1.4 var(--font-ui)}table.setup thead th{position:sticky;top:0;z-index:1;background:var(--surface);text-align:left;padding:10px 12px;font:600 11px/1 var(--font-ui);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap}table.setup td{padding:8px 12px;border-bottom:1px solid var(--line);vertical-align:middle;white-space:nowrap}table.setup tr.camp{background:var(--surface-row)}table.setup tr.camp td{font-weight:600}table.setup .chev{display:inline-flex;width:12px;color:var(--muted-2);margin-right:6px}.chev-x{display:inline-flex;width:12px;color:var(--muted-2);transition:transform .12s ease}.chev-x.closed{transform:rotate(-90deg)}table.setup tr.camp,table.setup tr.adset{cursor:pointer}table.setup tr.adset td:first-child{padding-left:32px}table.setup tr.ad td:first-child{padding-left:52px}table.setup tr.ad td{color:var(--muted)}.tag-chip{display:inline-block;font:500 10px/1.4 var(--font-mono);padding:2px 6px;border-radius:4px;border:1px solid var(--border-strong);background:var(--chip-bg);color:var(--muted);margin-left:6px;vertical-align:middle}.tag-chip.mandatory{background:var(--ok-bg);color:var(--ok-fg);border-color:transparent}.tpl-list{display:flex;flex-direction:column;gap:6px}.tpl-row{display:flex;align-items:center;gap:10px;font-size:12.5px}.tpl-strat{min-width:130px;color:var(--muted);font:500 12px/1 var(--font-ui)}.tpl-sel{min-width:230px;border:1px solid var(--border-input);background:var(--input-bg);border-radius:6px;padding:6px 8px;font:400 12.5px/1.2 var(--font-ui);color:var(--ink);cursor:text}.tpl-sel:focus{border-color:var(--accent);outline:none}.tpl-req{font:500 9.5px/1 var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--warn-fg);background:var(--warn-bg);border:1px solid var(--warn-border);padding:3px 6px;border-radius:4px}.tpl-empty{font:italic 400 12px/1 var(--font-ui);color:var(--faint)}.mb{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.mb-scroll{flex:1;min-height:0;overflow:auto;display:flex;flex-direction:column}.mb-toolbar{display:flex;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border)}.mb-sum{display:flex;gap:16px;font:500 12px/1 var(--font-ui);color:var(--muted)}.mb-sum b{font:600 12px/1 var(--font-mono);color:var(--ink);margin-right:5px}.mb-actions{margin-left:auto;display:flex;gap:8px}.mb-btn{padding:6px 11px;border:1px solid var(--border-input);background:var(--input-bg);border-radius:6px;font:500 12px/1 var(--font-ui);cursor:pointer;color:var(--ink)}.mb-btn:hover{border-color:var(--accent);color:var(--accent-soft-fg)}.mb-btn.ghost{background:transparent}.mb-btn[disabled]{opacity:.45;cursor:not-allowed}.mb-note{padding:7px 16px;font-size:11.5px;color:var(--warn-fg);background:var(--warn-note-bg);border-bottom:1px solid var(--warn-note-border)}.mb-creatives{padding:12px 16px;border-bottom:1px solid var(--border);background:var(--surface-soft)}.mbc-head{font:600 11px/1 var(--font-ui);text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px;display:flex;align-items:center;gap:8px}.mbc-count{font:600 10.5px/1 var(--font-mono);background:var(--accent-soft);color:var(--accent-soft-fg);padding:2px 6px;border-radius:4px}.mbc-hint{font:400 11px/1.2 var(--font-ui);text-transform:none;letter-spacing:0;color:var(--faint)}.mbc-input{display:flex;gap:8px;margin-bottom:10px}.mbc-input input,.mbc-field input{border:1px solid var(--border-input);border-radius:6px;padding:7px 10px;font:400 13px/1.2 var(--font-ui);color:var(--ink);outline:none;background:var(--input-bg)}.mbc-input input{flex:1;max-width:340px}.mbc-input input:focus,.mbc-field input:focus{border-color:var(--accent)}.mbc-paste{display:flex;gap:8px;align-items:flex-start;margin-bottom:10px}.mbc-paste textarea{flex:1;max-width:340px;border:1px solid var(--border-input);border-radius:6px;padding:7px 10px;font:400 12.5px/1.4 var(--font-ui);color:var(--ink);outline:none;background:var(--input-bg);resize:vertical}.mbc-pool{display:flex;flex-wrap:wrap;gap:6px}.mbc-empty{font:italic 400 12px/1.2 var(--font-ui);color:var(--faint)}.mbc-chip{display:inline-flex;align-items:center;gap:6px;font:500 11.5px/1 var(--font-mono);background:var(--input-bg);border:1px solid var(--border-input);border-radius:5px;padding:5px 8px;color:var(--ink)}.mbc-chip i{cursor:pointer;color:var(--faint);font-style:normal}.mbc-chip i:hover{color:var(--err-fg)}.mb-grid{font:400 12px/1.4 var(--font-ui)}.mb-head,.mb-row.camp,.mb-row.adset,.mb-row.ad{display:grid;grid-template-columns:minmax(190px,1fr) 170px 112px 174px 90px 30px;align-items:center;column-gap:8px}.mb-head{position:sticky;top:0;z-index:2;background:var(--surface);padding:8px 14px;border-bottom:1px solid var(--border);font:600 10.5px/1 var(--font-ui);text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2)}.mb-row{border-bottom:1px solid var(--line);padding:5px 14px}.mb-row.camp{background:var(--surface-row)}.mb-row.camp .mono{font:600 11.5px/1 var(--font-mono)}.mb .cell{min-width:0}.mb .cell.struct{display:flex;align-items:center;gap:6px}.mb-row.adset .cell.struct{padding-left:24px}.mb-row.ad .cell.struct{padding-left:46px}.mb .chev{color:var(--muted-2);display:inline-flex}.mb-name{flex:1;min-width:0;border:1px solid transparent;background:transparent;font:600 12px/1.2 var(--font-ui);color:var(--ink);padding:3px 5px;border-radius:5px;outline:none}.mb-name:hover{border-color:var(--border-strong)}.mb-name:focus{border-color:var(--accent);background:var(--input-bg)}.adset-tag{font:500 10.5px/1 var(--font-mono);color:var(--muted-2);text-transform:uppercase;letter-spacing:.05em}.adset-tag .fan{background:var(--accent-soft);color:var(--accent-soft-fg);border-radius:4px;padding:2px 5px;margin-left:6px;font-size:10px}.mb .cell select{width:100%;border:1px solid var(--border-strong);background:var(--input-bg);border-radius:5px;padding:5px 6px;font:400 12px/1.2 var(--font-ui);color:var(--ink);cursor:pointer}.mb .cell select:hover{border-color:var(--faint)}.mb-creative{font-family:var(--font-mono)!important;font-size:11px!important}.mb .cell.bids{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.bidchip{display:inline-flex;align-items:center;gap:3px;font:500 11px/1 var(--font-mono);background:var(--chip-bg);border:1px solid var(--border-strong);border-radius:4px;padding:3px 5px;color:var(--ink)}.bidchip i{cursor:pointer;color:var(--faint);font-style:normal}.bidchip i:hover{color:var(--err-fg)}.addbid,.mb-add{border:1px dashed var(--border-dashed);background:transparent;color:var(--muted);border-radius:5px;font:500 10.5px/1 var(--font-ui);cursor:pointer}.addbid{padding:3px 6px}.mb-add{padding:5px 9px;margin-left:46px}.addbid:hover,.mb-add:hover{border-color:var(--accent);color:var(--accent-soft-fg)}.mb-add[disabled]{opacity:.45;cursor:not-allowed}.mb-budget{width:100%;border:1px solid var(--border-strong);border-radius:5px;padding:5px 6px;font:500 11.5px/1 var(--font-mono);color:var(--ink);outline:none;background:var(--input-bg)}.mb-budget:focus{border-color:var(--accent)}.mb .cell.budget.muted{font:600 11.5px/1 var(--font-mono);color:var(--muted);text-align:right}.mb .cell.act{display:flex;justify-content:center}.mb-x{width:22px;height:22px;border:0;background:transparent;border-radius:5px;color:var(--faint);cursor:pointer;display:grid;place-items:center}.mb-x:hover{background:var(--err-hover-bg);color:var(--err-hover-fg)}.mb-row.addline{display:block;padding:5px 14px}.mb-row.addline.camp-add{border-bottom:1px solid var(--border)}.mb-row.addline.camp-add .mb-add{margin-left:0}.mb-foot{padding:9px 16px;font-size:11px;line-height:1.5;color:var(--muted-2);border-top:1px solid var(--border);background:var(--surface)}.mb-foot b{color:var(--accent-soft-fg)}.mbc-field{display:inline-flex;align-items:center;gap:8px;margin-right:18px}.mbc-field .lbl{font:500 11px/1 var(--font-ui);color:var(--muted)}.banner{padding:8px 16px;font-size:12px;line-height:1.5;border-bottom:1px solid var(--border)}.banner.error{background:var(--err-bg);color:var(--err-fg)}.banner.info{background:var(--accent-soft);color:var(--accent-soft-fg)}.banner.warn{background:var(--warn-note-bg);color:var(--warn-fg);border-bottom-color:var(--warn-note-border)}.banner .dismiss{float:right;cursor:pointer;border:0;background:transparent;color:inherit;font:600 12px/1.4 var(--font-ui)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f0f1473;display:grid;place-items:center;z-index:100;animation:fade-in .15s ease both}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal{width:min(440px,90vw);background:var(--bg);border:1px solid var(--border-strong);border-radius:10px;padding:20px;box-shadow:var(--shadow-pop);animation:msg-in .18s ease both}.modal h3{margin:0 0 8px;font:600 14px/1.3 var(--font-ui)}.modal p{margin:0 0 14px;font-size:12.5px;line-height:1.55;color:var(--muted)}.modal .row{display:flex;gap:8px;justify-content:flex-end}.modal .btn{padding:8px 14px;border-radius:6px;font:500 12.5px/1 var(--font-ui);cursor:pointer;border:1px solid var(--border-input);background:var(--input-bg);color:var(--ink)}.modal .btn.danger{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.app.login-only{display:flex;min-height:100vh}.login-card{max-width:420px;width:100%;text-align:center;padding:32px 28px;border:1px solid var(--border);border-radius:12px;background:var(--surface);box-shadow:var(--shadow-panel);animation:msg-in .3s ease both}.login-card .icon{width:40px;height:40px;margin:0 auto 14px;border-radius:10px;background:conic-gradient(from 200deg,#5b54d8,#7a73e8,#5b54d8)}.login-card h2{margin:0 0 8px;font:600 18px/1.3 var(--font-ui);color:var(--ink)}.login-card .muted{font-size:13px;line-height:1.5;color:var(--muted);margin:0 0 18px}.login-label{display:block;text-align:left;font:500 11.5px/1.4 var(--font-ui);color:var(--muted);margin-bottom:6px}.login-input{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--border-input);border-radius:8px;background:var(--input-bg);color:var(--ink);font:400 14px/1.3 var(--font-ui);margin-bottom:14px}.login-input:focus{outline:none;border-color:var(--accent)}.login-btn{width:100%;padding:10px 14px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:var(--on-accent);font:600 13.5px/1 var(--font-ui);cursor:pointer}.login-btn[disabled]{opacity:.5;cursor:not-allowed}.login-error{margin-top:14px;border-radius:8px}.user-chip{display:flex;align-items:center;gap:8px;margin-left:10px}.user-chip .user-id{font:500 12px/1 var(--font-ui);color:var(--muted);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-chip .signout{font:500 11.5px/1 var(--font-ui);color:var(--muted);background:transparent;border:1px solid var(--border-input);border-radius:6px;padding:5px 8px;cursor:pointer}.user-chip .signout:hover{color:var(--ink);background:var(--hover)}.library-wrap{flex:1;max-width:760px;width:100%;margin:0 auto;padding:28px 24px;display:flex;flex-direction:column;gap:16px}.library-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.library-head h2{margin:0 0 2px;font:600 18px/1.3 var(--font-ui);color:var(--ink)}.library-head .muted{margin:0;font-size:13px;color:var(--muted)}.new-setup-btn{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border:1px solid var(--accent);border-radius:8px;background:var(--accent);color:var(--on-accent);font:600 12.5px/1 var(--font-ui);cursor:pointer;white-space:nowrap}.library-empty{display:flex;flex-direction:column;align-items:center;gap:6px;padding:40px 24px;border:1px dashed var(--border-dashed);border-radius:12px;background:var(--surface);cursor:pointer;color:var(--body)}.library-empty .icon{width:32px;height:32px;border-radius:8px;background:conic-gradient(from 200deg,#5b54d8,#7a73e8,#5b54d8);opacity:.5}.library-empty p{margin:4px 0 0;font-size:14px}.setup-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.setup-row{display:flex;align-items:stretch;border:1px solid var(--border-strong);border-radius:10px;background:var(--bg);overflow:hidden;transition:border-color .15s,box-shadow .15s}.setup-row:hover{border-color:var(--accent);box-shadow:var(--shadow-card)}.setup-open{flex:1;display:flex;align-items:center;gap:12px;padding:14px 16px;background:transparent;border:none;cursor:pointer;text-align:left}.setup-open .mode-tag{font:500 10px/1.4 var(--font-mono);text-transform:uppercase;letter-spacing:.04em;padding:3px 7px;border-radius:4px;background:var(--chip-bg);color:var(--muted);flex-shrink:0}.setup-open .mode-tag.computed{background:var(--accent-soft);color:var(--accent-soft-fg);border:1px solid var(--accent-soft-border)}.setup-open .mode-tag.manual{background:var(--warn-bg);color:var(--warn-fg);border:1px solid var(--warn-border)}.setup-open .type-tag{font:500 10px/1.4 var(--font-mono);text-transform:uppercase;letter-spacing:.04em;padding:3px 7px;border-radius:4px;background:var(--chip-bg);color:var(--muted);border:1px solid var(--border);flex-shrink:0}.setup-open .setup-title{flex:1;font:500 14px/1.3 var(--font-ui);color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.setup-open .setup-meta{font:400 11.5px/1 var(--font-ui);color:var(--muted-2);flex-shrink:0}.setup-del{width:40px;border:none;border-left:1px solid var(--border);background:transparent;color:var(--muted-2);font-size:18px;cursor:pointer}.setup-del:hover{background:var(--err-bg);color:var(--err-fg)}.back-link{align-self:flex-start;background:transparent;border:none;color:var(--muted);font:500 12.5px/1 var(--font-ui);cursor:pointer;padding:4px 0}.back-link:hover{color:var(--accent)}
