/* IdeaForge — The Strategist's Forge.
   Theme: blueprint-grid canvas + blacksmith metaphor (Raw → Heated → Shaped → Quenched → Struck).
   Display: Oswald. Body: Inter. Mono: JetBrains Mono. Palette: ember + steel on near-black.
   All original class names preserved so app.js rendering still works. */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600&family=JetBrains+Mono:wght@400;700&family=Oswald:wght@500;700&display=swap');

:root{
  --bg:#0e0e0f;            --bg2:#1c1d20;           --bg3:#26282c;
  --panel:#1c1d20;         --surface:#26282c;       --line:#2d2e32;
  --ember:#ef9f27;         --ember-dim:#b4761b;
  --steel:#378add;         --steel-dim:#2a6aaf;
  --crit:#d94545;          --warn:#e6a23c;          --safe:#4a9d5f;
  --ok:#4a9d5f;            --bad:#d94545;
  --text:#f5f5f5;          --soft:#a0a0a0;          --muted:#666669;
  --accent:#ef9f27;        --blue:#378add;          --green:#4a9d5f;
  --orange:#e6a23c;        --red:#d94545;
  --font-display:'Oswald',Impact,sans-serif;
  --font-body:'Inter','Helvetica Neue',sans-serif;
  --font-mono:'JetBrains Mono','Courier New',monospace;
  --stamp:3px 3px 0 var(--bg);
  --panel-shadow:6px 6px 0 rgba(0,0,0,.6);
  --border:1px solid var(--line);
  --border-heavy:2px solid var(--text);
  --blueprint:linear-gradient(to right,rgba(255,255,255,.03) 1px,transparent 1px),
              linear-gradient(to bottom,rgba(255,255,255,.03) 1px,transparent 1px);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:var(--bg);background-image:var(--blueprint);background-size:32px 32px;
  color:var(--soft);font-family:var(--font-body);line-height:1.6;overflow-x:hidden}
button,input,textarea{font:inherit}
button{border:0;cursor:pointer}
::selection{background:rgba(239,159,39,.35)}
/* V4.5 Phase 3: modern scrollbars (webkit + firefox) */
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:999px}
::-webkit-scrollbar-thumb:hover{background:var(--muted)}
*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}

/* ── App grid ───────────────────────────────────────── */
.app{display:grid;grid-template-columns:minmax(0,1fr) 440px;min-height:100vh}
.work{padding:32px 40px;display:flex;flex-direction:column;gap:18px;border-right:var(--border)}
.canvas{background:#141416;background-image:var(--blueprint);background-size:32px 32px;
  padding:28px;max-height:100vh;overflow:auto;position:sticky;top:0;border-left:var(--border);
  transition:all .25s ease}
/* V4 Step 3: full-screen maximize overlay for the Canvas. */
.canvas.maximized{position:fixed;inset:0;z-index:1100;width:100vw;height:100vh;max-height:100vh;
  border-left:0;border-right:0;border-top:0;overflow:auto}
.canvas.maximized #canvasContent{max-width:880px;margin:0 auto}
.canvas.maximized .canvas-title{max-width:880px;margin:0 auto 16px}
@media(max-width:960px){.canvas.maximized{position:static;inset:auto;width:auto;height:auto}}

/* ── Top bar ────────────────────────────────────────── */
.top{display:flex;align-items:center;justify-content:space-between;gap:14px;
  position:sticky;top:0;z-index:1000;background:var(--bg);padding:8px 0;margin:-8px 0 0}
.brand{display:flex;align-items:center;gap:14px}
.mark{width:44px;height:44px;background:var(--ember);color:var(--bg);font-family:var(--font-display);
  font-weight:700;font-size:16px;display:grid;place-items:center;box-shadow:var(--stamp);
  clip-path:polygon(0 0,100% 0,100% 80%,80% 100%,0 100%)}
h1{font-family:var(--font-display);font-size:26px;text-transform:uppercase;letter-spacing:.06em;
  color:var(--text);margin:0;line-height:1}
h1 span{color:var(--ember)}
.subtitle{font-family:var(--font-mono);font-size:11px;color:var(--muted);text-transform:uppercase;
  letter-spacing:.1em;margin-top:3px}

