:root{
  --bg:#070510;
  --panel:rgba(255,255,255,.075);
  --panel2:rgba(255,255,255,.11);
  --line:rgba(255,255,255,.14);
  --text:#faf5ff;
  --muted:#b7aacd;
  --muted2:#7f7396;
  --primary:#b666ff;
  --cyan:#22d3ee;
  --pink:#ff5cc8;
  --gold:#ffd087;
  --safe-area-bottom:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box}
html,body{margin:0; min-height:100%; background:var(--bg); color:var(--text); font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;}
body{
  background:
    radial-gradient(circle at 14% 5%, rgba(182,102,255,.28), transparent 34%),
    radial-gradient(circle at 90% 15%, rgba(34,211,238,.18), transparent 32%),
    radial-gradient(circle at 50% 110%, rgba(255,92,200,.12), transparent 34%),
    #070510;
  overflow-x:hidden;
}
.bg-glow{position:fixed; z-index:-1; width:44vw; height:44vw; border-radius:50%; filter:blur(80px); opacity:.25}
.g1{left:-18vw; top:12vh; background:var(--primary)}
.g2{right:-18vw; bottom:6vh; background:var(--cyan)}
a{text-decoration:none; color:inherit}
button,input,select,textarea{font:inherit}
img{display:block; max-width:100%}
.topbar{
  position:fixed; top:0; left:0; right:0; z-index:50;
  height:72px; display:flex; align-items:center; justify-content:space-between;
  padding:10px 18px;
  backdrop-filter:blur(22px);
  background:linear-gradient(180deg,rgba(7,5,16,.92),rgba(7,5,16,.58));
  border-bottom:1px solid rgba(255,255,255,.08);
}
.brand{display:flex; align-items:center; gap:10px}
.brand-mark{width:42px;height:42px;border-radius:16px;display:grid;place-items:center;font-weight:900;background:linear-gradient(135deg,var(--primary),var(--cyan));box-shadow:0 0 28px rgba(182,102,255,.35)}
.brand b{display:block; font-size:17px; line-height:1.05}
.brand small{display:block; color:var(--muted); font-size:10px; letter-spacing:.08em; text-transform:uppercase}
.icon-btn{width:42px;height:42px;border-radius:16px;border:1px solid var(--line);background:rgba(255,255,255,.07);color:var(--text);font-size:24px;cursor:pointer}
.drawer{
  position:fixed; z-index:60; top:80px; right:14px; width:min(280px,calc(100vw - 28px));
  display:none; flex-direction:column; padding:14px;
  background:rgba(12,8,28,.96); backdrop-filter:blur(18px);
  border:1px solid var(--line); border-radius:22px; box-shadow:0 24px 80px rgba(0,0,0,.42);
}
.drawer.open{display:flex}
.drawer a{padding:14px;border-radius:16px;color:var(--muted)}
.drawer a:hover{background:rgba(255,255,255,.07); color:var(--text)}
#view{min-height:100vh; padding:84px 16px calc(92px + var(--safe-area-bottom))}
.screen{max-width:1180px; margin:0 auto}
.hero-card{
  min-height:52vh; display:flex; flex-direction:column; justify-content:flex-end;
  padding:28px; border-radius:32px;
  background:
    linear-gradient(180deg,rgba(0,0,0,.10),rgba(0,0,0,.70)),
    url("../images/dream_01.jpg") center/cover;
  border:1px solid var(--line);
  box-shadow:0 28px 90px rgba(0,0,0,.45);
  overflow:hidden; position:relative;
}
.hero-card::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 70% 15%,rgba(255,255,255,.16),transparent 36%);pointer-events:none}
.hero-card>*{position:relative; z-index:1}
.pill{display:inline-flex;align-self:flex-start;gap:8px;padding:8px 12px;border-radius:999px;border:1px solid rgba(182,102,255,.35);background:rgba(182,102,255,.13);color:#ead5ff;font-size:13px;margin-bottom:16px}
h1,h2,h3,p{margin-top:0}
h1{font-size:clamp(34px,7vw,72px);line-height:1;letter-spacing:-.06em;margin-bottom:16px}
h2{font-size:clamp(24px,4vw,42px);line-height:1.1;letter-spacing:-.04em;margin-bottom:10px}
p{color:var(--muted);line-height:1.75}
.hero-card p{font-size:17px;max-width:740px}
.quick-actions,.ticket-actions,.camera-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:999px;padding:13px 18px;font-weight:800;cursor:pointer;transition:.22s}
.btn.primary{color:#080613;background:linear-gradient(135deg,#fff,#ead5ff 36%,#67e8f9);box-shadow:0 16px 38px rgba(182,102,255,.22)}
.btn.ghost{color:var(--text);background:rgba(255,255,255,.075)}
.btn:hover{transform:translateY(-2px)}
.section-title,.page-head{margin:34px 0 18px}
.page-head{text-align:left}
.page-head p{max-width:780px}
.page-head.compact h1{font-size:clamp(28px,5vw,48px)}
.category-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.category-card{
  min-height:150px;padding:18px;border-radius:24px;overflow:hidden;position:relative;
  border:1px solid var(--line); background:var(--panel); cursor:pointer;
}
.category-card::before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.08),rgba(0,0,0,.72)),var(--bgimg) center/cover;opacity:.86}
.category-card>*{position:relative;z-index:1}
.category-card b{display:block;font-size:20px;margin-bottom:8px}
.category-card span{color:var(--muted);font-size:13px}
.flow-cards{display:grid;grid-template-columns:repeat(5,1fr);gap:12px}
.flow-cards div,.value-grid div{
  padding:18px;border-radius:22px;border:1px solid var(--line);background:rgba(255,255,255,.06)
}
.flow-cards b{display:block;color:var(--cyan);font-size:24px;margin-bottom:8px}
.flow-cards span,.value-grid span{color:var(--muted);font-size:14px;line-height:1.6}
.filter-row{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px;position:sticky;top:72px;z-index:10;background:rgba(7,5,16,.78);backdrop-filter:blur(12px);padding:10px 0}
.filter-btn{border:1px solid var(--line);background:rgba(255,255,255,.06);color:var(--muted);border-radius:999px;padding:10px 14px;cursor:pointer}
.filter-btn.active{background:linear-gradient(135deg,#ead5ff,#67e8f9);color:#080613}
.scene-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.scene-card{border:1px solid var(--line);border-radius:24px;overflow:hidden;background:rgba(255,255,255,.06);cursor:pointer;transition:.22s}
.scene-card:hover{transform:translateY(-4px);border-color:rgba(182,102,255,.46)}
.scene-card img{width:100%;aspect-ratio:3/4;object-fit:cover}
.scene-body{padding:14px}
.scene-body b{display:block;font-size:17px}
.scene-body span{display:block;color:var(--muted);font-size:12px;line-height:1.6;margin-top:6px}
.scene-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px}
.scene-tags i{font-style:normal;font-size:11px;color:#e9d5ff;border:1px solid rgba(182,102,255,.28);border-radius:999px;padding:5px 7px;background:rgba(182,102,255,.1)}
.player-screen{height:calc(100vh - 154px);display:grid;grid-template-rows:minmax(0,1fr) auto;gap:12px}
.player-stage{position:relative;overflow:hidden;border-radius:30px;border:1px solid var(--line);background:#000;box-shadow:0 28px 90px rgba(0,0,0,.45)}
.player-stage img{width:100%;height:100%;object-fit:contain;margin:auto}
.screen-frame{position:absolute;inset:10px;border:2px solid rgba(255,255,255,.16);border-radius:24px;box-shadow:inset 0 0 80px rgba(182,102,255,.12);pointer-events:none}
.stand-zone{position:absolute;bottom:8%;width:25%;height:48%;border:2px dashed rgba(255,255,255,.78);border-radius:999px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:14px;background:rgba(34,211,238,.06);box-shadow:0 0 30px rgba(34,211,238,.16)}
.stand-zone span{font-size:13px;background:rgba(0,0,0,.55);padding:7px 10px;border-radius:999px;color:#fff}
.stand-zone.left{left:9%}
.stand-zone.right{right:9%}
.stand-zone.center{left:50%;transform:translateX(-50%)}
.player-info{position:absolute;left:18px;bottom:18px;right:18px;padding:14px 16px;border-radius:20px;background:rgba(0,0,0,.55);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.14)}
.player-info b{display:block}
.player-info small{color:var(--muted);line-height:1.5}
.control-panel{display:flex;gap:10px;overflow:auto;padding-bottom:6px}
.control-panel .btn{white-space:nowrap}
.camera-layout,.lighting-dashboard,.merchant-screen{display:grid;grid-template-columns:1fr .8fr;gap:18px;align-items:start}
.camera-preview{position:relative;min-height:520px;border:1px solid var(--line);border-radius:30px;overflow:hidden;background:#000;box-shadow:0 28px 90px rgba(0,0,0,.36)}
.camera-preview video,.camera-preview img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.camera-preview video{display:none}
#captureCanvas{display:none}
.camera-overlay{position:absolute;inset:0;background:radial-gradient(circle at 50% 40%,transparent 35%,rgba(0,0,0,.14));pointer-events:none}
.person-outline{position:absolute;bottom:8%;left:10%;width:30%;height:58%;border:2px dashed rgba(255,255,255,.85);border-radius:999px;display:flex;align-items:flex-end;justify-content:center;padding-bottom:14px;background:rgba(182,102,255,.06)}
.person-outline span{background:rgba(0,0,0,.58);padding:7px 10px;border-radius:999px;font-size:12px}
.guide-line{position:absolute;background:rgba(255,255,255,.18)}
.guide-line.horizontal{left:0;right:0;top:50%;height:1px}
.guide-line.vertical{top:0;bottom:0;left:50%;width:1px}
.shoot-card,.light-controls,.merchant-panel{border:1px solid var(--line);border-radius:28px;background:rgba(255,255,255,.07);padding:22px}
.shoot-card ul{padding-left:18px;color:var(--muted);line-height:1.8}
.tiny{font-size:12px;color:var(--muted2)}
.light-preview{position:relative;min-height:520px;border:1px solid var(--line);border-radius:30px;overflow:hidden;background:#000;box-shadow:0 28px 90px rgba(0,0,0,.36)}
.light-preview img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}
.light-wash{position:absolute;inset:0;mix-blend-mode:screen;opacity:.45;background:linear-gradient(135deg,#ff5cc8,#22d3ee)}
.light-label{position:absolute;left:18px;bottom:18px;padding:12px 14px;border-radius:18px;background:rgba(0,0,0,.58);border:1px solid rgba(255,255,255,.14)}
.mode-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin:16px 0}
.mode-btn{text-align:left;border:1px solid var(--line);border-radius:18px;background:rgba(255,255,255,.06);color:var(--text);padding:14px;cursor:pointer}
.mode-btn.active{border-color:rgba(34,211,238,.58);box-shadow:0 0 0 4px rgba(34,211,238,.08)}
.mode-btn small{display:block;color:var(--muted);margin-top:5px}
.sliders label{display:block;color:var(--muted);margin:14px 0}
.sliders input{width:100%}
.device-card{margin-top:18px;padding:16px;border-radius:20px;background:rgba(34,211,238,.08);border:1px solid rgba(34,211,238,.18)}
.device-card b{display:block}
.device-card span{display:block;color:var(--muted);font-size:13px;line-height:1.6;margin-top:7px}
.ticket-card{min-height:620px;border-radius:34px;border:1px solid var(--line);padding:30px;display:flex;flex-direction:column;justify-content:center;background:linear-gradient(180deg,rgba(0,0,0,.14),rgba(0,0,0,.72)),url("../images/cafe_maid_01.jpg") center/cover;box-shadow:0 28px 90px rgba(0,0,0,.4)}
.fake-qr{width:150px;height:150px;border-radius:24px;background:repeating-linear-gradient(45deg,#fff 0 8px,#111 8px 16px);display:grid;place-items:center;color:#080613;margin:20px 0;position:relative;overflow:hidden}
.fake-qr::after{content:"";position:absolute;inset:20px;background:#fff;border-radius:14px}
.fake-qr span,.fake-qr b{position:relative;z-index:1;background:#080613;color:#fff;padding:4px 7px;border-radius:8px}
.fake-qr b{display:block;margin-top:30px}
.value-grid{display:grid;gap:12px}
.tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:50;
  display:grid;grid-template-columns:repeat(5,1fr);gap:0;
  padding:8px 8px calc(8px + var(--safe-area-bottom));
  background:rgba(7,5,16,.86);backdrop-filter:blur(22px);border-top:1px solid rgba(255,255,255,.08)
}
.tabbar a{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:18px;color:var(--muted);font-weight:700;font-size:13px}
.tabbar a.active{background:linear-gradient(135deg,rgba(182,102,255,.28),rgba(34,211,238,.14));color:#fff;border:1px solid rgba(255,255,255,.08)}
@media(max-width:980px){
  .category-grid,.scene-grid{grid-template-columns:repeat(2,1fr)}
  .flow-cards{grid-template-columns:repeat(2,1fr)}
  .camera-layout,.lighting-dashboard,.merchant-screen{grid-template-columns:1fr}
}
@media(max-width:620px){
  #view{padding-left:12px;padding-right:12px}
  .hero-card{min-height:58vh;padding:22px}
  .category-grid,.scene-grid{grid-template-columns:1fr}
  .flow-cards{grid-template-columns:1fr}
  .player-screen{height:calc(100vh - 154px)}
  .control-panel{display:grid;grid-template-columns:repeat(2,1fr);overflow:visible}
  .control-panel .btn{padding:12px 10px;font-size:13px}
  .camera-preview,.light-preview{min-height:470px}
  .mode-grid{grid-template-columns:1fr}
  .ticket-card{min-height:520px}
}
