:root{
    --navy:#1B2A4A; --ink:#0D1526; --deep:#080E1C;
    --gold:#B8923A; --gold-hi:#D9B562;
    --paper:#F7F3EA; --mute:#8E96AB; --ok:#4CAF7D; --warn:#D9B562; --run:#5E9BD8;
  }
  *{margin:0;padding:0;box-sizing:border-box}
  html,body{height:100%;overflow:hidden;background:var(--deep);color:var(--paper);
    font-family:"Noto Sans","Segoe UI",system-ui,sans-serif}
  .serif{font-family:"Noto Serif",Georgia,serif}
  .mono{font-family:"Courier New",monospace}
  #stage{position:fixed;inset:0;cursor:grab}
  #stage:active{cursor:grabbing}

  .hud{position:fixed;inset:0;pointer-events:none;display:flex;flex-direction:column;
    justify-content:space-between;padding:clamp(14px,2.6vw,32px)}
  .hud>*{pointer-events:auto}
  header{display:flex;justify-content:space-between;align-items:center}
  .brand h1{font-size:clamp(17px,2.2vw,24px);letter-spacing:.4em;font-weight:600;color:var(--gold)}
  .brand p{font-size:9px;letter-spacing:.36em;text-transform:uppercase;color:var(--mute);margin-top:3px}
  .loc{font-size:10px;letter-spacing:.26em;text-transform:uppercase;color:var(--mute);
    border:1px solid rgba(184,146,58,.4);padding:9px 15px;background:rgba(13,21,38,.7);backdrop-filter:blur(8px)}
  footer .hint{font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--mute);line-height:2}
  footer .hint b{color:var(--gold-hi)}
  .pad{display:none;gap:6px}
  .pad button{width:50px;height:50px;border:1px solid rgba(184,146,58,.5);background:rgba(13,21,38,.6);
    color:var(--gold);font-size:17px;cursor:pointer}
  @media (pointer:coarse){.pad{display:flex}}
  footer{display:flex;justify-content:space-between;align-items:flex-end;gap:14px;flex-wrap:wrap}

  /* ---------- console overlays ---------- */
  .console{position:fixed;inset:4vh 4vw;background:rgba(10,16,30,.97);border:1px solid rgba(184,146,58,.45);
    z-index:20;display:none;flex-direction:column;box-shadow:0 40px 120px rgba(0,0,0,.6)}
  .console.open{display:flex}
  .cbar{display:flex;justify-content:space-between;align-items:center;padding:16px 26px;
    border-bottom:1px solid rgba(184,146,58,.3)}
  .cbar h2{font-size:13px;letter-spacing:.36em;text-transform:uppercase;color:var(--gold)}
  .cbar span{font-size:9px;letter-spacing:.2em;color:var(--mute);text-transform:uppercase}
  .cbar button{background:none;border:1px solid rgba(184,146,58,.5);color:var(--paper);
    padding:7px 16px;cursor:pointer;font-size:11px;letter-spacing:.2em;font-family:inherit}
  .cbody{flex:1;display:flex;overflow:hidden}

  /* intelligence console */
  #intel .left{width:300px;border-right:1px solid rgba(184,146,58,.25);padding:20px;overflow-y:auto}
  #intel .left h3{font-size:9px;letter-spacing:.3em;text-transform:uppercase;color:var(--mute);margin-bottom:12px}
  .doc{padding:10px 12px;border:1px solid rgba(142,150,171,.2);margin-bottom:8px;font-size:11px;
    color:#C6CBDA;line-height:1.5}
  .doc b{color:var(--paper);display:block;font-size:11.5px}
  .doc span{color:var(--gold);font-size:9px;letter-spacing:.14em;text-transform:uppercase}
  #intel .main{flex:1;display:flex;flex-direction:column;padding:24px;overflow:hidden}
  .qrow{display:flex;gap:10px}
  .qrow input{flex:1;background:rgba(247,243,234,.06);border:1px solid rgba(184,146,58,.4);
    color:var(--paper);padding:14px 18px;font-size:14px;font-family:inherit;outline:none}
  .qrow input:focus{border-color:var(--gold)}
  .qrow button{background:var(--gold);color:var(--ink);border:none;padding:0 26px;font-weight:700;
    font-size:11px;letter-spacing:.24em;text-transform:uppercase;cursor:pointer;font-family:inherit}
  .chips{display:flex;gap:8px;margin-top:12px;flex-wrap:wrap}
  .chips button{background:none;border:1px solid rgba(142,150,171,.35);color:var(--mute);padding:6px 12px;
    font-size:10px;cursor:pointer;font-family:inherit;letter-spacing:.06em}
  .chips button:hover{border-color:var(--gold);color:var(--gold-hi)}
  #answers{flex:1;overflow-y:auto;margin-top:20px}
  .brief{border:1px solid rgba(184,146,58,.35);padding:20px 22px;margin-bottom:16px;background:rgba(27,42,74,.25)}
  .brief h4{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
  .brief p{font-size:13px;line-height:1.75;color:#DDE1EC}
  .passage{border-left:2px solid var(--gold);padding:10px 14px;margin-top:12px;background:rgba(247,243,234,.04)}
  .passage p{font-size:12px;color:#C6CBDA;line-height:1.65}
  .passage .src{font-size:9.5px;color:var(--gold);letter-spacing:.12em;text-transform:uppercase;margin-top:6px}
  .passage .score{float:right;color:var(--mute)}
  #chartWrap{border-top:1px solid rgba(184,146,58,.25);padding-top:14px;margin-top:6px}
  #chartWrap h4{font-size:9px;letter-spacing:.3em;text-transform:uppercase;color:var(--mute);margin-bottom:8px}
  canvas#trade{width:100%;height:130px}

  /* engine console */
  #engine .cbody{flex-direction:column;padding:24px;overflow-y:auto}
  .pipe{display:flex;gap:0;align-items:stretch;flex-wrap:wrap}
  .stage{flex:1;min-width:150px;border:1px solid rgba(142,150,171,.25);padding:16px;position:relative}
  .stage h4{font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold)}
  .stage .st{font-size:22px;margin:10px 0 6px}
  .stage p{font-size:10.5px;color:var(--mute);line-height:1.6}
  .stage.done{border-color:rgba(76,175,125,.5)}
  .stage.run{border-color:var(--run);box-shadow:0 0 24px rgba(94,155,216,.15)}
  .gates{margin-top:22px;border:1px solid rgba(184,146,58,.35);padding:18px 22px}
  .gates h3{font-size:10px;letter-spacing:.3em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
  .gate{display:flex;justify-content:space-between;padding:9px 0;font-size:12.5px;
    border-bottom:1px solid rgba(247,243,234,.07)}
  .gate .mono{color:#C6CBDA}
  .gate b.ok{color:var(--ok)} .gate b.run{color:var(--run)} .gate b.warn{color:var(--warn)}
  .log{margin-top:18px;background:#060B16;border:1px solid rgba(142,150,171,.2);padding:14px 16px;
    font-size:11px;line-height:1.8;height:150px;overflow-y:auto;color:#9fb0c8}
  .log .t{color:var(--gold)}

  /* product sheet (store items) */
  .sheet{position:fixed;right:0;top:0;bottom:0;width:min(360px,92vw);background:var(--paper);color:var(--navy);
    transform:translateX(105%);transition:transform .5s cubic-bezier(.2,.8,.2,1);padding:38px 32px;z-index:15;
    display:flex;flex-direction:column;box-shadow:-20px 0 60px rgba(0,0,0,.4)}
  .sheet.open{transform:translateX(0)}
  .sheet .close{position:absolute;top:16px;right:18px;background:none;border:none;font-size:20px;
    color:var(--navy);cursor:pointer}
  .sheet .cat{font-size:9px;letter-spacing:.34em;text-transform:uppercase;color:#8a6b22}
  .sheet h2{font-size:24px;font-weight:600;margin-top:8px}
  .sheet .price{font-size:17px;margin-top:8px}
  .sheet .desc{font-size:13px;line-height:1.7;color:#4C5468;margin-top:16px;padding-top:16px;
    border-top:1px solid #E2DCCB}
  .sheet .act{margin-top:auto;background:var(--navy);color:var(--paper);border:none;padding:17px;
    font-size:11px;letter-spacing:.3em;text-transform:uppercase;cursor:pointer;font-family:inherit}
  .sheet .act:hover{background:var(--gold);color:var(--ink)}

  #bubble{position:fixed;left:50%;bottom:110px;transform:translateX(-50%) translateY(16px);opacity:0;
    background:var(--paper);color:var(--navy);padding:13px 20px;font-size:13px;max-width:340px;text-align:center;
    transition:all .5s;pointer-events:none;box-shadow:0 14px 40px rgba(0,0,0,.4);line-height:1.6;z-index:5}
  #bubble.show{opacity:1;transform:translateX(-50%) translateY(0)}
  #bubble em{color:#8a6b22;font-style:normal;font-weight:700}

  #veil{position:fixed;inset:0;background:var(--deep);z-index:30;display:flex;flex-direction:column;
    align-items:center;justify-content:center;gap:16px;transition:opacity 1s ease .5s}
  #veil.gone{opacity:0;pointer-events:none}
  #veil h2{font-size:clamp(26px,5vw,42px);letter-spacing:.46em;font-weight:600;color:var(--gold);margin-left:.46em}
  #veil p{font-size:10px;letter-spacing:.4em;text-transform:uppercase;color:var(--mute)}
  #veil .fil{font-size:11px;color:var(--gold-hi);font-style:italic}

/* ==========================================================================
   House chrome — appended to every experience stylesheet by harden.py.
   Self-contained (no custom properties from the landing page).
   ========================================================================== */
.house-back{
  position:fixed;left:16px;bottom:16px;z-index:70;
  display:inline-flex;align-items:center;gap:10px;
  padding:11px 17px;border:1px solid rgba(184,146,58,.45);
  background:rgba(6,15,31,.80);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  color:#F5F1E6;text-decoration:none;
  font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue","Segoe UI",system-ui,sans-serif;
  font-size:9.5px;letter-spacing:.26em;text-transform:uppercase;
  transition:background .3s,border-color .3s;
}
.house-back:hover{background:rgba(184,146,58,.18);border-color:#B8923A}
.house-back:focus-visible{outline:2px solid #D9B562;outline-offset:3px}
@media (pointer:coarse){.house-back{bottom:auto;top:10px;left:10px;padding:9px 13px}}

.house-toast{
  position:fixed;left:50%;bottom:96px;transform:translateX(-50%) translateY(14px);
  z-index:80;opacity:0;pointer-events:none;max-width:min(440px,88vw);
  padding:15px 24px;background:#F5F1E6;color:#0B1A33;
  font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue","Segoe UI",system-ui,sans-serif;
  font-size:13px;line-height:1.65;text-align:center;
  box-shadow:0 18px 50px rgba(0,0,0,.45);
  transition:opacity .4s,transform .4s;
}
.house-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

.house-missing{
  position:fixed;inset:0;z-index:95;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:18px;padding:8vw;text-align:center;
  background:#060F1F;color:#F5F1E6;
  font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue","Segoe UI",system-ui,sans-serif;
}
.house-missing h2{font-family:Georgia,serif;font-size:clamp(20px,3vw,30px);font-weight:500}
.house-missing p{max-width:56ch;font-size:13.5px;line-height:1.8;color:rgba(245,241,230,.6)}
.house-missing code{font-family:ui-monospace,Menlo,Consolas,monospace;color:#D9B562;font-size:12.5px}
.house-missing a{color:#D9B562;font-size:10px;letter-spacing:.26em;text-transform:uppercase;
  border:1px solid rgba(184,146,58,.5);padding:13px 22px;text-decoration:none;margin-top:8px}