/* Audit 1: brand icon (replaces the IF text mark) */
.brand-icon{width:44px;height:44px;object-fit:contain;box-shadow:var(--stamp);
  clip-path:polygon(0 0,100% 0,100% 80%,80% 100%,0 100%);background:var(--bg2);
  align-self:center;transform:translateY(-3px)}

/* FORGED stamp — full-screen overlay, darkened backdrop so canvas doesn't bleed through */
.forged-stamp{position:fixed;inset:0;display:grid;place-items:center;z-index:300;pointer-events:none;
  background:rgba(14,14,15,.85);backdrop-filter:blur(2px)}
.forged-inner{font-family:var(--font-display);font-size:120px;font-weight:700;color:var(--ember);
  letter-spacing:.1em;border:8px solid var(--ember);padding:24px 48px;text-transform:uppercase;
  transform:scale(2) rotate(-12deg);opacity:0;text-shadow:0 0 30px rgba(239,159,39,.6);
  box-shadow:0 0 60px rgba(239,159,39,.4),inset 0 0 30px rgba(239,159,39,.15)}
.forged-stamp.show .forged-inner{animation:forgedIn .5s cubic-bezier(.2,1.6,.4,1) forwards,forgedOut .4s ease 1.8s forwards}
@keyframes forgedIn{0%{transform:scale(2.4) rotate(-12deg);opacity:0;filter:blur(8px)}
  60%{transform:scale(1) rotate(-8deg);opacity:1;filter:blur(0)}
  100%{transform:scale(1.05) rotate(-8deg);opacity:1}}
@keyframes forgedOut{to{opacity:0;transform:scale(1.3) rotate(-8deg)}}
@media(max-width:620px){.forged-inner{font-size:64px;padding:16px 28px;border-width:5px}}

/* V4 Step 5: Verify & Lock banner — pauses the final state before the stamp. */
.verify-banner{display:flex;gap:14px;align-items:center;justify-content:space-between;flex-wrap:wrap;
  margin-top:18px;padding:16px 20px;border:2px solid var(--ember);background:linear-gradient(135deg,rgba(239,159,39,.16),rgba(239,159,39,.04));
  box-shadow:0 0 18px rgba(239,159,39,.22);position:sticky;bottom:0;animation:stampIn .4s ease}
.verify-banner .vb-text{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;color:var(--ember);font-size:15px}

/* Audit 3: empty-canvas blueprint illustration */
.empty-svg{margin-bottom:14px;animation:stampIn .6s ease}
.empty-title{font-family:var(--font-display);font-size:14px;letter-spacing:.12em;color:var(--steel);margin-bottom:6px}
.empty-sub{font-family:var(--font-mono);font-size:12px;color:var(--muted);max-width:260px}

/* ── Panels / cards ─────────────────────────────────── */
.panel,.message,.card{background:var(--bg2);border:var(--border);position:relative;box-shadow:var(--panel-shadow)}
.panel{padding:20px}
.card{padding:18px;margin-bottom:14px;animation:stampIn .45s cubic-bezier(.2,1.3,.4,1)}
.panel-label,.card h3 .lbl{font-family:var(--font-mono);font-size:10px;background:var(--text);color:var(--bg);
  padding:2px 7px;text-transform:uppercase;letter-spacing:.12em}

