:root{--bg: #0b0d10;--bg-elev: #12161c;--panel: #171c24;--border: #2a3340;--text: #eef2f6;--muted: #8b97a8;--gold: #d4a574;--gold-2: #e8c9a2;--accent: #d4a574;--accent-hover: #e0b68a;--danger: #e07070;--ok: #6fbf8a;--warn: #e0b86a;--shadow: 0 18px 50px rgba(0, 0, 0, .35);--serif: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{font-family:var(--sans);background:radial-gradient(1200px 600px at 10% -10%,rgba(212,165,116,.12),transparent 50%),radial-gradient(900px 500px at 110% 10%,rgba(90,120,160,.12),transparent 45%),var(--bg);color:var(--text)}a{color:var(--gold-2);text-decoration:none}a:hover{text-decoration:underline}button,input,textarea,select{font-family:inherit}.page{min-height:100vh;display:flex;flex-direction:column}.wrap{width:min(1120px,calc(100% - 2rem));margin:0 auto}.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1rem 0}.brand{font-family:var(--serif);font-size:1.15rem;letter-spacing:.01em;color:var(--text);text-decoration:none}.brand:hover{text-decoration:none;color:var(--gold-2)}.muted{color:var(--muted)}.hero{display:grid;grid-template-columns:1.15fr .95fr;gap:2.5rem;align-items:start;padding:2.5rem 0 4rem}@media(max-width:880px){.hero{grid-template-columns:1fr;padding-top:1rem}}.hero h1{font-family:var(--serif);font-weight:600;font-size:clamp(2.1rem,4vw,3.4rem);line-height:1.15;margin:0 0 1rem}.hero .lede{font-size:1.05rem;line-height:1.65;color:var(--muted);margin:0;max-width:38rem}.card{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:1.25rem;box-shadow:var(--shadow)}.tabs{display:flex;gap:.35rem;background:var(--bg);padding:.3rem;border-radius:12px;margin-bottom:1rem}.tabs button{flex:1;border:0;background:transparent;color:var(--muted);padding:.55rem .7rem;border-radius:9px;cursor:pointer;font-weight:600}.tabs button.active{background:var(--bg-elev);color:var(--text);box-shadow:inset 0 0 0 1px var(--border)}.field{display:flex;flex-direction:column;gap:.35rem;font-size:.8rem;color:var(--muted);margin-bottom:.75rem}input,textarea,select{background:var(--bg);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:.7rem .8rem;font-size:1rem}input:focus,textarea:focus,select:focus{outline:2px solid rgba(212,165,116,.55);border-color:transparent}.btn{border:0;border-radius:10px;padding:.72rem 1rem;font-weight:650;cursor:pointer}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--gold);color:#1a1208;width:100%}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}a.btn{display:inline-block;text-align:center;text-decoration:none}a.btn:hover{text-decoration:none}.btn-ghost{background:transparent;color:var(--muted);border:1px solid var(--border)}.btn-ghost:hover:not(:disabled){color:var(--text)}.btn-danger{background:transparent;color:var(--danger);border:1px solid var(--danger)}.btn-row{display:flex;gap:.5rem}.btn-row>.btn{flex:1;width:auto}.alert{position:relative;z-index:43;background:#e070701f;color:#f3c1c1;border-radius:10px;padding:.65rem .8rem;font-size:.88rem;margin-bottom:.8rem}.alert.ok{background:#6fbf8a1f;color:#b7e3c5}.divider{display:flex;align-items:center;gap:.7rem;color:var(--muted);font-size:.75rem;margin:.9rem 0}.divider:before,.divider:after{content:"";height:1px;background:var(--border);flex:1}.oauth{display:grid;gap:.45rem}.oauth button{display:flex;align-items:center;justify-content:center;gap:.55rem;width:100%;border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:10px;padding:.62rem .8rem;cursor:pointer;font-weight:600}.oauth button:hover:not(:disabled){border-color:var(--gold)}.oauth button:disabled{opacity:.45;cursor:not-allowed}.lang{display:flex;gap:.25rem}.lang button{border:1px solid var(--border);background:transparent;color:var(--muted);border-radius:999px;padding:.2rem .6rem;cursor:pointer;font-size:.75rem}.lang button.active{color:var(--text);border-color:var(--gold)}.shell{min-height:100vh;display:grid;grid-template-rows:auto 1fr}.shell-bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1.25rem;border-bottom:1px solid var(--border);background:#12161ce6;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.shell-nav{display:flex;gap:.4rem;flex-wrap:wrap}.shell-nav a,.shell-nav button.linkish{color:var(--muted);text-decoration:none;padding:.4rem .7rem;border-radius:8px;font-size:.9rem;font-weight:600;border:0;background:transparent;cursor:pointer}.shell-nav a.router-link-active,.shell-nav a:hover{color:var(--text);background:var(--panel);text-decoration:none}.shell-main{padding:1.25rem}.banner{background:#e0b86a1f;border:1px solid rgba(224,184,106,.35);color:var(--gold-2);border-radius:12px;padding:.8rem 1rem;margin-bottom:1rem}.role-grid{display:grid;gap:.75rem}.role-card{text-align:left;border:1px solid var(--border);background:var(--bg);border-radius:14px;padding:1rem;cursor:pointer;color:inherit}.role-card.on{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}.role-card h3{margin:0 0 .35rem;font-size:1rem}.role-card p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.45}.role-card:disabled{opacity:.55;cursor:not-allowed}.role-grid.choices{grid-template-columns:1fr 1fr}.role-grid.choices.methods{grid-template-columns:1fr}@media(min-width:860px){.role-grid.choices.methods{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:640px){.role-grid.choices{grid-template-columns:1fr}}.table-wrap{overflow:auto}table.data{width:100%;border-collapse:collapse;font-size:.88rem}table.data th,table.data td{text-align:left;padding:.65rem .55rem;border-bottom:1px solid var(--border);vertical-align:top}table.data th{color:var(--muted);font-weight:600;font-size:.75rem}.pill{display:inline-block;border-radius:999px;padding:.12rem .5rem;font-size:.72rem;font-weight:700}.pill.ok{background:#6fbf8a29;color:var(--ok)}.pill.warn{background:#e0b86a29;color:var(--warn)}.wizard{max-width:44rem}.wizard-steps{list-style:none;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.45rem;margin:0 0 1.15rem;padding:0}.wizard-steps li{display:flex;flex-direction:column;gap:.35rem;color:var(--muted);font-size:.72rem;font-weight:650}.wizard-steps .n{width:1.65rem;height:1.65rem;border-radius:999px;display:grid;place-items:center;border:1px solid var(--border);font-size:.78rem}.wizard-steps li.done{color:var(--gold-2)}.wizard-steps li.done .n,.wizard-steps li.on .n{background:var(--gold);color:#1a1208;border-color:var(--gold)}.wizard-steps.sub{grid-template-columns:repeat(3,minmax(0,1fr))}.wizard-steps li.on{color:var(--text)}.wizard-steps li.on .n{box-shadow:0 0 0 3px #d4a57447}.wizard-actions{flex-wrap:wrap;margin-top:1rem}.wizard-actions>.btn{flex:1;min-width:8rem;width:auto}.wizard-block{border-top:1px solid var(--border);margin-top:1rem;padding-top:.9rem}.wizard-block.first{border-top:0;margin-top:.2rem;padding-top:0}.wizard-block h2{font-size:.95rem;margin:0 0 .55rem}.csv-wizard input[type=file]{display:block;margin-top:.35rem}.csv-columns{display:flex;flex-wrap:wrap;gap:.35rem .7rem;padding:0;margin:.4rem 0 0;list-style:none}.csv-columns code{font-size:.78rem}.csv-toolbar{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;margin-bottom:.6rem}.csv-toolbar .hint{margin:0;flex:1;min-width:12rem}.csv-toolbar .btn{width:auto}.csv-added{margin:.2rem 0 0;padding-left:1.1rem}.done-title{margin:0 0 .35rem;font-size:1.15rem}.another{width:100%;margin-top:.6rem}.secret{position:relative;display:block}.secret input{width:100%;padding-right:5.5rem}.secret .btn{position:absolute;right:.35rem;top:50%;transform:translateY(-50%);width:auto;padding:.28rem .5rem;font-size:.75rem}.field.invalid input{border-color:var(--danger)}.copy-inline{display:inline-block;width:auto;margin-top:.35rem;padding:.28rem .55rem;font-size:.75rem}.wait-row{display:flex;align-items:center;gap:.5rem}.wait-dot{width:.55rem;height:.55rem;border-radius:999px;background:var(--gold);flex:none;animation:wait-pulse 1.4s ease-in-out infinite}@keyframes wait-pulse{0%,to{opacity:.35}50%{opacity:1}}.summary{display:grid;grid-template-columns:8.5rem 1fr;gap:.4rem .75rem;margin:.9rem 0 0;font-size:.92rem}.summary dt{color:var(--muted);margin:0}.summary dd{margin:0}.workspace{display:grid;grid-template-columns:400px 1fr;gap:1rem;min-height:calc(100vh - 90px)}@media(max-width:1100px){.workspace{grid-template-columns:1fr}}.log{flex:1;min-height:140px;overflow:auto;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.5rem .65rem;font-family:var(--mono);font-size:.72rem;line-height:1.45;white-space:pre-wrap;word-break:break-word}.log .error{color:#fca5a5}.log .warn{color:#fcd34d}.log .info{color:#93c5fd}.log .browser{color:#c4b5fd}.stars{display:flex;gap:.35rem}.stars button{background:var(--bg);border:1px solid var(--border);color:var(--muted);width:40px;height:40px;padding:0;font-size:1.2rem;border-radius:8px;cursor:pointer}.stars button.on{color:#fbbf24;border-color:#f59e0b}.result-item{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:.55rem .7rem;cursor:pointer;text-align:left;color:var(--text);width:100%;margin-bottom:.4rem}.result-item.selected{border-color:var(--ok)}.result-item .name{font-weight:600}.result-item .meta{color:var(--muted);font-size:.75rem}.novnc{width:100%;min-height:420px;flex:1;border:1px solid var(--border);border-radius:8px;background:#000}.hint{color:var(--muted);font-size:.8rem;line-height:1.45}.install-title{font-size:.92rem;font-weight:650;margin:1.1rem 0 .35rem}.install-steps{margin:0 0 1rem;padding-left:1.2rem;color:var(--muted);font-size:.85rem;line-height:1.55}.install-steps li{margin-bottom:.3rem}.token-box{font-family:var(--mono);background:var(--bg);border:1px dashed var(--border);border-radius:10px;padding:.8rem;word-break:break-all;margin:.7rem 0}.home-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.8rem}.home-cards a{display:block;text-decoration:none;color:inherit;border:1px solid var(--border);background:var(--panel);border-radius:14px;padding:1.1rem}.home-cards a:hover{border-color:var(--gold);text-decoration:none}.home-cards h3{margin:0 0 .4rem;font-family:var(--serif)}.inline{display:flex;align-items:center;gap:.55rem;color:var(--muted);font-size:.85rem}.reviews{font-size:.82rem;color:var(--muted)}.reviews li{margin-bottom:.4rem}.page-head h1{font-family:var(--serif);font-size:1.8rem;margin:0 0 .4rem}.page-head p{margin:0 0 1.1rem;color:var(--muted);max-width:42rem}.page-head.split{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start;flex-wrap:wrap}.page-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.page-actions .btn{width:auto}[data-guide]{scroll-margin:4.5rem}.guide-shade{position:fixed;z-index:40;background:#06080cb8}.guide-ring{position:fixed;z-index:41;border-radius:14px;pointer-events:none;box-shadow:0 0 0 2px var(--gold),0 0 0 7px #d4a57447;animation:guide-pulse 1.6s ease-in-out infinite}.guide-pop{position:fixed;z-index:42;width:min(22rem,calc(100vw - 1rem));background:var(--panel);border:1px solid var(--gold);border-radius:14px;padding:.9rem 1rem 1rem;box-shadow:var(--shadow)}.guide-pop h2{margin:0 0 .35rem;font-size:1rem}.guide-pop p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.45}.guide-actions{display:flex;gap:.5rem;margin-top:.85rem}.guide-actions .btn{flex:1;width:auto}@keyframes guide-pulse{0%,to{box-shadow:0 0 0 2px var(--gold),0 0 0 6px #d4a5742e}50%{box-shadow:0 0 0 2px var(--gold),0 0 0 10px #d4a57452}}@media(prefers-reduced-motion:reduce){.guide-ring{animation:none}}.footer-note{margin-top:auto;padding:1.5rem 0 2rem;color:var(--muted);font-size:.8rem}.subtabs{display:inline-flex;gap:.35rem;background:var(--bg);padding:.3rem;border-radius:12px;margin-bottom:1.1rem}.subtabs a{color:var(--muted);padding:.5rem .95rem;border-radius:9px;font-weight:600;font-size:.9rem;text-decoration:none}.subtabs a:hover{color:var(--text);text-decoration:none}.subtabs a.router-link-active{background:var(--bg-elev);color:var(--text);box-shadow:inset 0 0 0 1px var(--border)}.section-title{font-family:var(--serif);font-size:1.35rem;margin:0 0 .35rem}.minor{font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:.9rem 0 .4rem}.wizard.wide{max-width:62rem}.pill.bad{background:#e0707029;color:var(--danger)}.pill.muted{background:#8b97a829;color:var(--muted)}.invalid-text{color:var(--danger)}.ai-note{border-left:2px solid var(--gold);padding-left:.6rem}table.data tr.picked td{background:#d4a5740f}table.data tbody tr{cursor:default}.org-form{margin-top:1rem}.stars.small button{width:30px;height:30px;font-size:1rem}.review-rows{display:grid;gap:.7rem}.review-row{border:1px solid var(--border);background:var(--bg);border-radius:12px;padding:.75rem .85rem}.review-row header{display:flex;align-items:center;flex-wrap:wrap;gap:.55rem;margin-bottom:.5rem}.review-row header strong{flex:1;min-width:9rem;font-size:.9rem}.review-row header .btn{width:auto;padding:.3rem .6rem;font-size:.78rem}.review-row textarea{width:100%;resize:vertical}.progress-wrap{margin:.6rem 0 .4rem}.progress{display:flex;height:.6rem;border-radius:999px;background:var(--bg);border:1px solid var(--border);overflow:hidden}.progress .seg{display:block;height:100%;transition:width .4s ease}.progress .seg.submitted{background:#64748b}.progress .seg.bad{background:var(--danger)}.progress .seg.run{background:var(--gold)}.progress .seg.run.live{animation:seg-pulse 1.4s ease-in-out infinite}@keyframes seg-pulse{0%,to{opacity:.45}50%{opacity:1}}.progress-text{margin-top:.35rem;font-size:.8rem;color:var(--muted)}.progress-text .bad{color:var(--danger)}.progress-text .now{color:var(--gold-2)}.campaign-list{display:grid;gap:.9rem}.campaign-head{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.campaign-head h3{margin:0 0 .25rem;font-size:1.05rem}.campaign-head .hint{margin:0}.campaign-actions{flex-wrap:wrap;margin-top:.7rem}.campaign-actions>.btn{flex:0 1 auto;width:auto;padding:.45rem .8rem;font-size:.85rem}.campaign-details{margin-top:.9rem;border-top:1px solid var(--border);padding-top:.8rem}.review-text{max-width:26rem}.campaign-links{margin-top:.8rem;font-size:.82rem}.campaign-links ul{margin:.3rem 0 0;padding-left:1.1rem}.campaign-links li{margin-bottom:.25rem;word-break:break-all}.trace-head{margin-top:1rem}.campaign-trace{max-height:320px;margin-top:.35rem}.campaign-details .hint{overflow-wrap:anywhere}.live-card{margin-bottom:1rem;border-color:#d4a57480}.live-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:1rem}@media(max-width:1000px){.live-grid{grid-template-columns:1fr}}.live-info{display:flex;flex-direction:column;min-height:0}.live-info .btn-row>.btn{flex:0 1 auto;width:auto}.live-info .log{max-height:260px}.live-browser{display:flex;flex-direction:column;min-height:0}.live-browser .novnc{min-height:380px}.btn.compact{width:auto;padding:.42rem .7rem;font-size:.82rem}.topbar-actions{display:flex;align-items:center;gap:.7rem}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 .75rem}.users-table{min-width:840px}.users-table .disabled-row{opacity:.72}.identity-list,.role-editor,.user-actions{display:flex;flex-direction:column;gap:.4rem}.identity-list{overflow-wrap:anywhere}.role-editor label{display:flex;align-items:center;gap:.4rem;white-space:nowrap}.role-state{color:var(--muted);font-size:.7rem}.user-actions{align-items:flex-start}.action-hint{margin:.45rem 0 0;max-width:13rem}.single-workspace{min-height:0;align-items:start}.single-review-panel{display:flex;flex-direction:column;gap:.7rem;min-height:0}.results-list{max-height:220px;overflow:auto;padding-right:.2rem}.single-review-log{flex:none;height:230px;min-height:160px;max-height:32vh}.single-browser-panel{position:sticky;top:1rem;display:flex;flex-direction:column;height:calc(100vh - 12rem);min-height:500px}.single-browser-panel .minor{margin-top:0}.single-browser-panel .novnc{min-height:0;height:100%}.wizard-section-title{margin:0 0 .35rem;font-size:1.05rem}.wizard-stage-card,.setup-live-card{margin-bottom:1rem}.setup-live-grid{display:grid;grid-template-columns:minmax(16rem,.75fr) minmax(0,1.35fr);gap:1rem}.setup-log{height:380px;max-height:48vh;flex:none}.setup-live-card .novnc{height:430px;min-height:380px}.ratings-fieldset{border:1px solid var(--border);border-radius:12px;margin:.9rem 0;padding:.8rem}.ratings-fieldset legend{color:var(--muted);font-size:.82rem;padding:0 .35rem}.ratings-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:.65rem}.ratings-grid label{display:flex;flex-direction:column;gap:.3rem;color:var(--muted);font-size:.75rem}.generate-button{width:auto;margin:.8rem 0 1rem}.campaign-text-rows{margin-top:.2rem}.review-validation{display:flex;flex-wrap:wrap;gap:.35rem .9rem;margin:.4rem 0;font-size:.75rem}.ok-text{color:var(--ok)}.bad-text{color:var(--danger)}.approval-control{display:inline-flex;align-items:center;gap:.5rem;margin-top:.4rem;font-size:.85rem}.compact-approval{min-width:11rem}.launch-actions{margin-top:1.1rem}.campaign-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem 1.25rem;margin:.8rem 0}.campaign-meta div{min-width:0}.campaign-meta dt{color:var(--muted);font-size:.72rem;margin-bottom:.12rem}.campaign-meta dd{margin:0;overflow-wrap:anywhere;font-size:.88rem}.call-stage-note{border-left:2px solid var(--gold);color:var(--muted);font-size:.8rem;line-height:1.45;padding-left:.65rem}.draft-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.draft-toolbar .hint{margin:0}.campaign-review-editor{min-width:24rem}.campaign-review-editor textarea{display:block;width:100%;resize:vertical}.campaign-review-editor textarea[readonly]{color:var(--text);opacity:.82}.live-log{height:260px;max-height:32vh;flex:none}@media(max-width:1000px){.setup-live-grid{grid-template-columns:1fr}.setup-log{height:220px}}@media(max-width:700px){.form-grid,.campaign-meta{grid-template-columns:1fr}.single-browser-panel{position:static;height:520px;min-height:420px}.draft-toolbar{align-items:flex-start;flex-direction:column}.shell-bar{align-items:flex-start;flex-wrap:wrap}}
