  :root{
    --fg:#39ff6a;
    --fg-dim:#1c8f3a;
    --fg-bright:#a6ffbf;
    --bg:#020603;
    --bg-panel:#03110a;
    --danger:#ff5555;
    --warn:#ffcc33;
    --glow: 0 0 2px currentColor, 0 0 8px currentColor;
  }
  [data-theme="amber"]{
    --fg:#ffb000;
    --fg-dim:#8a5f00;
    --fg-bright:#ffe0a0;
    --bg-panel:#150e02;
  }
  [data-theme="white"]{
    --fg:#e4e4e4;
    --fg-dim:#8a8a8a;
    --fg-bright:#ffffff;
    --bg-panel:#111111;
  }
  *{ box-sizing:border-box; }
  html,body{
    margin:0; padding:0; height:100%;
    background:var(--bg);
    color:var(--fg);
    font-family:'Share Tech Mono','VT323',monospace;
    font-size:16px;
    overflow-x:hidden;
  }
  ::selection{ background:var(--fg); color:var(--bg); }
  ::-webkit-scrollbar{ width:10px; }
  ::-webkit-scrollbar-track{ background:var(--bg); }
  ::-webkit-scrollbar-thumb{ background:var(--fg-dim); }

  /* CRT overlay */
  #crt-overlay{
    pointer-events:none;
    position:fixed; inset:0; z-index:9999;
  }
  #crt-overlay::before{
    content:""; position:fixed; inset:0;
    background:repeating-linear-gradient(
      to bottom,
      rgba(0,0,0,0.18) 0px,
      rgba(0,0,0,0.18) 1px,
      transparent 2px,
      transparent 3px
    );
    mix-blend-mode:multiply;
  }
  #crt-overlay::after{
    content:""; position:fixed; inset:0;
    background:radial-gradient(ellipse at center, rgba(0,0,0,0) 55%, rgba(0,0,0,0.55) 100%);
  }
  body.no-crt #crt-overlay{ display:none; }
  body.no-crt{ --glow: none; }
  body.crt-flicker{ animation: flicker 6.5s infinite; }
  @keyframes flicker{
    0%,100%{ filter:brightness(1); }
    92%{ filter:brightness(1); }
    93%{ filter:brightness(0.85); }
    94%{ filter:brightness(1.05); }
    95%{ filter:brightness(0.95); }
    96%{ filter:brightness(1); }
  }

  .glow{ text-shadow:var(--glow); }

  .visually-hidden{
    position:absolute;
    width:1px;
    height:1px;
    padding:0;
    margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
  }

  /* Boot screen */
  #boot-screen{
    position:fixed; inset:0; background:#000; color:var(--fg);
    font-family:'Share Tech Mono',monospace;
    padding:24px; white-space:pre-wrap; font-size:15px; line-height:1.4;
    z-index:10000; text-shadow:var(--glow);
  }
  #boot-screen .cursor{ animation: blink 1s steps(1) infinite; }
  @keyframes blink{ 50%{ opacity:0; } }

  /* Login screen */
  #login-screen{
    position:fixed; inset:0; background:#000; z-index:10000;
    display:flex; align-items:center; justify-content:center;
    padding:20px;
  }
  .login-box{
    position:relative;
    border:2px double var(--fg-dim); padding:28px 32px; max-width:480px; width:100%;
    background:var(--bg-panel); text-shadow:var(--glow);
  }
  .login-ascii{
    color:var(--fg-bright); font-size:13px; line-height:1.3; margin:0 0 20px 0; text-align:center;
    white-space:pre;
  }
  .login-box .field{ margin-bottom:14px; }
  .login-box input{ width:100%; }
  .login-box button:not(.voice-toggle){ width:100%; margin-top:6px; }
  .login-msg{ min-height:20px; margin-top:12px; font-size:13px; text-align:center; }
  .login-msg.err{ color:var(--danger); animation: blink 1s steps(1) infinite; }
  .login-msg.ok{ color:var(--fg-bright); }
  .login-hint{
    font-size:11px; color:var(--fg-dim); margin-top:18px; text-align:center; line-height:1.5;
    text-shadow:none;
  }

  /* Invite request console */
  .request-console{ max-width:600px; }
  #freedom-console{
    min-height:180px; max-height:340px; overflow-y:auto;
    font-size:14px; line-height:1.6; text-align:left;
    padding:12px; background:#010401; border:1px solid var(--fg-dim); margin-bottom:12px;
  }
  .request-console .advisor-input-row input{ flex:1; min-width:180px; }
  .request-console .advisor-input-row .glow{ font-size:16px; }

  #app{ display:none; min-height:100vh; padding:0 0 90px 0; }
  #app.visible{ display:block; }

  header#top-bar{
    border-bottom:2px double var(--fg-dim);
    padding:10px 16px;
    display:flex; justify-content:space-between; align-items:baseline;
    flex-wrap:wrap; gap:6px;
  }
  header#top-bar .title{
    font-size:22px; letter-spacing:3px; color:var(--fg-bright); text-shadow:var(--glow);
  }
  header#top-bar .clock{ color:var(--fg-dim); font-size:14px; }
  header#top-bar .header-right{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; }
  header#top-bar .header-right button{ padding:4px 10px; }

  nav#menu-bar{
    display:flex; flex-wrap:wrap; gap:2px;
    border-bottom:1px solid var(--fg-dim);
    background:var(--bg-panel);
    padding:6px 10px;
  }
  nav#menu-bar button{
    background:transparent; color:var(--fg); border:1px solid transparent;
    font-family:inherit; font-size:14px; padding:6px 10px; cursor:pointer;
  }
  nav#menu-bar button:hover{ border-color:var(--fg-dim); }
  nav#menu-bar button.active{
    background:var(--fg); color:var(--bg); text-shadow:none; font-weight:bold;
  }
  nav#menu-bar button .k{ color:var(--fg-bright); }
  nav#menu-bar button.active .k{ color:var(--bg); }

  main#content{ padding:20px; max-width:1100px; margin:0 auto; }

  .screen{ display:none; }
  .screen.active{ display:block; animation: fadein .15s ease-out; }
  @keyframes fadein{ from{opacity:0;} to{opacity:1;} }

  .panel{
    border:2px solid var(--fg-dim);
    background:var(--bg-panel);
    padding:16px; margin-bottom:20px;
    position:relative;
  }
  .panel-title{
    position:absolute; top:-12px; left:12px; background:var(--bg);
    padding:0 8px; color:var(--fg-bright); letter-spacing:2px; font-size:14px;
  }
  .voice-toggle{
    position:absolute; top:-12px; right:12px;
    padding:0 8px; line-height:1; cursor:pointer;
    background:var(--bg); border:none; color:var(--fg-dim);
    font-family:inherit; font-size:14px; letter-spacing:2px;
    display:inline-flex; align-items:center; gap:6px;
  }
  .voice-toggle::before{ content:"["; }
  .voice-toggle::after{ content:"]"; }
  .voice-toggle:hover{ color:var(--fg); }
  .voice-toggle[aria-pressed="true"]{
    color:var(--fg-bright);
  }
  .voice-toggle .voice-icon{ display:block; }
  .voice-toggle .voice-icon-on{ display:none; }
  .voice-toggle[aria-pressed="true"] .voice-icon-off{ display:none; }
  .voice-toggle[aria-pressed="true"] .voice-icon-on{ display:block; }
  .grid{
    display:grid; gap:16px;
    grid-template-columns:repeat(auto-fit, minmax(240px,1fr));
  }
  h1,h2,h3{ font-weight:normal; text-shadow:var(--glow); letter-spacing:1px; }
  h2{ font-size:18px; border-bottom:1px dashed var(--fg-dim); padding-bottom:6px; }
  a{ color:var(--fg-bright); }

  table{ width:100%; border-collapse:collapse; font-size:14px; }
  th,td{ text-align:left; padding:6px 8px; border-bottom:1px solid var(--fg-dim); }
  th{ color:var(--fg-bright); text-transform:uppercase; font-size:12px; letter-spacing:1px; }
  tr:hover td{ background:rgba(57,255,106,0.06); }
  td.num{ text-align:right; font-variant-numeric:tabular-nums; }

  input, select, textarea{
    background:#010401; color:var(--fg); border:1px solid var(--fg-dim);
    font-family:inherit; font-size:14px; padding:6px 8px; outline:none;
  }
  input:focus, select:focus, textarea:focus{ border-color:var(--fg-bright); box-shadow:0 0 4px var(--fg-dim); }
  input[type="range"], input[type="checkbox"]{ accent-color: var(--fg); }
  input[type="range"]{ width:100%; }
  label{ display:block; font-size:12px; color:var(--fg-dim); margin-bottom:3px; letter-spacing:1px; }
  .field{ margin-bottom:10px; }
  form.inline-form{ display:flex; flex-wrap:wrap; gap:10px; align-items:flex-end; }

  .button-row{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; }
  .button-row form{ margin:0; }

  button.btn{
    background:transparent; border:1px solid var(--fg); color:var(--fg);
    font-family:inherit; padding:8px 14px; cursor:pointer; font-size:14px; letter-spacing:1px;
  }
  button.btn:hover{ background:var(--fg); color:var(--bg); }
  button.btn.danger{ border-color:var(--danger); color:var(--danger); }
  button.btn.danger:hover{ background:var(--danger); color:#000; }
  button.btn.small{ padding:3px 8px; font-size:12px; }

  /* Privacy mode: masks financial values from over-the-shoulder viewing.
     Toggled by the header [P] button (privacy_controller.js), which adds
     .privacy-on to <body> and persists the choice in localStorage. */
  header#top-bar .header-right button[aria-pressed="true"]{
    background:var(--fg-bright); color:var(--bg); border-color:var(--fg-bright);
  }
  .privacy-on .money,
  .privacy-on td.num,
  .privacy-on .print-area,
  .privacy-on #advisor-chat-log .chat-line,
  .privacy-on [data-whatif-simulator-target="canvas"],
  .privacy-on input[type="number"]{
    filter:blur(7px);
    user-select:none; -webkit-user-select:none;
    transition:filter .12s ease-out;
  }

  .bar-row{ display:flex; align-items:center; gap:10px; margin:6px 0; font-size:13px; }
  .bar-label{ width:130px; flex-shrink:0; }
  .bar-track{ flex:1; letter-spacing:0; white-space:pre; font-size:14px; }
  .bar-pct{ width:50px; text-align:right; }
  .over{ color:var(--danger) !important; }
  .warn-txt{ color:var(--warn) !important; }
  .positive{ color:var(--fg-bright); }
  tr.current-month td{ background:rgba(57,255,106,0.1); }
  .tag{ font-size:10px; border:1px solid var(--fg-dim); padding:1px 5px; color:var(--fg-dim); letter-spacing:1px; }
  .tag.now{ border-color:var(--fg-bright); color:var(--fg-bright); }
  .game-card{ text-align:center; }
  .goal-card{ margin-bottom:16px; padding-bottom:16px; border-bottom:1px dashed var(--fg-dim); }
  .goal-card:last-child{ border-bottom:none; margin-bottom:0; padding-bottom:0; }
  .game-icon{ color:var(--fg-bright); font-size:22px; line-height:1.1; margin:10px 0; text-shadow:var(--glow); }
  #game-canvas{ display:block; }

  .blink-cursor{ animation: blink 1s steps(1) infinite; }
  #advisor-chat-log{
    max-height:380px; overflow-y:auto; font-size:14px; line-height:1.6;
    padding:10px; background:#010401; border:1px solid var(--fg-dim); margin-bottom:12px;
  }
  .chat-line{ margin-bottom:10px; white-space:pre-wrap; }
  .chat-line .who{ color:var(--fg-dim); font-size:12px; letter-spacing:1px; display:block; margin-bottom:2px; }
  .chat-line.user .who{ color:var(--fg-dim); }
  .chat-line.advisor .who{ color:var(--fg-bright); }
  .chat-line.advisor{ text-shadow:var(--glow); }
  .chat-line.system{ color:var(--warn); font-size:12px; text-align:center; }
  .advisor-input-row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
  .advisor-input-row input{ flex:1; min-width:180px; }
  .quick-prompts{ display:flex; flex-wrap:wrap; gap:6px; margin-top:12px; }

  .stat-box{ text-align:center; padding:10px; }
  .stat-box .big{ font-size:28px; color:var(--fg-bright); text-shadow:var(--glow); }
  .stat-box .lbl{ font-size:12px; color:var(--fg-dim); letter-spacing:2px; margin-top:4px; }

  /* Dashboard summary tiles are packed tighter so all totals fit one row. */
  .stat-grid{ gap:12px; grid-template-columns:repeat(auto-fit, minmax(170px,1fr)); }
  .stat-grid .stat-box{ padding:10px 6px; }
  .stat-grid .stat-box .big{ font-size:22px; }
  .stat-grid .stat-box .lbl{ letter-spacing:1px; }

  .achievement-card{ text-align:left; padding:14px; }
  .achievement-card.locked{ opacity:0.45; }
  .achievement-card .ach-title{ color:var(--fg-bright); text-shadow:var(--glow); font-size:14px; margin-bottom:4px; }
  .achievement-card .ach-desc{ font-size:12px; color:var(--fg-dim); }
  .achievement-card .ach-date{ font-size:10px; color:var(--fg-dim); margin-top:6px; }

  .achievement-toast{
    position:fixed; top:70px; right:16px; background:var(--bg-panel); border:2px solid var(--fg-bright);
    padding:14px 18px; z-index:10002; font-size:13px; box-shadow:var(--glow); max-width:280px;
    animation: toast-in .25s ease-out;
  }
  .achievement-toast .ach-toast-title{ color:var(--fg-bright); text-shadow:var(--glow); font-size:14px; margin-bottom:4px; }
  .achievement-toast.fade-out{ animation: toast-out .4s ease-in forwards; }
  @keyframes toast-in{ from{ transform:translateX(30px); opacity:0; } to{ transform:translateX(0); opacity:1; } }
  @keyframes toast-out{ from{ opacity:1; } to{ opacity:0; transform:translateX(30px); } }

  .alert{
    border:1px dashed var(--warn); color:var(--warn); padding:8px 10px; margin-bottom:12px; font-size:13px;
  }
  .alert.blink{ animation: blink 1.2s steps(1) infinite; }

  footer#status-bar{
    position:fixed; bottom:0; left:0; right:0;
    border-top:1px solid var(--fg-dim); background:var(--bg-panel);
    padding:6px 12px; font-size:12px; color:var(--fg-dim);
    display:flex; justify-content:space-between; flex-wrap:wrap; gap:6px;
  }
  .ascii-title{ white-space:pre; font-size:12px; line-height:1.1; color:var(--fg-bright); text-shadow:var(--glow); }
  .muted{ color:var(--fg-dim); }
  .right{ text-align:right; }
  .txn-list{ max-height:260px; overflow-y:auto; font-size:13px; }
  .txn-list div{ padding:3px 0; border-bottom:1px dotted var(--fg-dim); display:flex; justify-content:space-between; }
  .badge{ border:1px solid var(--fg-dim); padding:1px 6px; font-size:11px; }
  .toast{
    position:fixed; top:70px; right:16px; background:var(--bg-panel); border:1px solid var(--fg);
    padding:10px 14px; z-index:10001; font-size:13px; box-shadow:var(--glow);
    animation: fadein .2s ease-out;
  }
  @media (max-width:640px){
    header#top-bar .title{ font-size:16px; }
    .bar-label{ width:90px; }
    main#content{ padding:12px; }
  }

  /* ---------- PRINT ---------- */
  @media print{
    @page{ margin:1.5cm; }
    html, body{ background:#fff !important; }
    #crt-overlay, #boot-screen, #login-screen,
    header#top-bar, nav#menu-bar, footer#status-bar{ display:none !important; }
    body *{ visibility:hidden; }
    .print-area, .print-area *{
      visibility:visible !important;
      color:#000 !important;
      background:#fff !important;
      text-shadow:none !important;
      box-shadow:none !important;
    }
    .print-area{
      position:absolute; top:0; left:0; width:100%;
      font-family:'Share Tech Mono', monospace; font-size:12pt;
      padding:0; margin:0; border:none !important;
    }
  }

  /* ---------- LANDING PAGE ---------- */
  .wrap{ max-width:900px; margin:0 auto; padding:36px 20px 80px; }

  .brand-line{
    display:flex; justify-content:space-between; font-size:13px; color:var(--fg-dim);
    border-bottom:1px solid var(--fg-dim); padding-bottom:10px; margin-bottom:40px;
    letter-spacing:1px;
  }
  .brand-line-end{ display:flex; align-items:center; gap:16px; }
  .locale-switch{ display:flex; align-items:center; gap:6px; }
  .locale-switch a{
    color:var(--fg-dim); text-decoration:none;
  }
  .locale-switch a:hover,
  .locale-switch a.active{ color:var(--fg-bright); text-shadow:var(--glow); }
  .locale-switch .sep{ color:var(--fg-dim); }

  .hero{ text-align:center; margin-bottom:50px; }
  .hero pre.logo{
    color:var(--fg-bright); text-shadow:var(--glow);
    font-size:clamp(9px, 2.4vw, 18px); line-height:1.15; white-space:pre;
    margin:0 0 18px 0;
  }
  .hero .tagline{ font-size:18px; color:var(--fg-bright); text-shadow:var(--glow); margin-bottom:8px; }
  .hero .subtag{ font-size:14px; color:var(--fg-dim); max-width:520px; margin:0 auto 30px; line-height:1.6; }

  .cta{
    display:inline-block; border:2px solid var(--fg); color:var(--fg-bright);
    padding:14px 28px; font-size:16px; letter-spacing:2px; text-decoration:none;
    text-shadow:var(--glow); background:var(--bg-panel);
  }
  .cta:hover{ background:var(--fg); color:var(--bg); text-shadow:none; }
  .cta .caret{ animation: blink 1s steps(1) infinite; }
  .press-hint{ margin-top:12px; font-size:12px; color:var(--fg-dim); }
  .press-hint a{ color:var(--fg-dim); }

  .feature-list{ list-style:none; margin:0; padding:0; columns:2; column-gap:30px; }
  .feature-list li{ break-inside:avoid; margin-bottom:10px; font-size:14px; }
  .feature-list li::before{ content:"[X] "; color:var(--fg-bright); }

  .req-grid{ display:grid; grid-template-columns:180px 1fr; row-gap:6px; font-size:13px; }
  .req-grid dt{ color:var(--fg-dim); }
  .req-grid dd{ margin:0; }

  .screen-preview{
    font-size:12px; line-height:1.4; white-space:pre; color:var(--fg);
    background:#010401; border:1px solid var(--fg-dim); padding:14px; overflow-x:auto;
  }
  .screen-preview .hi{ color:var(--fg-bright); }

  .landing-footer{
    text-align:center; font-size:12px; color:var(--fg-dim); margin-top:40px;
    border-top:1px solid var(--fg-dim); padding-top:16px;
  }
  .legal-footer-links{ margin-bottom:12px; }
  .legal-footer-links a{ color:var(--fg-dim); text-decoration:none; }
  .legal-footer-links a:hover{ color:var(--fg-bright); text-shadow:var(--glow); }
  .legal-footer-links .sep{ margin:0 8px; }

  .legal-back{ color:inherit; text-decoration:none; }
  .legal-back:hover{ color:var(--fg-bright); text-shadow:var(--glow); }

  .legal-nav{
    display:flex; justify-content:center; align-items:center; gap:8px;
    margin-bottom:28px; font-size:13px; letter-spacing:1px;
  }
  .legal-nav a{ color:var(--fg-dim); text-decoration:none; }
  .legal-nav a:hover,
  .legal-nav a.active{ color:var(--fg-bright); text-shadow:var(--glow); }
  .legal-nav .sep{ color:var(--fg-dim); }

  .legal-panel{ margin-top:8px; }
  .legal-updated{ font-size:12px; color:var(--fg-dim); margin:0 0 20px; }
  .legal-content h2{
    font-size:14px; margin:24px 0 8px; letter-spacing:1px;
    border-bottom:1px dashed var(--fg-dim); padding-bottom:4px;
  }
  .legal-content h2:first-child{ margin-top:0; }
  .legal-section-body{ font-size:14px; line-height:1.6; color:var(--fg); }
  .legal-section-body p{ margin:0 0 12px; }

  @media (max-width:600px){
    .feature-list{ columns:1; }
  }