.label-row{display:flex;justify-content:space-between;gap:10px;margin-bottom:10px;
  font-family:var(--font-mono);font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.link{color:var(--steel);text-decoration:none;font-family:var(--font-mono);font-size:12px}
.muted{color:var(--muted);font-size:12px;font-family:var(--font-body)}
.status.ok{color:var(--safe)} .status.bad{color:var(--warn)}

/* ── Inputs ─────────────────────────────────────────── */
input,textarea{width:100%;background:var(--bg);color:var(--text);border:var(--border);
  padding:12px 14px;outline:none;font-family:var(--font-mono);font-size:14px;transition:border-color .15s}
textarea{min-height:130px;resize:vertical;line-height:1.6}
input:focus,textarea:focus{border-color:var(--ember)}

/* ── Buttons ────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:40px;padding:10px 18px;
  background:var(--bg3);color:var(--text);border:var(--border);font-family:var(--font-display);
  text-transform:uppercase;letter-spacing:.1em;font-size:13px;transition:.1s}
.btn:hover{transform:translate(2px,2px);border-color:var(--ember)}
.btn.primary{background:var(--ember);color:var(--bg);border:none;box-shadow:var(--stamp);font-weight:700}
.btn.primary:hover{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--bg)}
.btn.primary:disabled{background:var(--bg3);color:var(--muted);cursor:not-allowed;box-shadow:none;transform:none}
.btn.danger{color:var(--crit);font-family:var(--font-display)}
.btn.ghost{background:transparent}
.actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}
.actions-right{display:flex;gap:8px;flex-wrap:wrap}
.forge-cta{margin-top:18px}
.forge-button{font-family:var(--font-display);font-size:22px;letter-spacing:.06em;padding:18px 42px;
  background:linear-gradient(135deg,var(--ember),#ff8c1a);border:none;color:var(--bg);
  box-shadow:0 0 24px rgba(239,159,39,.4),0 6px 0 var(--ember-dim);text-transform:uppercase;
  font-weight:700;transition:.15s ease;animation:forgePulse 2.5s ease-in-out infinite;cursor:pointer}
.forge-button:hover{transform:translateY(-3px);box-shadow:0 0 36px rgba(239,159,39,.6),0 9px 0 var(--ember-dim);animation:none}
.forge-button:active{transform:translateY(2px);box-shadow:0 0 16px rgba(239,159,39,.3),0 2px 0 var(--ember-dim)}
.forge-button:disabled{background:var(--bg3);color:var(--muted);box-shadow:none;animation:none;transform:none;cursor:not-allowed}
@keyframes forgePulse{0%,100%{box-shadow:0 0 24px rgba(239,159,39,.4),0 6px 0 var(--ember-dim)}50%{box-shadow:0 0 36px rgba(239,159,39,.6),0 6px 0 var(--ember-dim)}}
@media(max-width:620px){.forge-button{font-size:18px;padding:14px 28px}}

/* ── Phase stepper (blacksmith states) ──────────────── */
.phases{display:grid;grid-template-columns:repeat(5,1fr);border:var(--border-heavy);background:var(--line);
  position:sticky;top:56px;z-index:999}
.phase{padding:13px 8px;background:var(--bg2);color:var(--muted);border-right:var(--border);
  font-family:var(--font-display);text-transform:uppercase;letter-spacing:.06em;font-size:12px;
  transition:.2s;position:relative;text-align:center}
.phase:last-child{border-right:0}
.phase .pn{font-family:var(--font-mono);font-size:10px;color:var(--muted);display:block;margin-bottom:3px}
.phase.active{background:var(--ember);color:var(--bg)}
.phase.active .pn{color:var(--bg)}
.phase.active::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--bg);
  animation:phasepulse 1.4s infinite}
.phase.done{background:rgba(74,157,95,.16);color:var(--safe)}
.phase.done .pn{color:var(--safe)}
@keyframes phasepulse{0%,100%{opacity:.4}50%{opacity:1}}

/* ── Conversation ───────────────────────────────────── */
.conversation{display:flex;flex-direction:column;gap:14px}
.message{padding:16px 18px;animation:stampIn .3s ease}
.message.user{background:rgba(55,138,221,.08);border-color:rgba(55,138,221,.3);margin-left:32px}
.message.ai{margin-right:32px}
.message.error{border-color:var(--crit)}
.message-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:10px;
  font-family:var(--font-mono);font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.1em}
.phase-tag{color:var(--ember);font-weight:700}
@keyframes stampIn{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}

/* ── Reasoning drawer (terminal feel) ───────────────── */
.reasoning{margin:8px 0;border:var(--border);background:var(--bg);overflow:hidden}
.reasoning-head{display:flex;align-items:center;gap:8px;padding:8px 12px;font-family:var(--font-mono);
  font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:var(--steel);cursor:pointer;user-select:none}
.reasoning-head .ic{transition:transform .2s}
.reasoning.open .reasoning-head .ic{transform:rotate(90deg)}
.reasoning-body{padding:0 14px 12px;color:var(--muted);font-family:var(--font-mono);font-size:12px;
  white-space:pre-wrap;max-height:240px;overflow:auto;display:none;border-left:2px solid var(--ember);
  margin:0 12px 8px;padding:8px 12px;background:linear-gradient(to bottom,transparent 50%,rgba(255,255,255,.02) 50%);
  background-size:100% 4px}
