/* ============================================================
   HYPERSCALE — design tokens
   Palette: salle serveurs nocturne, accents type "heat-map"
   ============================================================ */
:root{
  --bg-void: #0B0E14;
  --bg-panel: #131822;
  --bg-panel-raised: #1B2230;
  --bg-panel-hover: #212A3B;
  --line: #2A3242;
  --line-soft: #1E2531;
  --text-primary: #E6EAF2;
  --text-dim: #8590A6;
  --text-faint: #566078;

  --cyan: #4FD8E8;
  --cyan-dim: #2B7C87;
  --amber: #F5A623;
  --amber-dim: #8C6318;
  --green: #3ECF8E;
  --green-dim: #23795A;
  --red: #F0556B;
  --red-dim: #8C2F3C;
  --violet: #9B7EF0;
  --violet-dim: #5A4791;

  --font-display: 'JetBrains Mono', monospace;
  --font-body: 'Inter', sans-serif;
  --font-mono: 'JetBrains Mono', monospace;

  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 14px;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;height:100%;}
body{
  background:
    radial-gradient(ellipse 900px 500px at 15% -10%, rgba(79,216,232,0.06), transparent),
    radial-gradient(ellipse 900px 500px at 85% 110%, rgba(155,126,240,0.06), transparent),
    var(--bg-void);
  color:var(--text-primary);
  font-family:var(--font-body);
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
}
.hidden{display:none !important;}
.mono{font-family:var(--font-mono);}
button{font-family:inherit;cursor:pointer;}
input{font-family:inherit;}
::selection{background:var(--cyan);color:#04141a;}
:focus-visible{outline:2px solid var(--cyan);outline-offset:2px;}

/* scrollbars */
*::-webkit-scrollbar{width:8px;height:8px;}
*::-webkit-scrollbar-track{background:transparent;}
*::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px;}

/* ============================================================
   BOOT SCREEN
   ============================================================ */
.boot-screen{
  min-height:100vh;
  display:flex;align-items:center;justify-content:center;
  padding:24px;
  background-image:
    linear-gradient(rgba(79,216,232,0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(79,216,232,0.035) 1px, transparent 1px);
  background-size: 34px 34px;
}
.boot-card{
  width:100%;max-width:440px;
  background:var(--bg-panel);
  border:1px solid var(--line);
  border-radius:var(--radius-lg);
  padding:36px 32px 28px;
  box-shadow:0 30px 80px rgba(0,0,0,0.55);
}
.boot-logo{display:flex;align-items:center;gap:12px;margin-bottom:10px;}
.logo-glyph{
  font-size:22px;letter-spacing:-2px;color:var(--cyan);
  text-shadow:0 0 16px rgba(79,216,232,0.55);
}
.logo-glyph.small{font-size:16px;}
.boot-logo h1{
  font-family:var(--font-display);font-weight:800;
  font-size:26px;letter-spacing:2px;margin:0;
}
.boot-sub{color:var(--text-dim);font-size:14px;line-height:1.55;margin:0 0 12px;}
.boot-goal{
  font-size:12.5px;line-height:1.6;color:var(--text-primary);margin:0 0 20px;
  background:rgba(79,216,232,0.06);border:1px solid var(--cyan-dim);border-radius:var(--radius-sm);
  padding:10px 12px;
}
.boot-goal b{color:var(--cyan);}
.boot-stats{
  display:grid;grid-template-columns:1fr 1fr;gap:8px 16px;
  font-family:var(--font-mono);font-size:12px;color:var(--text-dim);
  margin-bottom:24px;
  border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);
  padding:14px 0;
}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px;}
.dot-cyan{background:var(--cyan);box-shadow:0 0 6px var(--cyan);}
.dot-amber{background:var(--amber);box-shadow:0 0 6px var(--amber);}
.dot-green{background:var(--green);box-shadow:0 0 6px var(--green);}
.dot-violet{background:var(--violet);box-shadow:0 0 6px var(--violet);}

.boot-field{display:block;margin-bottom:18px;}
.boot-field span{display:block;font-size:11px;letter-spacing:1px;text-transform:uppercase;color:var(--text-faint);margin-bottom:6px;}
.boot-field input{
  width:100%;background:var(--bg-panel-raised);border:1px solid var(--line);
  border-radius:var(--radius-sm);padding:11px 12px;color:var(--text-primary);
  font-family:var(--font-mono);font-size:14px;
}
.boot-field input:focus{border-color:var(--cyan);}
.boot-foot{font-size:11px;color:var(--text-faint);text-align:center;margin:16px 0 0;}

