:root{
  --ocean:#0c1720; --ocean2:#0f1e29; --panel:#13242f; --panel2:#182f3c;
  --line:#24404e; --amber:#f0a63c; --amberglow:#ffc776; --teal:#5fb0b6;
  --bone:#ece1cc; --muted:#7f939f; --home:#ff8a3c; --danger:#c05a4a;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--ocean);color:var(--bone);font-family:'Archivo',system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;line-height:1.5;overflow-x:hidden}
a{color:var(--amber);text-decoration:none}
.wrap{max-width:1180px;margin:0 auto;padding:0 20px 80px}

/* ---- top nav ---- */
.nav{max-width:1180px;margin:0 auto;padding:18px 20px;display:flex;align-items:center;gap:16px}
.brand{font-family:'Space Mono',monospace;letter-spacing:.24em;text-transform:uppercase;font-size:13px;color:var(--amber)}
.brand b{color:var(--bone);font-weight:700}
.nav .sp{flex:1}
.nav .who{font-size:13px;color:var(--muted)}
.nav a.btnlink{font-size:12px;color:var(--muted);border:1px solid var(--line);padding:6px 12px;border-radius:7px}
.nav a.btnlink:hover{color:var(--bone);border-color:var(--amber)}

/* ---- flash ---- */
.flash{max-width:1180px;margin:0 auto;padding:0 20px}
.flash div{background:var(--panel2);border:1px solid var(--line);border-left:3px solid var(--amber);
  border-radius:8px;padding:11px 15px;margin-bottom:8px;font-size:14px}

/* ---- auth cards ---- */
.authshell{min-height:82vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;padding:20px}
.authshell .lead{text-align:center;max-width:44ch}
.authshell .lead .eyebrow{font-family:'Space Mono',monospace;letter-spacing:.3em;text-transform:uppercase;
  font-size:11px;color:var(--amber)}
.authshell h1{font-family:'Instrument Serif',serif;font-weight:400;font-size:clamp(38px,7vw,60px);line-height:1;margin:10px 0 8px}
.authshell h1 em{font-style:italic;color:var(--amberglow)}
.authshell .lead p{color:var(--muted);font-size:15px}
.card{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);
  border-radius:14px;padding:26px;width:100%;max-width:360px}
.card h2{font-family:'Archivo';font-weight:600;font-size:17px;margin-bottom:16px}
.field{margin-bottom:14px}
.field label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px;letter-spacing:.02em}
.field input{width:100%;background:var(--ocean);border:1px solid var(--line);border-radius:8px;
  color:var(--bone);padding:11px 12px;font-family:'Archivo';font-size:14px}
.field input:focus{outline:none;border-color:var(--amber)}
.btn{width:100%;background:var(--amber);color:#1a1206;border:none;border-radius:8px;padding:12px;
  font-family:'Archivo';font-weight:700;font-size:14px;cursor:pointer;letter-spacing:.02em}
.btn:hover{background:var(--amberglow)}
.alt{text-align:center;font-size:13px;color:var(--muted);margin-top:16px}

/* ---- empty state ---- */
.empty{margin-top:60px;text-align:center;max-width:520px;margin-left:auto;margin-right:auto}
.empty h2{font-family:'Instrument Serif',serif;font-weight:400;font-size:34px;margin-bottom:10px}
.empty p{color:var(--muted);margin-bottom:24px}
.dropzone{background:var(--panel);border:1.5px dashed var(--line);border-radius:14px;padding:34px 24px}
.dropzone input[type=file]{display:block;margin:0 auto 16px;color:var(--muted);font-size:13px}
.hint{font-size:12px;color:var(--muted);margin-top:16px}

/* ---- masthead / board (dashboard) ---- */
.masthead{padding:26px 0 24px;border-bottom:1px solid var(--line)}
.eyebrow{font-family:'Space Mono',monospace;font-size:12px;letter-spacing:.32em;text-transform:uppercase;
  color:var(--amber);display:flex;align-items:center;gap:12px}