.reasoning.open .reasoning-body{display:block}
.reasoning.thinking .reasoning-head::after{content:"";width:6px;height:6px;border-radius:99px;background:var(--ember);
  margin-left:auto;box-shadow:0 0 8px var(--ember);animation:pulse 1s infinite}

.cursor{display:inline-block;color:var(--ember);font-family:var(--font-mono)}
.cursor::after{content:"▋";animation:blink 1s step-end infinite}
@keyframes blink{50%{opacity:0}}

.loader{display:flex;align-items:center;gap:8px;color:var(--muted);font-family:var(--font-mono);font-size:12px}
.dots span{display:inline-block;width:5px;height:5px;background:var(--ember);border-radius:999px;animation:pulse 1.1s infinite;
  box-shadow:0 0 6px var(--ember)}
.dots span:nth-child(2){animation-delay:.15s}.dots span:nth-child(3){animation-delay:.3s}

/* P0.2: Forging loader shown while a phase generates (raw JSON stays hidden) */
.forging-loader{display:flex;align-items:center;gap:10px;padding:4px 0;font-family:var(--font-mono);font-size:13px;color:var(--ember)}
.forging-label{color:var(--soft);text-transform:uppercase;letter-spacing:.06em;font-size:12px}
.forging-label .snippet{color:var(--steel);font-style:italic;text-transform:lowercase;letter-spacing:0;font-size:11px}
@keyframes pulse{0%,80%,100%{opacity:.3;transform:scale(.7)}40%{opacity:1;transform:scale(1)}}

/* ── Canvas ─────────────────────────────────────────── */
.canvas-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:16px;
  padding-bottom:12px;border-bottom:var(--border-heavy)}
.canvas-title h2{font-family:var(--font-display);font-size:18px;text-transform:uppercase;letter-spacing:.1em;color:var(--text);margin:0}
.empty{min-height:280px;border:var(--border);border-style:dashed;display:grid;place-items:center;text-align:center;
  color:var(--muted);padding:24px;font-family:var(--font-mono);font-size:13px}
.card h3{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-family:var(--font-display);
  text-transform:uppercase;letter-spacing:.08em;color:var(--steel);font-size:14px}
.dot{width:8px;height:8px;background:var(--ember)}
.dot.assume{background:var(--warn)}.dot.risk{background:var(--crit)}.dot.mile{background:var(--safe)}.dot.first{background:var(--steel)}
.strong{font-weight:600;color:var(--text)}
.item{padding:12px 0;border-top:var(--border)}
.item:first-of-type{border-top:0;padding-top:0}
.pill{display:inline-flex;align-items:center;padding:2px 9px;font-family:var(--font-mono);font-size:10px;font-weight:700;
  text-transform:uppercase;letter-spacing:.08em;background:rgba(239,159,39,.16);color:var(--ember);border:1px solid rgba(239,159,39,.3)}
.sev1,.sev2{background:rgba(74,157,95,.16);color:var(--safe);border-color:rgba(74,157,95,.4)}
.sev3{background:rgba(230,162,60,.16);color:var(--warn);border-color:rgba(230,162,60,.4)}
.sev4,.sev5{background:rgba(217,69,69,.18);color:var(--crit);border-color:rgba(217,69,69,.4)}
.confidence{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;margin-top:12px;
  font-family:var(--font-mono);font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}
.bar{height:6px;background:var(--bg);border:var(--border);overflow:hidden}
.fill{height:100%;transition:width .6s ease}
.risk-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.mini{background:var(--bg3);border:var(--border);padding:12px;font-size:13px;font-family:var(--font-body);color:var(--soft)}
.first-box{border-color:var(--steel);background:rgba(55,138,221,.08)}
.human-box{border-color:var(--warn);background:rgba(230,162,60,.06)}

/* Ready-to-use artifact block (the win move) */
.artifact-box{border:var(--border-heavy);background:var(--bg);padding:14px;margin-top:10px;position:relative}
.artifact-box .lbl{position:absolute;top:-1px;left:-1px;background:var(--ember);color:var(--bg);font-family:var(--font-mono);
  font-size:9px;padding:3px 8px;text-transform:uppercase;letter-spacing:.12em;font-weight:700}
.artifact-copy{position:absolute;top:8px;right:8px;background:var(--bg3);color:var(--text);border:var(--border);
  font-family:var(--font-mono);font-size:10px;padding:4px 8px;cursor:pointer;text-transform:uppercase;letter-spacing:.08em}