/* ============================================================
   BUTTONS
   ============================================================ */
.btn{
  border:1px solid var(--line);background:var(--bg-panel-raised);
  color:var(--text-primary);border-radius:var(--radius-sm);
  padding:9px 14px;font-size:13px;font-weight:600;
  transition:background .12s, border-color .12s, transform .06s;
}
.btn:hover{background:var(--bg-panel-hover);border-color:var(--text-faint);}
.btn:active{transform:translateY(1px);}
.btn:disabled{opacity:.4;cursor:not-allowed;}
.btn-lg{width:100%;padding:13px;font-size:14px;margin-bottom:10px;}
.btn-sm{padding:6px 9px;font-size:12px;}
.btn-primary{background:var(--cyan);border-color:var(--cyan);color:#04141a;}
.btn-primary:hover{background:#6ee3f0;}
.btn-secondary{background:var(--violet-dim);border-color:var(--violet);color:#f2eeff;}
.btn-secondary:hover{background:var(--violet);}
.btn-ghost{background:transparent;}
.btn-danger{background:var(--red-dim);border-color:var(--red);color:#ffe9ec;}
.btn-danger:hover{background:var(--red);}
.btn-block{width:100%;}

/* ============================================================
   APP SHELL
   ============================================================ */
.app{display:flex;flex-direction:column;height:100vh;}

.ticker{
  display:flex;align-items:center;gap:22px;
  padding:10px 18px;
  background:var(--bg-panel);border-bottom:1px solid var(--line);
  flex-wrap:wrap;
}
.ticker-brand{display:flex;align-items:center;gap:10px;padding-right:16px;border-right:1px solid var(--line-soft);}
.brand-text{display:flex;flex-direction:column;line-height:1.15;}
.brand-text strong{font-family:var(--font-display);font-size:13px;letter-spacing:1px;}
.brand-text small{color:var(--text-faint);font-size:10px;text-transform:uppercase;letter-spacing:1px;}

.ticker-stats{display:flex;gap:22px;flex-wrap:wrap;flex:1;}
.stat{display:flex;flex-direction:column;gap:3px;min-width:78px;}
.stat-label{font-size:10px;letter-spacing:1px;color:var(--text-faint);}
.stat-value{font-size:14px;font-weight:600;}
.stat-sub{font-size:10px;font-weight:600;margin-top:-1px;}
.stat-bar{width:100%;height:3px;background:var(--line-soft);border-radius:2px;overflow:hidden;margin-top:1px;}
.stat-bar-fill{height:100%;width:0%;transition:width .3s;}
.fill-amber{background:var(--amber);}
.fill-cyan{background:var(--cyan);}
.fill-green{background:var(--green);}
.fill-violet{background:var(--violet);}

.ticker-time{display:flex;align-items:center;gap:14px;margin-left:auto;}
.day-counter{display:flex;flex-direction:column;gap:2px;align-items:flex-end;}
.speed-controls{display:flex;gap:2px;background:var(--bg-panel-raised);border:1px solid var(--line);border-radius:var(--radius-sm);padding:2px;}
.speed-btn{
  background:transparent;border:none;color:var(--text-dim);
  padding:6px 10px;border-radius:3px;font-size:12px;font-weight:700;font-family:var(--font-mono);
}
.speed-btn.active{background:var(--cyan);color:#04141a;}
.speed-btn:hover:not(.active){color:var(--text-primary);}

/* toasts */
.toast-row{position:fixed;top:64px;left:18px;display:flex;flex-direction:column;gap:8px;z-index:60;max-width:320px;}
.toast{
  background:var(--bg-panel-raised);border:1px solid var(--line);border-left:3px solid var(--cyan);
  border-radius:var(--radius-sm);padding:10px 12px;font-size:12.5px;line-height:1.4;
  box-shadow:0 10px 24px rgba(0,0,0,0.45);
  animation:toast-in .18s ease-out;
  opacity:1;
}
.toast.warn{border-left-color:var(--amber);}
.toast.bad{border-left-color:var(--red);}
.toast.good{border-left-color:var(--green);}
.toast.achv{border-left-color:var(--violet);}
.toast.tip{border-left-color:var(--cyan);}
@keyframes toast-in{from{opacity:0;transform:translateX(-14px);}to{opacity:1;transform:translateX(0);}}

/* ============================================================
   MAIN LAYOUT
   ============================================================ */
.main{flex:1;display:flex;gap:0;overflow:hidden;}
.dashboard{flex:1;display:flex;flex-direction:column;padding:18px 18px 12px;overflow:auto;}
.dashboard-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px;flex-wrap:wrap;gap:8px;}
.dashboard-header h2{font-family:var(--font-display);font-size:15px;letter-spacing:.5px;margin:0;color:var(--text-primary);}
.campus-hint{
  font-size:11.5px;line-height:1.6;color:var(--text-dim);margin:0 0 14px;
  padding:9px 12px;background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:var(--radius-sm);
}
.campus-hint b{color:var(--text-primary);}

.led{width:7px;height:7px;border-radius:50%;display:inline-block;}
.led-green{background:var(--green);box-shadow:0 0 6px var(--green);}
.led-amber{background:var(--amber);box-shadow:0 0 6px var(--amber);}
.led-red{background:var(--red);box-shadow:0 0 6px var(--red);animation:blink-red 1s infinite;}
@keyframes blink-red{0%,100%{opacity:1;}50%{opacity:.25;}}

/* Facility category cards on the main dashboard */
.category-grid{
  display:grid;grid-template-columns:repeat(4, 1fr);gap:14px;
}
.cat-card{
  position:relative;border-radius:var(--radius-lg);border:1px solid var(--line);
  background:var(--bg-panel);padding:20px 14px;cursor:pointer;
  display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;
  transition:border-color .15s, background .15s, transform .1s;
  min-height:130px;justify-content:center;
}
.cat-card:hover{border-color:var(--cyan);background:var(--bg-panel-raised);transform:translateY(-2px);}
.cat-card.issue{border-color:var(--red);}
.cat-card.locked{cursor:not-allowed;opacity:.5;}
.cat-icon{font-size:30px;line-height:1;}
.cat-name{font-family:var(--font-display);font-size:12px;letter-spacing:.5px;color:var(--text-primary);}
.cat-value{font-size:14px;font-weight:700;color:var(--cyan);}
.cat-sub{font-size:10.5px;color:var(--text-faint);}

/* Slot grid used INSIDE a facility modal (reuses .plot tile styling) */
.slot-grid{
  display:grid;grid-template-columns:repeat(4, 1fr);gap:12px;
  padding:14px;border:1px solid var(--line);border-radius:var(--radius-lg);
  background:
    linear-gradient(rgba(79,216,232,0.025) 1px, transparent 1px),
    linear-gradient(90deg, rgba(79,216,232,0.025) 1px, transparent 1px),
    var(--bg-panel);
  background-size:24px 24px, 24px 24px, auto;
  max-height:52vh;overflow-y:auto;
}
.plot{
  position:relative;aspect-ratio:1/1;border-radius:var(--radius-md);
  border:1px dashed var(--line);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:4px;background:rgba(255,255,255,0.01);
  transition:border-color .15s, background .15s;
  min-height:88px;
}
.plot.empty{cursor:pointer;border-style:dashed;}
.plot.empty:hover{border-color:var(--cyan);background:rgba(79,216,232,0.05);}
.plot.empty .plot-plus{font-size:22px;color:var(--text-faint);}
.plot.empty:hover .plot-plus{color:var(--cyan);}
.plot.built{cursor:pointer;border-style:solid;border-color:var(--line);background:var(--bg-panel-raised);}
.plot.built:hover{border-color:var(--text-faint);background:var(--bg-panel-hover);}
.plot-icon{font-size:22px;line-height:1;}
.plot-name{font-size:9.5px;color:var(--text-dim);text-align:center;padding:0 4px;}
.plot-produce{font-size:9px;font-weight:700;}
.plot-level{font-family:var(--font-mono);font-size:8.5px;color:var(--violet);}
.plot-led{position:absolute;top:6px;right:6px;}

.pue-readout{font-size:12px;color:var(--text-dim);}

/* ============================================================
   SIDE DECK
   ============================================================ */
.deck{
  width:360px;flex-shrink:0;display:flex;flex-direction:column;
  border-left:1px solid var(--line);background:var(--bg-panel);
}
.deck-tabs{display:flex;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.deck-tab{
  flex:1;min-width:64px;background:transparent;border:none;color:var(--text-dim);
  padding:11px 6px;font-size:11.5px;font-weight:600;border-bottom:2px solid transparent;
  position:relative;
}
.deck-tab.active{color:var(--text-primary);border-bottom-color:var(--cyan);}
.deck-tab:hover:not(.active){color:var(--text-primary);}
.badge{
  background:var(--red);color:#fff;border-radius:8px;font-size:9px;padding:1px 5px;margin-left:4px;
  font-family:var(--font-mono);
}

.deck-panels{flex:1;overflow-y:auto;padding:14px;}
.deck-panel{display:none;}
.deck-panel.active{display:block;}

.panel-title{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--text-faint);margin:0 0 10px;}

/* build cards */
.build-card, .staff-card, .tech-card{
  background:var(--bg-panel-raised);border:1px solid var(--line);border-radius:var(--radius-md);
  padding:12px;margin-bottom:10px;
}
.build-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.build-card-head h4{margin:0;font-size:13px;display:flex;align-items:center;gap:8px;}
.build-card-price{font-family:var(--font-mono);font-size:12px;color:var(--green);}
.tag{font-family:var(--font-mono);font-size:8.5px;padding:2px 6px;border-radius:3px;letter-spacing:.5px;text-transform:uppercase;font-weight:700;}
.tag-starter{background:rgba(62,207,142,0.15);color:var(--green);border:1px solid var(--green-dim);}
.tag-core{background:rgba(79,216,232,0.12);color:var(--cyan);border:1px solid var(--cyan-dim);}
.tag-advanced{background:rgba(240,85,107,0.12);color:var(--red);border:1px solid var(--red-dim);}
.tag-singularity{background:linear-gradient(90deg, rgba(155,126,240,0.22), rgba(79,216,232,0.18));color:var(--violet);border:1px solid var(--violet-dim);}
.build-card p{margin:0 0 8px;font-size:11.5px;color:var(--text-dim);line-height:1.5;}
.build-card-stats{display:flex;gap:10px;flex-wrap:wrap;font-family:var(--font-mono);font-size:10.5px;color:var(--text-dim);margin-bottom:9px;}
.build-card-stats span{background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:3px;padding:2px 6px;}

/* staff */
.staff-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.staff-count{font-family:var(--font-mono);font-size:16px;color:var(--cyan);min-width:20px;text-align:center;}
.staff-row{display:flex;align-items:center;gap:10px;}
.stepper{display:flex;align-items:center;gap:8px;}
.stepper button{
  width:26px;height:26px;border-radius:6px;border:1px solid var(--line);background:var(--bg-panel);
  color:var(--text-primary);font-size:14px;line-height:1;
}
.stepper button:hover{border-color:var(--cyan);}

/* contracts */
.contract-card{
  background:var(--bg-panel-raised);border:1px solid var(--line);border-radius:var(--radius-md);
  padding:12px;margin-bottom:10px;border-left:3px solid var(--text-faint);
}
.contract-card.type-training{border-left-color:var(--violet);}
.contract-card.type-inference{border-left-color:var(--cyan);}
.contract-card.type-storage{border-left-color:var(--amber);}
.contract-card.enterprise{background:linear-gradient(135deg, rgba(245,166,35,0.06), var(--bg-panel-raised));}
.contract-card.singularity{background:linear-gradient(135deg, rgba(155,126,240,0.10), var(--bg-panel-raised));border-left-color:var(--violet);}
.tag-enterprise{background:rgba(245,166,35,0.18);color:var(--amber);border:1px solid var(--amber-dim);}
.contract-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:4px;}
.contract-head h4{margin:0;font-size:13px;}
.contract-type{font-size:9.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--text-faint);}
.contract-body{font-size:11.5px;color:var(--text-dim);margin-bottom:9px;line-height:1.6;}
.contract-body b{color:var(--text-primary);}
.contract-actions{display:flex;gap:8px;align-items:center;justify-content:space-between;}
.contract-expire{font-family:var(--font-mono);font-size:10px;color:var(--amber);}
.progress-track{width:100%;height:5px;background:var(--line-soft);border-radius:3px;overflow:hidden;margin-top:6px;}
.progress-fill{height:100%;background:var(--green);}

/* research tree */
.tech-card{position:relative;}
.tech-card.locked{opacity:.5;}
.tech-card.done{border-color:var(--green);}
.tech-card.done::after{content:"✓ DONE";position:absolute;top:10px;right:10px;font-size:9px;color:var(--green);font-family:var(--font-mono);}
.tech-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;}
.tech-head h4{margin:0;font-size:13px;display:flex;align-items:center;gap:6px;}
.tech-level{color:var(--violet);font-size:10px;}
.tech-cost{font-family:var(--font-mono);font-size:12px;color:var(--violet);}
.tech-card p{margin:0 0 9px;font-size:11.5px;color:var(--text-dim);line-height:1.5;}
.locked-building{opacity:.55;}

/* log */
.log-entry{
  font-size:11.5px;padding:7px 0;border-bottom:1px solid var(--line-soft);
  display:flex;gap:8px;color:var(--text-dim);line-height:1.4;
}
.log-entry .log-day{font-family:var(--font-mono);color:var(--text-faint);flex-shrink:0;}
.log-entry.good{color:var(--green);}
.log-entry.bad{color:var(--red);}
.log-entry.warn{color:var(--amber);}
.log-entry.achv{color:var(--violet);}
.log-entry.tip{color:var(--cyan);}

/* empty state */
.empty-state{color:var(--text-faint);font-size:12px;text-align:center;padding:30px 10px;}

/* ============================================================
   STATUS BAR
   ============================================================ */
.statusbar{
  display:flex;justify-content:space-between;align-items:center;
  padding:8px 18px;background:var(--bg-panel);border-top:1px solid var(--line);
  font-size:11.5px;color:var(--text-dim);
}
.statusbar-achv{font-family:var(--font-mono);color:var(--violet);font-size:11px;}

/* ============================================================
   MODAL
   ============================================================ */
.modal-overlay{
  position:fixed;inset:0;background:rgba(6,8,12,0.72);backdrop-filter:blur(2px);
  display:flex;align-items:center;justify-content:center;z-index:100;padding:20px;
}
.modal-box{
  background:var(--bg-panel);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:24px;max-width:420px;width:100%;box-shadow:0 30px 80px rgba(0,0,0,0.6);
  max-height:85vh;overflow-y:auto;
}
.modal-box h3{margin:0 0 6px;font-size:16px;}
.modal-box .modal-sub{color:var(--text-dim);font-size:12px;margin:0 0 16px;}
.modal-row{display:flex;justify-content:space-between;font-size:12.5px;padding:6px 0;border-bottom:1px solid var(--line-soft);}
.modal-row b{color:var(--text-primary);}
.modal-actions{display:flex;gap:10px;margin-top:18px;}
.modal-actions .btn{flex:1;}
.modal-box-lg{max-width:640px;}
.modal-cat-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;}
.modal-cat-head h3{margin:0;}
.modal-cat-footer{display:flex;justify-content:space-between;align-items:center;margin-top:14px;flex-wrap:wrap;gap:10px;}
.auto-accept-banner{
  font-size:11.5px;color:var(--text-dim);background:rgba(155,126,240,0.07);
  border:1px solid var(--violet-dim);border-radius:var(--radius-sm);padding:9px 11px;margin-bottom:14px;
}
.ipo-box{
  margin-top:14px;padding:12px;border:1px solid var(--amber-dim);border-radius:var(--radius-md);
  background:rgba(245,166,35,0.06);
}
.tier2-upgrade-box{
  margin-top:14px;padding:12px;border:1px solid var(--violet-dim);border-radius:var(--radius-md);
  background:rgba(155,126,240,0.07);
}
.tier2-upgrade-box.locked{background:rgba(255,255,255,0.02);border-color:var(--line);}

