:root{
  --void:#050505;--void2:#0c0c0c;--panel:#111;--lift:#161616;--line:#1a1a1a;
  --amber:#ffb000;--hot:#ffd84a;--dim:#6b4900;--ghost:#261a00;
  --green:#2dff7a;--red:#ff3838;--cyan:#4dd7ff;--ink:#d9c8a0;--inkd:#7a6a48;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--void);color:var(--amber);font-family:'JetBrains Mono',monospace;min-height:100vh}
body::before{content:'';position:fixed;inset:0;background:repeating-linear-gradient(0deg,transparent 0 2px,rgba(0,0,0,.16) 2px 3px);pointer-events:none;z-index:999;mix-blend-mode:multiply}
.wrap{max-width:1100px;margin:0 auto;padding:16px}
.hide{display:none!important}

/* ---- masthead ---- */
.masthead{border:1px solid var(--dim);background:linear-gradient(180deg,var(--lift),var(--panel));padding:14px 18px;display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:14px;flex-wrap:wrap;position:relative;overflow:hidden}
.masthead::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--amber),transparent);box-shadow:0 0 8px var(--amber)}
.brand1{font-family:'Bebas Neue';font-size:24px;letter-spacing:5px;color:var(--hot);text-shadow:0 0 10px rgba(255,176,0,.6)}
.brand2{font-size:10px;letter-spacing:3px;color:var(--inkd)}
.mh-right{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.clock{font-family:'VT323';font-size:34px;color:var(--hot);text-shadow:0 0 12px rgba(255,176,0,.7);line-height:1}
.whoami{font-size:10px;letter-spacing:1px;color:var(--inkd);text-align:right}
.whoami b{color:var(--ink);font-weight:normal}

/* ---- ticker ---- */
.ticker{border:1px solid var(--dim);background:var(--panel);padding:8px 0;overflow:hidden;white-space:nowrap;margin-bottom:14px}
.tt{display:inline-block;animation:sc 50s linear infinite;font-family:'VT323';font-size:16px;letter-spacing:2px}
.tt span{margin:0 24px}.tt span::before{content:'■';color:var(--dim);margin-right:10px}
@keyframes sc{to{transform:translateX(-50%)}}

/* ---- panels ---- */
.panel{background:var(--panel);border:1px solid var(--dim);padding:14px;margin-bottom:14px}
.phead{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px dashed var(--dim);padding-bottom:8px;margin-bottom:12px;gap:10px;flex-wrap:wrap}
.ptitle{font-family:'Bebas Neue';font-size:16px;letter-spacing:4px;color:var(--hot)}
.pmeta{font-size:10px;letter-spacing:2px;color:var(--inkd)}

/* ---- trips ---- */
.trip{border:1px solid var(--line);background:var(--void2);margin-bottom:12px;overflow:hidden}
.strap{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;background:linear-gradient(90deg,var(--ghost),transparent);border-bottom:1px solid var(--line);flex-wrap:wrap}
.tname{font-family:'Bebas Neue';font-size:18px;letter-spacing:3px;color:var(--ink)}
.tmeta{font-size:10px;color:var(--inkd);letter-spacing:2px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tmeta b{color:var(--amber);font-weight:normal}
.weather{font-family:'VT323';font-size:15px;color:var(--cyan);letter-spacing:1px;white-space:nowrap}
.legs{width:100%;overflow-x:auto}
.leghead,.leg{display:grid;grid-template-columns:74px 1fr 76px 76px 96px 34px;gap:2px;padding:5px 4px;align-items:center;min-width:500px}
.leghead{font-size:8px;letter-spacing:2px;color:var(--inkd);text-align:center}
.leg{font-family:'VT323';border-bottom:1px solid var(--line)}
.leg:last-child{border-bottom:none}
.cell{background:linear-gradient(180deg,#1a1408,#100a04 50%,#1a1408);color:var(--hot);text-align:center;padding:5px 3px;font-size:17px;letter-spacing:1px;border-radius:2px;position:relative;overflow:hidden;text-shadow:0 0 6px rgba(255,216,74,.5)}
.cell::after{content:'';position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(0,0,0,.6)}
.cell.route{font-size:18px}
.s-ok{color:var(--green)!important}.s-bad{color:var(--red)!important}.s-air{color:var(--cyan)!important;animation:bl 2s infinite}
@keyframes bl{50%{opacity:.7}}
.cell.status{cursor:pointer}
.empty{font-size:11px;color:var(--inkd);letter-spacing:2px;padding:18px;text-align:center}

/* ---- buttons / inputs ---- */
.btn{font-family:'Bebas Neue';font-size:13px;letter-spacing:3px;color:var(--void);background:var(--amber);border:none;padding:9px 16px;cursor:pointer}
.btn:hover{background:var(--hot)}
.btn.ghost{background:var(--lift);color:var(--amber);border:1px solid var(--dim)}
.btn.ghost:hover{border-color:var(--amber)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.xbtn{background:none;border:1px solid var(--line);color:var(--inkd);cursor:pointer;font-size:10px;padding:3px 7px}
.xbtn:hover{color:var(--amber);border-color:var(--amber)}
input,select{background:var(--void2);border:1px solid var(--dim);color:var(--ink);font-family:inherit;padding:9px;font-size:13px;outline:none;width:100%}
input:focus,select:focus{border-color:var(--amber)}
.btnrow{display:flex;gap:8px;flex-wrap:wrap}
.note{font-size:10px;color:var(--inkd);letter-spacing:1px;line-height:1.7;margin-top:10px}
.err{color:var(--red);font-size:11px;margin-top:8px;letter-spacing:1px}
.ok{color:var(--green);font-size:11px;margin-top:8px;letter-spacing:1px}

/* ---- auth screen ---- */
.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.auth-card{width:100%;max-width:380px;border:1px solid var(--dim);background:linear-gradient(180deg,var(--lift),var(--panel));padding:0;position:relative;overflow:hidden}
.auth-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--amber),transparent);box-shadow:0 0 8px var(--amber)}
.auth-head{padding:22px 22px 8px;text-align:center}
.auth-head .brand1{font-size:30px}
.auth-head .brand2{margin-top:4px}
.tabs{display:flex;border-bottom:1px solid var(--line);margin:14px 0 0}
.tab{flex:1;text-align:center;padding:10px;font-family:'Bebas Neue';letter-spacing:2px;font-size:13px;color:var(--inkd);cursor:pointer;background:var(--panel)}
.tab.active{color:var(--hot);box-shadow:inset 0 -2px 0 var(--amber)}
.auth-body{padding:18px 22px 24px;display:flex;flex-direction:column;gap:10px}
.auth-body label{font-size:9px;letter-spacing:2px;color:var(--inkd)}
.gbtn{background:#fff;color:#1a1a1a;width:100%;text-align:center}
.gbtn:hover{background:#ededed}
.orline{display:flex;align-items:center;gap:10px;color:var(--inkd);font-size:9px;letter-spacing:2px}
.orline::before,.orline::after{content:'';flex:1;height:1px;background:var(--line)}

/* ---- editor modal ---- */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding:20px;overflow-y:auto}
.modal{width:100%;max-width:680px;border:1px solid var(--dim);background:linear-gradient(180deg,var(--lift),var(--panel));margin:auto}
.modal .phead{padding:14px 16px 8px;margin:0}
.modal-body{padding:14px 16px 18px}
.frow{display:grid;grid-template-columns:90px 80px 1fr 1fr 56px 56px 30px;gap:5px;margin-bottom:6px;align-items:center}
.frow .xbtn{height:36px}
.leglabel{display:grid;grid-template-columns:90px 80px 1fr 1fr 56px 56px 30px;gap:5px;font-size:8px;letter-spacing:1px;color:var(--inkd);margin-bottom:4px;text-align:center}

/* ---- concierge brain ---- */
.ccbar{display:flex;gap:8px;padding:8px 12px;border-top:1px solid var(--line);flex-wrap:wrap}
.btn.sm{font-size:11px;padding:6px 12px}
.concierge{padding:0 12px 12px}
.concierge:empty{padding:0}
.cc-card{border:1px solid var(--dim);background:var(--void2);padding:12px}
.cc-top{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.cc-greet{font-family:'Bebas Neue';font-size:16px;letter-spacing:2px;color:var(--hot)}
.pill{font-family:'Bebas Neue';font-size:12px;letter-spacing:2px;padding:3px 10px;border:1px solid;white-space:nowrap}
.p-ok{color:var(--green);border-color:var(--green)}
.p-warn{color:var(--red);border-color:var(--red)}
.p-info{color:var(--cyan);border-color:var(--cyan)}
.cc-live{font-family:'VT323';font-size:15px;color:var(--cyan);letter-spacing:1px;margin-bottom:6px}
.cc-sum{font-size:12px;color:var(--ink);line-height:1.7;letter-spacing:.4px}
.cc-sublabel{font-size:9px;letter-spacing:2px;color:var(--inkd);margin:12px 0 4px}
.cc-checks{list-style:none;margin:12px 0 0;display:flex;flex-direction:column;gap:5px}
.cc-checks .ck{font-size:12px;color:var(--ink);letter-spacing:.4px;padding-left:18px;position:relative;line-height:1.5}
.ck::before{position:absolute;left:0;top:0}
.ck-done::before{content:'✓';color:var(--green)}
.ck-todo::before{content:'▸';color:var(--amber)}
.ck-info::before{content:'•';color:var(--cyan)}
.cc-sugg{list-style:none;margin:0;display:flex;flex-direction:column;gap:5px}
.cc-sugg li{font-size:12px;color:var(--ink);letter-spacing:.4px;padding-left:18px;position:relative;line-height:1.5}
.cc-sugg li::before{content:'→';position:absolute;left:0;color:var(--amber)}
.cc-load{font-family:'VT323';font-size:15px;color:var(--inkd);letter-spacing:1px;padding:8px 0}
.cc-err{font-size:11px;color:var(--red);letter-spacing:1px;padding:6px 0}

/* ---- prefs / checkboxes / install ---- */
.chk{display:flex;align-items:center;gap:8px;font-size:11px;color:var(--ink);letter-spacing:1px;cursor:pointer;margin-top:6px}
.chk input{width:auto}
.install{border:1px dashed var(--dim);padding:8px 10px;color:var(--ink)}
.install b{color:var(--amber)}
.share-msg{border:1px solid var(--dim);background:var(--void2);padding:12px;font-size:13px;color:var(--ink);line-height:1.6;letter-spacing:.3px;white-space:pre-wrap}
.imp-row{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--line);background:var(--void2);padding:10px;margin-bottom:8px;cursor:pointer}
.imp-row input{width:auto;margin-top:4px}
.imp-title{font-family:'Bebas Neue';font-size:15px;letter-spacing:2px;color:var(--hot)}
.imp-legs{font-family:'VT323';font-size:15px;color:var(--ink);letter-spacing:1px;margin-top:2px;line-height:1.4}
.imp-hotel{font-size:11px;color:var(--inkd);margin-top:4px;letter-spacing:.5px}
.grp-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);background:var(--void2);padding:9px 10px;margin-bottom:6px}
.grp-title{font-family:'Bebas Neue';font-size:14px;letter-spacing:2px;color:var(--hot)}
.grp-sub{font-size:10px;color:var(--inkd);letter-spacing:.5px;margin-top:2px}

@media(max-width:760px){
  .clock{font-size:26px}
  .frow,.leglabel{grid-template-columns:1fr 1fr;}
  .leglabel{display:none}
  .masthead{padding:12px}
  .brand1{font-size:20px}
  .cc-greet{font-size:15px}
}