.artifact-copy:hover{border-color:var(--ember);color:var(--ember)}
.artifact-text{margin-top:18px;font-family:var(--font-mono);font-size:13px;color:var(--text);white-space:pre-wrap;line-height:1.7}

/* P1.2: Refine-the-idea chat box (suggest → approve, never silent mutate) */
.refine-box{margin-top:18px;padding:14px;background:var(--bg2);border:var(--border);position:relative}
.refine-head{font-family:var(--font-display);text-transform:uppercase;letter-spacing:.08em;color:var(--steel);
  font-size:12px;margin-bottom:8px}
.refine-head::before{content:"✎ ";color:var(--ember)}
.refine-box input{font-size:13px;padding:9px 11px}
/* V4: refine textarea auto-grows vertically, never scrolls horizontally */
#refineInput{resize:none;overflow:hidden;min-height:44px;font-size:13px;padding:9px 11px;font-family:var(--font-mono);line-height:1.5}
.refine-actions{margin-top:8px}
.refine-card{margin-top:10px;padding:12px;background:var(--bg);border:2px solid var(--ember);position:relative;animation:stampIn .3s ease}
.refine-card .rc-label{font-family:var(--font-mono);font-size:9px;background:var(--ember);color:var(--bg);
  padding:3px 7px;text-transform:uppercase;letter-spacing:.1em;position:absolute;top:-1px;left:-1px;font-weight:700}
.refine-card .rc-idea{margin-top:16px;font-family:var(--font-body);font-size:14px;color:var(--text);font-weight:600;line-height:1.5}
.refine-card .rc-why{margin-top:6px;font-family:var(--font-mono);font-size:11px;color:var(--steel)}
.refine-card .rc-diff{margin-top:4px;font-family:var(--font-mono);font-size:11px;color:var(--muted)}
.refine-card .rc-note{margin-top:14px;font-family:var(--font-mono);font-size:11px;color:var(--ember);padding:6px 9px;background:rgba(239,159,39,.08);border-left:2px solid var(--ember)}
.refine-card .rc-note span{color:var(--text);font-weight:600}
.refine-card .rc-actions{display:flex;gap:8px;margin-top:10px}
.refine-card .rc-actions .btn{min-height:34px;padding:7px 14px;font-size:12px}
/* V4: refinement carousel nav */
.rc-carousel{display:flex;align-items:center;justify-content:center;gap:10px;margin:14px 0 4px}
.rc-carousel .rc-nav{min-height:30px;min-width:30px;padding:4px 10px;font-size:14px}
.rc-carousel .rc-nav:disabled{opacity:.35;cursor:not-allowed}
.rc-count{font-family:var(--font-mono);font-size:11px;color:var(--muted);min-width:40px;text-align:center}

/* P1.3: Founder quiz at phase boundaries (interactive human-in-loop) */
.quiz-card{margin:10px 0;padding:14px;background:var(--bg);border:2px solid var(--steel);
  position:relative;animation:stampIn .3s ease;box-shadow:var(--panel-shadow)}
.quiz-label{font-family:var(--font-mono);font-size:9px;background:var(--steel);color:#fff;
  padding:3px 7px;text-transform:uppercase;letter-spacing:.1em;position:absolute;top:-1px;left:-1px;font-weight:700}
.quiz-q{margin-top:16px;font-family:var(--font-body);font-size:15px;color:var(--text);font-weight:600;line-height:1.4}
.quiz-why{margin-top:5px;font-family:var(--font-mono);font-size:11px;color:var(--muted)}
.quiz-opts{display:flex;flex-direction:column;gap:7px;margin-top:12px}
.quiz-opt{text-align:left;font-family:var(--font-body)!important;text-transform:none!important;
  letter-spacing:0!important;font-size:13px!important;background:var(--bg3)}
.quiz-opt.sel{border-color:var(--ember);color:var(--ember);background:rgba(239,159,39,.12)}
.quiz-custom{margin-top:10px;font-size:13px}
.quiz-submit{margin-top:8px;width:100%}
.quiz-locked{font-family:var(--font-mono);font-size:12px;color:var(--safe);padding:4px 0}

