:root{
  --bg:#071019;--bg2:#0c151e;--panel:#101a24;--panel2:#0b151f;--border:#22303d;
  --fg:#e9f0f6;--muted:#93a2b2;--purple:#a970ff;--purple2:#6f3cff;--green:#35d04f;
  --yellow:#e2ad3b;--red:#ff4d43;--blue:#3f7cff;--graph:#0b1721;--grid:#33414d;
}
*{box-sizing:border-box}html,body{height:100%;margin:0;background:var(--bg);color:var(--fg);font-family:"Segoe UI",Arial,sans-serif}button,input,select{font:inherit}.hidden{display:none!important}
.splash{position:fixed;inset:0;z-index:999;background:radial-gradient(circle at 50% 40%,#182234 0,#08101a 48%,#050a10 100%);display:flex;flex-direction:column;align-items:center;justify-content:center}.splash img{width:min(480px,70vw);filter:drop-shadow(0 12px 30px #000)}.splash-sub{letter-spacing:.32em;color:#9a8bb5;margin-top:12px;font-size:12px}.loader{width:270px;height:3px;background:#182331;margin-top:28px;overflow:hidden;border-radius:4px}.loader span{display:block;width:45%;height:100%;background:linear-gradient(90deg,var(--purple2),var(--purple));animation:load 1.2s ease-in-out infinite}@keyframes load{0%{transform:translateX(-110%)}100%{transform:translateX(330%)}}
.app{min-height:100%;display:flex;flex-direction:column}.topbar{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:#08121a;border-bottom:1px solid var(--border);gap:15px}.brand{display:flex;align-items:center;gap:10px}.brand-mark{font-weight:900;font-style:italic;font-size:30px;background:linear-gradient(135deg,#c085ff,#6c3cff);-webkit-background-clip:text;color:transparent}.brand strong{display:block;letter-spacing:.08em}.brand small{display:block;color:var(--muted);font-size:11px;margin-top:2px}.top-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.button,.top-actions button,.editor-actions button,.map-tools button,.power-head button,.ctrl button,.selected-info button{background:#101b26;color:var(--fg);border:1px solid var(--border);padding:7px 11px;border-radius:5px;cursor:pointer}.button:hover,.top-actions button:hover,.editor-actions button:hover,.map-tools button:hover,.power-head button:hover,.ctrl button:hover,.selected-info button:hover{border-color:#604589;background:#172534}.button.primary{border-color:var(--purple);color:white;background:#2b1d46}.button[disabled],button[disabled]{opacity:.42;cursor:not-allowed}
.ecu-strip{display:grid;grid-template-columns:1fr 1.7fr 1.35fr;gap:8px;padding:9px 10px 7px}.card{background:linear-gradient(180deg,#0d1721,#0a131c);border:1px solid var(--border);border-radius:6px}.file-card,.id-card,.profile-card{padding:10px 13px;min-height:76px;display:flex;flex-direction:column;gap:5px}.eyebrow{font-size:10px;color:var(--muted);font-weight:800;letter-spacing:.07em}.file-card strong{font-size:14px}.file-card span:last-child,.profile-card span:last-child{color:var(--muted);font-size:12px}.profile-card .good{color:var(--green)}.profile-card .warn{color:var(--yellow)}.kv{display:grid;grid-template-columns:auto 1fr auto 1fr auto 1fr;gap:4px 8px;font-family:Consolas,monospace;font-size:12px}.kv span{color:var(--muted)}
.tabs{display:flex;gap:0;padding:0 10px;border-top:1px solid #0e1a24;border-bottom:1px solid var(--border);background:#08121a}.tabs button{background:transparent;color:var(--muted);border:0;border-right:1px solid #14202b;padding:10px 17px;cursor:pointer}.tabs button:hover{background:#101c27;color:var(--fg)}.tabs button.active{color:white;background:#151d2a;border-bottom:3px solid var(--purple);font-weight:700}
.workspace{display:grid;grid-template-columns:minmax(0,1fr) 350px;gap:8px;padding:8px 10px;flex:1;min-height:0}.content{min-width:0}.tab-panel{display:none;height:100%}.tab-panel.active{display:block}.library{min-width:0;padding:10px;display:flex;flex-direction:column;height:calc(100vh - 225px);min-height:560px}.library-title{display:flex;justify-content:space-between;align-items:center;color:var(--purple);margin-bottom:9px}.library-title strong{letter-spacing:.08em}.library-title span{color:var(--muted);font-size:12px}.library input,.library select{width:100%;background:#0a141e;color:var(--fg);border:1px solid var(--border);padding:8px;border-radius:4px;margin-bottom:7px}.map-list{overflow:auto;flex:1;border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:5px 0}.map-group{margin:4px 0}.group-title{font-size:12px;color:#b9c4ce;padding:5px 6px;font-weight:700}.map-item{display:grid;grid-template-columns:1fr auto auto;gap:8px;padding:5px 7px;font-size:12px;color:#c8d2db;cursor:pointer;border-left:2px solid transparent}.map-item:hover{background:#111f2b}.map-item.selected{background:#4b2873;color:white;border-left-color:var(--purple)}.map-item .addr,.map-item .shape{font-family:Consolas,monospace;color:#9ba8b5}.map-item.selected .addr,.map-item.selected .shape{color:#e8dbff}.selected-info{padding-top:10px;display:flex;flex-direction:column;gap:6px}.selected-info strong{font-size:14px}.selected-info span{font-size:11px;color:var(--muted)}
.hero{padding:22px;display:flex;justify-content:space-between;align-items:center;min-height:190px}.hero h1{margin:6px 0;font-size:27px}.hero p{color:var(--muted);max-width:680px;line-height:1.55}.hero-badge{width:145px;height:145px;border-radius:50%;border:1px solid #49366b;background:radial-gradient(circle,#2a1a44,#0c151e 65%);display:flex;flex-direction:column;align-items:center;justify-content:center}.hero-badge span{font-size:40px;font-weight:900;color:var(--purple)}.hero-badge small{color:var(--muted)}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:8px}.stat{padding:16px}.stat span{display:block;color:var(--muted);font-size:11px;text-transform:uppercase}.stat strong{display:block;margin-top:8px;font-size:18px}.notes-card{margin-top:8px;padding:16px}.notes-card h2{margin-top:0}.notes-card p{color:var(--muted)}.warning{color:var(--yellow)!important}
.editor-head{padding:12px 14px;display:flex;justify-content:space-between;align-items:flex-end;gap:15px}.editor-head h2{margin:4px 0 2px}.editor-head p{margin:0;color:var(--muted);font-family:Consolas,monospace;font-size:12px}.editor-actions{display:flex;flex-wrap:wrap;gap:5px}.map-tools{margin-top:7px;padding:8px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}.map-tools label{display:flex;align-items:center;gap:5px}.map-tools input[type=number]{width:90px;background:#07121b;color:var(--fg);border:1px solid var(--border);padding:6px}.check{color:#c9d2da}.map-tools #selectionInfo{margin-left:auto;color:var(--muted);font-family:Consolas,monospace;font-size:12px}.map-grid-wrap{margin-top:7px;padding:7px;overflow:auto;height:calc(100vh - 360px);min-height:430px}.map-table{border-collapse:separate;border-spacing:1px;margin:auto;min-width:min(100%,1100px)}.map-table th{background:#101b26;color:#8da3b5;padding:7px;min-width:55px;position:sticky;top:0;z-index:2}.map-table th.rowhead{left:0;z-index:3}.map-table td{height:38px;text-align:center;padding:4px 6px;font-family:Consolas,monospace;font-size:12px;cursor:pointer;border:1px solid transparent;user-select:none}.map-table td.selected{border:2px solid white;box-shadow:inset 0 0 0 1px #000}.map-table .row-label{position:sticky;left:0;background:#101b26;color:#8da3b5;z-index:1;font-weight:700;padding:7px}.empty{padding:25px;color:var(--muted);text-align:center}
.power-head{padding:10px 14px;display:flex;justify-content:space-between;align-items:center}.power-head h2{margin:0 0 6px}.peaks{font-family:Consolas,monospace;color:#cfd8df;font-size:12px}.power-head-actions{display:flex;gap:6px}.power-head select{background:#0a141e;color:var(--fg);border:1px solid var(--border);padding:7px}.power-canvas-card{margin-top:7px;padding:4px 8px 7px;height:calc(100vh - 430px);min-height:430px}.power-canvas-card canvas{width:100%;height:calc(100% - 28px);display:block}.power-cursor{height:26px;border-top:1px solid var(--border);padding:5px;color:var(--muted);font-family:Consolas,monospace;font-size:11px}.power-controls{display:grid;grid-template-columns:2fr 1.4fr 1fr;gap:8px;margin-top:7px}.ctrl{padding:9px 11px}.ctrl h3{margin:0 0 8px;color:var(--purple);font-size:12px;text-transform:uppercase}.ctrl label{display:flex;align-items:center;gap:8px;margin:6px 0;color:#cbd4dc;font-size:12px}.ctrl input[type=range]{flex:1}.ctrl button{margin-right:5px}.ctrl b{min-width:45px;text-align:right;font-family:Consolas,monospace}
.compare-head{padding:14px}.compare-head h2{margin:0}.compare-head p{color:var(--muted)}.compare-table,.checks-table{width:100%;border-collapse:collapse}.compare-table th,.compare-table td,.checks-table th,.checks-table td{padding:8px;border-bottom:1px solid var(--border);text-align:left;font-size:12px}.compare-table th,.checks-table th{color:var(--muted);text-transform:uppercase;font-size:10px}.preflight-banner{padding:16px;text-align:center;font-size:18px;font-weight:900;margin-bottom:8px}.preflight-banner.pass{color:var(--green);border-color:var(--green)}.preflight-banner.warn{color:var(--yellow);border-color:var(--yellow)}.preflight-banner.fail{color:var(--red);border-color:var(--red)}.status-pass{color:var(--green);font-weight:800}.status-warn{color:var(--yellow);font-weight:800}.status-fail{color:var(--red);font-weight:800}.status-info{color:var(--muted);font-weight:800}
.statusbar{height:28px;background:#08111a;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;padding:0 12px;color:var(--muted);font-size:11px}.good{color:var(--green)}.bad{color:var(--red)}
#powerCanvas:fullscreen{background:var(--graph);width:100vw;height:100vh}
@media(max-width:1100px){.workspace{grid-template-columns:1fr 300px}.ecu-strip{grid-template-columns:1fr 1fr}.profile-card{grid-column:1/-1}.power-controls{grid-template-columns:1fr}.stats-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.topbar{height:auto;align-items:flex-start;padding:10px;flex-direction:column}.ecu-strip{grid-template-columns:1fr}.profile-card{grid-column:auto}.workspace{grid-template-columns:1fr}.library{height:420px}.tabs{overflow:auto}.stats-grid{grid-template-columns:1fr 1fr}.hero-badge{display:none}.kv{grid-template-columns:auto 1fr}.power-canvas-card{height:480px}}


/* Account gate / administration — v0.2 */
.auth-gate{
  min-height:100vh;background:
  radial-gradient(circle at 25% 20%,rgba(111,60,255,.14),transparent 28%),
  radial-gradient(circle at 80% 75%,rgba(63,124,255,.08),transparent 30%),
  #071019;display:flex;align-items:center;justify-content:center;padding:28px;
}
.auth-shell{width:min(980px,100%);display:grid;grid-template-columns:minmax(260px,.85fr) minmax(360px,1fr);gap:30px;align-items:center}
.auth-brand{padding:20px}.auth-jp{font-size:34px;font-weight:950;font-style:italic;letter-spacing:.05em;background:linear-gradient(135deg,#c085ff,#6c3cff);-webkit-background-clip:text;color:transparent}.auth-sub{font-size:12px;letter-spacing:.28em;color:#9a8bb5;margin-top:5px}.auth-brand p{color:var(--muted);font-size:17px;line-height:1.55;margin-top:24px;max-width:430px}
.auth-card{padding:0;overflow:hidden;box-shadow:0 24px 70px rgba(0,0,0,.32)}
.auth-tabs{display:grid;grid-template-columns:repeat(3,1fr);background:#08121a;border-bottom:1px solid var(--border)}
.auth-tabs button{background:transparent;color:var(--muted);border:0;padding:14px 10px;cursor:pointer;border-bottom:3px solid transparent;font-weight:700}
.auth-tabs button.active{background:#121b28;color:white;border-bottom-color:var(--purple)}
.auth-pane{display:none;padding:24px}.auth-pane.active{display:block}.auth-pane h2{margin:0 0 5px;font-size:23px}.auth-pane>p,.auth-pane form>p{color:var(--muted);margin:0 0 18px;line-height:1.45}
.auth-pane label{display:flex;flex-direction:column;gap:6px;color:#cdd6de;font-size:12px;font-weight:700;margin:12px 0}
.auth-pane input[type=text],.auth-pane input[type=email],.auth-pane input[type=password]{
  width:100%;background:#08131d;color:var(--fg);border:1px solid var(--border);border-radius:5px;padding:11px 12px;outline:none
}
.auth-pane input:focus{border-color:var(--purple2);box-shadow:0 0 0 2px rgba(169,112,255,.10)}
.auth-check{flex-direction:row!important;align-items:center!important;font-weight:500!important;color:var(--muted)!important}
.auth-submit{width:100%;border:1px solid #6f3cff;background:linear-gradient(180deg,#6531a0,#47226f);color:white;padding:11px;border-radius:5px;cursor:pointer;font-weight:800;margin-top:8px}
.auth-submit:hover{background:linear-gradient(180deg,#7940b6,#542a82)}
.auth-link{width:100%;border:0;background:transparent;color:var(--purple2);padding:11px;cursor:pointer}
.auth-message{min-height:28px;padding:0 24px 18px;color:var(--muted);font-size:12px}.auth-message.error{color:var(--red)}.auth-message.success{color:var(--green)}
.auth-foot{grid-column:1/-1;text-align:center;color:#667686;font-size:11px}
.account-area{display:flex;align-items:center;gap:7px;border-left:1px solid var(--border);padding-left:12px}.account-copy{display:flex;flex-direction:column;min-width:105px}.account-copy strong{font-size:12px}.account-copy small{font-size:9px;color:var(--purple2);font-weight:800;letter-spacing:.08em}
.admin-head{padding:14px;display:flex;align-items:center;justify-content:space-between}.admin-head h2{margin:4px 0}.admin-head p{margin:0;color:var(--muted)}.admin-head button,.admin-actions button{background:#101b26;color:var(--fg);border:1px solid var(--border);padding:6px 9px;border-radius:4px;cursor:pointer}.admin-head button:hover,.admin-actions button:hover{border-color:#604589;background:#172534}.admin-actions{display:flex;gap:5px;flex-wrap:wrap}.admin-actions .danger{border-color:#69332f;color:#ff8f87}.admin-actions button[disabled]{opacity:.35;cursor:not-allowed}
.admin-users-card{overflow:auto}.admin-table{width:100%;border-collapse:collapse;min-width:980px}.admin-table th,.admin-table td{padding:9px;border-bottom:1px solid var(--border);text-align:left;font-size:11px}.admin-table th{color:var(--muted);text-transform:uppercase;font-size:10px;background:#0a141e;position:sticky;top:0}.role-pill{display:inline-block;padding:3px 7px;border-radius:10px;font-size:9px;font-weight:900;text-transform:uppercase}.role-pill.user{background:#132336;color:#9fc5ed}.role-pill.admin{background:#2d1c46;color:#cda6ff}.admin-note{padding:14px;margin-top:8px}.admin-note p{color:var(--muted);margin-bottom:0}
@media(max-width:850px){.auth-shell{grid-template-columns:1fr}.auth-brand{text-align:center;padding-bottom:0}.auth-brand p{margin-left:auto;margin-right:auto}.account-area{width:100%;border-left:0;padding-left:0;justify-content:flex-end}}


/* Stripe subscription paywall — v0.3.0 */
.billing-gate{
  min-height:100vh;background:
    radial-gradient(circle at 20% 20%,rgba(111,60,255,.15),transparent 32%),
    radial-gradient(circle at 80% 78%,rgba(63,124,255,.10),transparent 30%),
    #071019;
  display:flex;align-items:center;justify-content:center;padding:28px
}
.billing-shell{width:min(560px,100%)}
.billing-card{padding:26px;box-shadow:0 25px 80px rgba(0,0,0,.35)}
.billing-card h1{font-size:28px;margin:6px 0 8px}
.billing-card>p{color:var(--muted);line-height:1.55}
.billing-plan{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px;margin:20px 0;background:#09141e;border:1px solid var(--border);border-radius:6px}
.billing-plan div:first-child{display:flex;flex-direction:column;gap:4px}.billing-plan span{color:var(--muted);font-size:12px}
.billing-badge,.billing-mini{display:inline-block;padding:5px 9px;border-radius:12px;background:#2d1b22;color:#ff9d96;font-size:10px;font-weight:900;letter-spacing:.04em}
.billing-badge.ok,.billing-mini.ok{background:#132d20;color:#78e69a}.billing-badge.warn{background:#332817;color:#f4ca67}
.billing-features{padding:0;list-style:none;margin:18px 0}.billing-features li{padding:7px 0 7px 24px;color:#cfd7df;position:relative}.billing-features li:before{content:"✓";position:absolute;left:0;color:var(--green);font-weight:900}
.billing-warning{padding:12px;margin:14px 0;background:#2c2415;border:1px solid #5a4823;color:#e5c46f;border-radius:5px;font-size:12px;line-height:1.45}
.billing-primary,.billing-secondary,.billing-link{width:100%;padding:11px;border-radius:5px;margin-top:8px;cursor:pointer;font-weight:800}
.billing-primary{background:linear-gradient(180deg,#6531a0,#47226f);border:1px solid #7d49b4;color:white}.billing-primary:disabled{opacity:.4;cursor:not-allowed}
.billing-secondary{background:#101b26;border:1px solid var(--border);color:var(--fg)}
.billing-link{background:transparent;border:0;color:var(--purple2)}
.billing-security{text-align:center!important;font-size:10px!important;color:#657687!important;margin-top:16px!important}

.pricing-choice{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.pricing-card{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:16px;background:#0a151f;border:1px solid var(--border);border-radius:7px;color:var(--fg);cursor:pointer;text-align:left}.pricing-card:hover{border-color:#64478f;background:#101b28}.pricing-card.selected{border-color:var(--purple2);box-shadow:0 0 0 2px rgba(169,112,255,.12);background:#151b29}.pricing-card:disabled{opacity:.35;cursor:not-allowed}.pricing-card strong{font-size:25px}.pricing-card small{color:var(--muted)}.pricing-name{font-size:10px;font-weight:900;letter-spacing:.12em;color:var(--purple2)}.pricing-save{position:absolute;right:8px;top:8px;font-size:9px;font-weight:900;background:#153021;color:#76e495;border:1px solid #245136;border-radius:10px;padding:3px 6px}.selected-plan{text-align:center;color:var(--muted);font-size:11px;margin-top:6px}@media(max-width:560px){.pricing-choice{grid-template-columns:1fr}}
