/* VIP Number Dashboard — professional dark UI */
:root{
  --bg:#0a1120; --surface:#141c2b; --surface2:#0f1826; --surface3:#1b2536; --line:#26314a; --line2:#1e2840;
  --ink:#e9eef5; --ink2:#9fb0c0; --ink3:#6b7a90;
  --brand:#2dd4bf; --brand2:#0d9488; --brand-ink:#052b28;
  --gold:#f5b301; --purple:#c4b5fd; --danger:#ef4444; --r:14px;
  font-family:'Jost',system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink)}
a{color:var(--brand);text-decoration:none}
.muted{color:var(--ink2)} .small{font-size:.82rem}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:8px}
::-webkit-scrollbar-track{background:transparent}

/* ---------- buttons ---------- */
.btn{background:var(--brand);color:var(--brand-ink);border:0;padding:.55rem .9rem;border-radius:10px;
  font-weight:700;font-size:.85rem;cursor:pointer;text-decoration:none;display:inline-block;transition:filter .15s,transform .15s}
.btn:hover{filter:brightness(1.08)} .btn:active{transform:translateY(1px)}
.btn.ghost{background:transparent;color:var(--ink2);border:1px solid var(--line)}
.btn.ghost:hover{color:var(--ink);border-color:var(--brand);filter:none}
.btn.small{padding:.4rem .65rem;font-size:.8rem}
.btn.wide{display:block;width:100%;text-align:center}
.mt{margin-top:.5rem}