/* Computed-confidence breakdown (kills 'hardcoded humility' kill-shot) */
.conf-breakdown{margin-top:10px;padding:10px 12px;background:var(--bg);border:var(--border);
  font-family:var(--font-mono);font-size:11px;color:var(--muted);line-height:1.7}
.conf-breakdown .kv{color:var(--steel)}
.success-ack{margin-top:10px;padding:10px 12px;border-left:2px solid var(--safe);
  background:rgba(74,157,95,.10);font-family:var(--font-body);font-size:13px;color:#8af0cd;line-height:1.5}
.success-ack::before{content:"◈ ";color:var(--safe)}

/* V6/1.5: cross-device synced sessions ("Second Brain" Firestore list) */
.synced-sessions{display:flex;flex-direction:column;gap:8px}
.synced-sessions:empty{display:none}
.synced-title{font-family:var(--font-mono);font-size:11px;color:var(--steel);text-transform:uppercase;letter-spacing:.1em;margin-bottom:2px}
.synced-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--bg2);border:var(--border);
  padding:10px 12px;cursor:pointer;transition:.15s;font-family:var(--font-body)}
.synced-item:hover{border-color:var(--ember);transform:translateX(2px)}
.synced-item .si-status{font-family:var(--font-mono);font-size:12px;width:18px;text-align:center}
.synced-item .si-status.complete{color:var(--safe)}
.synced-item .si-status.active{color:var(--ember)}
.synced-item .si-title{color:var(--soft);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── Hero ───────────────────────────────────────────── */
/* V4: Guardrail flag — strict danger RED (was purple/cyan) */
.guardrail-flag{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;margin-bottom:14px;
  border:2px solid var(--crit);background:linear-gradient(135deg,rgba(217,69,69,.16),rgba(217,69,69,.06));
  box-shadow:0 0 18px rgba(217,69,69,.30)}
.guardrail-flag .gr-pulse{width:10px;height:10px;border-radius:99px;background:var(--crit);flex-shrink:0;margin-top:4px;
  box-shadow:0 0 10px var(--crit);animation:grPulse 1s infinite}
.guardrail-flag .strong{color:var(--crit);font-family:var(--font-display);text-transform:uppercase;letter-spacing:.08em;font-size:13px}
.guardrail-flag .gr-keywords{margin:4px 0;display:flex;flex-wrap:wrap;gap:6px}
.guardrail-flag .gr-keyword{color:var(--crit);font-weight:700;background:rgba(217,69,69,.18);border:1px solid var(--crit);
  padding:1px 7px;font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em}
.guardrail-flag .gr-risk{color:#ff8a8a;font-size:13px;margin:5px 0;line-height:1.45}
@keyframes grPulse{0%,100%{opacity:.4;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}

.hero{text-align:center;padding:32px 20px 8px}
.hero h2{font-family:var(--font-display);font-size:38px;line-height:.95;text-transform:uppercase;letter-spacing:.01em;
  color:var(--text);margin:0 0 12px}
.hero h2 span{color:var(--ember)}
.hero p{color:var(--soft);max-width:560px;margin:0 auto;font-size:15px}
.hero .pillars{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:20px}
.hero .pillar{font-family:var(--font-mono);font-size:10px;color:var(--soft);text-transform:uppercase;letter-spacing:.1em;
  border:var(--border);padding:5px 11px;background:var(--bg2)}

/* ── Console (removed in V4 — logs to browser console) ── */
.follow{display:grid;grid-template-columns:1fr auto;gap:8px}
.toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--bg2);border:var(--border-heavy);
  padding:10px 14px;color:var(--text);display:none;z-index:50;font-family:var(--font-mono);font-size:12px;
  text-transform:uppercase;letter-spacing:.08em;box-shadow:var(--stamp)}

/* V4: sleek phase-completion notification (ember bar, slides from right) */
.notification{position:fixed;top:24px;right:24px;background:var(--ember);color:var(--bg);
  padding:12px 22px;font-family:var(--font-display);font-weight:700;text-transform:uppercase;
  letter-spacing:.08em;font-size:14px;z-index:60;box-shadow:var(--stamp);
  transform:translateX(140%);opacity:0;transition:transform .45s cubic-bezier(.2,1.3,.4,1),opacity .45s ease}
.notification.show{transform:translateX(0);opacity:1}
.notification.hide{transform:translateX(140%);opacity:0}
/* Red shaking error notification */
.notification.error-shake{background:var(--crit);color:#fff;border:2px solid #ff6b6b;
  box-shadow:0 0 20px rgba(217,69,69,.5)}
.notification.error-shake.show{animation:errShake .4s ease 0s 1,errShake .4s ease .15s 1}
@keyframes errShake{0%{transform:translateX(0)}25%{transform:translateX(-8px) rotate(-1deg)}75%{transform:translateX(8px) rotate(1deg)}100%{transform:translateX(0)}}
@media(max-width:620px){.notification{right:12px;left:12px;text-align:center}}
@media(max-width:620px){.notification{right:12px;left:12px;top:12px;text-align:center}}

@media(max-width:960px){.app{grid-template-columns:1fr}.canvas{position:static;max-height:none;border-left:0;border-top:var(--border)}.work{border-right:0}}
@media(max-width:620px){.work,.canvas{padding:20px}.top{align-items:flex-start;flex-direction:column}.phases{grid-template-columns:1fr}.phase{border-right:0;border-bottom:var(--border)}.follow{grid-template-columns:1fr}.message.user,.message.ai{margin:0}.risk-grid{grid-template-columns:1fr}.hero h2{font-size:28px}}

/* ── V4: Portfolio Intelligence overlay ─────────────── */
.portfolio-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);z-index:100;display:none;place-items:center;
  padding:24px;backdrop-filter:blur(6px)}
