:root{
  --bg:#15171F; --bg-raised:#1C1F2A; --gold:#E8B04B; --cream:#EDEAE2;
  --cream-dim:#B9B6AC; --red:#C1502E; --teal:#3D6B66;
  --line:rgba(237,234,226,0.14); --radius:2px;
}
*{box-sizing:border-box;}
body{margin:0; background:var(--bg); color:var(--cream); font-family:'Source Serif 4', serif;
  background-image:radial-gradient(ellipse at 20% -10%, rgba(232,176,75,0.07), transparent 50%),radial-gradient(ellipse at 90% 10%, rgba(61,107,102,0.08), transparent 50%);
  min-height:100vh;}
.wrap{max-width:980px; margin:0 auto; padding:0 24px 90px;}

/* login gate */
.login-gate{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px;}
.login-card{background:var(--bg-raised); border-top:3px solid var(--gold); border-radius:var(--radius); padding:38px 32px; max-width:380px; width:100%; box-shadow:0 20px 60px rgba(0,0,0,.4); text-align:center;}
.login-logo{font-family:'Bebas Neue',sans-serif; font-size:52px; letter-spacing:.04em; margin:6px 0 4px; color:var(--gold); text-shadow:0 0 28px rgba(232,176,75,.35); line-height:.9;}
.login-sub{font-family:'Oswald',sans-serif; text-transform:uppercase; letter-spacing:.2em; font-size:11px; color:var(--cream-dim); margin-bottom:24px;}
.login-card .field{text-align:left;}
.login-hint{font-family:'Oswald',sans-serif; font-size:11px; color:var(--cream-dim); letter-spacing:.03em; margin-top:18px; line-height:1.5;}

header{padding:48px 24px 28px; text-align:center; border-bottom:1px solid var(--line); position:relative;}
.marquee-lights{display:flex; justify-content:center; gap:7px; margin-bottom:16px;}
.bulb{width:7px;height:7px;border-radius:50%;background:var(--gold);opacity:.35;animation:twinkle 2.6s ease-in-out infinite;}
.bulb:nth-child(odd){animation-delay:.4s;} .bulb:nth-child(3n){animation-delay:.9s;}
@keyframes twinkle{0%,100%{opacity:.25;}50%{opacity:.9;}}
@media (prefers-reduced-motion:reduce){.bulb{animation:none;opacity:.7;}}
h1{font-family:'Bebas Neue',sans-serif; font-size:clamp(44px,8vw,80px); letter-spacing:.04em; margin:0; color:var(--gold); text-shadow:0 0 28px rgba(232,176,75,.35); line-height:.9;}
.sub{font-family:'Oswald',sans-serif; text-transform:uppercase; letter-spacing:.22em; font-size:12px; color:var(--cream-dim); margin-top:10px;}

.profilebar{display:flex; align-items:center; justify-content:center; gap:10px; flex-wrap:wrap; margin-top:22px;}
.profilebar label{font-family:'Oswald',sans-serif; font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--cream-dim);}
.profilebar .who{font-family:'Bebas Neue',sans-serif; font-size:18px; color:var(--gold); letter-spacing:.03em;}
.profilebar .badge{font-family:'Oswald',sans-serif; font-size:9px; letter-spacing:.1em; text-transform:uppercase; background:rgba(232,176,75,.2); color:var(--gold); padding:2px 7px; border-radius:8px;}
.link-btn{background:none; border:none; color:var(--cream-dim); cursor:pointer; font-family:'Oswald',sans-serif; font-size:11px; text-transform:uppercase; letter-spacing:.08em; text-decoration:underline;}
.link-btn:hover{color:var(--gold);}

nav.tabs{display:flex; justify-content:center; margin:30px 0 0; border-bottom:1px solid var(--line); flex-wrap:wrap;}
nav.tabs button{background:none; border:none; cursor:pointer; font-family:'Oswald',sans-serif; text-transform:uppercase; letter-spacing:.14em; font-size:13px; color:var(--cream-dim); padding:14px 20px; position:relative; transition:color .2s;}
nav.tabs button:hover{color:var(--cream);}
nav.tabs button.active{color:var(--gold);}
nav.tabs button.active::after{content:""; position:absolute; left:16%; right:16%; bottom:-1px; height:2px; background:var(--gold);}

