/* ── Variables ──────────────────────────────────────────────────── */
:root {
  --black:   #0a0a0a;
  --dark:    #111214;
  --dark2:   #181a1d;
  --dark3:   #222529;
  --border:  #2e3237;
  --mid:     #4a5058;
  --muted:   #7a8190;
  --light:   #c8ced8;
  --white:   #f0f2f5;
  --orange:  #e85d04;
  --orange2: #f48c06;
  --red:     #c1121f;
  --green:   #2d6a4f;
  --green-lt:#52b788;
  --radius:  4px;
  --shadow:  0 4px 24px rgba(0,0,0,0.5);
  --font-display:'Bebas Neue',sans-serif;
  --font-cond:'Barlow Condensed',sans-serif;
  --font-body:'Barlow',sans-serif;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--font-body);font-size:15px;background:var(--black);color:var(--light);overflow-x:hidden}
a{color:var(--orange);text-decoration:none}a:hover{color:var(--orange2)}
input,select,textarea,button{font-family:var(--font-body);font-size:14px}
code{background:var(--dark3);padding:2px 6px;border-radius:3px;font-size:12px;color:var(--orange2)}

/* ── Screens ─────────────────────────────────────────────────────── */
.screen{display:none}.screen.active{display:flex;min-height:100vh}