/* ---------- auth / paywall / profile ---------- */
.auth-body{min-height:100vh;display:grid;place-items:center;padding:1.5rem;
  background:radial-gradient(1200px 600px at 50% -10%, #12324a 0%, var(--bg) 60%)}
.auth-card{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:2rem;
  width:min(400px,100%);display:flex;flex-direction:column;gap:.7rem;box-shadow:0 24px 70px rgba(0,0,0,.5)}
.auth-brand{font-size:1.5rem;font-weight:800;letter-spacing:-.02em}
.auth-brand span{color:var(--brand)}
.auth-sub{color:var(--ink2);margin:.1rem 0 .5rem;font-size:.9rem}
.auth-card input{background:var(--surface2);border:1px solid var(--line);color:var(--ink);padding:.72rem .85rem;border-radius:11px;font-size:1rem}
.auth-card input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(45,212,191,.15)}
.auth-card button[type=submit],.auth-card .btn{background:var(--brand);color:var(--brand-ink);border:0;padding:.72rem;border-radius:11px;font-weight:700;font-size:1rem;cursor:pointer;margin-top:.2rem}
.auth-error{background:#3a1620;border:1px solid #7f1d1d;color:#fecaca;padding:.5rem .7rem;border-radius:9px;font-size:.85rem}
.auth-alt{font-size:.85rem;color:var(--ink2);text-align:center;margin-top:.4rem}
.paywall{text-align:center}
.price{margin:.4rem 0}.price .amt{font-size:2.6rem;font-weight:800;color:var(--brand)}.price .per{color:var(--ink2);margin-left:.2rem}
.perks{list-style:none;padding:0;margin:.5rem auto;text-align:left;display:inline-block}
.perks li{padding:.25rem 0;font-size:.92rem}.perks li:before{content:"✓ ";color:var(--brand);font-weight:800}

/* ---------- generic wrap (admin/profile/bookmarklet) ---------- */
.wrap{max-width:1000px;margin:0 auto;padding:1.5rem}
.wrap.narrow{max-width:680px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem 1.1rem;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.brand{font-weight:800;letter-spacing:-.02em;font-size:1.1rem}.brand span{color:var(--brand)}
.top-actions{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}

/* profile cards */
.pcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:1.1rem 1.2rem;margin:1rem 0}
.pcard-head{font-weight:700;margin-bottom:.7rem;color:var(--ink)}
.prow{display:flex;justify-content:space-between;gap:1rem;padding:.4rem 0;border-bottom:1px solid var(--line2);font-size:.92rem}
.prow:last-child{border-bottom:0}.prow span{color:var(--ink2)}
.pform{display:flex;gap:.5rem;flex-wrap:wrap}.pform.col{flex-direction:column;max-width:340px}
.pform input{flex:1;min-width:160px;background:var(--surface2);border:1px solid var(--line);color:var(--ink);padding:.6rem .8rem;border-radius:10px}
.pform input:focus{outline:none;border-color:var(--brand)}
.badge{padding:.2rem .6rem;border-radius:999px;font-size:.8rem;font-weight:700}
.badge.ok{background:#0b2a1a;color:#86efac;border:1px solid #166534}
.badge.admin{background:#0a2536;color:var(--brand);border:1px solid #134e48}
.badge.off{background:#2a1520;color:#fca5a5;border:1px solid #7f1d1d}

/* ---------- app shell ---------- */
.mtopbar{display:none}
.shell{display:flex;min-height:100vh}
.sidebar{width:266px;flex:0 0 266px;background:var(--surface);border-right:1px solid var(--line);
  position:sticky;top:0;height:100vh;overflow-y:auto;padding:1rem .9rem;display:flex;flex-direction:column;gap:1rem}
.side-top{display:flex;align-items:center;justify-content:space-between}
.side-brand{font-size:1.2rem;font-weight:800;letter-spacing:-.02em}.side-brand span{color:var(--brand)}
.side-close{display:none;background:none;border:0;color:var(--ink2);font-size:1.6rem;cursor:pointer;line-height:1}
.side-nav{display:flex;flex-direction:column;gap:.15rem}
.side-nav a{display:flex;align-items:center;gap:.6rem;padding:.55rem .7rem;border-radius:10px;color:var(--ink2);font-weight:600;font-size:.92rem}
.side-nav a .ic{opacity:.8;font-size:1rem;width:1.1rem;text-align:center}
.side-nav a:hover{background:var(--surface3);color:var(--ink)}
.side-nav a.active{background:linear-gradient(90deg,rgba(45,212,191,.16),transparent);color:var(--brand)}
.side-section{border-top:1px solid var(--line2);padding-top:.85rem}
.side-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;color:var(--ink3);font-weight:700;margin-bottom:.5rem}
.side-label.mt{margin-top:.7rem}
.fselect{width:100%;background:var(--surface2);border:1px solid var(--line);color:var(--ink);padding:.5rem .6rem;border-radius:9px;font-size:.88rem}
.fselect:focus{outline:none;border-color:var(--brand)}
.fselect.inline{width:auto;padding:.35rem .55rem;font-size:.82rem}
.chips{display:flex;flex-wrap:wrap;gap:.35rem}
.chip{background:var(--surface2);border:1px solid var(--line);color:var(--ink2);padding:.28rem .5rem;border-radius:999px;font-size:.75rem;cursor:pointer;display:inline-flex;align-items:center;gap:.3rem}
.chip em{font-style:normal;color:var(--ink3);font-size:.7rem}
.chip.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand);font-weight:700}.chip.on em{color:var(--brand-ink)}
.chk{display:flex;align-items:center;gap:.5rem;color:var(--ink2);font-size:.88rem;cursor:pointer}
.side-foot{margin-top:auto;border-top:1px solid var(--line2);padding-top:.85rem}
.side-user{font-size:.8rem;color:var(--ink2);margin-bottom:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* main */
.main{flex:1;min-width:0;padding:1.4rem 1.5rem 3rem}
.searchbar{display:flex;align-items:center;gap:.6rem;background:var(--surface);border:1px solid var(--line);
  border-radius:14px;padding:.55rem .7rem;box-shadow:0 6px 24px rgba(0,0,0,.2);position:sticky;top:.6rem;z-index:10}
.searchbar .si{color:var(--ink3);display:flex;padding-left:.3rem}
.bigsearch{flex:1;background:none;border:0;color:var(--ink);font-size:1.05rem;padding:.4rem .2rem;min-width:0}
.bigsearch:focus{outline:none}
.bigsearch::placeholder{color:var(--ink3)}
.modes{display:flex;gap:.2rem;flex-shrink:0}
.modes button{background:var(--surface2);border:1px solid var(--line);color:var(--ink2);padding:.32rem .55rem;border-radius:8px;font-size:.72rem;cursor:pointer}
.modes button.on{background:var(--brand);color:var(--brand-ink);border-color:var(--brand);font-weight:700}

.sec-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:1.6rem 0 .8rem;flex-wrap:wrap}
.sec-head h2{font-size:1.15rem;margin:0;font-weight:700;letter-spacing:-.01em}
.res-tools{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap}
.count{color:var(--ink2);font-size:.85rem}

/* featured cards */
.featured{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:.9rem}
.fcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:.9rem;
  display:flex;flex-direction:column;gap:.7rem;transition:transform .15s,border-color .15s,box-shadow .15s}
.fcard:hover{transform:translateY(-3px);border-color:var(--brand);box-shadow:0 12px 30px rgba(0,0,0,.28)}
.fcard-top{display:flex;align-items:center;gap:.6rem}
.fic{font-size:1.5rem;line-height:1}
.fmeta{flex:1;min-width:0}
.fttl{font-weight:700;font-size:.98rem}
.fhint{color:var(--ink3);font-size:.75rem}
.fcount{font-size:.78rem;font-weight:700;color:var(--ink2);background:var(--surface2);border:1px solid var(--line);padding:.15rem .5rem;border-radius:999px}
.fnums{display:flex;flex-wrap:wrap;gap:.35rem}
.fnum{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700;font-size:.95rem;letter-spacing:.03em;
  background:var(--surface2);border:1px solid var(--line);color:var(--ink);padding:.28rem .5rem;border-radius:8px;cursor:pointer;transition:.15s}
.fnum:hover{background:var(--brand);color:var(--brand-ink);border-color:var(--brand)}
.fmore{margin-top:auto;background:none;border:0;color:var(--brand);font-weight:600;font-size:.82rem;cursor:pointer;text-align:left;padding:.1rem 0}
.fc-quad .fic,.fc-lucky .fic,.fc-round .fic{filter:drop-shadow(0 0 6px rgba(245,179,1,.4))}
.fc-quad .fnum:hover,.fc-lucky .fnum:hover,.fc-round .fnum:hover{background:var(--gold);color:#3a2a00;border-color:var(--gold)}

/* results */
.results-wrap{margin-top:.4rem}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
.grid{width:100%;border-collapse:collapse;font-size:.9rem}
.grid th{background:var(--surface3);text-align:left;padding:.6rem .8rem;color:var(--ink2);font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line);white-space:nowrap}
.grid td{padding:.55rem .8rem;border-bottom:1px solid var(--line2);vertical-align:middle}
.grid tr:last-child td{border-bottom:0}
.grid tbody tr:hover{background:var(--surface2)}
.c-fav{width:38px}.c-del{width:40px;text-align:center}
.plate{font-weight:700;letter-spacing:.02em}
.numchip{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700;color:var(--brand)}
.c-rto small{display:block;color:var(--ink3);font-size:.72rem}
.c-tags{display:flex;flex-wrap:wrap;gap:.3rem}
.tag{font-size:.68rem;padding:.12rem .42rem;border-radius:6px;background:var(--surface2);border:1px solid var(--line);color:var(--ink2);white-space:nowrap}
.t-lucky,.t-quad,.t-round{color:var(--gold);border-color:#5c4a0f}
.t-palindrome,.t-ascending,.t-descending{color:var(--brand);border-color:#134e48}
.t-low,.t-triple,.t-pattern{color:var(--purple);border-color:#4c3f7a}
.star{background:none;border:0;color:var(--ink3);font-size:1.15rem;cursor:pointer;line-height:1}.star.on{color:var(--gold)}
.del{background:none;border:0;cursor:pointer;font-size:.95rem;opacity:.5}.del:hover{opacity:1}
.empty{padding:2.5rem 1rem;text-align:center;color:var(--ink2)}
.pager{display:flex;align-items:center;gap:.6rem;justify-content:center;margin-top:1rem}
.pageinfo{color:var(--ink2);font-size:.82rem}

/* hamburger / mobile top bar */
.hamb{width:40px;height:38px;background:var(--surface2);border:1px solid var(--line);border-radius:9px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px;cursor:pointer}
.hamb span{width:18px;height:2px;background:var(--ink);border-radius:2px}
.mbrand{font-weight:800;letter-spacing:-.02em}.mbrand span{color:var(--brand)}
.miconbtn{width:38px;height:38px;display:grid;place-items:center;background:var(--surface2);border:1px solid var(--line);border-radius:9px;color:var(--ink2);font-size:1.1rem}
.scrim{display:none}

/* ---------- add / live modals ---------- */
.modal{position:fixed;inset:0;background:rgba(3,7,15,.7);display:grid;place-items:center;padding:1rem;z-index:60}
.modal[hidden]{display:none}
.modal-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:1.2rem;width:min(620px,100%)}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}
.modal-head .x{background:none;border:0;color:var(--ink2);font-size:1.4rem;cursor:pointer}
.modal-card textarea,.code{width:100%;background:var(--surface2);border:1px solid var(--line);color:var(--ink);border-radius:10px;padding:.7rem;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem;resize:vertical}
.modal-row{display:flex;align-items:center;gap:.6rem;margin-top:.7rem}.modal-row .grow{flex:1}
.addmsg{color:var(--ink2);font-size:.82rem}
.live-row{display:flex;gap:.8rem;align-items:flex-end;flex-wrap:wrap;margin-top:.6rem}
.live-row label{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;color:var(--ink2);flex:1;min-width:140px}
.live-prog{margin-top:1rem}
.live-bar{height:8px;background:var(--surface2);border:1px solid var(--line);border-radius:999px;overflow:hidden;margin-bottom:.5rem}
.live-bar span{display:block;height:100%;width:0;background:var(--brand);transition:width .3s ease}

/* admin */
.admin-msg{background:#0b2a1a;border:1px solid #166534;color:#bbf7d0;padding:.5rem .8rem;border-radius:9px;margin-bottom:1rem;font-size:.9rem}
.admin-actions form{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap}
.admin-actions .days{width:58px;background:var(--surface2);border:1px solid var(--line);color:var(--ink);border-radius:6px;padding:.25rem}
.ok{color:#34d399}

/* bookmarklet page */
.back{font-size:.85rem}.steps{line-height:1.8}
.bookmarklet{display:inline-block;background:var(--brand);color:var(--brand-ink);padding:.35rem .7rem;border-radius:8px;font-weight:700}

/* ---------- responsive: hamburger drawer ---------- */
@media (max-width:900px){
  /* Stack the top bar above the content; the sidebar becomes an off-canvas drawer. */
  .shell{display:block}
  .mtopbar{display:flex;align-items:center;gap:.7rem;padding:.7rem .95rem;
    background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:40;
    box-shadow:0 2px 14px rgba(0,0,0,.28)}
  .mtopbar .mbrand{flex:1;font-size:1.08rem}
  .sidebar{width:min(84vw,300px);flex:none;position:fixed;top:0;left:0;height:100vh;z-index:50;
    transform:translateX(-100%);transition:transform .25s ease;box-shadow:0 0 50px rgba(0,0,0,.6)}
  .side-close{display:block}
  body.side-open .sidebar{transform:translateX(0)}
  body.side-open{overflow:hidden}
  body.side-open .scrim{display:block;position:fixed;inset:0;background:rgba(3,7,15,.55);z-index:45}
  /* mobile layout: search results first, search bar fixed at the bottom */
  .main{display:flex;flex-direction:column;padding:1rem .9rem 7.5rem}
  #fetchBanner{order:-3;margin-top:0}
  #resultsWrap{order:-2;margin-top:.2rem}
  .filterbar{order:1}
  #featuredWrap{order:2}
  #idleHint{order:3}
  /* search bar pinned to the bottom like a chat composer */
  .searchbar{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:35;margin:0;flex-wrap:wrap;
    border-radius:16px 16px 0 0;box-shadow:0 -8px 26px rgba(0,0,0,.42);
    padding:.55rem .7rem calc(.55rem + env(safe-area-inset-bottom,0px))}
  .modes{width:100%;order:3;gap:.35rem}
  .modes button{flex:1}
  /* filter bar: dropdowns become a 2-up grid, freshness line spans full width */
  .fb-row{gap:.5rem}
  .fb-row .fselect.inline{flex:1 1 calc(50% - .3rem);width:auto}
  .fb-row .grow{display:none}
  .fb-row .chk{flex:1 1 auto}
  .fresh{width:100%;justify-content:flex-start;border-top:1px solid var(--line2);padding-top:.55rem;margin-top:.15rem}
  .c-series,.c-rto,.c-off{display:none}
  /* modals: give room and let long forms scroll */
  .live-row{gap:.6rem}
  .live-row label{min-width:calc(50% - .3rem)}
}
@media (max-width:520px){
  .featured{grid-template-columns:1fr 1fr;gap:.6rem}
  .fnum{font-size:.85rem;padding:.24rem .4rem}
  .sec-head h2{font-size:1.05rem}
  .fb-row .fselect.inline{flex:1 1 100%}
  .grid th,.grid td{padding:.5rem .55rem}
}

/* ---------- dashboard filter bar (moved out of sidebar) ---------- */
.filterbar{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:.7rem .8rem;margin-top:.9rem;display:flex;flex-direction:column;gap:.6rem}
.fb-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}
.fb-row .grow{flex:1;min-width:0}
.fb-chips{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;border-top:1px solid var(--line2);padding-top:.6rem}
.fb-admin{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;border-top:1px solid var(--line2);padding-top:.6rem}
.fb-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.09em;color:var(--ink3);font-weight:700;flex-shrink:0}
.fresh{display:flex;align-items:center;gap:.5rem;font-size:.82rem;color:var(--ink2);flex-wrap:wrap;justify-content:flex-end}
.fresh-state{font-weight:700;color:var(--ink)}
.fresh-when{color:var(--ink3)}

/* fetch banner (auto/manual "loading latest") */
.fetch-banner{margin-top:.8rem;padding:.6rem .85rem;border-radius:11px;font-size:.88rem;border:1px solid var(--line);background:var(--surface2);color:var(--ink2);display:flex;align-items:center;gap:.55rem}
.fetch-banner[hidden]{display:none}
.fetch-banner.on{border-color:#134e48;background:linear-gradient(90deg,rgba(45,212,191,.12),transparent);color:var(--ink)}
.fetch-banner.done{border-color:#166534;background:#0b2a1a;color:#bbf7d0}
.fetch-banner em{font-style:normal;color:var(--brand);font-weight:700}
.spin{width:14px;height:14px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;display:inline-block;animation:spin .7s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}

/* profile as a shell main */
.narrow-main{max-width:720px}

/* location/office columns, auction banner, idle hint, auctions modal */
.c-loc,.c-off{font-size:.88rem;color:var(--ink)}
.c-off{color:var(--ink2)}
.auc-banner{background:linear-gradient(90deg,rgba(245,179,1,.13),transparent);border:1px solid #5c4a0f;border-radius:11px;padding:.65rem .85rem;margin-bottom:.9rem;font-size:.9rem}
.auc-status{padding:.1rem .55rem;border-radius:999px;font-size:.76rem;font-weight:700;background:var(--surface2);border:1px solid var(--line);color:var(--ink2)}
.auc-status.on{background:#0b2a1a;border-color:#166534;color:#86efac}
.idle-hint{margin-top:1.6rem;padding:1.3rem;text-align:center;color:var(--ink2);border:1px dashed var(--line);border-radius:12px;font-size:.95rem}
.modal-lg{width:min(840px,100%)}
.modal-lg .table-wrap{max-height:62vh;overflow:auto}
.auc-table td{font-size:.86rem}

/* auth: state picker + hint, and the profile one-time-change warning */
.auth-card select,.auth-select{background:var(--surface2);border:1px solid var(--line);color:var(--ink);padding:.72rem .85rem;border-radius:11px;font-size:1rem;width:100%}
.auth-card select:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(45,212,191,.15)}
.auth-hint{font-size:.78rem;color:var(--ink2);margin:-.2rem 0 .1rem;line-height:1.35}
.auth-hint a,.warn a{color:var(--brand)}
.warn{background:#3a2a12;border:1px solid #7c5312;color:#fde68a;padding:.5rem .7rem;border-radius:9px;font-size:.82rem;line-height:1.4;margin:.2rem 0}
select:disabled{opacity:.6;cursor:not-allowed}
.grid td.plate small{display:block;color:var(--ink3);font-size:.72rem;font-weight:400;margin-top:.1rem}

/* admin debug log */
.logbox{background:var(--surface2);border:1px solid var(--line);border-radius:var(--r);padding:.6rem .7rem;max-height:340px;overflow:auto;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.76rem;line-height:1.55}
.logline{padding:.18rem 0;border-bottom:1px solid var(--line2);color:var(--ink2);word-break:break-word}
.logline:last-child{border-bottom:0}
.logt{color:var(--ink3)}
.logc{font-weight:700;padding:0 .35rem;border-radius:5px;background:var(--surface3);color:var(--ink2);margin:0 .3rem}
.log-live .logc,.log-cron .logc{color:#fca5a5;background:#2a1520}
.log-client .logc{color:var(--purple);background:#241d3a}