section{display:none; padding-top:36px;}
section.active{display:block;}
.section-head{display:flex; justify-content:space-between; align-items:baseline; gap:16px; margin-bottom:22px; flex-wrap:wrap;}
.section-head h2{font-family:'Bebas Neue',sans-serif; font-size:28px; letter-spacing:.03em; color:var(--cream); margin:0;}
.count-tag{font-family:'Oswald',sans-serif; font-size:11px; letter-spacing:.12em; color:var(--cream-dim); text-transform:uppercase;}

.log-controls{display:flex; gap:12px; margin-bottom:22px; flex-wrap:wrap; align-items:center;}
.search-wrap{flex:1; min-width:200px; position:relative;}
.search-wrap input{width:100%; background:var(--bg-raised); border:1px solid var(--line); color:var(--cream); padding:11px 36px 11px 14px; border-radius:var(--radius); font-family:'Source Serif 4',serif; font-size:14px;}
.search-wrap input:focus{outline:2px solid var(--gold); outline-offset:1px; border-color:var(--gold);}
.search-clear{position:absolute; right:8px; top:50%; transform:translateY(-50%); background:none; border:none; color:var(--cream-dim); cursor:pointer; font-size:18px; line-height:1; padding:4px;}
.search-clear:hover{color:var(--red);}
.sort-wrap{display:flex; align-items:center; gap:8px;}
.sort-wrap label{font-family:'Oswald',sans-serif; font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--cream-dim);}
.sort-wrap select{background:var(--bg-raised); border:1px solid var(--line); color:var(--cream); padding:11px 12px; border-radius:var(--radius); font-family:'Oswald',sans-serif; font-size:13px; cursor:pointer;}
.sort-wrap select:focus{outline:2px solid var(--gold); outline-offset:1px; border-color:var(--gold);}