/* ── Auth ────────────────────────────────────────────────────────── */
#auth-screen{align-items:center;justify-content:center;position:relative;background:var(--black)}
.auth-bg{position:absolute;inset:0;overflow:hidden}
.auth-noise{position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");opacity:0.4}
.auth-road{position:absolute;bottom:0;left:0;right:0;height:40%;background:linear-gradient(to top,#1a1200 0%,transparent 100%)}
.auth-panel{position:relative;z-index:1;width:100%;max-width:520px;background:var(--dark2);border:1px solid var(--border);border-top:3px solid var(--orange);padding:40px 44px 44px;box-shadow:var(--shadow),0 0 80px rgba(232,93,4,0.08)}
.brand{text-align:center;margin-bottom:32px}
.brand-icon{font-size:32px;color:var(--orange);line-height:1;margin-bottom:8px}
.brand-name{font-family:var(--font-display);font-size:52px;letter-spacing:4px;color:var(--white);line-height:1}
.brand-name span{color:var(--orange)}
.brand-sub{font-family:var(--font-cond);color:var(--muted);letter-spacing:4px;font-size:14px;margin-top:4px}
.auth-form{display:none}.auth-form.active{display:block}
.auth-form h2{font-family:var(--font-display);font-size:28px;letter-spacing:3px;color:var(--white);margin-bottom:24px}
.auth-switch{text-align:center;margin-top:16px;color:var(--muted);font-size:13px}

/* ── App Shell ───────────────────────────────────────────────────── */
#app-screen{flex-direction:row;width:100%}

/* ── Sidebar ─────────────────────────────────────────────────────── */
#sidebar{width:220px;min-width:220px;background:var(--dark);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:0 0 24px;position:sticky;top:0;height:100vh;overflow-y:auto}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:20px 20px 16px;border-bottom:1px solid var(--border)}
.brand-icon-sm{color:var(--orange);font-size:22px}
.sidebar-title{font-family:var(--font-display);font-size:20px;letter-spacing:2px;color:var(--white);line-height:1.1}
.sidebar-title em{color:var(--orange);font-style:normal}
.sidebar-subtitle{font-family:var(--font-cond);font-size:11px;letter-spacing:2px;color:var(--muted);margin-top:2px}
.sidebar-user{padding:14px 20px;border-bottom:1px solid var(--border);margin-bottom:8px}
.sidebar-user .user-name{font-weight:600;color:var(--white);font-size:14px}
.sidebar-user .user-road{font-family:var(--font-cond);color:var(--orange);font-size:13px;letter-spacing:1px}
.sidebar-user .user-num{color:var(--muted);font-size:12px}
.nav-links{list-style:none;padding:0 12px;flex:1}
.nav-links li{margin-bottom:2px}
.nav-link{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:var(--radius);color:var(--muted);font-family:var(--font-cond);font-size:15px;letter-spacing:1px;font-weight:600;transition:all 0.15s}
.nav-link:hover{color:var(--white);background:var(--dark3)}
.nav-link.active{color:var(--orange);background:rgba(232,93,4,0.1)}
.nav-admin{color:var(--orange2) !important}
.nav-admin:hover{background:rgba(244,140,6,0.1) !important}
.nav-icon{font-size:10px;opacity:0.6}
.btn-logout{margin:16px 20px 0;background:transparent;border:1px solid var(--border);color:var(--muted);padding:8px 16px;font-family:var(--font-cond);font-size:13px;letter-spacing:1px;border-radius:var(--radius);cursor:pointer;transition:all 0.15s}
.btn-logout:hover{border-color:var(--red);color:var(--red)}

/* ── Mobile Header ───────────────────────────────────────────────── */
#mobile-header{display:none;position:fixed;top:0;left:0;right:0;z-index:100;height:56px;background:var(--dark);border-bottom:1px solid var(--border);align-items:center;justify-content:space-between;padding:0 16px}
.mobile-brand{font-family:var(--font-display);font-size:20px;letter-spacing:2px;color:var(--white)}
#menu-toggle{background:none;border:none;color:var(--light);font-size:22px;cursor:pointer}

/* ── Main ────────────────────────────────────────────────────────── */
#main-content{flex:1;overflow-y:auto;padding:32px 36px;background:var(--black)}
.view{display:none}.view.active{display:block}
.view-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:28px;padding-bottom:16px;border-bottom:1px solid var(--border)}
.view-title{font-family:var(--font-display);font-size:36px;letter-spacing:3px;color:var(--white)}
.year-badge{font-family:var(--font-cond);font-size:14px;letter-spacing:2px;color:var(--muted);border:1px solid var(--border);padding:4px 12px;border-radius:var(--radius)}

/* ── Goal Banner ─────────────────────────────────────────────────── */
.goal-banner{background:var(--dark2);border:1px solid var(--border);border-left:3px solid var(--orange2);padding:16px 20px;border-radius:var(--radius);margin-bottom:24px}
.goal-banner .goal-label{font-family:var(--font-cond);font-size:11px;letter-spacing:2px;color:var(--muted);margin-bottom:8px}
.goal-bar-track{height:8px;background:var(--dark3);border-radius:4px;overflow:hidden}
.goal-bar-fill{height:100%;background:linear-gradient(90deg,var(--orange),var(--orange2));border-radius:4px;transition:width 0.5s ease}
.goal-bar-fill.complete{background:linear-gradient(90deg,var(--green),var(--green-lt))}
.goal-text{font-family:var(--font-cond);font-size:13px;color:var(--light);margin-top:6px}

/* ── Stat Cards ──────────────────────────────────────────────────── */
.stat-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:16px;margin-bottom:32px}
.stat-card{background:var(--dark2);border:1px solid var(--border);border-top:2px solid var(--orange);padding:20px 24px;border-radius:var(--radius)}
.stat-card .stat-label{font-family:var(--font-cond);font-size:11px;letter-spacing:2px;color:var(--muted);text-transform:uppercase;margin-bottom:8px}
.stat-card .stat-value{font-family:var(--font-display);font-size:42px;color:var(--white);line-height:1}
.stat-card .stat-sub{font-size:12px;color:var(--muted);margin-top:4px}
.section-label{font-family:var(--font-cond);font-size:13px;letter-spacing:3px;color:var(--muted);margin-bottom:12px}

/* ── Ride Rows ───────────────────────────────────────────────────── */
.ride-row{background:var(--dark2);border:1px solid var(--border);border-left:3px solid var(--orange);padding:14px 18px;border-radius:var(--radius);margin-bottom:8px;display:flex;align-items:center;gap:16px;transition:border-color 0.15s}
.ride-row:hover{border-color:var(--orange2)}
.ride-date{font-family:var(--font-cond);font-weight:600;color:var(--muted);font-size:13px;min-width:90px;letter-spacing:0.5px}
.ride-miles{font-family:var(--font-display);font-size:26px;color:var(--orange);min-width:80px}
.ride-miles span{font-family:var(--font-body);font-size:12px;color:var(--muted)}
.ride-companions{flex:1;font-size:13px;color:var(--light)}
.ride-companions .label{color:var(--muted);font-size:11px;letter-spacing:1px;font-family:var(--font-cond)}
.ride-notes{font-size:12px;color:var(--muted);font-style:italic;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ride-mirrored{font-size:11px;color:var(--mid);font-family:var(--font-cond);letter-spacing:1px}
.ride-actions{display:flex;gap:8px;margin-left:auto}
.empty-state{text-align:center;padding:48px 24px;color:var(--muted);font-family:var(--font-cond);font-size:15px;letter-spacing:1px;border:1px dashed var(--border);border-radius:var(--radius)}
.empty-state .empty-icon{font-size:40px;margin-bottom:12px;opacity:0.4}

/* ── Buttons ─────────────────────────────────────────────────────── */
.btn-primary{background:var(--orange);color:var(--black);border:none;padding:12px 24px;font-family:var(--font-cond);font-size:15px;font-weight:700;letter-spacing:1.5px;border-radius:var(--radius);cursor:pointer;transition:background 0.15s,transform 0.1s;width:100%}
.btn-primary:hover{background:var(--orange2)}.btn-primary:active{transform:scale(0.98)}
.btn-primary.btn-sm{width:auto;padding:9px 18px;font-size:13px}
.btn-secondary{background:transparent;color:var(--light);border:1px solid var(--border);padding:12px 24px;font-family:var(--font-cond);font-size:15px;font-weight:600;letter-spacing:1px;border-radius:var(--radius);cursor:pointer;transition:all 0.15s}
.btn-secondary:hover{border-color:var(--light)}.btn-secondary.btn-sm{padding:7px 14px;font-size:13px;width:auto}
.btn-danger{background:var(--red);color:var(--white);border:none;padding:12px 24px;font-family:var(--font-cond);font-size:15px;font-weight:700;letter-spacing:1px;border-radius:var(--radius);cursor:pointer;transition:opacity 0.15s}
.btn-danger:hover{opacity:0.85}
.btn-icon{background:var(--dark3);color:var(--muted);border:1px solid var(--border);padding:6px 12px;border-radius:var(--radius);cursor:pointer;font-size:13px;transition:all 0.15s}
.btn-icon:hover{color:var(--white);border-color:var(--muted)}.btn-icon.del:hover{color:var(--red);border-color:var(--red)}
.btn-warn{background:transparent;color:var(--orange2);border:1px solid var(--orange2);padding:6px 12px;border-radius:var(--radius);cursor:pointer;font-size:12px;font-family:var(--font-cond);letter-spacing:1px;transition:all 0.15s}
.btn-warn:hover{background:rgba(244,140,6,0.1)}

/* ── Forms ───────────────────────────────────────────────────────── */
.field-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}
.field-group label{font-family:var(--font-cond);font-size:12px;letter-spacing:1.5px;color:var(--muted);text-transform:uppercase}
.field-group input,.field-group select,.field-group textarea{background:var(--dark3);border:1px solid var(--border);color:var(--white);padding:10px 14px;border-radius:var(--radius);outline:none;transition:border-color 0.15s}
.field-group input:focus,.field-group select:focus,.field-group textarea:focus{border-color:var(--orange)}
.field-group select option{background:var(--dark3)}.field-group textarea{resize:vertical;min-height:80px}
.field-hint{font-size:12px;color:var(--muted);font-style:italic;margin-top:6px}
.fields-2col{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.span-2{grid-column:span 2}
.field-group.inline{margin-bottom:0}.field-group.inline select{padding:8px 12px}
.form-error{background:rgba(193,18,31,0.15);border:1px solid var(--red);color:#ff6b6b;padding:10px 14px;border-radius:var(--radius);font-size:13px;margin-bottom:16px}
.form-msg{padding:10px 14px;border-radius:var(--radius);font-size:13px;margin-bottom:16px}
.form-msg.success{background:rgba(45,106,79,0.2);border:1px solid var(--green-lt);color:var(--green-lt)}
.form-msg.error{background:rgba(193,18,31,0.15);border:1px solid var(--red);color:#ff6b6b}
.hidden{display:none !important}

/* ── Companions ──────────────────────────────────────────────────── */
.companions-grid{display:flex;flex-wrap:wrap;gap:8px}
.companion-chip{display:flex;align-items:center;gap:6px;padding:6px 12px;border-radius:100px;background:var(--dark3);border:1px solid var(--border);cursor:pointer;transition:all 0.15s;font-size:13px;user-select:none}
.companion-chip:hover{border-color:var(--orange);color:var(--white)}
.companion-chip.selected{background:rgba(232,93,4,0.15);border-color:var(--orange);color:var(--orange)}
.companion-chip .chip-check{font-size:11px}

/* ── Modal ───────────────────────────────────────────────────────── */
.modal-overlay{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,0.75);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:24px}
.modal{background:var(--dark2);border:1px solid var(--border);border-top:3px solid var(--orange);border-radius:var(--radius);width:100%;max-width:560px;box-shadow:var(--shadow);max-height:90vh;overflow-y:auto}
.modal-sm{max-width:400px}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:20px 24px;border-bottom:1px solid var(--border)}
.modal-header h3{font-family:var(--font-display);font-size:22px;letter-spacing:2px;color:var(--white)}
.modal-close{background:none;border:none;color:var(--muted);font-size:18px;cursor:pointer;padding:4px 8px;transition:color 0.15s}
.modal-close:hover{color:var(--white)}
.modal-body{padding:24px}.modal-body p{color:var(--light);line-height:1.6}
.modal-footer{display:flex;gap:12px;justify-content:flex-end;padding:16px 24px;border-top:1px solid var(--border)}
.modal-footer .btn-primary,.modal-footer .btn-secondary,.modal-footer .btn-danger{width:auto}

/* ── Report ──────────────────────────────────────────────────────── */
.report-controls{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;background:var(--dark2);border:1px solid var(--border);padding:20px;border-radius:var(--radius);margin-bottom:24px}
.report-controls .field-group{margin-bottom:0;min-width:160px}
.report-controls .btn-primary{width:auto;align-self:flex-end;white-space:nowrap}
.report-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:16px}
.report-stat{background:var(--dark2);border:1px solid var(--border);border-top:2px solid var(--orange);padding:16px 20px;border-radius:var(--radius);text-align:center}
.report-stat .r-label{font-family:var(--font-cond);font-size:11px;letter-spacing:2px;color:var(--muted);margin-bottom:4px}
.report-stat .r-value{font-family:var(--font-display);font-size:36px;color:var(--white);line-height:1}
.export-bar{display:flex;align-items:center;gap:10px;margin-bottom:16px}

/* ── Table ───────────────────────────────────────────────────────── */
.table-wrap{background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;overflow-x:auto}
.data-table{width:100%;border-collapse:collapse}
.data-table th{font-family:var(--font-cond);font-size:11px;letter-spacing:2px;color:var(--muted);text-align:left;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--dark2);white-space:nowrap}
.data-table td{padding:12px 16px;border-bottom:1px solid var(--border);color:var(--light);font-size:14px}
.data-table tr:last-child td{border-bottom:none}.data-table tr:hover td{background:var(--dark3)}
.miles-cell{font-family:var(--font-cond);font-weight:700;color:var(--orange);font-size:16px}

