:root{
    --wood-dark:#241209; --wood:#3C2415; --wood-light:#5C3A24;
    --amber:#E8A33D; --amber-deep:#C17817; --amber-glow:#FFC15E;
    --foam:#F7EFDD; --foam-dim:#E4D9BE; --copper:#B5713A;
    --alert:#C1443C; --safe:#7C9A5E; --ink:#2A1B10;
  }
  *{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
  html,body{margin:0;padding:0;}
  body{
    background:radial-gradient(circle at 50% -10%, var(--wood-light) 0%, var(--wood) 45%, var(--wood-dark) 100%);
    color:var(--foam); font-family:'Work Sans', sans-serif;
    min-height:100vh; display:flex; justify-content:center;
    padding:env(safe-area-inset-top) 0 calc(78px + env(safe-area-inset-bottom)) 0;
  }
  .app{width:100%; max-width:460px; padding:20px 18px 0 18px;}
  header{display:flex; align-items:center; justify-content:space-between; margin-bottom:6px;}
  h1{font-family:'Fraunces', serif; font-weight:700; font-size:1.5rem; margin:0; color:var(--amber-glow);}
  .nav-btn{background:none; border:1px solid rgba(247,239,221,0.25); color:var(--foam-dim); border-radius:20px; padding:7px 14px; font-size:0.8rem; cursor:pointer;}
  .nav-btn:active{background:rgba(247,239,221,0.1);}
  .screen-title{font-family:'Fraunces',serif; font-weight:600; font-size:1.25rem; color:var(--amber-glow); margin:2px 0 14px 0;}

  /* bottom tab bar */
  .tabbar{position:fixed; left:0; right:0; bottom:0; z-index:90;
    display:flex; justify-content:center;
    background:rgba(28,14,7,0.94); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
    border-top:1px solid rgba(247,239,221,0.12);
    padding-bottom:env(safe-area-inset-bottom);}
  .tabbar-inner{display:flex; width:100%; max-width:460px;}
  .tab{flex:1; background:none; border:none; color:var(--foam-dim);
    display:flex; flex-direction:column; align-items:center; gap:3px;
    font-size:0.6rem; font-weight:600; letter-spacing:0.02em; cursor:pointer; padding:9px 0 7px 0; position:relative;}
  .tab .ic{font-size:1.3rem; line-height:1; filter:grayscale(0.4) opacity(0.75);}
  .tab.active{color:var(--amber-glow);}
  .tab.active .ic{filter:none;}
  .tab-badge{position:absolute; top:5px; right:calc(50% - 20px); min-width:16px; height:16px; padding:0 4px;
    background:var(--alert); color:#fff; border-radius:9px; font-size:0.62rem; font-weight:700;
    display:none; align-items:center; justify-content:center; line-height:16px;}
  .tab-badge.show{display:flex;}

  .profile{background:rgba(0,0,0,0.22); border:1px solid rgba(247,239,221,0.12); border-radius:14px; padding:16px; margin-bottom:16px;}
  .profile-row{display:flex; gap:12px; flex-wrap:wrap;}
  .field{display:flex; flex-direction:column; gap:4px; flex:1; min-width:96px;}
  .field label{font-size:0.7rem; color:var(--foam-dim); text-transform:uppercase; letter-spacing:0.06em;}
  .field input, .field select{background:var(--wood-dark); border:1px solid rgba(247,239,221,0.2); color:var(--foam); border-radius:8px; padding:8px 10px; font-family:'JetBrains Mono', monospace; font-size:0.95rem; width:100%;}
  .profile-actions{display:flex; justify-content:flex-end; margin-top:12px; align-items:center;}
  .profile-toggle{background:none; border:1px solid rgba(247,239,221,0.25); color:var(--foam-dim); border-radius:20px; padding:5px 12px; font-size:0.76rem; cursor:pointer;}
  .profile-hint{font-size:0.72rem; color:rgba(247,239,221,0.5); line-height:1.5; text-align:center; padding:0 8px;}

  .hero{display:flex; align-items:center; gap:18px; background:rgba(0,0,0,0.18); border:1px solid rgba(247,239,221,0.1); border-radius:20px; padding:20px 16px; margin-bottom:18px;}
  .glass-wrap{width:84px; flex-shrink:0;}
  .bac-info{flex:1; min-width:0;}
  .who{font-size:0.78rem; color:var(--foam-dim); margin-bottom:2px;}
  .bac-number{font-family:'Fraunces', serif; font-weight:600; font-size:2.9rem; line-height:1; color:var(--amber-glow); display:flex; align-items:baseline; gap:6px;}
  .bac-number span{font-size:1.1rem; font-family:'Work Sans',sans-serif; color:var(--foam-dim); font-weight:500;}
  .status-label{margin-top:6px; font-size:0.92rem; font-weight:600;}
  .status-sub{margin-top:2px; font-size:0.76rem; color:var(--foam-dim); line-height:1.35;}

  svg.glass{overflow:visible; display:block;}
  .foam-bubble{animation:rise 3.4s linear infinite; opacity:0.7;}
  @keyframes rise{0%{transform:translateY(0); opacity:0;}15%{opacity:0.8;}100%{transform:translateY(-46px); opacity:0;}}

  .loc-chip{display:flex; align-items:center; gap:10px; width:100%; text-align:left; cursor:pointer;
    background:rgba(0,0,0,0.18); border:1px solid rgba(247,239,221,0.14); border-radius:12px;
    padding:10px 14px; margin-bottom:14px; color:var(--foam);}
  .loc-chip.on{border-color:rgba(232,163,61,0.55); background:rgba(232,163,61,0.1);}
  .loc-chip .loc-ic{font-size:1.2rem;}
  .loc-chip .loc-txt{flex:1; min-width:0;}
  .loc-chip .loc-title{font-size:0.86rem; font-weight:600;}
  .loc-chip .loc-sub{font-size:0.7rem; color:var(--foam-dim); line-height:1.3;}
  .loc-switch{width:42px; height:24px; border-radius:14px; background:rgba(247,239,221,0.18); position:relative; flex-shrink:0; transition:background 0.2s;}
  .loc-switch::after{content:''; position:absolute; top:2px; left:2px; width:20px; height:20px; border-radius:50%; background:var(--foam); transition:transform 0.2s;}
  .loc-chip.on .loc-switch{background:var(--amber-deep);}
  .loc-chip.on .loc-switch::after{transform:translateX(18px);}

  .add-row{display:flex; gap:10px; margin-bottom:10px;}
  .btn-primary{flex:1; background:linear-gradient(180deg, var(--amber) 0%, var(--amber-deep) 100%); color:var(--ink); border:none; border-radius:14px; padding:16px 10px; font-family:'Fraunces', serif; font-weight:700; font-size:1.05rem; cursor:pointer; box-shadow:0 3px 0 rgba(0,0,0,0.25), 0 6px 14px rgba(0,0,0,0.25);}
  .btn-primary:active{transform:translateY(2px); box-shadow:0 1px 0 rgba(0,0,0,0.25);}
  .btn-secondary{background:rgba(247,239,221,0.08); border:1px solid rgba(247,239,221,0.2); color:var(--foam); border-radius:14px; padding:16px 14px; font-size:0.85rem; cursor:pointer;}

  .link-row{margin-bottom:18px;}
  .link-btn{background:none; border:none; color:var(--amber-glow); font-size:0.82rem; cursor:pointer; text-decoration:underline; padding:2px 0;}

  .form-card{display:none; gap:10px; background:rgba(0,0,0,0.2); border-radius:14px; padding:14px; margin-bottom:18px; flex-wrap:wrap;}
  .form-card.open{display:flex;}
  .form-title{flex:1 1 100%; font-size:0.8rem; color:var(--foam-dim); text-transform:uppercase; letter-spacing:0.06em; margin-bottom:-2px;}
  .form-hint{flex:1 1 100%; font-size:0.72rem; color:var(--foam-dim); line-height:1.4; margin-top:-4px;}

  .section-label{font-size:0.75rem; text-transform:uppercase; letter-spacing:0.08em; color:var(--foam-dim); margin:4px 0 10px 2px;}
  .beer-list{display:flex; flex-direction:column; gap:8px; margin-bottom:20px;}
  .beer-item{display:flex; align-items:center; gap:12px; background:rgba(0,0,0,0.18); border:1px solid rgba(247,239,221,0.1); border-radius:12px; padding:10px 12px;}
  .beer-item.running{border-color:rgba(232,163,61,0.5); background:rgba(232,163,61,0.08);}
  .beer-icon{font-size:1.4rem;}
  .beer-meta{flex:1; min-width:0;}
  .beer-name{font-size:0.88rem; font-weight:600;}
  .beer-sub{font-size:0.72rem; color:var(--foam-dim);}
  .beer-timeblock{text-align:right; min-width:70px;}
  .beer-timer{font-family:'JetBrains Mono', monospace; font-size:0.98rem; color:var(--amber-glow);}
  .beer-timer.done{color:var(--foam-dim);}
  .beer-timelabel{font-size:0.62rem; color:var(--foam-dim); text-transform:uppercase; letter-spacing:0.05em;}
  .running .beer-timelabel{color:var(--amber);}
  .beer-del{background:none; border:none; color:var(--foam-dim); font-size:1.1rem; cursor:pointer; padding:4px 6px;}
  .empty{text-align:center; color:var(--foam-dim); font-size:0.82rem; padding:24px 10px; border:1px dashed rgba(247,239,221,0.15); border-radius:12px; margin-bottom:20px;}

  .stats{display:flex; gap:8px; margin-bottom:16px;}
  .stat{flex:1; background:rgba(0,0,0,0.2); border:1px solid rgba(247,239,221,0.1); border-radius:12px; padding:12px 8px; text-align:center;}
  .stat-val{font-family:'Fraunces', serif; font-weight:600; font-size:1.25rem; color:var(--amber-glow); line-height:1.1;}
  .stat-lbl{font-size:0.64rem; color:var(--foam-dim); text-transform:uppercase; letter-spacing:0.05em; margin-top:4px;}

  .archive-btn{width:100%; background:rgba(124,154,94,0.15); border:1px solid rgba(124,154,94,0.5); color:var(--foam); border-radius:14px; padding:14px; font-size:0.9rem; font-weight:600; cursor:pointer; margin-bottom:12px;}
  .archive-btn:active{background:rgba(124,154,94,0.28);}
  .reset-row{text-align:center; margin-bottom:16px;}
  .reset-row button{background:none; border:none; color:var(--foam-dim); font-size:0.76rem; text-decoration:underline; cursor:pointer;}
  .disclaimer{font-size:0.7rem; color:rgba(247,239,221,0.45); line-height:1.5; text-align:center; padding:0 6px;}

  /* modal + toast */
  .overlay{position:fixed; inset:0; background:rgba(0,0,0,0.55); display:none; align-items:center; justify-content:center; padding:24px; z-index:100;}
  .overlay.open{display:flex;}
  .modal{background:var(--wood); border:1px solid rgba(247,239,221,0.2); border-radius:16px; padding:20px; max-width:340px; width:100%; box-shadow:0 12px 40px rgba(0,0,0,0.5);}
  .modal-msg{font-size:0.95rem; line-height:1.45; margin-bottom:18px;}
  .modal-actions{display:flex; gap:10px;}
  .modal-actions button{flex:1; border-radius:10px; padding:12px; font-size:0.9rem; font-weight:600; cursor:pointer; border:none;}
  .modal-cancel{background:rgba(247,239,221,0.1); color:var(--foam); border:1px solid rgba(247,239,221,0.2)!important;}
  .modal-ok{background:linear-gradient(180deg, var(--amber) 0%, var(--amber-deep) 100%); color:var(--ink);}
  .modal-ok.danger{background:var(--alert); color:#fff;}
  .scan-drink-toggle{display:flex; align-items:center; gap:10px; margin-top:12px; padding:10px 12px; border:1px solid rgba(247,239,221,0.16); border-radius:12px; cursor:pointer;}
  .scan-drink-toggle input{position:absolute; opacity:0; pointer-events:none;}
  .scan-drink-switch{width:42px; height:24px; border-radius:14px; background:rgba(247,239,221,0.18); position:relative; flex-shrink:0; transition:background 0.2s;}
  .scan-drink-switch::after{content:''; position:absolute; top:2px; left:2px; width:20px; height:20px; border-radius:50%; background:var(--foam); transition:transform 0.2s;}
  .scan-drink-toggle input:checked + .scan-drink-switch{background:var(--amber-deep);}
  .scan-drink-toggle input:checked + .scan-drink-switch::after{transform:translateX(18px);}
  .scan-drink-toggle strong{display:block; font-size:0.84rem;}
  .scan-drink-toggle small{display:block; margin-top:2px; color:var(--foam-dim); font-size:0.68rem; line-height:1.3;}
  .toast{position:fixed; left:50%; bottom:32px; transform:translateX(-50%) translateY(20px); background:var(--ink); color:var(--foam); border:1px solid rgba(247,239,221,0.2); border-radius:24px; padding:12px 22px; font-size:0.9rem; font-weight:600; opacity:0; transition:all 0.25s; z-index:110; pointer-events:none;}
  .toast.show{opacity:1; transform:translateX(-50%) translateY(0);}

  /* history */
  #historyScreen{display:none;}
  .hist-empty{text-align:center; color:var(--foam-dim); font-size:0.85rem; padding:40px 16px; border:1px dashed rgba(247,239,221,0.15); border-radius:12px; line-height:1.5;}
  .hist-card{background:rgba(0,0,0,0.2); border:1px solid rgba(247,239,221,0.12); border-radius:14px; padding:14px 16px; margin-bottom:12px;}
  .hist-head{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:2px;}
  .hist-date{font-family:'Fraunces',serif; font-weight:600; font-size:1.05rem; color:var(--amber-glow);}
  .hist-time{font-size:0.72rem; color:var(--foam-dim);}
  .hist-totals{font-size:0.78rem; color:var(--foam-dim); margin-bottom:10px;}
  .hist-person{display:flex; justify-content:space-between; gap:10px; padding:7px 0; border-top:1px solid rgba(247,239,221,0.08); font-size:0.84rem;}
  .hist-person .hp-name{font-weight:600;}
  .hist-person .hp-stat{font-family:'JetBrains Mono',monospace; color:var(--foam-dim); font-size:0.78rem;}
  .hist-del{background:none; border:none; color:var(--alert); font-size:0.74rem; text-decoration:underline; cursor:pointer; margin-top:8px;}

  /* events */
  #eventsScreen{display:none;}
  #friendsScreen{display:none;}
  #profileScreen{display:none;}
  .ev-card{background:rgba(0,0,0,0.2); border:1px solid rgba(247,239,221,0.12); border-radius:14px; padding:14px 16px; margin-bottom:12px;}
  .ev-head{display:flex; justify-content:space-between; align-items:flex-start; gap:10px;}
  .ev-name{font-family:'Fraunces',serif; font-weight:600; font-size:1.05rem; color:var(--amber-glow);}
  .ev-meta{font-size:0.72rem; color:var(--foam-dim); margin-top:2px;}
  .ev-badge{font-size:0.62rem; text-transform:uppercase; letter-spacing:0.05em; padding:3px 9px; border-radius:10px; border:1px solid rgba(247,239,221,0.25); color:var(--foam-dim); white-space:nowrap;}
  .ev-actions{display:flex; gap:8px; margin-top:10px; flex-wrap:wrap;}
  .ev-actions button{background:rgba(247,239,221,0.08); border:1px solid rgba(247,239,221,0.2); color:var(--foam); border-radius:10px; padding:8px 12px; font-size:0.78rem; cursor:pointer;}
  .ev-stats{margin-top:4px; display:none;}
  .ev-stats.open{display:block;}
  .ev-row{display:flex; justify-content:space-between; gap:10px; padding:6px 0; border-top:1px solid rgba(247,239,221,0.08); font-size:0.84rem;}
  .ev-code{font-family:'JetBrains Mono',monospace; background:rgba(0,0,0,0.25); padding:2px 8px; border-radius:6px; letter-spacing:0.05em;}
  .ev-create-card{background:rgba(0,0,0,0.2); border-radius:14px; padding:14px 16px; margin-bottom:18px;}
  .mini-map{height:170px; border-radius:12px; overflow:hidden; margin-top:8px; flex:1 1 100%; border:1px solid rgba(247,239,221,0.15);}
  .friend-row{display:flex; justify-content:space-between; align-items:center; gap:10px; padding:10px 0; border-top:1px solid rgba(247,239,221,0.08); font-size:0.88rem;}
  .friend-row:first-child{border-top:none;}
  .friend-name{font-weight:600;}
  .friend-actions{display:flex; gap:6px; flex-wrap:wrap;}
  .add-friend-row{display:flex; gap:10px; margin-bottom:18px;}
  .add-friend-row input{flex:1; background:var(--wood-dark); border:1px solid rgba(247,239,221,0.2); color:var(--foam); border-radius:10px; padding:0 12px; font-family:'JetBrains Mono', monospace;}
  .type-toggle{display:flex; gap:8px; margin-bottom:12px;}
  .type-btn{flex:1; background:rgba(247,239,221,0.06); border:1px solid rgba(247,239,221,0.18); color:var(--foam-dim); border-radius:10px; padding:10px 8px; font-size:0.85rem; font-weight:600; cursor:pointer;}
  .type-btn.active{background:rgba(232,163,61,0.18); border-color:var(--amber); color:var(--amber-glow);}
  .ev-check{display:flex; align-items:center; gap:8px; font-size:0.85rem; color:var(--foam-dim); margin:12px 0;}
  .ev-check input{width:auto;}
  .ev-join-row{display:flex; gap:10px; margin-bottom:22px;}
  .ev-join-row input{flex:1; background:var(--wood-dark); border:1px solid rgba(247,239,221,0.2); color:var(--foam); border-radius:10px; padding:0 12px; font-family:'JetBrains Mono', monospace; text-transform:uppercase;}

  /* auth */
  #authScreen{display:flex; justify-content:center; padding-top:12vh;}
  .auth-card{background:rgba(0,0,0,0.22); border:1px solid rgba(247,239,221,0.12); border-radius:16px; padding:26px 22px; max-width:340px; width:100%;}
  .auth-card h1{text-align:center; margin:0 0 4px 0;}
  .auth-sub{font-size:0.82rem; color:var(--foam-dim); text-align:center; margin-bottom:18px; line-height:1.4;}
  .auth-card .field{margin-bottom:12px;}
  .auth-actions{display:flex; gap:10px; margin-top:16px;}
  .auth-error{color:var(--alert); font-size:0.8rem; text-align:center; margin-top:12px; min-height:1.2em;}

  /* connection status */
  .conn-row{display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; font-size:0.74rem; color:var(--foam-dim);}
  .conn-status{display:flex; align-items:center; gap:6px;}
  .conn-dot{width:8px; height:8px; border-radius:50%; background:var(--alert); flex-shrink:0;}
  .conn-dot.ok{background:var(--safe);}
  .logout-btn{background:none; border:none; color:var(--foam-dim); font-size:0.74rem; text-decoration:underline; cursor:pointer; padding:0;}
