    *{box-sizing:border-box;margin:0;padding:0;}  
    html,body,#root{height:100%;background:#080a10;}  
    body{overscroll-behavior:none;-webkit-text-size-adjust:100%;font-family:'Barlow',sans-serif;}  
  *{box-sizing:border-box;margin:0;padding:0;}  
  :root{  
    color-scheme:dark;  
    --bg:#080a10;--surface:#0d1018;--card:#111520;--card2:#161c2c;  
    --border:#1c2236;--border2:#28334f;  
    --blue:#38bdf8;--bdim:rgba(56,189,248,.1);  
    --green:#22c55e;--red:#ef4444;--orange:#f97316;--purple:#a78bfa;--amber:#f59e0b;  
    --text:#dde3f0;--muted:#4f6080;--muted2:#7a90b8;  
    --fd:'Barlow Condensed',sans-serif;--fb:'Barlow',sans-serif;--fm:'IBM Plex Mono',monospace;  
  }  
  body{background:var(--bg);}  
  /* v12.2.3: Defeat iOS Safari's white default button background globally.
     Without this, every <button> with a custom dark background renders white
     because iOS user-agent stylesheet wins on .ls-stat, .ls-chip, .secret-tile, etc.
     Per-class background/color/border rules still win as expected after this reset. */
  button{
    -webkit-appearance:none;
    appearance:none;
    background-color:transparent;
    color:inherit;
    font:inherit;
  }
  .app{min-height:100vh;color:var(--text);font-family:var(--fb);  
    background:radial-gradient(ellipse 60% 30% at 10% 0%,rgba(232,237,245,.02) 0%,transparent 55%),  
               radial-gradient(ellipse 50% 25% at 90% 100%,rgba(56,189,248,.03) 0%,transparent 55%),var(--bg);  
    display:flex;flex-direction:column;}  
  .hdr{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;}  
  .hdr-top{display:flex;align-items:center;gap:10px;height:46px;padding:0 16px;border-bottom:1px solid var(--border);}  
  /* v11.11: dashboard status strip above tab nav */
  .dash-strip{display:flex;gap:8px;align-items:stretch;padding:8px 12px;border-top:1px solid var(--border);}
  .dash-strip .sync-banner{flex:1;margin:0;}
  .dash-strip .yr-pill-wrap{flex-shrink:0;}
  .dash-strip-tax{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px 0;}
  .dash-strip-tax-banner{flex:1;display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:8px 12px;cursor:pointer;}
  .logo{display:flex;flex-direction:column;line-height:0.9;letter-spacing:2px;}
  .logo-big{font-family:'Russo One',sans-serif;font-weight:400;font-size:26px;color:#38bdf8;letter-spacing:3px;text-shadow:0 0 20px rgba(56,189,248,.18);}
  .logo-int{font-family:'Russo One',sans-serif;font-weight:400;font-size:11px;color:#e8edf5;letter-spacing:2px;margin-top:3px;text-shadow:0 0 20px rgba(232,237,245,.12);}
  .logo-tag{font-family:var(--fm);font-size:9px;color:var(--muted);letter-spacing:2px;text-transform:uppercase;margin-left:10px;flex:0 1 118px;min-width:0;line-height:1.45;white-space:normal;}  
  .hdr-brand{display:flex;flex-direction:column;align-items:flex-start;line-height:1;flex:0 0 auto;}  
  .hdr-actions{margin-left:auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:0 1 55vw;max-width:55vw;min-width:0;}  
  .sync-status{font-family:var(--fm);font-size:10px;letter-spacing:1px;white-space:nowrap;text-align:right;width:100%;padding-right:2px;margin-bottom:3px;}  
  .hdr-actions-row{display:flex;gap:6px;align-items:center;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;width:100%;padding-bottom:1px;-webkit-mask-image:linear-gradient(to right,black 85%,transparent);mask-image:linear-gradient(to right,black 85%,transparent);}  
  .hdr-actions-row::-webkit-scrollbar{display:none;}  
  .nav{display:flex;overflow-x:auto;scrollbar-width:none;padding:3px 12px;gap:2px;-webkit-mask-image:linear-gradient(to right,black 85%,transparent);mask-image:linear-gradient(to right,black 85%,transparent);}
  .nav::-webkit-scrollbar{display:none;}
  .nav::-webkit-scrollbar{display:none;}  
  .nb{background:none;border:1px solid transparent;border-radius:5px;color:var(--muted);font-family:var(--fd);font-size:13px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:5px 12px;cursor:pointer;transition:all .15s;white-space:nowrap;}  
  .nb:hover{color:var(--text);background:var(--card);}  
  .nb.on{color:#e8edf5;background:rgba(232,237,245,.07);border-color:rgba(232,237,245,.18);}  
  .nb.tnb{color:var(--red);}  
  .nb.tnb.on{color:var(--red);background:rgba(239,68,68,.08);border-color:rgba(239,68,68,.3);}  
  .main{flex:1;padding:20px 16px;max-width:1100px;margin:0 auto;width:100%;}  
  .stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:10px;margin-bottom:22px;}  
  .sc{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:14px;position:relative;overflow:hidden;transition:border-color .15s;}  
  .sc:hover{border-color:var(--border2);}  
  .sc::after{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--sc-c,var(--blue));}  
  .sc-lbl{font-family:var(--fm);font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:6px;}  
  .sc-val{font-family:var(--fd);font-weight:900;font-size:28px;line-height:1;}  
  .sc-val.sm{font-size:17px;}  
  .sc-sub{font-size:11px;color:var(--muted);margin-top:3px;}  
  .sc-delta{font-size:11px;margin-top:4px;font-family:var(--fm);line-height:1.2;letter-spacing:.2px;}  
  .yr-bar{display:flex;justify-content:flex-end;margin-bottom:10px;}  
  .dash-controls{display:flex;gap:10px;align-items:stretch;margin-bottom:16px;}  
  .dash-controls .sync-banner{flex:1;margin-bottom:0;}  
  .dash-controls .yr-pill-wrap{flex-shrink:0;}  
  .yr-pill-wrap{display:inline-flex;align-items:center;gap:6px;background:var(--card2);border:1px solid var(--border);border-radius:14px;padding:5px 11px;font-family:var(--fm);font-size:12px;color:var(--text);transition:border-color .15s;}  
  .yr-pill-wrap:hover{border-color:var(--border2);}  
  .yr-dot{width:6px;height:6px;border-radius:50%;background:var(--green);flex-shrink:0;}  
  .yr-sel{background:transparent;border:none;color:var(--text);font-family:var(--fm);font-size:12px;outline:none;cursor:pointer;padding:0;appearance:none;-webkit-appearance:none;padding-right:14px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 6px) 50%,calc(100% - 3px) 50%;background-size:3px 3px,3px 3px;background-repeat:no-repeat;}  
  .sh{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-wrap:wrap;gap:8px;}  
  .sh-title{font-family:var(--fd);font-weight:800;font-size:20px;letter-spacing:2px;text-transform:uppercase;}  
  .btn{border:none;border-radius:6px;padding:8px 16px;font-family:var(--fd);font-size:14px;font-weight:700;letter-spacing:1px;text-transform:uppercase;cursor:pointer;transition:all .15s;white-space:nowrap;}  
  .btn-p{background:var(--blue);color:#000;}  
  .btn-p:hover{background:#7dd3fc;}  
  .btn-g{background:var(--card2);color:var(--text);border:1px solid var(--border);}  
  .btn-g:hover{border-color:var(--border2);}  
  .btn-d{background:transparent;color:var(--red);border:1px solid rgba(239,68,68,.3);padding:4px 9px;font-size:11px;border-radius:4px;font-family:var(--fd);font-weight:700;cursor:pointer;transition:all .15s;}  
  .btn-d:hover{background:rgba(239,68,68,.12);}  
  .btn-sm{padding:5px 11px;font-size:12px;}  
  .tw{background:var(--card);border:1px solid var(--border);border-radius:8px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;}  
  table{width:100%;border-collapse:collapse;}  
  th{background:var(--surface);font-family:var(--fm);font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;padding:9px 13px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;}  
  td{padding:10px 13px;border-bottom:1px solid var(--border);font-size:13px;vertical-align:middle;}  
  tr:last-child td{border-bottom:none;}  
  tr:hover td{background:rgba(255,255,255,.012);}  
  .bdg{display:inline-block;padding:2px 8px;border-radius:20px;font-family:var(--fm);font-size:10px;text-transform:uppercase;letter-spacing:.5px;border:1px solid currentColor;white-space:nowrap;}  
  .stabs{display:flex;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:3px 12px;gap:2px;background:rgba(6,8,14,.6);-webkit-mask-image:linear-gradient(to right,black 85%,transparent);mask-image:linear-gradient(to right,black 85%,transparent);}
  .stabs::-webkit-scrollbar{display:none;}
  .stb{background:none;border:1px solid transparent;border-radius:5px;color:var(--muted);font-family:var(--fd);font-size:13px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:5px 12px;cursor:pointer;transition:all .15s;white-space:nowrap;}
  .stb:hover{color:var(--text);background:var(--card);}
  .stb.on{color:#e8edf5;background:rgba(232,237,245,.07);border-color:rgba(232,237,245,.18);}
  .ov{position:fixed;inset:0;background:rgba(0,0,0,.75);z-index:200;display:flex;align-items:flex-start;justify-content:center;padding:calc(env(safe-area-inset-top) + 16px) 16px 24px;overflow-y:auto;-webkit-overflow-scrolling:touch;}  
  .modal{background:var(--card);border:1px solid var(--border2);border-radius:12px;width:100%;max-width:500px;max-height:none;overflow:visible;box-shadow:0 30px 70px rgba(0,0,0,.6);margin-bottom:24px;}  
  .mhdr{padding:18px 20px 14px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border);}  
  .mtitle{font-family:var(--fd);font-size:17px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--blue);}  
  .mbody{padding:16px 20px 20px;display:flex;flex-direction:column;gap:12px;}  
  .xb{background:none;border:none;color:var(--muted);cursor:pointer;font-size:18px;padding:2px 6px;border-radius:4px;line-height:1;}  
  .xb:hover{color:var(--text);}  
  .f{display:flex;flex-direction:column;gap:5px;}  
  .f label{font-family:var(--fm);font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:1px;}  
  .f input,.f select,.f textarea{background:var(--surface);border:1px solid var(--border2);border-radius:6px;color:var(--text);font-family:var(--fb);font-size:13px;padding:9px 11px;outline:none;transition:border-color .15s;width:100%;}  
  .f input:focus,.f select:focus,.f textarea:focus{border-color:var(--blue);}  
  .f textarea{resize:vertical;min-height:70px;}  
  .f select option{background:var(--card);}  
  .r2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}  
  .frow{display:flex;gap:8px;justify-content:flex-end;margin-top:6px;}  
  .empty{text-align:center;padding:40px 20px;color:var(--muted);font-family:var(--fm);font-size:12px;line-height:1.8;white-space:pre-line;}  
  .rrow{display:flex;justify-content:space-between;align-items:center;padding:10px 13px;border-bottom:1px solid var(--border);}  
  .rrow:last-child{border-bottom:none;}  
  .plrow{display:flex;justify-content:space-between;padding:7px 0;border-bottom:1px solid var(--border);font-size:13px;}  
  .plrow:last-child{border-bottom:none;}  
  .chip{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-family:var(--fd);font-weight:600;cursor:pointer;border:1px solid var(--border);color:var(--muted);transition:all .15s;}  
  .chip.on{border-color:var(--blue) !important;color:#000000 !important;background:var(--blue) !important;font-weight:700 !important;}  
  .mono{font-family:var(--fm);}  
  .notes-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;}  
  .nc{background:var(--card2);border:1px solid var(--border);border-radius:8px;padding:13px;cursor:pointer;transition:border-color .15s;}  
  .nc:hover{border-color:var(--border2);}  
  .nc-t{font-family:var(--fd);font-weight:700;font-size:14px;margin-bottom:5px;}  
  .nc-b{font-size:12px;color:var(--muted2);white-space:pre-wrap;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;}  
  .nc-m{font-family:var(--fm);font-size:10px;color:var(--muted);margin-top:8px;display:flex;align-items:center;justify-content:space-between;}  
  .jcard{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:14px 16px;cursor:pointer;transition:border-color .15s;}  
  .jcard:hover{border-color:var(--border2);}  
  .fab{position:fixed;bottom:24px;right:20px;z-index:150;display:flex;flex-direction:column;align-items:flex-end;gap:10px;}  
  .fab-main{width:52px;height:52px;border-radius:50%;background:var(--blue);border:none;color:#000;font-size:24px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(56,189,248,.4);transition:all .2s;flex-shrink:0;}  
  .fab-main:hover{background:#7dd3fc;transform:scale(1.08);}  
  .fab-menu{display:flex;flex-direction:column;gap:6px;align-items:flex-end;}  
  .fab-item{display:flex;align-items:center;gap:8px;cursor:pointer;}  
  .fab-label{background:var(--card2);border:1px solid var(--border2);border-radius:6px;padding:5px 12px;font-family:var(--fd);font-size:13px;font-weight:700;letter-spacing:1px;color:var(--text);white-space:nowrap;}  
  .fab-dot{width:36px;height:36px;border-radius:50%;background:var(--blue);border:none;color:#000;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;}  
  .photo-thumb{width:60px;height:60px;border-radius:6px;object-fit:cover;border:1px solid var(--border);cursor:pointer;}  
  .photo-add{width:60px;height:60px;border-radius:6px;border:1px dashed var(--border2);background:var(--surface);display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--muted);font-size:22px;transition:border-color .15s;}  
  .photo-add:hover{border-color:var(--blue);color:var(--blue);}  

@media(max-width:768px){
.f input,.f select,.f textarea,
input,select,textarea{
font-size:16px !important;
line-height:1.25;
}
.auth-input,.lock-input{
font-size:16px !important;
}
}

@media(max-width:640px){
.stats{grid-template-columns:1fr 1fr;}
.r2{grid-template-columns:1fr;}
.hm{display:none;}
.notes-grid{grid-template-columns:1fr;}
.hdr-top{align-items:flex-end;gap:8px;}
.logo-big{font-size:22px;letter-spacing:2px;}
.logo-int{font-size:10px;letter-spacing:1.5px;}
.logo-tag{font-size:8px;letter-spacing:1.5px;flex-basis:108px;max-width:108px;margin-left:6px;}
.hdr-actions{flex-basis:52vw;max-width:52vw;}
}  
@media(min-width:900px){
.stats{grid-template-columns:repeat(5,1fr);}
}
/* ── Lock Screen ── */  
.lock-screen{min-height:100vh;background:radial-gradient(ellipse 60% 30% at 10% 0%,rgba(232,237,245,.03) 0%,transparent 55%),#080a10;display:flex;align-items:center;justify-content:center;padding:24px;}  
.lock-card{background:#111520;border:1px solid #1c2236;border-radius:16px;padding:36px 28px;width:100%;max-width:360px;display:flex;flex-direction:column;align-items:center;gap:20px;box-shadow:0 30px 80px rgba(0,0,0,.6);}  
.lock-logo{font-family:'Barlow Condensed',sans-serif;font-weight:900;font-size:48px;letter-spacing:8px;color:#e8edf5;text-shadow:0 0 30px rgba(232,237,245,.2);line-height:1;}  
.lock-sub{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:5px;color:rgba(232,237,245,.3);text-transform:uppercase;margin-top:-10px;}  
.lock-label{font-family:'IBM Plex Mono',monospace;font-size:10px;color:#4f6080;text-transform:uppercase;letter-spacing:2px;align-self:flex-start;margin-bottom:-12px;}  
.lock-input{width:100%;background:#0d1018;border:1px solid #28334f;border-radius:8px;color:#dde3f0;font-family:'IBM Plex Mono',monospace;font-size:18px;letter-spacing:4px;padding:14px 16px;outline:none;text-align:center;transition:border-color .15s;}  
.lock-input:focus{border-color:#38bdf8;}  
.lock-btn{width:100%;background:#38bdf8;color:#000;border:none;border-radius:8px;padding:14px;font-family:'Barlow Condensed',sans-serif;font-size:17px;font-weight:800;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:background .15s;}  
.lock-btn:hover{background:#7dd3fc;}  
.lock-btn:active{background:#0ea5e9;}  
.lock-err{color:#ef4444;font-family:'IBM Plex Mono',monospace;font-size:12px;text-align:center;min-height:16px;}  
.lock-link{color:#4f6080;font-family:'IBM Plex Mono',monospace;font-size:11px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}  
.lock-link:hover{color:#7a90b8;}  
.setup-hint{font-size:12px;color:#7a90b8;text-align:center;line-height:1.6;font-family:'Barlow',sans-serif;}  
.recovery-box{background:#0d1018;border:1px solid #28334f;border-radius:8px;padding:14px 16px;font-family:'IBM Plex Mono',monospace;font-size:15px;letter-spacing:3px;color:#f59e0b;text-align:center;width:100%;}  
.sync-banner{border-radius:8px;padding:10px 14px;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:opacity .15s;}
/* v12.3.1: Tax Compact = 2-col dense grid (more content, smaller cards).
Spread = single full-width column (current default, more room per card). */
.tax-grid.tax-compact{display:grid !important;grid-template-columns:repeat(2,1fr) !important;gap:8px !important;}
.tax-grid.tax-compact > div > div{padding:10px 11px !important;margin-bottom:7px !important;border-radius:6px !important;}
.tax-grid.tax-compact .plrow{padding:3px 0 !important;}
.tax-grid.tax-compact .plrow > span{font-size:10px !important;}
.tax-grid.tax-compact .plrow > span.mono{font-size:10px !important;}
.tax-grid.tax-compact > div > div > div:first-child{margin-bottom:5px !important;font-size:8px !important;letter-spacing:.8px !important;}
.tax-grid.tax-compact .sc-val{font-size:18px !important;}
.tax-grid.tax-compact .sc-val.sm{font-size:13px !important;}
.sync-banner:active{opacity:.75;}
.sync-banner-left{display:flex;align-items:center;gap:8px;}
.sync-banner-label{font-family:var(-fd);font-weight:700;font-size:14px;}
.sync-banner-right{display:flex;align-items:center;gap:6px;}
.sync-banner-meta{font-family:var(-fm);font-size:11px;}
.sync-banner-tap{font-family:var(-fm);font-size:10px;opacity:.6;}
@keyframes big-pulse{0%,100%{opacity:1;}50%{opacity:.25;}}
.sync-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0;}
.sync-dot-pulse{animation:big-pulse 1.1s ease-in-out infinite;}

/* ── v11.14 Secret Menu ── */
.hdr-brand{cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.hdr-brand:active{opacity:.85;}
@keyframes big-logo-glow{0%,100%{opacity:.55;text-shadow:0 0 12px rgba(56,189,248,.1);}50%{opacity:1;text-shadow:0 0 28px rgba(56,189,248,.95),0 0 55px rgba(56,189,248,.35);}}
.hdr-brand.pressing .logo-big{animation:big-logo-glow .6s ease-in-out infinite;}
.hdr-brand.pressing .logo-int{animation:big-logo-glow .6s ease-in-out infinite;}
.secret-menu-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.secret-tile{background:var(-card2);border:1px solid var(-border);border-radius:10px;padding:16px 14px;cursor:pointer;transition:all .15s;display:flex;flex-direction:column;gap:4px;text-align:left;font-family:var(-fb);color:var(-text);-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.secret-tile:hover{border-color:var(-blue);background:var(-card);}
.secret-tile:active{transform:scale(.98);}
.secret-tile-icon{font-size:22px;line-height:1;margin-bottom:4px;}
.secret-tile-title{font-family:var(-fd);font-weight:800;font-size:14px;letter-spacing:1.5px;text-transform:uppercase;color:var(-text);}
.secret-tile-sub{font-family:var(-fm);font-size:10px;color:var(-muted);letter-spacing:.5px;line-height:1.4;}
.secret-back{background:none;border:none;color:var(-muted);font-family:var(-fm);font-size:11px;letter-spacing:1px;cursor:pointer;padding:0 0 10px;display:flex;align-items:center;gap:6px;}
.secret-back:hover{color:var(-text);}
@media(max-width:480px){.secret-menu-grid{grid-template-columns:1fr;}}
/* ── Lifetime Stats (ESPN-style) ── */
.ls-hero{background:linear-gradient(135deg,rgba(56,189,248,.08) 0%,rgba(56,189,248,.02) 100%);border:1px solid var(-border2);border-radius:12px;padding:18px 16px;margin-bottom:16px;text-align:center;}
.ls-hero-eyebrow{font-family:var(-fm);font-size:10px;color:var(-blue);letter-spacing:3px;text-transform:uppercase;margin-bottom:6px;}
.ls-hero-name{font-family:var(-fd);font-weight:900;font-size:22px;letter-spacing:2px;color:var(-text);text-transform:uppercase;line-height:1.1;}
.ls-hero-title{font-family:var(-fm);font-size:11px;color:var(-muted2);margin-top:4px;letter-spacing:.5px;}
.ls-stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin-bottom:16px;}
.ls-stat{background:var(-card);border:1px solid var(-border);border-radius:10px;padding:14px 12px;position:relative;overflow:hidden;transition:all .15s;cursor:pointer;text-align:left;font-family:var(-fb);color:var(-text);display:block;border-left-width:3px;border-left-color:var(-ls-c,var(-blue));}
.ls-stat:hover{border-color:var(-border2);border-left-color:var(-ls-c,var(-blue));transform:translateY(-1px);}
.ls-stat-lbl{font-family:var(-fm);font-size:9px;color:var(-muted);text-transform:uppercase;letter-spacing:1.5px;margin-bottom:6px;}
.ls-stat-val{font-family:var(-fd);font-weight:900;font-size:26px;line-height:1;color:var(-text);}
.ls-stat-val.sm{font-size:18px;}
.ls-stat-sub{font-size:10px;color:var(-muted2);margin-top:4px;font-family:var(-fm);letter-spacing:.5px;}
.ls-stat-tap{position:absolute;top:8px;right:10px;font-size:9px;color:var(-muted);font-family:var(-fm);letter-spacing:1px;}
.ls-section-hdr{font-family:var(-fd);font-weight:800;font-size:13px;letter-spacing:2px;text-transform:uppercase;color:var(-blue);margin:22px 0 10px;display:flex;justify-content:space-between;align-items:center;}
.ls-venue-card{background:var(-card);border:1px solid var(-border);border-radius:8px;padding:12px 14px;margin-bottom:8px;cursor:pointer;transition:border-color .15s;}
.ls-venue-card:hover{border-color:var(-border2);}
.ls-venue-name{font-family:var(-fd);font-weight:800;font-size:15px;letter-spacing:1px;}
.ls-venue-meta{font-family:var(-fm);font-size:11px;color:var(-muted2);margin-top:3px;display:flex;gap:10px;flex-wrap:wrap;}
.ls-venue-scopes{margin-top:6px;display:flex;gap:4px;flex-wrap:wrap;}
.ls-scope-chip{font-family:var(-fm);font-size:9px;color:var(-muted2);background:var(-card2);border:1px solid var(-border);border-radius:10px;padding:2px 7px;letter-spacing:.5px;}
.ls-chip-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
.ls-chip{display:inline-flex;align-items:center;gap:4px;padding:7px 14px;border-radius:18px;font-size:13px;font-family:var(-fd);font-weight:700;cursor:pointer;border:1px solid var(-border);color:var(-muted2);transition:all .12s;background:var(-surface);user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;min-height:34px;letter-spacing:.5px;-webkit-appearance:none;appearance:none;}
.ls-chip:hover{border-color:var(-border2);color:var(-text);}
.ls-chip:active{transform:scale(.96);}
.ls-chip.on{border-color:var(-blue) !important;color:#000000 !important;background:var(-blue) !important;box-shadow:inset 0 0 0 1px var(-blue) !important;font-weight:700 !important;}
.ls-chip.on::before{content:'✓';font-size:12px;font-weight:800;}
.ls-empty{text-align:center;padding:30px 20px;color:var(-muted);font-family:var(-fm);font-size:12px;line-height:1.8;}
.ls-tab-row{display:flex;gap:6px;margin-bottom:14px;border-bottom:1px solid var(-border);padding-bottom:0;}
.ls-tab{background:none;border:none;color:var(-muted);font-family:var(-fd);font-size:13px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;padding:8px 4px;cursor:pointer;border-bottom:2px solid transparent;transition:all .15s;}
.ls-tab.on{color:var(-blue);border-bottom-color:var(-blue);}
.ls-tab:hover{color:var(-text);}
.changelog-entry{background:var(-card);border:1px solid var(-border);border-radius:8px;padding:12px 14px;margin-bottom:8px;}
.changelog-ver{font-family:var(-fd);font-weight:800;font-size:14px;letter-spacing:1.5px;color:var(-blue);margin-bottom:2px;}
.changelog-date{font-family:var(-fm);font-size:10px;color:var(-muted);letter-spacing:1px;margin-bottom:8px;}
.changelog-notes{font-size:12px;color:var(-muted2);line-height:1.7;white-space:pre-line;}
.appinfo-row{display:flex;justify-content:space-between;padding:9px 0;border-bottom:1px solid var(-border);font-size:13px;}
.appinfo-row:last-child{border-bottom:none;}
.appinfo-lbl{font-family:var(-fm);font-size:11px;color:var(-muted);text-transform:uppercase;letter-spacing:1px;}
.appinfo-val{font-family:var(-fm);font-size:12px;color:var(-text);}
/* ── v11.15 Back button + Rolodex + Debug ── */
.mhdr-back{background:none;border:1px solid var(-border);border-radius:6px;color:var(-muted);font-family:var(-fd);font-size:12px;font-weight:700;letter-spacing:1px;cursor:pointer;padding:5px 10px 5px 7px;margin-right:10px;transition:all .15s;}
.mhdr-back:hover{color:var(-text);border-color:var(-border2);}
.mhdr-back:active{transform:scale(.96);}
.mhdr-with-back{display:flex;align-items:center;gap:6px;}
.rolo-card{background:var(-card);border:1px solid var(-border);border-radius:10px;padding:14px 16px;margin-bottom:10px;cursor:pointer;transition:border-color .15s;}
.rolo-card:hover{border-color:var(-border2);}
.rolo-name{font-family:var(-fd);font-weight:800;font-size:16px;letter-spacing:1px;margin-bottom:2px;}
.rolo-loc{font-family:var(-fm);font-size:11px;color:var(-muted2);margin-bottom:8px;letter-spacing:.5px;}
.rolo-kv{display:grid;grid-template-columns:80px 1fr;gap:6px 10px;font-size:12px;margin-top:6px;}
.rolo-kv-lbl{font-family:var(-fm);font-size:10px;color:var(-muted);text-transform:uppercase;letter-spacing:1px;padding-top:2px;}
.rolo-kv-val{color:var(-text);line-height:1.5;white-space:pre-wrap;word-break:break-word;}
.rolo-badge{display:inline-block;font-family:var(-fm);font-size:9px;background:var(-bdim);color:var(-blue);border:1px solid rgba(56,189,248,.3);border-radius:10px;padding:2px 8px;letter-spacing:.5px;margin-right:4px;}
.dbg-section{margin-bottom:18px;}
.dbg-section-hdr{font-family:var(-fd);font-weight:800;font-size:13px;letter-spacing:2px;text-transform:uppercase;color:var(-blue);margin-bottom:6px;}
.dbg-kv{display:flex;justify-content:space-between;align-items:center;padding:7px 0;border-bottom:1px solid var(-border);font-size:12px;gap:12px;}
.dbg-kv:last-child{border-bottom:none;}
.dbg-kv-key{font-family:var(-fm);font-size:11px;color:var(-muted2);letter-spacing:.5px;word-break:break-all;}
.dbg-kv-val{font-family:var(-fm);font-size:12px;color:var(-text);text-align:right;white-space:nowrap;}
.dbg-bar{height:4px;background:var(-surface);border-radius:2px;overflow:hidden;margin-top:4px;}
.dbg-bar-fill{height:100%;background:var(-blue);transition:width .3s;}
.dbg-total{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;background:var(-card2);border:1px solid var(-border2);border-radius:8px;margin-bottom:10px;font-family:var(-fm);font-size:12px;}
.dbg-total-lbl{color:var(-muted);letter-spacing:1px;text-transform:uppercase;font-size:10px;}
.dbg-total-val{font-family:var(-fd);font-weight:800;font-size:18px;color:var(-text);letter-spacing:1px;}
/* ── v11.16 Phase 3 styles ── */
/* v12.6.1: switched demo-banner + stuck-banner from position:sticky to position:fixed.
v12.7.3: pinned banner to an explicit height so iOS Safari can't inflate it from
line-height or emoji rendering (was 2-3x intended size).
v12.7.4: moved the banner-clearance offset from .app padding-top to .hdr padding-top.
v12.7.3 still showed the brand row hidden behind the banner - .app's padding-top
wasn't pushing children down on iOS as expected (likely a flex-column layout quirk).
Now .hdr itself carries the offset, which guarantees the brand row renders below the
banner no matter what the parent layout does. .hdr stays at top:0 sticky; the internal
padding does the spacing. Same behavior at rest and when stuck. */
.app{-banner-h:0px;}
.app.demo-on,.app.stuck-on{-banner-h:calc(env(safe-area-inset-top) + 28px);}
.demo-banner,.stuck-banner{position:fixed;top:0;left:0;right:0;z-index:300;height:calc(env(safe-area-inset-top) + 28px);box-sizing:border-box;padding:0 12px;padding-top:env(safe-area-inset-top);display:flex;align-items:center;justify-content:center;font-family:var(-fd);font-weight:800;font-size:12px;line-height:1;letter-spacing:2px;text-transform:uppercase;cursor:pointer;border-bottom:1px solid rgba(0,0,0,.2);-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.demo-banner{background:linear-gradient(90deg,#f97316,#f59e0b);color:#000;}
.stuck-banner{background:linear-gradient(90deg,#dc2626,#ef4444);color:#fff;z-index:299;letter-spacing:1.5px;border-bottom-color:rgba(0,0,0,.3);}
.demo-banner:hover{filter:brightness(1.05);}
/* v12.6.1: iOS text-color inheritance safeguard. .tw td and .jcard had no explicit color
and relied on inheritance from .app - which fails on iOS Safari for bold text in table
cells and cards (renders black on dark background). Inline colors like var(-muted) /
var(-green) / var(-red) still win on specificity, so this only affects the
previously-unset bold name rows. .nc-t (note card title) gets the same treatment. */
.tw td{color:var(-text);}
.jcard{color:var(-text);}
.nc-t{color:var(-text);}
.ot-hero{background:linear-gradient(135deg,rgba(34,197,94,.1) 0%,rgba(34,197,94,.02) 100%);border:1px solid var(-border2);border-radius:12px;padding:18px 16px;margin-bottom:14px;text-align:center;}
.ot-hero.ot-warn{background:linear-gradient(135deg,rgba(245,158,11,.12) 0%,rgba(245,158,11,.02) 100%);border-color:var(-amber);}
.ot-hero.ot-active{background:linear-gradient(135deg,rgba(239,68,68,.14) 0%,rgba(239,68,68,.02) 100%);border-color:var(-red);}
.ot-status{font-family:var(-fm);font-size:10px;letter-spacing:3px;text-transform:uppercase;margin-bottom:6px;color:var(-green);}
.ot-hero.ot-warn .ot-status{color:var(-amber);}
.ot-hero.ot-active .ot-status{color:var(-red);}
.ot-big{font-family:var(-fd);font-weight:900;font-size:42px;line-height:1;color:var(-text);letter-spacing:1px;}
.ot-sub{font-family:var(-fm);font-size:11px;color:var(-muted2);margin-top:6px;letter-spacing:.5px;}
.ot-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px;}
.ot-tile{background:var(-card);border:1px solid var(-border);border-radius:8px;padding:12px 14px;}
.ot-tile-lbl{font-family:var(-fm);font-size:10px;color:var(-muted);text-transform:uppercase;letter-spacing:1px;margin-bottom:4px;}
.ot-tile-val{font-family:var(-fd);font-weight:800;font-size:22px;color:var(-text);line-height:1;}
.ot-tile-sub{font-family:var(-fm);font-size:10px;color:var(-muted2);margin-top:4px;}
.ot-dash-strip{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;background:var(-card2);border:1px solid var(-border);border-bottom:none;font-family:var(-fm);font-size:12px;cursor:pointer;width:100%;text-align:left;color:var(-text);-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.ot-dash-strip:active{opacity:.75;}
.ot-dash-strip.ot-warn{border-color:var(-amber) !important;background:rgba(245,158,11,.1) !important;}
.ot-dash-strip.ot-active{border-color:var(-red) !important;background:rgba(239,68,68,.12) !important;}
.ot-dash-lbl{font-family:var(-fd);font-weight:700;font-size:13px;letter-spacing:1px;color:var(-text);}
.ot-dash-strip.ot-warn .ot-dash-lbl{color:var(-amber) !important;}
.ot-dash-strip.ot-active .ot-dash-lbl{color:var(-red) !important;}
.flag-row{display:flex;justify-content:space-between;align-items:center;padding:14px 14px;background:var(-card);border:1px solid var(-border);border-radius:8px;margin-bottom:8px;gap:12px;}
.flag-info{flex:1;min-width:0;}
.flag-title{font-family:var(-fd);font-weight:700;font-size:14px;letter-spacing:1px;color:var(-text);margin-bottom:3px;}
.flag-desc{font-family:var(-fm);font-size:11px;color:var(-muted2);line-height:1.5;}
.flag-toggle{flex-shrink:0;width:52px;height:30px;border-radius:15px;background:var(-surface);border:1px solid var(-border2);cursor:pointer;position:relative;transition:background .2s,border-color .2s;padding:0;-webkit-tap-highlight-color:transparent;touch-action:manipulation;}
.flag-toggle-knob{position:absolute !important;top:3px !important;left:3px !important;width:22px !important;height:22px !important;border-radius:50% !important;background:var(-muted);transition:left .2s,background .2s;pointer-events:none;display:block !important;}
.flag-toggle.on{background:var(-blue) !important;border-color:var(-blue) !important;}
.flag-toggle.on .flag-toggle-knob{left:27px !important;background:#ffffff !important;box-shadow:0 0 0 1px rgba(255,255,255,.2) !important;}
/* v12.2 overdue red flag toggle (off = muted grey instead of alarm red).
Targets badges and inline color uses where the value matches the overdue red. */
.app.overdue-muted .bdg[style*="rgb(239, 68, 68)"],
.app.overdue-muted .bdg[style*="#ef4444"]{
color:#7a90b8 !important;
border-color:#7a90b8 !important;
}
/* iPhone Home Screen safe-area fix */
html, body {
  padding-top: 0 !important;
}
#root {
  padding-top: 0 !important;
}
.hdr {
  padding-top: calc(env(safe-area-inset-top) + 8px) !important;
}
/* v12.7.10: padding-top alone was not enough. The .hdr is sticky top:0, so the
   element itself parks at y=0 behind the fixed banner (z-index 300 > 100). Even
   with padding pushing content down, iOS could show the .hdr background bleeding
   under the banner on certain scroll positions. The correct fix is also moving the
   sticky parking point to var(--banner-h) so the .hdr element itself starts below
   the banner. padding-top reverts to the base 8px since we're no longer using it
   to clear the banner height. */
.app.demo-on .hdr, .app.stuck-on .hdr {
  top: var(--banner-h) !important;
  padding-top: 8px !important;
}
.hdr-top {
  height: auto !important;
  min-height: 60px !important;
  padding-top: 6px !important;
  padding-bottom: 6px !important;
  align-items: center !important;
}
.nav {
  padding-top: 8px !important;
}
 #lock-root{min-height:100vh;background:#080a10;}
 .lock-screen{min-height:100vh;background:radial-gradient(ellipse 60% 30% at 10% 0%,rgba(232,237,245,.03) 0%,transparent 55%),#080a10;display:flex;align-items:center;justify-content:center;padding:24px;}
 .lock-card{background:#111520;border:1px solid #1c2236;border-radius:16px;padding:32px 24px;width:100%;max-width:340px;display:flex;flex-direction:column;align-items:center;gap:18px;box-shadow:0 30px 80px rgba(0,0,0,.6);}
 .lock-logo{font-family:'Russo One',sans-serif;font-weight:400;font-size:48px;letter-spacing:6px;color:#38bdf8;text-shadow:0 0 30px rgba(56,189,248,.3);line-height:1;animation:big-logo-glow 2.5s ease-in-out infinite;}
 .lock-sub{font-family:'Barlow Condensed',sans-serif;font-size:11px;font-weight:600;letter-spacing:5px;color:rgba(232,237,245,.3);text-transform:uppercase;margin-top:-10px;}
 .pin-dots{display:flex;gap:14px;justify-content:center;}
 .pin-dot{width:14px;height:14px;border-radius:50%;background:#0d1018;border:1px solid #28334f;transition:background .15s,box-shadow .15s;}
 .pin-dot.filled{background:#38bdf8;box-shadow:0 0 14px rgba(56,189,248,.5);}
 .keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%;}
 .kbtn{background:#0d1018;border:1px solid #1c2236;border-radius:8px;color:#dde3f0;font-family:'Barlow Condensed',sans-serif;font-weight:800;font-size:24px;letter-spacing:1px;padding:16px 0;cursor:pointer;transition:background .1s,border-color .1s,transform .08s;text-align:center;user-select:none;-webkit-user-select:none;}
 .kbtn:hover{}
 .kbtn:active{}
 .kbtn{touch-action:manipulation;-webkit-tap-highlight-color:transparent;}
 .kbtn.soft{font-size:14px;font-weight:700;color:#4f6080;letter-spacing:2px;}
 .lock-err{color:#ef4444;font-family:'IBM Plex Mono',monospace;font-size:12px;text-align:center;min-height:16px;width:100%;}
 .lock-warn{color:#f59e0b;font-family:'IBM Plex Mono',monospace;font-size:11px;text-align:center;line-height:1.6;}
 .lock-link{color:#4f6080;font-family:'IBM Plex Mono',monospace;font-size:11px;cursor:pointer;text-decoration:underline;text-underline-offset:3px;}
 .lock-link:hover{color:#7a90b8;}
 .lock-input{width:100%;background:#0d1018;border:1px solid #28334f;border-radius:8px;color:#dde3f0;font-family:'IBM Plex Mono',monospace;font-size:18px;letter-spacing:4px;padding:14px 16px;outline:none;text-align:center;transition:border-color .15s;}
 .lock-input:focus{border-color:#38bdf8;}
 .lock-btn{width:100%;background:#38bdf8;color:#000;border:none;border-radius:8px;padding:14px;font-family:'Barlow Condensed',sans-serif;font-size:17px;font-weight:800;letter-spacing:2px;text-transform:uppercase;cursor:pointer;transition:background .15s;}
 .lock-btn:hover{background:#7dd3fc;}
 .recovery-box{background:#0d1018;border:1px solid #28334f;border-radius:8px;padding:14px 16px;font-family:'IBM Plex Mono',monospace;font-size:15px;letter-spacing:3px;color:#f59e0b;text-align:center;width:100%;}
 .setup-hint{font-size:12px;color:#7a90b8;text-align:center;line-height:1.6;font-family:'Barlow',sans-serif;}