.eyebrow::after{content:"";height:1px;flex:1;background:linear-gradient(90deg,var(--line),transparent)}
h1.big{font-family:'Instrument Serif',serif;font-weight:400;font-size:clamp(36px,6.4vw,64px);line-height:1;margin:14px 0 6px}
h1.big em{font-style:italic;color:var(--amberglow)}
.subhead{font-size:15px;color:var(--muted);max-width:60ch}
.board{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:28px}
.flap{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line);
  border-radius:8px;padding:16px;position:relative;overflow:hidden}
.flap::before{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:rgba(0,0,0,.45)}
.flap .num{font-family:'Space Mono',monospace;font-weight:700;font-size:clamp(24px,3.4vw,38px);
  color:var(--amberglow);text-shadow:0 0 18px rgba(240,166,60,.25);line-height:1}
.flap .lbl{font-family:'Space Mono',monospace;font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-top:9px}
.flap .sub{font-size:11px;color:var(--teal);margin-top:3px}

section{margin-top:50px}
.sec-head{display:flex;align-items:baseline;gap:14px;margin-bottom:18px}
.sec-head h2{font-family:'Instrument Serif',serif;font-weight:400;font-size:29px}
.sec-head .tag{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.2em;color:var(--muted);text-transform:uppercase}
.sec-head .tag.act{margin-left:auto;cursor:pointer;border:1px solid var(--line);padding:6px 11px;border-radius:7px}
.sec-head .tag.act:hover{color:var(--bone);border-color:var(--amber)}

/* ---- map ---- */
.mapcard{background:radial-gradient(120% 120% at 30% 0%,var(--ocean2),var(--ocean));
  border:1px solid var(--line);border-radius:14px;padding:8px;position:relative}
