:root{
  --bg:#050607;--panel:rgba(7,9,10,.94);--fg:#d8dcda;--muted:#68706d;
  --acid:#78936f;--acid2:#8da483;--line:rgba(120,147,111,.12);--white-line:rgba(255,255,255,.09);
  --header-h:108px;--footer-h:46px;
}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden}body{background:var(--bg);color:var(--fg);font-family:"IBM Plex Mono",monospace;letter-spacing:.01em}button,input,textarea,a{font:inherit}button{color:inherit}.app-shell{width:100%;height:100%;position:relative;background:#050607}
.topbar{position:fixed;z-index:40;left:0;right:0;top:0;height:var(--header-h);display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;padding:15px 34px;border-bottom:1px solid var(--white-line);background:rgba(5,7,8,.96);backdrop-filter:blur(12px)}
.brand-wrap{display:flex;align-items:center;gap:18px}.brand{font-size:31px;font-weight:600;letter-spacing:.08em;text-shadow:2px 0 rgba(0,255,255,.14),-2px 0 rgba(255,0,80,.12)}.live-pill{font-size:11px;color:var(--acid);letter-spacing:.08em}.live-pill i,.status-line i,.dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--acid);box-shadow:0 0 12px rgba(120,147,111,.28);vertical-align:1px}.top-manifesto{text-align:center;color:#747974;font-size:12px;line-height:1.85;letter-spacing:.08em}.top-manifesto span,.top-manifesto strong{display:block}.top-manifesto strong{color:#e6e9e3;font-weight:500}
.token-actions{justify-self:end;width:min(315px,100%)}.ca-box{width:100%;height:34px;color:#a8ada6;background:#090b0c;border:1px solid var(--white-line);padding:0 12px;text-align:left;font-size:9px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ca-box span{color:#e5e8e2}.ca-box b{float:right;color:var(--acid)}.token-row{display:flex;gap:8px;margin-top:8px}.buy-btn,.x-btn{text-decoration:none;height:37px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;letter-spacing:.06em}.buy-btn{flex:1;background:var(--acid);color:#070908;border:1px solid var(--acid);box-shadow:0 0 22px rgba(120,147,111,.06)}.x-btn{width:64px;color:var(--acid);border:1px solid rgba(120,147,111,.22)}.buy-btn:hover{background:var(--acid2)}.x-btn:hover{border-color:var(--acid)}
.viewport{position:absolute;inset:var(--header-h) 0 var(--footer-h);overflow:hidden;cursor:grab;background-color:#050607;background-image:linear-gradient(rgba(120,147,111,.026) 1px,transparent 1px),linear-gradient(90deg,rgba(120,147,111,.026) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.012) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.012) 1px,transparent 1px);background-size:64px 64px,64px 64px,16px 16px,16px 16px}.viewport.dragging{cursor:grabbing}.viewport.placing{cursor:crosshair}
.viewport::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(circle at 50% 48%,rgba(120,147,111,.018),transparent 24%),radial-gradient(circle at 8% 85%,rgba(120,147,111,.025),transparent 18%),radial-gradient(circle at 50% 50%,transparent 35%,rgba(0,0,0,.38) 100%)}.viewport::after{content:"";position:absolute;inset:0;z-index:9;pointer-events:none;opacity:.09;background:repeating-linear-gradient(to bottom,transparent 0,transparent 5px,rgba(255,255,255,.018) 6px);animation:scan 12s linear infinite}
.ambient-noise{position:absolute;inset:-40%;z-index:2;pointer-events:none;opacity:.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.88' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:noise .8s steps(2) infinite}.star-field{position:absolute;inset:0;z-index:3;pointer-events:none}.star{position:absolute;width:var(--s);height:var(--s);left:var(--x);top:var(--y);background:var(--c);opacity:var(--o);box-shadow:0 0 7px currentColor;animation:twinkle var(--d) ease-in-out var(--delay) infinite}
.world{position:absolute;left:0;top:0;width:1px;height:1px;transform-origin:0 0;will-change:transform;z-index:7}.axis{position:absolute;pointer-events:none;background:rgba(120,147,111,.22);box-shadow:0 0 12px rgba(120,147,111,.045)}.axis-x{left:-3200px;top:0;width:6400px;height:1px}.axis-y{left:0;top:-2400px;width:1px;height:4800px}.axis-label{position:absolute;color:rgba(185,244,0,.65);font-size:9px;white-space:nowrap}.x-neg{left:-3140px;top:-19px}.x-pos{left:3080px;top:-19px}.y-neg{left:12px;top:2320px}.y-pos{left:12px;top:-2360px}.origin-ring{position:absolute;left:0;top:0;border:1px dotted rgba(120,147,111,.10);border-radius:50%;transform:translate(-50%,-50%);pointer-events:none}.ring-1{width:160px;height:160px}.ring-2{width:245px;height:245px}.ring-3{width:330px;height:330px}.origin-node{position:absolute;left:0;top:0;transform:translate(-50%,-50%);width:42px;height:42px;border:2px solid var(--acid);display:grid;place-items:center;background:#080a0b;box-shadow:0 0 26px rgba(120,147,111,.12);color:var(--acid);font-size:19px;animation:nodePulse 3s ease-in-out infinite}.origin-node::before,.origin-node::after{content:"";position:absolute;background:var(--acid)}.origin-node::before{width:8px;height:2px;left:-5px;top:19px;box-shadow:44px 0 var(--acid)}.origin-node::after{width:2px;height:8px;left:19px;top:-5px;box-shadow:0 44px var(--acid)}
.origin-message{position:absolute;left:0;top:30px;transform:translateX(-50%);width:245px;padding:13px 18px;background:rgba(5,7,6,.94);border:1px solid rgba(255,255,255,.22);text-align:center;pointer-events:none;box-shadow:0 15px 45px rgba(0,0,0,.4)}.origin-message-text{font-size:12px;font-weight:600;letter-spacing:.06em}.origin-message-meta{margin-top:8px;color:#717770;font-size:8px;line-height:1.6;letter-spacing:.08em}
.mark{position:absolute;width:max-content;max-width:330px;transform:translate(-50%,-50%);user-select:none;pointer-events:auto;padding:9px 11px;border:1px solid rgba(120,147,111,.06);background:rgba(5,8,6,.78);box-shadow:0 0 20px rgba(120,147,111,.015);transition:.18s}.mark:hover{border-color:rgba(120,147,111,.22);box-shadow:0 0 30px rgba(120,147,111,.055)}.mark-message{font-size:12px;line-height:1.4;white-space:pre-wrap;overflow-wrap:anywhere}.mark-meta{margin-top:6px;color:rgba(185,244,0,.4);font-size:8px;letter-spacing:.05em}.mark.just-added{animation:born .8s ease}
.left-stack{position:absolute;z-index:20;left:34px;top:46px;width:298px;pointer-events:none}.big-write{pointer-events:auto;width:298px;height:112px;display:flex;align-items:center;gap:18px;padding:0 26px;text-align:left;background:rgba(6,9,6,.88);color:var(--acid);border:1px solid rgba(120,147,111,.22);box-shadow:0 0 0 6px rgba(120,147,111,.018),0 0 30px rgba(120,147,111,.045);cursor:pointer;position:relative}.big-write::before,.big-write::after{content:"";position:absolute;width:13px;height:13px;border-color:var(--acid);opacity:.7}.big-write::before{left:-7px;top:-7px;border-left:1px solid;border-top:1px solid}.big-write::after{right:-7px;bottom:-7px;border-right:1px solid;border-bottom:1px solid}.big-write:hover,.big-write.active{background:rgba(120,147,111,.055);box-shadow:0 0 38px rgba(120,147,111,.08)}.target-icon{width:42px;height:42px;border:1px solid rgba(255,255,255,.25);border-radius:50%;display:grid;place-items:center;font-size:24px}.big-write strong{display:block;font-size:17px;letter-spacing:.05em}.big-write small{display:block;margin-top:12px;color:#8a9188;font-size:8px;letter-spacing:.08em}.guide-panel{margin-top:50px;width:226px;padding:21px;border:1px solid rgba(255,255,255,.13);background:rgba(5,7,6,.72)}.guide-row{display:flex;gap:13px;align-items:flex-start;margin-bottom:22px}.guide-row:last-child{margin-bottom:0}.guide-row>b{width:28px;color:#dce1d8;font-size:19px;font-weight:400;text-align:center}.guide-row strong{display:block;color:#e7eae5;font-size:9px;letter-spacing:.06em}.guide-row small{display:block;color:#7f867e;font-size:8px;margin-top:5px}
.right-stack{position:absolute;z-index:20;right:34px;top:38px;bottom:20px;width:286px;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none}.status-panel,.minimap-panel{pointer-events:auto;border:1px solid rgba(255,255,255,.13);background:rgba(5,7,6,.79);padding:22px}.panel-title{padding-bottom:15px;border-bottom:1px solid rgba(120,147,111,.11);color:var(--acid);font-size:12px;letter-spacing:.06em}.panel-title span{font-size:20px;vertical-align:-2px}.status-label{margin-top:26px;color:#81877f;font-size:9px}.status-count{margin-top:7px;color:var(--acid);font-size:30px;font-weight:600;text-shadow:0 0 18px rgba(185,244,0,.2)}.status-line{margin-top:16px;color:#8b9188;font-size:9px}.status-line i{width:5px;height:5px;margin:0 5px}.empty-status{margin-top:23px;padding-top:18px;border-top:1px solid rgba(255,255,255,.08);font-size:10px;color:#b6bcb3;line-height:1.8}.empty-status span{color:var(--acid)}.minimap-panel{padding:16px}.minimap{height:122px;position:relative;overflow:hidden;border:1px solid rgba(255,255,255,.14);background-image:linear-gradient(rgba(120,147,111,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(120,147,111,.045) 1px,transparent 1px);background-size:15px 15px}.mini-cross-x,.mini-cross-y{position:absolute;background:rgba(120,147,111,.16)}.mini-cross-x{left:0;right:0;top:50%;height:1px}.mini-cross-y{top:0;bottom:0;left:50%;width:1px}.minimap i{position:absolute;left:50%;top:50%;width:8px;height:8px;transform:translate(-50%,-50%);background:#fff;box-shadow:0 0 6px rgba(120,147,111,.18)}.origin-btn{width:100%;height:34px;margin-top:12px;border:1px solid rgba(120,147,111,.18);background:#090b0c;color:var(--acid);font-size:9px;letter-spacing:.06em;cursor:pointer}.origin-btn:hover{border-color:var(--acid)}
.coords-panel{position:absolute;z-index:20;left:34px;bottom:18px;width:158px;padding:13px 15px;border:1px solid rgba(255,255,255,.12);background:rgba(5,7,6,.75);color:#777e76;font-size:8px;line-height:1.7;pointer-events:none}.coords-panel strong{display:block;margin-top:4px;color:#a9afa7;font-weight:400}.zoom-row{display:flex;justify-content:space-between;margin-top:6px;padding-top:7px;border-top:1px solid rgba(255,255,255,.07)}.zoom-row b{color:#abb0a9;font-weight:400}.placement-hint{position:absolute;z-index:26;left:50%;top:20px;transform:translateX(-50%) translateY(-8px);opacity:0;padding:9px 14px;background:var(--acid);color:#070908;font-size:9px;font-weight:600;letter-spacing:.07em;pointer-events:none;transition:.2s}.placement-hint span{margin-left:14px;opacity:.55}.viewport.placing .placement-hint{opacity:1;transform:translateX(-50%) translateY(0)}
.cursor-glow{position:absolute;width:330px;height:330px;margin:-165px 0 0 -165px;border-radius:50%;pointer-events:none;z-index:4;transform:translate3d(-9999px,-9999px,0);background:radial-gradient(circle,rgba(120,147,111,.025),transparent 68%);mix-blend-mode:normal}.interaction-pulse{position:absolute;width:10px;height:10px;margin:-5px;border:1px solid var(--acid);border-radius:50%;pointer-events:none;z-index:25;opacity:0}.interaction-pulse.fire{animation:ring .65s ease-out}
.footer{position:fixed;left:0;right:0;bottom:0;z-index:40;height:var(--footer-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 34px;border-top:1px solid var(--white-line);background:rgba(5,7,8,.96);font-size:9px;color:#7d837b;letter-spacing:.06em}.footer-left b{color:var(--acid);margin:0 12px}.footer-right{text-align:right}.footer-pulse{width:135px;height:1px;background:linear-gradient(90deg,transparent,var(--acid),transparent);position:relative}.footer-pulse i{position:absolute;left:50%;top:50%;width:8px;height:8px;border:1px solid var(--acid);transform:translate(-50%,-50%) rotate(45deg);background:#050607;animation:statusPulse 2.5s infinite}.footer .dot{width:4px;height:4px;margin:0 6px}
.modal[hidden]{display:none}.modal{position:fixed;inset:0;z-index:80}.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(4px)}.mark-panel{position:absolute;right:34px;top:130px;width:min(410px,calc(100vw - 40px));padding:20px;background:#080a0b;border:1px solid rgba(120,147,111,.20);box-shadow:0 25px 80px rgba(0,0,0,.7),0 0 45px rgba(120,147,111,.025)}.panel-head{display:flex;justify-content:space-between}.panel-kicker{color:var(--acid);font-size:12px;font-weight:600}.panel-coords{margin-top:6px;color:#7d847b;font-size:9px}.close-btn{border:0;background:none;color:#8d948b;font-size:24px;cursor:pointer}.field-label{display:block;margin:20px 0 8px;color:#868d84;font-size:9px}.field-label span{opacity:.5}textarea,input{width:100%;border:1px solid rgba(255,255,255,.14);background:#050607;color:#eef1eb;outline:none;border-radius:0}textarea{height:120px;padding:12px;resize:none}input{height:40px;padding:0 12px}textarea:focus,input:focus{border-color:rgba(185,244,0,.48)}.form-meta{display:flex;justify-content:space-between;margin-top:7px;color:#5d645d;font-size:8px}.submit-btn{width:100%;height:44px;margin-top:20px;border:0;background:var(--acid);color:#070908;font-size:10px;font-weight:600;cursor:pointer}.submit-btn:disabled{opacity:.4}.fineprint{margin-top:9px;color:#555c55;font-size:8px;line-height:1.5}
@keyframes scan{to{background-position-y:72px}}@keyframes noise{25%{transform:translate(-1%,1%)}50%{transform:translate(1%,-1%)}75%{transform:translate(1%,1%)}}@keyframes twinkle{0%,100%{opacity:calc(var(--o)*.35);transform:scale(.7)}50%{opacity:var(--o);transform:scale(1.2)}}@keyframes nodePulse{50%{box-shadow:0 0 38px rgba(120,147,111,.22)}}@keyframes statusPulse{50%{box-shadow:0 0 14px rgba(185,244,0,.7)}}@keyframes ring{0%{opacity:.8;transform:scale(.5)}100%{opacity:0;transform:scale(8)}}@keyframes born{0%{opacity:0;filter:blur(7px);transform:translate(-50%,-50%) scale(.8)}100%{opacity:1;filter:none}}
@media(max-width:980px){.topbar{grid-template-columns:1fr 1fr}.top-manifesto{display:none}.right-stack{right:18px;width:235px}.left-stack{left:18px;width:250px}.big-write{width:250px}.guide-panel{width:205px}.coords-panel{left:18px}.brand{font-size:24px}}
@media(max-width:720px){:root{--header-h:78px;--footer-h:44px}.topbar{padding:10px 14px;grid-template-columns:1fr auto}.brand{font-size:19px}.live-pill{display:none}.token-actions{width:175px}.ca-box{display:none}.token-row{margin:0}.buy-btn{height:34px}.left-stack{top:18px;left:14px;width:auto}.big-write{width:180px;height:62px;padding:0 14px;gap:9px}.target-icon{width:30px;height:30px;font-size:18px}.big-write strong{font-size:11px}.big-write small,.guide-panel{display:none}.right-stack{right:14px;top:18px;width:145px}.status-panel{padding:12px}.panel-title{font-size:9px}.status-count{font-size:22px}.status-line,.empty-status{font-size:7px}.minimap-panel{display:none}.coords-panel{left:14px;bottom:12px}.axis-x{width:700px;left:-350px}.axis-y{height:600px;top:-300px}.axis-label{display:none}.footer{padding:0 14px}.footer-left b,.footer-left{font-size:7px}.footer-pulse{display:none}.origin-message{width:205px}.origin-message-text{font-size:10px}}
@media(prefers-reduced-motion:reduce){.viewport::after,.ambient-noise,.star,.origin-node,.footer-pulse i{animation:none!important}}


/* v0.5.5 — BLACK HOLE OBSERVATORY */
.viewport{
  background-color:#040506;
  background-image:
    radial-gradient(circle at 50% 50%,rgba(64,74,82,.04),transparent 28%),
    linear-gradient(rgba(92,106,112,.024) 1px,transparent 1px),
    linear-gradient(90deg,rgba(92,106,112,.024) 1px,transparent 1px),
    linear-gradient(rgba(255,255,255,.008) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.008) 1px,transparent 1px);
  background-size:auto,72px 72px,72px 72px,18px 18px,18px 18px;
}
.viewport::before{
  background:
    radial-gradient(ellipse at 50% 50%,rgba(111,126,132,.045),transparent 13%),
    radial-gradient(circle at 50% 50%,transparent 26%,rgba(0,0,0,.52) 72%,rgba(0,0,0,.78) 100%);
}
.gravity-lens{
  position:absolute;
  left:0;top:0;
  transform:translate(-50%,-50%);
  border-radius:50%;
  pointer-events:none;
  opacity:.54;
}
.lens-a{
  width:520px;height:520px;
  border:1px solid rgba(136,151,158,.13);
  box-shadow:
    inset 0 0 48px rgba(116,132,140,.025),
    0 0 80px rgba(116,132,140,.018);
  animation:lensDrift 18s ease-in-out infinite;
}
.lens-b{
  width:680px;height:420px;
  border:1px solid rgba(108,122,128,.08);
  transform:translate(-50%,-50%) rotate(-7deg);
  animation:lensDriftB 24s ease-in-out infinite;
}
.accretion-disc{
  position:absolute;
  left:0;top:0;
  width:300px;height:82px;
  transform:translate(-50%,-50%) rotate(-8deg);
  border-radius:50%;
  border-top:1px solid rgba(154,163,166,.22);
  border-bottom:1px solid rgba(93,106,112,.08);
  box-shadow:
    0 -7px 28px rgba(145,155,158,.035),
    0 7px 24px rgba(71,82,88,.025);
  pointer-events:none;
  animation:discPrecession 14s ease-in-out infinite;
}
.origin-node{
  width:52px;height:52px;
  border-radius:50%;
  border:1px solid rgba(159,170,173,.36);
  background:
    radial-gradient(circle at 50% 50%,#000 0 46%,#030405 55%,rgba(91,105,111,.12) 70%,transparent 72%);
  box-shadow:
    0 0 0 8px rgba(83,96,102,.025),
    0 0 54px rgba(124,140,146,.08);
  color:#111;
}
.origin-node::before,.origin-node::after{background:rgba(136,151,158,.48)}
.origin-node::before{box-shadow:54px 0 rgba(136,151,158,.48)}
.origin-node::after{box-shadow:0 54px rgba(136,151,158,.48)}
.origin-ring{border-color:rgba(124,139,145,.10)}
.ring-1{width:185px;height:185px}
.ring-2{width:285px;height:285px}
.ring-3{width:395px;height:395px}
.science-label{
  position:absolute;
  color:rgba(137,149,153,.38);
  font-size:8px;
  letter-spacing:.12em;
  white-space:nowrap;
  pointer-events:none;
}
.label-horizon{left:74px;top:-34px}
.label-lens{left:-285px;top:176px}
.science-telemetry{
  margin-top:18px;
  padding-top:14px;
  border-top:1px solid rgba(255,255,255,.06);
}
.science-telemetry div{
  display:flex;
  justify-content:space-between;
  gap:12px;
  padding:4px 0;
  font-size:8px;
  letter-spacing:.05em;
}
.science-telemetry span{color:#59615f}
.science-telemetry b{color:#8b9591;font-weight:400}
.origin-btn{
  height:42px;
  border-color:rgba(130,144,149,.22);
  background:#080a0b;
  color:#a5aeaa;
  letter-spacing:.08em;
  transition:.18s ease;
}
.origin-btn:hover{
  border-color:rgba(159,171,175,.42);
  color:#d4d9d7;
  background:#0b0e0f;
}
.origin-btn:active{transform:translateY(1px)}
.big-write,.status-panel,.minimap-panel,.guide-panel,.coords-panel{
  backdrop-filter:blur(10px);
}
.panel-title,.status-count,.empty-status span,.big-write,.big-write strong,.placement-hint{
  color:#9ca8a3;
}
.status-count{text-shadow:none}
.big-write{
  border-color:rgba(132,146,151,.24);
  box-shadow:0 0 0 6px rgba(94,106,111,.012);
}
.big-write:hover,.big-write.active{
  background:rgba(95,108,113,.055);
  box-shadow:0 0 32px rgba(100,113,119,.035);
}
.target-icon{border-color:rgba(144,155,158,.22)}
.placement-hint{
  background:#111617;
  border:1px solid rgba(144,155,158,.22);
  color:#b2bbb7;
}
.axis{background:rgba(124,139,145,.22);box-shadow:none}
.axis-label{color:rgba(132,145,149,.42)}
.star{box-shadow:0 0 4px currentColor}
.cursor-glow{
  background:radial-gradient(circle,rgba(116,130,136,.022),transparent 70%);
}
.interaction-pulse{border-color:rgba(150,163,166,.48)}
.footer-pulse{
  background:linear-gradient(90deg,transparent,rgba(121,136,141,.42),transparent)
}
.footer-pulse i{border-color:rgba(130,144,149,.45);background:#050607}
@keyframes lensDrift{
  0%,100%{transform:translate(-50%,-50%) scale(1);opacity:.42}
  50%{transform:translate(-50%,-50%) scale(1.025);opacity:.60}
}
@keyframes lensDriftB{
  0%,100%{transform:translate(-50%,-50%) rotate(-7deg) scale(1)}
  50%{transform:translate(-50%,-50%) rotate(-4deg) scale(1.02)}
}
@keyframes discPrecession{
  0%,100%{transform:translate(-50%,-50%) rotate(-8deg) scaleX(1)}
  50%{transform:translate(-50%,-50%) rotate(-5deg) scaleX(1.035)}
}

/* v0.5.7 — compact peripheral UI; black-hole scale preserved */
.left-stack{left:26px;top:34px;width:252px}
.big-write{
  width:252px;
  height:86px;
  padding:0 19px;
  gap:13px;
}
.target-icon{width:35px;height:35px;font-size:20px}
.big-write strong{font-size:14px}
.big-write small{margin-top:8px;font-size:7px}

.guide-panel{
  margin-top:28px;
  width:198px;
  padding:15px;
}
.guide-row{gap:10px;margin-bottom:15px}
.guide-row>b{width:22px;font-size:15px}
.guide-row strong{font-size:8px}
.guide-row small{font-size:7px;margin-top:3px}

.right-stack{
  right:26px;
  top:30px;
  bottom:16px;
  width:238px;
}
.status-panel,.minimap-panel{padding:16px}
.panel-title{padding-bottom:11px;font-size:10px}
.panel-title span{font-size:16px}
.status-label{margin-top:17px;font-size:8px}
.status-count{margin-top:5px;font-size:25px}
.status-line{margin-top:11px;font-size:8px}
.science-telemetry{margin-top:12px;padding-top:10px}
.science-telemetry div{padding:3px 0;font-size:7px}
.empty-status{
  margin-top:14px;
  padding-top:12px;
  font-size:8px;
  line-height:1.6;
}
.minimap-panel{padding:12px}
.minimap{height:92px}
.origin-btn{height:34px;margin-top:9px;font-size:8px}

.coords-panel{
  left:26px;
  bottom:14px;
  width:140px;
  padding:10px 12px;
  font-size:7px;
}
.zoom-row{margin-top:4px;padding-top:5px}

/* thinner, quieter panel outlines */
.big-write,.guide-panel,.status-panel,.minimap-panel,.coords-panel{
  border-color:rgba(255,255,255,.075);
}
.big-write{border-color:rgba(132,146,151,.17)}
.origin-btn{border-color:rgba(130,144,149,.15)}

/* v0.5.8 — LIVING UNIVERSE */
.deep-space{
  position:absolute;inset:0;overflow:hidden;pointer-events:none;
  background:
    radial-gradient(ellipse at 72% 28%,rgba(38,55,72,.12),transparent 31%),
    radial-gradient(ellipse at 24% 72%,rgba(48,37,60,.09),transparent 34%),
    radial-gradient(ellipse at 48% 46%,rgba(42,63,61,.07),transparent 28%),
    #030405;
}
.nebula{
  position:absolute;
  width:72vw;height:72vw;
  min-width:850px;min-height:850px;
  border-radius:50%;
  filter:blur(85px);
  opacity:.16;
  will-change:transform;
  mix-blend-mode:screen;
}
.nebula-a{
  left:-25vw;top:-35vw;
  background:radial-gradient(circle,rgba(52,83,108,.62) 0,rgba(34,52,76,.24) 28%,transparent 66%);
  animation:nebulaDriftA 42s ease-in-out infinite alternate;
}
.nebula-b{
  right:-32vw;bottom:-42vw;
  background:radial-gradient(circle,rgba(84,48,91,.48) 0,rgba(49,35,68,.19) 30%,transparent 68%);
  animation:nebulaDriftB 55s ease-in-out infinite alternate;
}
.nebula-c{
  left:28vw;top:12vh;width:48vw;height:48vw;
  background:radial-gradient(circle,rgba(46,79,72,.38) 0,rgba(29,51,50,.12) 35%,transparent 70%);
  opacity:.10;
  animation:nebulaDriftC 64s linear infinite;
}
.galaxy-dust{
  position:absolute;inset:-20%;
  opacity:.12;
  background-image:
    radial-gradient(circle at 15% 28%,rgba(196,212,220,.42) 0 1px,transparent 1.3px),
    radial-gradient(circle at 63% 72%,rgba(153,174,184,.32) 0 1px,transparent 1.4px),
    radial-gradient(circle at 82% 16%,rgba(180,170,198,.25) 0 1px,transparent 1.2px),
    radial-gradient(circle at 41% 58%,rgba(145,179,169,.24) 0 1px,transparent 1.3px);
  background-size:137px 131px,173px 181px,211px 197px,251px 239px;
  transform:rotate(-7deg);
  animation:dustTraverse 90s linear infinite;
}
.star-field{z-index:1}
.world{z-index:3}
.ambient-field{z-index:2}
.viewport::after{z-index:8}
.left-stack,.right-stack,.coords-panel,.placement-hint{z-index:20}

/* A tiny amount of restrained spectral colour around the central object. */
.accretion-disc{
  border-top-color:rgba(167,186,201,.30);
  border-bottom-color:rgba(111,91,132,.15);
  box-shadow:
    0 -7px 30px rgba(94,132,156,.065),
    0 7px 28px rgba(105,77,128,.045);
}
.origin-node{
  box-shadow:
    0 0 0 8px rgba(83,96,102,.025),
    0 0 45px rgba(91,127,147,.09),
    0 0 85px rgba(91,70,112,.035);
}
.gravity-lens{border-color:rgba(129,151,165,.14)}
.lens-b{border-color:rgba(119,104,139,.09)}
.origin-ring{border-color:rgba(112,137,149,.105)}
.footer-pulse{
  background:linear-gradient(90deg,transparent,rgba(90,119,133,.38),rgba(102,82,119,.26),transparent);
}

/* Subtle shooting particles: rare enough to feel atmospheric, not arcade-like. */
.cosmic-streak{
  position:absolute;width:54px;height:1px;pointer-events:none;z-index:2;
  opacity:0;
  background:linear-gradient(90deg,transparent,rgba(191,207,214,.48),transparent);
  transform:rotate(-22deg);
  animation:cosmicStreak var(--sd) linear var(--delay) infinite;
}
@keyframes nebulaDriftA{
  to{transform:translate3d(9vw,6vh,0) scale(1.08) rotate(5deg)}
}
@keyframes nebulaDriftB{
  to{transform:translate3d(-8vw,-5vh,0) scale(1.12) rotate(-7deg)}
}
@keyframes nebulaDriftC{
  50%{transform:translate3d(5vw,-4vh,0) scale(1.08)}
  100%{transform:translate3d(-3vw,3vh,0) scale(.96)}
}
@keyframes dustTraverse{
  to{transform:rotate(-7deg) translate3d(6%,3%,0)}
}
@keyframes cosmicStreak{
  0%,88%{opacity:0;transform:translate3d(0,0,0) rotate(-22deg)}
  89%{opacity:.0}
  90%{opacity:.45}
  94%{opacity:0;transform:translate3d(180px,-70px,0) rotate(-22deg)}
  100%{opacity:0}
}
@media(prefers-reduced-motion:reduce){
  .nebula,.galaxy-dust,.cosmic-streak{animation:none!important}
}

/* v0.5.9 — THE MAP IS THE UNIVERSE */
.universe-layer{
  position:absolute;
  inset:-35%;
  pointer-events:none;
  will-change:transform;
  transform-origin:center;
}
.far-universe{
  opacity:.38;
  background-image:
    radial-gradient(circle,rgba(219,228,231,.72) 0 1px,transparent 1.3px),
    radial-gradient(circle,rgba(138,161,174,.50) 0 1px,transparent 1.2px),
    radial-gradient(circle,rgba(165,151,184,.38) 0 1px,transparent 1.15px);
  background-size:113px 109px,181px 173px,263px 251px;
  background-position:11px 17px,67px 83px,131px 47px;
  animation:farTwinkle 12s ease-in-out infinite alternate;
}
.mid-universe{
  opacity:.26;
  background-image:
    radial-gradient(circle,rgba(211,220,223,.8) 0 1.15px,transparent 1.6px),
    radial-gradient(circle,rgba(108,145,163,.62) 0 1.1px,transparent 1.55px),
    radial-gradient(circle,rgba(147,122,166,.48) 0 1px,transparent 1.5px);
  background-size:307px 293px,419px 397px,557px 521px;
  background-position:51px 19px,183px 107px,311px 203px;
}
.near-universe{
  opacity:.20;
  background-image:
    radial-gradient(circle,rgba(231,236,237,.92) 0 1.4px,transparent 2px),
    radial-gradient(circle,rgba(116,157,177,.64) 0 1.25px,transparent 1.9px);
  background-size:641px 617px,887px 821px;
  background-position:221px 119px,473px 317px;
}
.milky-band{
  position:absolute;
  left:-25%;top:29%;
  width:150%;height:25%;
  pointer-events:none;
  opacity:.105;
  transform:rotate(-13deg);
  filter:blur(22px);
  background:
    radial-gradient(ellipse at center,
      rgba(121,142,154,.28) 0%,
      rgba(93,111,126,.14) 22%,
      rgba(85,67,105,.08) 43%,
      transparent 72%);
  animation:milkyBreath 20s ease-in-out infinite alternate;
}
.cosmic-object{
  position:absolute;
  pointer-events:none;
  z-index:2;
  border-radius:50%;
  opacity:var(--co);
  width:var(--cs);height:var(--cs);
  left:var(--cx);top:var(--cy);
  background:radial-gradient(circle at 40% 38%,rgba(219,228,231,.9),rgba(108,137,153,.38) 14%,rgba(59,79,91,.08) 42%,transparent 72%);
  box-shadow:0 0 16px rgba(112,143,158,.12);
  animation:objectPulse var(--cd) ease-in-out var(--delay) infinite alternate;
}
.cosmic-object.warm{
  background:radial-gradient(circle at 40% 38%,rgba(227,215,207,.88),rgba(145,111,101,.31) 14%,rgba(77,53,57,.06) 43%,transparent 72%);
  box-shadow:0 0 15px rgba(145,105,111,.09);
}
.cosmic-object.cool{
  background:radial-gradient(circle at 40% 38%,rgba(205,221,231,.9),rgba(92,132,158,.34) 14%,rgba(48,68,89,.06) 43%,transparent 72%);
}
.orbit-trace{
  position:absolute;z-index:2;pointer-events:none;
  border:1px solid rgba(112,134,145,.055);
  border-radius:50%;
  transform:translate(-50%,-50%) rotate(var(--rot));
  width:var(--ow);height:var(--oh);
  left:var(--ox);top:var(--oy);
}
.orbit-trace::after{
  content:"";
  position:absolute;left:13%;top:8%;
  width:2px;height:2px;border-radius:50%;
  background:rgba(184,200,207,.46);
  box-shadow:0 0 7px rgba(142,172,186,.28);
  animation:orbitBlink 6s ease-in-out infinite;
}
.space-readout{
  position:absolute;z-index:2;pointer-events:none;
  color:rgba(130,147,154,.18);
  font-size:7px;letter-spacing:.12em;
  white-space:nowrap;
}
@keyframes farTwinkle{to{opacity:.52;filter:brightness(1.08)}}
@keyframes milkyBreath{to{opacity:.145;transform:rotate(-12deg) scaleY(1.08)}}
@keyframes objectPulse{to{opacity:calc(var(--co) * .62);transform:scale(.84)}}
@keyframes orbitBlink{50%{opacity:.18}}

/* v0.6.0 — LIVING COSMOS */
.cosmos-canvas{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  pointer-events:none;
  z-index:1;
  opacity:.92;
}
.deep-space{z-index:0}
.star-field{z-index:2}
.ambient-field{z-index:2}
.world{z-index:4}

.orbit-trace{
  transform-origin:center;
  animation:orbitFloat 18s linear infinite;
}
.orbit-trace:nth-of-type(2n){animation-duration:26s;animation-direction:reverse}
.orbit-trace:nth-of-type(3n){animation-duration:34s}

.gravity-lens{
  animation:gravityBreathe 7s ease-in-out infinite alternate;
}
.lens-b{
  animation:gravityRotate 22s linear infinite;
}
.accretion-disc{
  animation:discLive 8s ease-in-out infinite alternate;
}
.origin-ring{
  animation:ringPulse 10s ease-in-out infinite alternate;
}
.ring-2{animation-delay:-3s}
.ring-3{animation-delay:-6s}

.milky-band{
  animation:milkyFlow 28s ease-in-out infinite alternate;
}
.nebula-a{animation-duration:18s}
.nebula-b{animation-duration:24s}
.nebula-c{animation-duration:31s}

.star{
  animation:
    twinkle var(--d) ease-in-out var(--delay) infinite,
    starDrift var(--drift) linear var(--delay2) infinite alternate;
}
.cosmic-object{
  animation:
    objectPulse var(--cd) ease-in-out var(--delay) infinite alternate,
    objectDrift var(--move) ease-in-out var(--delay2) infinite alternate;
}

@keyframes orbitFloat{
  from{transform:translate(-50%,-50%) rotate(var(--rot))}
  to{transform:translate(-50%,-50%) rotate(calc(var(--rot) + 360deg))}
}
@keyframes gravityBreathe{
  from{filter:brightness(.82);opacity:.34}
  to{filter:brightness(1.16);opacity:.62}
}
@keyframes gravityRotate{
  from{transform:translate(-50%,-50%) rotate(-7deg)}
  to{transform:translate(-50%,-50%) rotate(353deg)}
}
@keyframes discLive{
  from{transform:translate(-50%,-50%) rotate(-8deg) scaleX(.96);opacity:.46}
  to{transform:translate(-50%,-50%) rotate(-4deg) scaleX(1.06);opacity:.78}
}
@keyframes ringPulse{
  from{opacity:.35;filter:brightness(.8)}
  to{opacity:.72;filter:brightness(1.15)}
}
@keyframes milkyFlow{
  from{transform:rotate(-13deg) translate3d(-2%,0,0);opacity:.07}
  to{transform:rotate(-11deg) translate3d(3%,2%,0) scaleY(1.08);opacity:.15}
}
@keyframes starDrift{
  from{translate:-6px -3px}
  to{translate:10px 6px}
}
@keyframes objectDrift{
  from{translate:-10px -7px}
  to{translate:14px 10px}
}


/* FINAL — anti-overlap placement feedback */
.viewport.placing:not(.placement-blocked){cursor:crosshair}
.viewport.placement-blocked{cursor:not-allowed}
.viewport.placement-blocked .placement-hint{
  background:#241517;
  color:#d8b7b7;
  border-color:rgba(188,105,105,.34);
}
.viewport.placement-blocked .cursor-glow{
  background:radial-gradient(circle,rgba(157,71,71,.055),transparent 70%);
}
.viewport.placement-reject::before{
  animation:placementReject .26s ease-out;
}
@keyframes placementReject{
  0%{box-shadow:inset 0 0 0 0 rgba(173,74,74,0)}
  45%{box-shadow:inset 0 0 70px rgba(173,74,74,.055)}
  100%{box-shadow:inset 0 0 0 0 rgba(173,74,74,0)}
}

/* FINAL — legacy marks are visually spread away from Origin and from each other */
.mark{will-change:left,top}