.portfolio-overlay.open{display:grid}
.portfolio-panel{background:var(--bg);background-image:var(--blueprint);background-size:32px 32px;border:1px solid var(--line);
  border-radius:12px;overflow:hidden;
  width:100%;max-width:1000px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 8px 32px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.04)}
.portfolio-head{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:var(--border)}
.portfolio-head h2{font-family:var(--font-display);font-size:22px;text-transform:uppercase;letter-spacing:.08em;color:var(--ember);margin:0}
.portfolio-tabs{display:flex;gap:8px;padding:12px 24px;border-bottom:var(--border)}
.ptab{text-transform:uppercase;font-size:12px;letter-spacing:.06em}
.ptab.active{background:var(--ember);color:var(--bg);border-color:var(--ember)}
.portfolio-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 24px;border-bottom:var(--border)}
.portfolio-tools{display:flex;gap:8px}
.portfolio-body{padding:20px 24px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}

.portfolio-empty{display:grid;place-items:center;text-align:center;padding:60px 20px;gap:10px}

/* Portfolio item card */
.pitem{background:var(--bg2);border:var(--border);padding:16px;position:relative;box-shadow:var(--panel-shadow);
  transition:border-color .15s;animation:stampIn .3s ease}
.pitem.sel{border-color:var(--ember);box-shadow:3px 3px 0 var(--ember)}
.pitem-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.pselect{cursor:pointer;color:var(--muted);font-size:18px;user-select:none}.pitem.sel .pselect{color:var(--ember)}
.ptitle{flex:1;font-size:15px}
.pitem-idea{font-size:13px;margin-bottom:10px;line-height:1.5}
.pitem-metrics{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.conf-mini{display:flex;align-items:center;gap:6px}.conf-mini .bar{flex:0 0 60px}
.pitem-actions{display:flex;gap:8px;flex-wrap:wrap}
.pitem-actions .btn{min-height:32px;padding:5px 12px;font-size:11px}

/* Comparison result */
.compare-result,.devpost-result{background:var(--bg2);border:2px solid var(--steel);padding:18px;box-shadow:var(--panel-shadow);
  animation:stampIn .3s ease}
.cmp-head,.devpost-head{font-family:var(--font-display);color:var(--steel);text-transform:uppercase;letter-spacing:.1em;
  font-size:13px;margin-bottom:14px;border-bottom:var(--border);padding-bottom:8px}
.cmp-axis{padding:10px 0;border-top:var(--border)}.cmp-axis:first-of-type{border-top:0}
.cmp-label{font-family:var(--font-display);color:var(--ember);text-transform:uppercase;font-size:12px;letter-spacing:.06em;margin-bottom:6px}
.cmp-scores{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:6px}
.cmp-side{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--bg3);padding:8px 10px;border:var(--border)}
.cmp-side.win{border-color:var(--ok);background:rgba(74,157,95,.1)}
.cmp-rec{margin-top:14px;padding:14px;background:var(--bg);border:var(--border-heavy);display:flex;flex-direction:column;gap:6px}