/* ── Leaderboard ─────────────────────────────────────────────────── */
.lb-wrap{background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.lb-row{display:flex;align-items:center;gap:16px;padding:16px 20px;border-bottom:1px solid var(--border);transition:background 0.15s}
.lb-row:last-child{border-bottom:none}.lb-row:hover{background:var(--dark3)}
.lb-rank{font-family:var(--font-display);font-size:28px;color:var(--border);min-width:44px}
.lb-row.rank-1 .lb-rank{color:#ffd700}.lb-row.rank-2 .lb-rank{color:#c0c0c0}.lb-row.rank-3 .lb-rank{color:#cd7f32}
.lb-row.is-me{border-left:3px solid var(--orange)}.lb-row.is-me .lb-rank{color:var(--orange)}
.lb-info{flex:1}
.lb-name{font-weight:600;color:var(--white);font-size:15px}
.lb-road{font-family:var(--font-cond);color:var(--orange);font-size:13px;letter-spacing:1px}
.lb-miles{font-family:var(--font-display);font-size:28px;color:var(--white);text-align:right}
.lb-miles span{font-family:var(--font-body);font-size:12px;color:var(--muted)}
.lb-rides{font-size:12px;color:var(--muted);text-align:right}
.lb-goal-bar{margin-top:4px;height:3px;background:var(--dark3);border-radius:2px;width:80px;margin-left:auto}
.lb-goal-fill{height:100%;background:var(--orange2);border-radius:2px}

/* ── Month Chart ─────────────────────────────────────────────────── */
.month-bar-chart{display:flex;align-items:flex-end;gap:8px;height:160px;padding:0 4px}
.month-bar-wrap{display:flex;flex-direction:column;align-items:center;flex:1;height:100%;justify-content:flex-end;gap:4px}
.month-bar{width:100%;background:var(--orange);border-radius:2px 2px 0 0;min-height:2px;transition:height 0.3s ease;position:relative}
.month-bar.peak{background:var(--orange2)}
.month-bar:hover{opacity:0.8}
.month-label{font-family:var(--font-cond);font-size:11px;color:var(--muted);letter-spacing:1px;text-align:center}
.month-val{font-family:var(--font-cond);font-size:10px;color:var(--muted)}

/* ── Card ────────────────────────────────────────────────────────── */
.card{background:var(--dark2);border:1px solid var(--border);border-radius:var(--radius);padding:24px}
.card-title{font-family:var(--font-cond);font-size:13px;letter-spacing:2px;color:var(--muted);margin-bottom:20px;padding-bottom:12px;border-bottom:1px solid var(--border)}
.profile-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}

/* ── Admin Table ─────────────────────────────────────────────────── */
.admin-user-row{display:flex;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);flex-wrap:wrap}
.admin-user-row:last-child{border-bottom:none}.admin-user-row:hover{background:var(--dark3)}
.admin-user-info{flex:1;min-width:160px}
.admin-user-name{font-weight:600;color:var(--white);font-size:14px}
.admin-user-email{color:var(--muted);font-size:12px}
.admin-user-meta{font-family:var(--font-cond);font-size:12px;color:var(--orange);letter-spacing:1px}
.admin-badge{display:inline-block;background:rgba(232,93,4,0.2);color:var(--orange);border:1px solid var(--orange);padding:2px 8px;border-radius:100px;font-size:11px;font-family:var(--font-cond);letter-spacing:1px;margin-left:6px}
.admin-actions{display:flex;gap:6px;flex-wrap:wrap}