button.primary{font-family:'Oswald',sans-serif; background:var(--gold); color:#15171F; border:none; padding:11px 20px; font-size:13px; letter-spacing:.08em; text-transform:uppercase; cursor:pointer; border-radius:var(--radius); transition:transform .12s, box-shadow .12s;}
button.primary:hover{transform:translateY(-1px); box-shadow:0 4px 14px rgba(232,176,75,.25);}
button.primary:disabled{opacity:.4; cursor:not-allowed; transform:none; box-shadow:none;}
button.ghost{font-family:'Oswald',sans-serif; background:transparent; color:var(--cream-dim); border:1px solid var(--line); padding:10px 16px; font-size:12px; letter-spacing:.06em; text-transform:uppercase; cursor:pointer; border-radius:var(--radius);}
button.ghost:hover{color:var(--cream); border-color:var(--cream-dim);}

.empty{text-align:center; padding:56px 20px; color:var(--cream-dim); border:1px dashed var(--line); border-radius:var(--radius); font-family:'Oswald',sans-serif; font-size:13px; letter-spacing:.05em;}
.empty strong{display:block; font-family:'Bebas Neue',sans-serif; font-size:22px; letter-spacing:.04em; color:var(--cream); margin-bottom:8px; font-weight:normal;}

.ticket{display:grid; grid-template-columns:92px 1fr 150px; background:var(--bg-raised); border-radius:var(--radius); margin-bottom:18px; position:relative; box-shadow:0 6px 18px rgba(0,0,0,.25); overflow:hidden;}
.ticket-poster{width:92px; height:100%; min-height:140px; object-fit:cover; background:#0f1118; display:block;}
.ticket-poster.placeholder{display:flex; align-items:center; justify-content:center; font-family:'Bebas Neue',sans-serif; color:var(--cream-dim); font-size:11px; text-align:center; padding:8px; letter-spacing:.05em;}
.ticket::before{content:""; position:absolute; top:0; bottom:0; left:calc(100% - 150px); width:0; border-left:2px dotted rgba(237,234,226,.22);}
.ticket::after{content:""; position:absolute; left:calc(100% - 150px); top:-9px; width:18px; height:18px; border-radius:50%; background:var(--bg); box-shadow:0 calc(100% + 9px) 0 0 var(--bg); transform:translateX(-50%);}
.ticket-main{padding:20px 22px;}
.ticket-title-row{display:flex; align-items:baseline; gap:10px; flex-wrap:wrap;}
.ticket-title{font-family:'Bebas Neue',sans-serif; font-size:24px; letter-spacing:.02em; color:var(--cream);}
.ticket-meta{font-family:'Oswald',sans-serif; font-size:11px; color:var(--cream-dim); text-transform:uppercase; letter-spacing:.08em;}
.ticket-overview{font-size:13px; color:var(--cream-dim); font-style:italic; line-height:1.4; margin-top:8px; max-width:48ch;}
.watchers{display:flex; flex-wrap:wrap; gap:6px; margin-top:14px;}
.watcher-chip{font-family:'Oswald',sans-serif; font-size:11px; letter-spacing:.04em; border:1px solid var(--line); padding:5px 10px; border-radius:12px; display:flex; align-items:center; gap:6px; color:var(--cream-dim);}
.watcher-chip.me{border-color:var(--gold);}
.watcher-chip .score{color:var(--gold); font-weight:600;}
.rate-mine{display:flex; align-items:center; gap:8px; margin-top:14px; flex-wrap:wrap;}
.rate-mine label{font-family:'Oswald',sans-serif; font-size:11px; text-transform:uppercase; letter-spacing:.08em; color:var(--teal);}
.rate-mine input{width:70px; text-align:center; background:var(--bg); border:1px solid var(--line); color:var(--cream); padding:6px; border-radius:var(--radius); font-family:'Source Serif 4',serif;}
.rate-mine button{font-family:'Oswald',sans-serif; font-size:11px; letter-spacing:.06em; text-transform:uppercase; padding:7px 12px; border-radius:var(--radius); cursor:pointer; border:1px solid var(--teal); background:transparent; color:var(--teal);}
.rate-mine button:hover{background:var(--teal); color:var(--cream);}
.ticket-side{padding:20px 18px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:6px; font-family:'Oswald',sans-serif;}
.avg-num{font-family:'Bebas Neue',sans-serif; font-size:42px; color:var(--gold); line-height:1;}
.avg-label{font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--cream-dim);}
.stars{font-size:14px; color:var(--gold); letter-spacing:2px;}
.ticket-delete{position:absolute; top:8px; right:8px; background:none; border:none; color:var(--cream-dim); cursor:pointer; font-size:16px; opacity:.5; line-height:1; padding:4px;}
.ticket-delete:hover{opacity:1; color:var(--red);}
@media (max-width:680px){
  .ticket{grid-template-columns:72px 1fr;}
  .ticket::before, .ticket::after{display:none;}
  .ticket-poster{min-height:100%;}
  .ticket-side{grid-column:1 / -1; border-top:1px dotted rgba(237,234,226,.22); flex-direction:row; gap:14px;}
}

.ideas-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:16px;}
.idea-card{background:var(--bg-raised); border-radius:var(--radius); border-top:3px solid var(--teal); display:flex; flex-direction:column; box-shadow:0 6px 18px rgba(0,0,0,.2); position:relative; overflow:hidden;}
.idea-poster{width:100%; height:150px; object-fit:cover; background:#0f1118; display:block;}
.idea-poster.placeholder{display:flex; align-items:center; justify-content:center; font-family:'Bebas Neue',sans-serif; color:var(--cream-dim); font-size:12px; letter-spacing:.05em;}
.idea-body{padding:18px; display:flex; flex-direction:column; gap:11px; flex:1;}
.idea-title-row{display:flex; justify-content:space-between; align-items:flex-start; gap:8px;}
.idea-title{font-family:'Bebas Neue',sans-serif; font-size:21px; color:var(--cream); letter-spacing:.02em;}
.idea-meta{font-family:'Oswald',sans-serif; font-size:10px; color:var(--cream-dim); text-transform:uppercase; letter-spacing:.08em; margin-top:2px;}
.idea-note{font-size:14px; color:var(--cream-dim); font-style:italic; line-height:1.4;}
.idea-delete{background:none; border:none; color:var(--cream-dim); cursor:pointer; font-size:15px; opacity:.5;}
.idea-delete:hover{opacity:1; color:var(--red);}
.vote-tally{display:flex; gap:10px; font-family:'Oswald',sans-serif; font-size:11px; letter-spacing:.05em; color:var(--cream-dim);}
.vote-tally span.in{color:var(--teal);} .vote-tally span.out{color:var(--red);}
.voter-list{font-family:'Oswald',sans-serif; font-size:10px; color:var(--cream-dim); line-height:1.6;}
.voter-list b{color:var(--cream);}
.vote-buttons{display:flex; gap:8px; margin-top:auto;}
.vote-btn{flex:1; font-family:'Oswald',sans-serif; font-size:12px; letter-spacing:.06em; text-transform:uppercase; padding:9px; border-radius:var(--radius); cursor:pointer; border:1px solid var(--line); background:transparent; color:var(--cream-dim); transition:all .15s;}
.vote-btn.in.selected{background:var(--teal); color:var(--cream); border-color:var(--teal);}
.vote-btn.out.selected{background:var(--red); color:var(--cream); border-color:var(--red);}
.vote-btn:hover{color:var(--cream); border-color:var(--cream-dim);}

.lb-block{margin-bottom:40px;}
.lb-block h3{font-family:'Bebas Neue',sans-serif; font-size:22px; letter-spacing:.03em; color:var(--cream); margin:0 0 16px; display:flex; align-items:center; gap:10px;}
.lb-block h3 .pill{font-family:'Oswald',sans-serif; font-size:10px; letter-spacing:.1em; text-transform:uppercase; padding:3px 9px; border-radius:10px;}
.pill.best{background:rgba(61,107,102,.25); color:var(--teal);}
.pill.worst{background:rgba(193,80,46,.2); color:var(--red);}
.podium{display:grid; grid-template-columns:repeat(3,1fr); gap:14px;}
@media (max-width:640px){ .podium{grid-template-columns:1fr;} }
.podium-card{background:var(--bg-raised); border-radius:var(--radius); overflow:hidden; box-shadow:0 6px 18px rgba(0,0,0,.22); position:relative; border-top:3px solid var(--gold);}
.podium-card.worst-card{border-top-color:var(--red);}
.podium-rank{position:absolute; top:8px; left:8px; font-family:'Bebas Neue',sans-serif; font-size:30px; color:var(--gold); text-shadow:0 2px 8px #000; line-height:1; z-index:2;}
.worst-card .podium-rank{color:var(--red);}
.podium-poster{width:100%; height:170px; object-fit:cover; background:#0f1118; display:block;}
.podium-poster.placeholder{display:flex; align-items:center; justify-content:center; font-family:'Bebas Neue',sans-serif; color:var(--cream-dim); font-size:12px;}
.podium-body{padding:14px 16px;}
.podium-title{font-family:'Bebas Neue',sans-serif; font-size:19px; color:var(--cream); letter-spacing:.02em; line-height:1.05;}
.podium-score{font-family:'Oswald',sans-serif; font-size:13px; margin-top:6px; color:var(--gold);}
.worst-card .podium-score{color:var(--red);}
.podium-sub{font-family:'Oswald',sans-serif; font-size:10px; color:var(--cream-dim); text-transform:uppercase; letter-spacing:.08em; margin-top:3px;}

.lb-table{width:100%; border-collapse:collapse; background:var(--bg-raised); border-radius:var(--radius); overflow:hidden;}
.lb-table th{font-family:'Oswald',sans-serif; font-size:10px; text-transform:uppercase; letter-spacing:.1em; color:var(--cream-dim); text-align:left; padding:12px 16px; border-bottom:1px solid var(--line);}
.lb-table td{padding:12px 16px; border-bottom:1px solid var(--line); font-family:'Source Serif 4',serif; font-size:14px;}
.lb-table tr:last-child td{border-bottom:none;}
.lb-table .rank{font-family:'Bebas Neue',sans-serif; font-size:20px; color:var(--gold); width:36px;}
.lb-table .name{font-family:'Bebas Neue',sans-serif; font-size:18px; color:var(--cream); letter-spacing:.02em;}
.lb-table .num{font-family:'Oswald',sans-serif; color:var(--cream-dim); text-align:right;}
.lb-table .num b{color:var(--gold);}

/* admin */
.admin-user-row{display:grid; grid-template-columns:1fr auto; gap:12px; align-items:center; background:var(--bg-raised); border-radius:var(--radius); padding:14px 16px; margin-bottom:10px;}
.admin-user-name{font-family:'Bebas Neue',sans-serif; font-size:19px; color:var(--cream); letter-spacing:.02em;}
.admin-user-meta{font-family:'Oswald',sans-serif; font-size:10px; color:var(--cream-dim); text-transform:uppercase; letter-spacing:.07em; margin-top:2px;}
.admin-actions{display:flex; gap:6px; flex-wrap:wrap;}
.admin-actions button{font-family:'Oswald',sans-serif; font-size:10px; letter-spacing:.05em; text-transform:uppercase; padding:6px 10px; border-radius:var(--radius); cursor:pointer; border:1px solid var(--line); background:transparent; color:var(--cream-dim);}
.admin-actions button:hover{color:var(--cream); border-color:var(--cream-dim);}
.admin-actions button.danger:hover{color:var(--red); border-color:var(--red);}
.audit-row{display:grid; grid-template-columns:140px 130px 1fr; gap:12px; padding:10px 14px; border-bottom:1px solid var(--line); font-family:'Oswald',sans-serif; font-size:12px; align-items:baseline;}
.audit-row:nth-child(odd){background:rgba(255,255,255,.015);}
.audit-ts{color:var(--cream-dim); font-size:11px;}
.audit-action{color:var(--gold); letter-spacing:.04em;}
.audit-detail{color:var(--cream); font-family:'Source Serif 4',serif;}
.audit-detail .who{color:var(--cream-dim);}
@media (max-width:640px){ .audit-row{grid-template-columns:1fr;} }

.modal-bg{position:fixed; inset:0; background:rgba(10,11,15,.75); backdrop-filter:blur(2px); display:none; align-items:center; justify-content:center; z-index:50; padding:20px;}
.modal-bg.open{display:flex;}
.modal{background:var(--bg-raised); border-radius:var(--radius); padding:28px; max-width:480px; width:100%; box-shadow:0 20px 60px rgba(0,0,0,.5); border-top:3px solid var(--gold); max-height:88vh; overflow-y:auto;}
.modal h3{font-family:'Bebas Neue',sans-serif; font-size:24px; color:var(--cream); margin:0 0 18px; letter-spacing:.02em;}
.field{margin-bottom:16px;}
.field label{display:block; font-family:'Oswald',sans-serif; font-size:11px; text-transform:uppercase; letter-spacing:.1em; color:var(--cream-dim); margin-bottom:6px;}
.field input, .field textarea{width:100%; background:var(--bg); border:1px solid var(--line); color:var(--cream); padding:10px 12px; border-radius:var(--radius); font-family:'Source Serif 4',serif; font-size:14px;}
.field input:focus, .field textarea:focus{outline:2px solid var(--gold); outline-offset:1px; border-color:var(--gold);}
.field textarea{resize:vertical; min-height:60px;}
.field .hint{font-family:'Oswald',sans-serif; font-size:10px; color:var(--cream-dim); letter-spacing:.04em; margin-top:5px; line-height:1.4;}
.search-row{display:flex; gap:8px;} .search-row input{flex:1;}
.search-results{margin-top:10px; display:flex; flex-direction:column; gap:8px; max-height:240px; overflow-y:auto;}
.sr-item{display:flex; gap:10px; padding:8px; border:1px solid var(--line); border-radius:var(--radius); cursor:pointer; align-items:center;}
.sr-item:hover{border-color:var(--gold); background:rgba(232,176,75,.05);}
.sr-item.selected{border-color:var(--gold); background:rgba(232,176,75,.1);}
.sr-item img{width:40px; height:60px; object-fit:cover; background:#0f1118; border-radius:2px;}
.sr-item .t{font-family:'Bebas Neue',sans-serif; font-size:18px; color:var(--cream); letter-spacing:.02em;}
.sr-item .y{font-family:'Oswald',sans-serif; font-size:11px; color:var(--cream-dim);}
.sr-status{font-family:'Oswald',sans-serif; font-size:11px; color:var(--cream-dim); letter-spacing:.04em; margin-top:8px; line-height:1.5;}
.watcher-row{display:grid; grid-template-columns:1fr 80px 30px; gap:8px; margin-bottom:8px; align-items:center;}
.watcher-row input[type=number]{text-align:center;}
.remove-row{background:none; border:none; color:var(--cream-dim); cursor:pointer; font-size:16px;}
.remove-row:hover{color:var(--red);}
.add-row-btn{font-family:'Oswald',sans-serif; font-size:11px; letter-spacing:.08em; text-transform:uppercase; background:none; border:1px dashed var(--line); color:var(--cream-dim); padding:8px; width:100%; cursor:pointer; border-radius:var(--radius); margin-bottom:16px;}
.add-row-btn:hover{border-color:var(--gold); color:var(--gold);}
.modal-actions{display:flex; justify-content:flex-end; gap:10px; margin-top:8px;}
.modal-error{font-family:'Oswald',sans-serif; font-size:12px; color:var(--red); letter-spacing:.04em; margin-bottom:12px; min-height:14px;}

.fab{position:fixed; bottom:28px; right:28px; z-index:30; width:58px; height:58px; border-radius:50%; background:var(--gold); color:#15171F; border:none; cursor:pointer; font-size:26px; line-height:1; box-shadow:0 8px 24px rgba(232,176,75,.4); transition:transform .15s;}
.fab:hover{transform:scale(1.06) translateY(-2px);}
.fab:disabled{opacity:.45; cursor:not-allowed;}

*:focus-visible{outline:2px solid var(--gold); outline-offset:2px;}
::-webkit-scrollbar{width:10px;} ::-webkit-scrollbar-thumb{background:var(--line); border-radius:5px;}