#map{width:100%;height:auto;display:block;border-radius:10px}
.land{fill:#142d39;stroke:#1f3a48;stroke-width:.7;stroke-linejoin:round}
.grat{stroke:#1b3340;stroke-width:.6;fill:none}
.arc{fill:none;stroke:var(--amber);stroke-opacity:.5;stroke-linecap:round;transition:stroke-opacity .2s,stroke-width .2s}
.arc.intl{stroke:var(--teal)}
.dotcore{fill:var(--bone)}
.dot{cursor:pointer}
.dot.home .dotcore{fill:var(--home)}
.aplabel{font-family:'Space Mono',monospace;font-size:10px;fill:var(--muted);pointer-events:none}
.aplabel.big{fill:var(--bone);font-size:11px}
.tip{position:absolute;pointer-events:none;background:rgba(10,20,27,.96);border:1px solid var(--line);
  border-radius:9px;padding:10px 13px;font-size:12.5px;opacity:0;transition:opacity .12s;
  transform:translate(-50%,-118%);min-width:150px;z-index:9;box-shadow:0 10px 30px rgba(0,0,0,.5)}
.tip .t-code{font-family:'Space Mono',monospace;color:var(--amber);font-weight:700;font-size:14px}
.tip .t-city{color:var(--bone);margin:1px 0 6px}
.tip .t-row{color:var(--muted);font-size:11.5px;display:flex;justify-content:space-between;gap:16px}
.tip .t-row b{color:var(--bone);font-weight:600}
.legend{display:flex;flex-wrap:wrap;gap:18px;padding:12px 6px 4px;font-size:12px;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:7px}
.dotk{width:9px;height:9px;border-radius:50%;display:inline-block}
.linek{width:20px;height:2px;border-radius:2px;display:inline-block}

/* ---- records ---- */
.records{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.rec{background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:18px 16px}
.rec .rk{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--amber)}
.rec .rv{font-family:'Instrument Serif',serif;font-size:27px;margin:8px 0 2px;line-height:1.05}
.rec .rd{font-size:12.5px;color:var(--muted)}

/* ---- charts ---- */
.charts{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.chartcard{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px 18px 14px}
.chartcard.wide{grid-column:1 / -1}
.chartcard h3{font-family:'Archivo';font-weight:600;font-size:14px;margin-bottom:2px}
.chartcard .csub{font-size:12px;color:var(--muted);margin-bottom:14px}
.cwrap{position:relative;height:230px}

.footer{margin-top:56px;padding-top:22px;border-top:1px solid var(--line);
  font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.06em;color:var(--muted);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px}
.footer form{display:inline}
.footer button{background:none;border:none;color:var(--muted);font-family:inherit;font-size:11px;cursor:pointer;letter-spacing:.06em}
.footer button:hover{color:var(--danger)}

/* ---- movies: index ---- */
.filters{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin-bottom:20px}
.filters .field{margin:0;flex:1 1 130px}
.filters select{width:100%;background:var(--ocean);border:1px solid var(--line);border-radius:8px;
  color:var(--bone);padding:11px 12px;font-family:'Archivo';font-size:14px}
.filters select:focus{outline:none;border-color:var(--amber)}
.filters .btn{flex:0 0 auto;width:auto;padding:12px 22px}
.filters a.clear{flex:0 0 auto;font-size:12px;color:var(--muted);padding:12px 4px}
.filters a.clear:hover{color:var(--bone)}
.score{text-align:right;flex:0 0 auto}
.score .num{font-family:'Space Mono',monospace;font-weight:700;font-size:26px;line-height:1;
  color:var(--amberglow);text-shadow:0 0 18px rgba(240,166,60,.25)}
.score .of{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.14em;color:var(--muted)}
.mlist{display:grid;gap:8px}
.mrow{display:flex;justify-content:space-between;align-items:center;gap:16px;
  background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:10px 16px;color:var(--bone)}
.mrow:hover{border-color:var(--amber)}
.mrow .rank{font-family:'Space Mono',monospace;font-size:18px;font-weight:700;color:var(--teal);flex:0 0 32px}
a.quiet{color:inherit;border-bottom:1px dotted var(--muted)}
a.quiet:hover{color:var(--amberglow);border-bottom-color:var(--amber)}
.yearnav{font-family:'Space Mono',monospace;font-size:14px;white-space:nowrap;margin-left:14px}
.yearnav a{color:var(--muted);border:1px solid var(--line);border-radius:7px;padding:4px 10px;margin-left:6px;vertical-align:middle}
.yearnav a:hover{color:var(--bone);border-color:var(--amber)}
.mrow .mt{font-family:'Instrument Serif',serif;font-size:21px;line-height:1.2}
.mrow .mt span{color:var(--muted);font-size:16px}
.mrow .ms,.toprow .ms{font-size:12px;color:var(--muted)}
.toplist{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px}
.toprow{display:flex;align-items:center;gap:14px;color:var(--bone);
  background:linear-gradient(180deg,var(--panel2),var(--panel));
  border:1px solid var(--line);border-radius:11px;padding:10px 16px}
.toprow:hover{border-color:var(--amber)}
.toprow .rank{font-family:'Space Mono',monospace;font-size:20px;font-weight:700;color:var(--teal);flex:0 0 34px}
.toprow .mt{font-family:'Instrument Serif',serif;font-size:20px;line-height:1.15}
.toprow .score{margin-left:auto}

/* ---- movies: detail ---- */
.subhead .avginline{font-family:'Space Mono',monospace;font-weight:700;color:var(--amberglow)}
.mdgrid{display:grid;grid-template-columns:230px 1fr;gap:28px}
.mdgrid.noposter{grid-template-columns:1fr}
.mdgrid .poster img{width:100%;display:block;border-radius:12px;border:1px solid var(--line)}
.plot{font-size:15px;line-height:1.65;max-width:70ch}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}
.chip{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.06em;color:var(--muted);
  border:1px solid var(--line);border-radius:999px;padding:5px 11px}
.chip b{color:var(--bone);font-weight:700}
a.chip:hover{border-color:var(--amber);color:var(--bone)}
.credits{font-size:13px;color:var(--muted);margin-top:12px;line-height:1.7}
.credits b{color:var(--bone);font-weight:600}
.rtiles{display:flex;flex-wrap:wrap;gap:10px;align-items:flex-start}
.rtile{background:var(--panel);border:1px solid var(--line);border-radius:10px;
  padding:10px 16px;text-align:center;min-width:88px}
.rtile.me{border-color:var(--amber)}
.rtile .who{font-family:'Space Mono',monospace;font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--muted);margin-bottom:2px}
.rtile .num{font-family:'Space Mono',monospace;font-weight:700;font-size:26px;line-height:1.1;
  color:var(--amberglow);text-shadow:0 0 14px rgba(240,166,60,.25)}
.rtile form{display:flex;gap:5px;justify-content:center;align-items:center;margin-top:7px}
.rtile input{background:var(--ocean);border:1px solid var(--line);border-radius:6px;color:var(--bone);
  padding:4px 6px;font-family:'Space Mono',monospace;font-size:12px;text-align:center}
.rtile input[type=number]{width:54px}
.rtile input:focus{outline:none;border-color:var(--amber)}
.rtile .mini{background:none;border:1px solid var(--line);color:var(--muted);border-radius:6px;
  padding:4px 9px;font-size:10.5px;cursor:pointer;font-family:'Archivo'}
.rtile .mini:hover{color:var(--bone);border-color:var(--amber)}

/* ---- movies: sets ---- */
.pbar{height:8px;background:var(--ocean);border:1px solid var(--line);border-radius:99px;overflow:hidden;flex:1}
.pbar i{display:block;height:100%;background:linear-gradient(90deg,var(--amber),var(--amberglow))}
.pct{font-family:'Space Mono',monospace;font-weight:700;font-size:13px;color:var(--amberglow);white-space:nowrap}
.ptable{display:grid;gap:8px}
.prow{display:flex;align-items:center;gap:14px;background:var(--panel);border:1px solid var(--line);
  border-radius:11px;padding:10px 16px}
.prow .who{font-family:'Space Mono',monospace;font-size:11px;letter-spacing:.16em;
  text-transform:uppercase;flex:0 0 110px}
.prow .pavg{font-size:12px;color:var(--muted);flex:0 0 70px;text-align:right}
.mrow.dim{opacity:.62}
a.mtl{color:inherit}
a.mtl:hover .mt{color:var(--amberglow)}
.setbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px}
.setbar .ms{font-size:12px;color:var(--muted)}
.setbar form{display:flex;gap:6px;align-items:center}
.setbar select{background:var(--ocean);border:1px solid var(--line);border-radius:7px;
  color:var(--bone);padding:5px 8px;font-family:'Archivo';font-size:12px}
.mini{background:none;border:1px solid var(--line);color:var(--muted);border-radius:6px;
  padding:4px 9px;font-size:10.5px;cursor:pointer;font-family:'Archivo'}
.mini:hover{color:var(--bone);border-color:var(--amber)}
.qin{background:var(--ocean);border:1px solid var(--line);border-radius:6px;color:var(--bone);
  padding:5px 6px;font-family:'Space Mono',monospace;font-size:12px;text-align:center;width:70px}
.qin:focus{outline:none;border-color:var(--amber)}

@media(max-width:820px){
  .board{grid-template-columns:1fr 1fr}
  .records{grid-template-columns:1fr 1fr}
  .charts{grid-template-columns:1fr}
  .chartcard.wide{grid-column:auto}
  .toplist{grid-template-columns:1fr}
  .mdgrid{grid-template-columns:1fr}
  .mdgrid .poster{max-width:230px}
  .prow{flex-wrap:wrap}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
