:root{
  --bg:#020817;--panel:#071426;--panel2:#0b1a31;--panel3:#101f38;--line:rgba(126,157,204,.22);
  --text:#eaf1fb;--muted:#7488a6;--gold:#ffc328;--green:#59e3a9;--red:#ff6476;--blue:#62aff5;
  font-family:"Courier New",Courier,monospace;color:var(--text);background:var(--bg)
}
*{box-sizing:border-box}html,body{width:100%;min-width:320px;min-height:100%;margin:0;background:var(--bg)}body{overflow:hidden}
button,input{font:inherit}.gateway-page{width:100vw;height:100vh;padding:18px;display:grid;place-items:center;background:radial-gradient(circle at 50% 12%,rgba(21,70,120,.25),transparent 40rem),#020817}
.brand-stage{position:relative;width:min(1180px,100%);height:min(760px,calc(100vh - 36px));min-height:560px;overflow:hidden;border:1px solid rgba(115,149,198,.20);border-radius:22px;background:linear-gradient(180deg,rgba(8,27,49,.82),rgba(2,12,27,.96));box-shadow:0 28px 80px rgba(0,0,0,.38);isolation:isolate}
.stage-grid{position:absolute;inset:0;background:linear-gradient(rgba(51,87,135,.10) 1px,transparent 1px),linear-gradient(90deg,rgba(51,87,135,.10) 1px,transparent 1px);background-size:32px 32px;mask-image:linear-gradient(to bottom,transparent 0,#000 18%,#000 78%,transparent 100%);opacity:.55;animation:gridDrift 18s linear infinite}
.stage-glow{position:absolute;width:760px;height:500px;border-radius:50%;left:50%;top:-290px;transform:translateX(-50%);background:radial-gradient(circle,rgba(18,89,159,.28),rgba(6,46,95,.12) 45%,transparent 72%);filter:blur(12px);animation:glowBreathe 5s ease-in-out infinite}
.orbit-wrap{position:absolute;left:50%;top:39%;width:270px;height:270px;transform:translate(-50%,-50%);z-index:1}.orbit,.orbit-ring{position:absolute;inset:0;border-radius:50%}
.orbit{animation:orbitSpin 16s linear infinite;will-change:transform}.orbit i{position:absolute;left:50%;top:50%;width:5px;height:5px;margin:-2.5px;border-radius:50%;background:var(--gold);box-shadow:0 0 14px rgba(255,195,40,.65);transform:rotate(var(--angle)) translateY(-126px);animation:dotPulse 2.6s ease-in-out infinite;animation-delay:var(--delay);will-change:transform,opacity}
.orbit-ring{border:1px solid rgba(255,195,40,.08)}.orbit-ring-one{inset:16px;animation:ringPulse 4.6s ease-in-out infinite}.orbit-ring-two{inset:42px;border-color:rgba(98,175,245,.07);animation:ringPulse 4.6s 1.4s ease-in-out infinite reverse}
.brand-lockup{position:absolute;z-index:3;left:50%;top:39%;transform:translate(-50%,-50%);width:min(680px,90%);text-align:center;padding-top:95px}.brand-lockup h1{margin:0;color:#f9fbff;font-size:clamp(34px,5vw,58px);line-height:1;letter-spacing:.045em;text-shadow:0 5px 30px rgba(0,0,0,.42);animation:titleIn 1.2s ease both}.brand-lockup h1 span{font-size:.55em;color:#cbd6e6}.tagline{margin:12px 0 0;color:var(--gold);font:800 clamp(17px,2.2vw,24px)/1.2 Arial,sans-serif}.credit,.location{font-family:Arial,sans-serif;color:#8291a7}.credit{margin:20px 0 0;font-size:14px}.location{margin:7px 0 0;font-size:12px}
.identity-card{position:absolute;left:6%;right:6%;bottom:94px;z-index:5;min-height:58px;padding:10px 18px;border:1px solid rgba(109,139,183,.30);border-left:5px solid var(--gold);border-radius:11px;background:rgba(9,24,45,.88);display:flex;align-items:center;justify-content:space-between;gap:20px;box-shadow:6px 8px 0 rgba(0,0,0,.26);backdrop-filter:blur(8px)}.identity-card span{min-width:0;color:#e6edf8;font:600 11px/1.4 Arial,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.identity-card b{flex:0 0 auto;color:var(--gold);font-size:10px}
.gateway-bar{position:absolute;left:50%;bottom:30px;z-index:7;transform:translateX(-50%);width:min(690px,86%);height:45px;border:1px solid #354c6f;border-radius:10px;background:#081426;display:flex;align-items:center;padding:0 14px;box-shadow:4px 6px 0 rgba(0,0,0,.30),0 0 0 1px rgba(98,175,245,.04);transition:border-color .2s,box-shadow .2s}.gateway-bar:focus-within,.gateway-bar:hover{border-color:#5e83b5;box-shadow:4px 6px 0 rgba(0,0,0,.30),0 0 0 2px rgba(98,175,245,.11)}.gateway-prompt{color:var(--gold);font-weight:800;margin-right:10px}.gateway-bar input{flex:1;min-width:0;height:100%;padding:0;border:0;outline:0;background:transparent;color:#fff;caret-color:transparent;font-size:13px}.gateway-cursor,.terminal-caret{display:block;width:7px;height:16px;background:#edf4ff;animation:blink 1s steps(1) infinite}.bar-message{position:absolute;z-index:6;bottom:10px;left:50%;transform:translateX(-50%);width:min(690px,86%);text-align:left;color:var(--red);font-size:10px;opacity:0;transition:opacity .2s}.bar-message.show{opacity:1}
/* MODAL */
.terminal-backdrop{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;padding:24px;background:rgba(1,6,15,.66);backdrop-filter:blur(7px) saturate(.8);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .25s ease,visibility .25s}.terminal-backdrop.open{opacity:1;visibility:visible;pointer-events:auto}.terminal-modal{width:min(960px,94vw);height:min(650px,86vh);min-height:480px;border:1px solid #344a68;border-radius:14px;overflow:hidden;background:#07111f;box-shadow:0 34px 100px rgba(0,0,0,.60),0 0 0 1px rgba(120,157,211,.05);display:grid;grid-template-rows:58px 1fr 34px;transform:translateY(18px) scale(.985);opacity:.94;transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .28s}.terminal-backdrop.open .terminal-modal{transform:translateY(0) scale(1);opacity:1}.terminal-titlebar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:0 14px 0 18px;background:linear-gradient(180deg,#172943,#101e34);border-bottom:1px solid rgba(133,163,207,.12)}.title-left,.title-actions{display:flex;align-items:center;gap:12px}.terminal-emblem{display:grid;place-items:center;width:29px;height:29px;border-radius:8px;background:rgba(98,175,245,.10);color:var(--blue);font-size:17px}.title-left div{display:grid;gap:2px}.title-left b{font:700 13px Arial,sans-serif;color:#eef4ff}.title-left small{font:600 9px Arial,sans-serif;color:#7487a3;letter-spacing:.08em;text-transform:uppercase}.connection-dot{display:flex;align-items:center;gap:6px;color:#7c91ae;font-size:9px;text-transform:uppercase;letter-spacing:.08em}.connection-dot i{width:7px;height:7px;border-radius:50%;background:var(--green);box-shadow:0 0 8px rgba(89,227,169,.45)}.terminal-close{width:34px;height:34px;border:0;border-radius:8px;background:transparent;color:#9eb0c8;font-size:23px;cursor:pointer}.terminal-close:hover{background:rgba(255,100,118,.13);color:#ff8794}
.terminal-body{min-height:0;overflow:auto;padding:28px 31px 24px;color:#bdcbe0;background:radial-gradient(circle at 60% 0,rgba(20,55,95,.12),transparent 50%),#06101d;scrollbar-width:thin;scrollbar-color:#263a55 transparent;font-size:13px;line-height:1.65}.terminal-output{display:grid;gap:4px}.terminal-line{white-space:pre-wrap;word-break:break-word}.terminal-line.brand{color:#fff;font-weight:800;font-size:15px}.terminal-line.muted{color:#6f829e}.terminal-line.info{color:#bdcbe0}.terminal-line.input{color:#8bd2ff}.terminal-line.success{color:var(--green)}.terminal-line.error{color:var(--red)}.terminal-line.ok{display:grid;grid-template-columns:56px 1fr;gap:8px}.terminal-line.ok strong{color:var(--green)}.terminal-spacer{height:10px}.terminal-command-form{display:flex;align-items:center;min-width:0;margin-top:12px;color:#f2c24f}.terminal-command-form label{flex:0 0 auto;color:#f2c24f;font-weight:800;margin-right:10px;white-space:nowrap}.terminal-command-form input{flex:1;min-width:0;padding:0;border:0;outline:0;background:transparent;color:#f4f7fb;caret-color:transparent}.terminal-caret{width:7px;height:16px;margin-left:2px}.terminal-footer{display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#0c192b;border-top:1px solid rgba(130,158,199,.09);color:#667a98;font-size:9px;letter-spacing:.06em;text-transform:uppercase}
@keyframes orbitSpin{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes dotPulse{0%,100%{opacity:.25;filter:brightness(.7)}50%{opacity:1;filter:brightness(1.4)}}@keyframes ringPulse{0%,100%{opacity:.18;transform:scale(.98)}50%{opacity:.75;transform:scale(1.03)}}@keyframes gridDrift{to{background-position-y:32px}}@keyframes glowBreathe{0%,100%{opacity:.6;transform:translateX(-50%) scale(.96)}50%{opacity:1;transform:translateX(-50%) scale(1.06)}}@keyframes titleIn{from{opacity:0;filter:blur(6px);letter-spacing:.16em}to{opacity:1;filter:blur(0);letter-spacing:.045em}}@keyframes blink{0%,48%{opacity:1}49%,100%{opacity:0}}
@media(max-width:720px){.gateway-page{padding:8px}.brand-stage{height:calc(100vh - 16px);min-height:520px;border-radius:14px}.orbit-wrap{top:35%;width:220px;height:220px}.orbit i{transform:rotate(var(--angle)) translateY(-103px)}.brand-lockup{top:35%;padding-top:74px}.identity-card{left:4%;right:4%;bottom:88px;padding:9px 12px}.identity-card b{display:none}.gateway-bar,.bar-message{width:92%}.terminal-backdrop{padding:10px}.terminal-modal{width:100%;height:92vh;min-height:460px}.terminal-body{padding:20px 16px;font-size:11px}.terminal-command-form{align-items:flex-start;flex-wrap:wrap}.terminal-command-form label{margin-bottom:4px}.terminal-command-form input{flex-basis:55%}}
@media(prefers-reduced-motion:reduce){.orbit{animation:orbitSpin 16s linear infinite!important}.orbit i{animation:dotPulse 2.6s ease-in-out infinite!important}.stage-grid{animation:none!important}.stage-glow{animation:none!important}}

/* v1.5.1 — terminal typewriter + role UI */
.terminal-command-form.is-locked{opacity:.38;pointer-events:none}
.terminal-command-form.is-locked .terminal-caret{display:none}
.terminal-line.typing::after{content:"";display:inline-block;width:7px;height:14px;margin-left:3px;vertical-align:-2px;background:#dfe9f7;animation:blink .65s steps(1) infinite}
.terminal-line.verify{color:#f2c24f}
.terminal-line.role-admin{color:#ffc95d;font-weight:800}
.terminal-line.role-operator{color:#8bd2ff;font-weight:800}
.gateway-role-badge{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border:1px solid #d9e3ee;border-radius:999px;background:#fff;color:#60738a;font-size:9px;font-weight:900;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}
.gateway-role-badge.admin{border-color:#efdca2;background:#fffaf0;color:#936b12}
.gateway-role-badge.operator{border-color:#bed8f2;background:#f3f9ff;color:#2f6d9d}
body.villara-role-operator .admin-only{display:none!important}