/* ============================================================
   TIP BANNER (dismissible quick-start card)
   ============================================================ */
.tip-banner{
  display:flex;justify-content:space-between;align-items:flex-start;gap:14px;
  background:linear-gradient(135deg, rgba(79,216,232,0.08), rgba(155,126,240,0.06));
  border:1px solid var(--cyan-dim);border-radius:var(--radius-md);
  padding:12px 14px;margin-bottom:14px;
}
.tip-banner-text strong{
  display:block;font-size:11px;text-transform:uppercase;letter-spacing:1px;
  color:var(--cyan);margin-bottom:6px;
}
.tip-banner-text ul{margin:0;padding-left:18px;}
.tip-banner-text li{font-size:12px;color:var(--text-dim);line-height:1.6;}
.tip-banner-text li b{color:var(--text-primary);}
.tip-banner-close{flex-shrink:0;}

/* ============================================================
   GUIDED TUTORIAL (coach-mark spotlight)
   ============================================================ */
.tutorial-overlay{position:fixed;inset:0;z-index:200;pointer-events:none;}
.tutorial-highlight{
  position:fixed;border:2px solid var(--cyan);border-radius:12px;
  box-shadow:0 0 0 4000px rgba(6,8,12,0.6), 0 0 0 4px rgba(79,216,232,0.18), 0 0 26px rgba(79,216,232,0.55);
  pointer-events:none;
  transition:top .25s ease, left .25s ease, width .25s ease, height .25s ease, opacity .2s ease;
}
.tutorial-card{
  position:fixed;width:320px;max-width:calc(100vw - 24px);
  background:var(--bg-panel);border:1px solid var(--cyan-dim);border-radius:var(--radius-lg);
  padding:18px 20px;box-shadow:0 20px 60px rgba(0,0,0,0.55);
  pointer-events:auto;
  transition:top .25s ease, left .25s ease;
}
.tutorial-card.centered{top:50%;left:50%;transform:translate(-50%,-50%);}
.tutorial-step-label{
  font-family:var(--font-mono);font-size:10px;letter-spacing:1px;text-transform:uppercase;
  color:var(--violet);margin-bottom:8px;
}
.tutorial-card h3{margin:0 0 8px;font-size:15px;}
.tutorial-card p{margin:0;font-size:12.5px;line-height:1.6;color:var(--text-dim);}
.tutorial-card p b{color:var(--text-primary);}
.tutorial-actions{display:flex;justify-content:space-between;align-items:center;margin-top:16px;}
.tutorial-nav{display:flex;gap:8px;}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 980px){
  .main{flex-direction:column;overflow:auto;}
  .deck{width:100%;border-left:none;border-top:1px solid var(--line);}
  .dashboard{overflow:visible;}
  .ticker-stats{gap:14px;}
  .category-grid{grid-template-columns:repeat(3,1fr);}
}
@media (max-width: 560px){
  .category-grid{grid-template-columns:repeat(2,1fr);}
  .slot-grid{grid-template-columns:repeat(3,1fr);}
  .ticker{gap:12px;}
  .ticker-time{margin-left:0;width:100%;justify-content:space-between;}
  .tip-banner{flex-direction:column;}
  .tutorial-card{width:calc(100vw - 24px);}
  .modal-box-lg{max-width:calc(100vw - 24px);}
}