/* Devpost draft */
.devpost-field{padding:10px 0;border-top:var(--border)}.devpost-field:first-of-type{border-top:0}
.df-label{font-family:var(--font-mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--ember);margin-bottom:4px}
.df-text{color:var(--text);font-size:14px;line-height:1.6}
.devpost-actions{display:flex;gap:8px;margin-top:14px}

/* Responsible-AI dashboard */
.dash-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}
.dash-card{background:var(--bg2);border:var(--border);padding:18px;text-align:center;box-shadow:var(--panel-shadow)}
.dash-num{font-family:var(--font-display);font-size:36px;color:var(--ember);line-height:1;margin-bottom:6px}
.dash-section{background:var(--bg2);border:var(--border);padding:16px;margin-bottom:14px}
.dash-title{font-family:var(--font-display);color:var(--steel);text-transform:uppercase;letter-spacing:.1em;font-size:12px;margin-bottom:12px}
.dash-bar{display:grid;grid-template-columns:80px 1fr 30px;gap:10px;align-items:center;margin-bottom:8px;font-family:var(--font-mono);font-size:11px}
.dash-theme{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-top:var(--border)}
.dash-theme:first-of-type{border-top:0}
@media(max-width:620px){.dash-grid{grid-template-columns:1fr 1fr}.cmp-scores{grid-template-columns:1fr}.portfolio-panel{max-height:100vh;border-radius:0}}

/* ── V4 Step 6: PDF export via the browser print dialog ───────────────
   body.printing is added before window.print() so ONLY the Execution Canvas
   renders (dark surfaces, severity pills, guardrail all preserved via
   print-color-adjust). All chat/refine/buttons/overlays are hidden. */
@media print{
  @page{margin:14mm}
  body{background:#0e0e0f !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  body.printing .work,body.printing .top,body.printing .refine-box,
  body.printing .follow,body.printing #verifyBanner,body.printing .actions-right,
  body.printing .toast,body.printing .notification,body.printing #portfolioOverlay,
  body.printing .hero,body.printing #ideaPanel,body.printing .phases,body.printing .conversation
    {display:none !important}
  body.printing .app{display:block}
  body.printing aside.canvas{position:static !important;max-height:none !important;width:100% !important;
    height:auto !important;border:0 !important;padding:0 !important;overflow:visible !important;
    box-shadow:none !important}
  body.printing aside.canvas.maximized{position:static !important;inset:auto !important}
  /* keep dark surfaces + colored pills */
  .card,.panel,.mini,.guardrail-flag,.verify-banner
    {background:#1c1d20 !important;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  .sev1,.sev2{background:rgba(74,157,95,.18)!important}
  .sev3{background:rgba(230,162,60,.18)!important}
  .sev4,.sev5,.gr-keyword{background:rgba(217,69,69,.18)!important}
}

/* ── FORGED stamp upgrade: impact flash + spark particles ─────────────
   Additive on top of the existing .forged-stamp / .forged-inner rules. */
.forged-stamp.quench::before {
  content: ""; position: absolute; inset: 0; pointer-events: none;
  background: radial-gradient(circle at center, rgba(239,159,39,.35), transparent 55%);
  opacity: 0; animation: forgeQuench .5s ease-out .28s forwards;
}
@keyframes forgeQuench { 0%{opacity:0} 35%{opacity:1} 100%{opacity:0} }
.forge-spark {
  position: absolute; top: 50%; left: 50%; width: 5px; height: 5px; border-radius: 50%;
  background: var(--fc, var(--ember));
  box-shadow: 0 0 8px var(--fc, var(--ember)), 0 0 16px var(--fc, var(--ember));
  opacity: 0; pointer-events: none;
  animation-name: forgeSparkFly; animation-timing-function: cubic-bezier(.15,.6,.3,1);
  animation-fill-mode: forwards;
}
@keyframes forgeSparkFly {
  0%   { opacity: 1; transform: translate(-50%,-50%) scale(1); }
  100% { opacity: 0; transform: translate(calc(-50% + var(--fx)), calc(-50% + var(--fy))) scale(0); }
}
@media (max-width: 620px) { .forge-spark { width: 4px; height: 4px; } }