/* ── Import Results ──────────────────────────────────────────────── */
.import-success{background:rgba(45,106,79,0.15);border:1px solid var(--green-lt);border-radius:var(--radius);padding:16px}
.import-pw-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:13px}
.import-pw-table th{text-align:left;padding:6px 10px;color:var(--muted);font-family:var(--font-cond);font-size:11px;letter-spacing:1px;border-bottom:1px solid var(--border)}
.import-pw-table td{padding:6px 10px;border-bottom:1px solid var(--border);color:var(--light)}
.import-pw-table tr:last-child td{border-bottom:none}
.pw-cell{font-family:monospace;color:var(--orange2);font-weight:bold}

/* ── Loading ─────────────────────────────────────────────────────── */
.loading{text-align:center;padding:32px;color:var(--muted);font-family:var(--font-cond);letter-spacing:2px;font-size:13px}

/* ── Responsive ──────────────────────────────────────────────────── */
@media(max-width:900px){.profile-grid{grid-template-columns:1fr}}
@media(max-width:768px){
  #sidebar{position:fixed;left:-220px;top:0;bottom:0;z-index:150;transition:left 0.25s ease;box-shadow:4px 0 20px rgba(0,0,0,0.5)}
  #sidebar.open{left:0}
  #mobile-header{display:flex}
  #main-content{padding:80px 16px 24px}
  .fields-2col{grid-template-columns:1fr}
  .span-2{grid-column:span 1}
  .report-controls{flex-direction:column}
  .report-controls .btn-primary{width:100%}
  .ride-notes{display:none}.view-title{font-size:28px}
}
@media(max-width:480px){
  .auth-panel{padding:28px 20px 32px}
  .ride-row{flex-wrap:wrap}
  .month-bar-chart{gap:4px}
}