/* ============================================================
   SINGULARITY MODE — unlocked once the first tier-3 facility
   goes online. A subtle but unmistakable visual reward.
   ============================================================ */
.singularity-theme{position:relative;}
.singularity-theme::before{
  content:'';position:fixed;inset:0;pointer-events:none;z-index:1;
  background:
    radial-gradient(circle at 15% 0%, rgba(155,126,240,0.07), transparent 45%),
    radial-gradient(circle at 85% 100%, rgba(79,216,232,0.06), transparent 45%);
  animation:singularity-pulse 7s ease-in-out infinite alternate;
}
@keyframes singularity-pulse{ from{opacity:.55;} to{opacity:1;} }
.singularity-theme .ticker{
  border-bottom:1px solid transparent;
  background-image:linear-gradient(var(--bg-panel), var(--bg-panel)), linear-gradient(90deg, var(--cyan), var(--violet), var(--amber), var(--cyan));
  background-origin:border-box;background-clip:padding-box, border-box;
  background-size:100% 100%, 300% 100%;
  animation:singularity-shimmer 10s linear infinite;
}
@keyframes singularity-shimmer{ 0%{background-position:0 0, 0% 0;} 100%{background-position:0 0, 300% 0;} }
.cat-card.singularity-card{
  border-color:var(--violet);
  box-shadow:0 0 0 1px rgba(155,126,240,0.25), 0 0 22px rgba(155,126,240,0.18);
}
.cat-card.singularity-card .cat-icon{ filter:drop-shadow(0 0 6px rgba(155,126,240,0.6)); }
.singularity-modal{
  border:1px solid var(--violet) !important;
  box-shadow:0 0 50px rgba(155,126,240,0.35), 0 30px 80px rgba(0,0,0,0.6) !important;
}