/* ── Pending Confirmations ───────────────────────────────────────── */
.pending-banner {
  background: var(--dark2);
  border: 1px solid var(--orange2);
  border-left: 3px solid var(--orange2);
  border-radius: var(--radius);
  padding: 16px 20px;
  margin-bottom: 24px;
}
.pending-banner .pending-title {
  font-family: var(--font-cond);
  font-size: 13px; letter-spacing: 2px;
  color: var(--orange2); margin-bottom: 12px;
}
.pending-ride-row {
  background: var(--dark3);
  border: 1px solid var(--border);
  border-left: 3px solid var(--orange2);
  padding: 12px 16px; border-radius: var(--radius);
  margin-bottom: 8px; display: flex;
  align-items: center; gap: 12px; flex-wrap: wrap;
}
.pending-ride-row:last-child { margin-bottom: 0; }
.pending-from { font-size: 12px; color: var(--orange2); font-family: var(--font-cond); letter-spacing: 1px; }
.ride-row.status-pending {
  border-left-color: var(--orange2);
  opacity: 0.75;
}
.ride-row.status-pending .ride-miles { color: var(--orange2); }
.status-badge {
  font-family: var(--font-cond); font-size: 11px; letter-spacing: 1px;
  padding: 2px 8px; border-radius: 100px;
}
.status-badge.pending { background: rgba(244,140,6,0.15); color: var(--orange2); border: 1px solid var(--orange2); }
.status-badge.confirmed { background: rgba(82,183,136,0.15); color: var(--green-lt); border: 1px solid var(--green-lt); }
.sanctioned-badge {
  font-family: var(--font-cond); font-size: 11px; letter-spacing: 1px;
  padding: 2px 8px; border-radius: 100px;
  background: rgba(232,93,4,0.15); color: var(--orange); border: 1px solid var(--orange);
}
.confirm-actions { display: flex; gap: 6px; margin-left: auto; }
.btn-confirm {
  background: var(--green); color: var(--white);
  border: none; padding: 5px 12px;
  font-family: var(--font-cond); font-size: 12px; font-weight: 700; letter-spacing: 1px;
  border-radius: var(--radius); cursor: pointer; transition: opacity 0.15s;
}
.btn-confirm:hover { opacity: 0.85; }
.btn-reject {
  background: transparent; color: var(--red);
  border: 1px solid var(--red); padding: 5px 12px;
  font-family: var(--font-cond); font-size: 12px; font-weight: 700; letter-spacing: 1px;
  border-radius: var(--radius); cursor: pointer; transition: all 0.15s;
}
.btn-reject:hover { background: rgba(193,18,31,0.1); }
