:root{
      
      --bg0:#07070b;
      --bg1:#0a0b12;
      --bg2:#101225;

      --ink:rgba(255,255,255,.92);
      --muted:rgba(255,255,255,.72);
      --dim:rgba(255,255,255,.58);

      --stroke:rgba(255,255,255,.14);
      --stroke2:rgba(255,255,255,.22);

      --card:rgba(255,255,255,.07);
      --card2:rgba(255,255,255,.11);

      --seira:#50f0ff;
      --astra:#ff4ccf;
      --gold:#ffd06a;

      --shadow: 0 20px 70px rgba(0,0,0,.62);
      --shadow2: 0 12px 34px rgba(0,0,0,.44);
      --glowS: 0 0 18px rgba(80,240,255,.18);
      --glowA: 0 0 18px rgba(255,76,207,.16);

      --radius:22px;
      --max:1200px;
      --tapbarH: 68px;

      
      --serif: "Noto Serif KR", serif;
      --sans: "IBM Plex Sans KR", system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans KR", "Apple SD Gothic Neo", "Malgun Gothic", Arial, sans-serif;
      --mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono","Courier New", monospace;

      
      --fxShiftOpacity:.42;
      --fxScanOpacity:.09;
      --fxGrainOpacity:.16;
      --fxDotOpacity:.20;
    }

    *{box-sizing:border-box}
    html,body{height:100%}
    body{
      margin:0;
      color:var(--ink);
      font-family:var(--sans);
      overflow-x:hidden;
      background:
        radial-gradient(1200px 760px at 14% 8%, rgba(80,240,255,.14), transparent 58%),
        radial-gradient(1200px 760px at 86% 10%, rgba(255,76,207,.12), transparent 58%),
        radial-gradient(1050px 920px at 55% 112%, rgba(255,208,106,.08), transparent 60%),
        linear-gradient(180deg, var(--bg0), var(--bg1) 45%, var(--bg2));
    }
    a{color:inherit;text-decoration:none}
    button{font:inherit}
    .wrap{max-width:var(--max); margin:0 auto; padding:0 16px}

    
    .fx-aurora{
      pointer-events:none;
      position:fixed; inset:-30%;
      background:
        radial-gradient(closest-side at 18% 20%, rgba(80,240,255,.18), transparent 55%),
        radial-gradient(closest-side at 78% 22%, rgba(255,76,207,.16), transparent 55%),
        radial-gradient(closest-side at 55% 78%, rgba(255,208,106,.10), transparent 60%);
      filter: blur(26px) saturate(1.2);
      opacity:var(--fxShiftOpacity);
      animation: aurora 12s ease-in-out infinite alternate;
      mix-blend-mode:screen;
    }
    @keyframes aurora{
      0%{transform: translate3d(-1.8%, -1.0%, 0) rotate(-1deg) scale(1.02)}
      50%{transform: translate3d(2.0%, 1.2%, 0) rotate(1deg) scale(1.05)}
      100%{transform: translate3d(-1.2%, 1.8%, 0) rotate(-.7deg) scale(1.04)}
    }

    .fx-bloom{
      pointer-events:none;
      position:fixed; inset:-20%;
      background:
        radial-gradient(600px 260px at 20% 30%, rgba(255,255,255,.08), transparent 60%),
        radial-gradient(520px 240px at 84% 34%, rgba(255,255,255,.06), transparent 62%),
        radial-gradient(740px 340px at 55% 105%, rgba(255,255,255,.05), transparent 64%);
      filter: blur(22px);
      opacity:.35;
      animation: bloom 10s ease-in-out infinite alternate;
      mix-blend-mode:soft-light;
    }
    @keyframes bloom{
      0%{transform: translate3d(0,0,0) scale(1.02)}
      100%{transform: translate3d(1.2%, -1.0%, 0) scale(1.06)}
    }

    .fx-grain{
      pointer-events:none;
      position:fixed; inset:0;
      background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E");
      mix-blend-mode:overlay;
      opacity:var(--fxGrainOpacity);
    }

    .fx-scan{
      pointer-events:none;
      position:fixed; inset:0;
      background: repeating-linear-gradient(
        to bottom,
        rgba(255,255,255,.05) 0px,
        rgba(255,255,255,.05) 1px,
        rgba(0,0,0,0) 5px,
        rgba(0,0,0,0) 11px
      );
      opacity:var(--fxScanOpacity);
      mix-blend-mode:soft-light;
    }

    .fx-vignette{
      pointer-events:none;
      position:fixed; inset:-70px;
      background: radial-gradient(circle at 50% 35%, transparent 38%, rgba(0,0,0,.52) 78%, rgba(0,0,0,.78) 100%);
      opacity:.52;
    }

    .fx-dots{pointer-events:none; position:fixed; inset:0; opacity:var(--fxDotOpacity);}
    .dot{
      position:absolute;
      width:4px; height:4px;
      border-radius:999px;
      filter: blur(.25px);
      animation: floatUp linear infinite;
      transform: translateZ(0);
    }
    @keyframes floatUp{
      from{transform:translate3d(0, 20px, 0); opacity:0}
      18%{opacity:1}
      82%{opacity:1}
      to{transform:translate3d(0, -120vh, 0); opacity:0}
    }

    .fx-glitchline{
      pointer-events:none;
      position:fixed; left:-10%; right:-10%;
      height:2px; top:18%;
      background: linear-gradient(90deg, transparent, rgba(80,240,255,.36), rgba(255,76,207,.30), transparent);
      filter: blur(.45px);
      opacity:0;
      animation: glitchline 6.6s ease-in-out infinite;
      mix-blend-mode:screen;
    }
    @keyframes glitchline{
      0%,62%{opacity:0; transform:translateY(0)}
      68%{opacity:.58; transform:translateY(240px)}
      70%{opacity:.14; transform:translateY(252px)}
      72%{opacity:.48; transform:translateY(268px)}
      74%,100%{opacity:0; transform:translateY(286px)}
    }

    @media (prefers-reduced-motion: reduce){
      .fx-aurora,.fx-bloom,.dot,.fx-glitchline{animation:none!important}
    }

    
    header{
      position:sticky; top:0; z-index:30;
      backdrop-filter: blur(14px);
      background: linear-gradient(180deg, rgba(10,12,18,.92), rgba(10,12,18,.38));
      border-bottom:1px solid rgba(255,255,255,.10);
    }
    .topbar{
      display:flex; align-items:center; justify-content:space-between;
      gap:12px;
      padding:12px 0;
    }
    .brand{
      display:flex; align-items:center; gap:10px;
      min-width:0;
      flex:1 1 auto;
    }
    .logo{
      width:40px; height:40px; border-radius:14px;
      border:1px solid rgba(255,255,255,.14);
      background:
        radial-gradient(14px 14px at 30% 30%, rgba(80,240,255,.55), transparent 65%),
        radial-gradient(14px 14px at 70% 70%, rgba(255,76,207,.50), transparent 65%),
        rgba(255,255,255,.06);
      box-shadow: var(--glowS), var(--glowA);
      flex:0 0 auto;
    }
    .brandText{min-width:0}
    .brandTitle{
      font-family:var(--serif);
      font-weight:900;
      letter-spacing:.04em;
      font-size:15px;
      margin:0;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
    }
    .brandTitle .g{
      background: linear-gradient(90deg, var(--seira), var(--astra));
      -webkit-background-clip:text;
      background-clip:text;
      color:transparent;
    }
    .brandSub{
      margin-top:4px;
      font-family:var(--mono);
      font-size:11px;
      color:rgba(255,255,255,.60);
      letter-spacing:.02em;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
    }

    .actions{
      display:flex;
      gap:8px;
      align-items:center;
      flex:0 0 auto;
    }
    .iconBtn{
      border:1px solid rgba(255,255,255,.14);
      background: rgba(255,255,255,.06);
      color:rgba(255,255,255,.90);
      padding:10px 12px;
      border-radius:14px;
      cursor:pointer;
      transition:.2s ease;
      box-shadow: var(--shadow2);
      font-family:var(--mono);
      font-size:12px;
      letter-spacing:.01em;
      white-space:nowrap;
    }
    .iconBtn:hover{transform:translateY(-1px); background:rgba(255,255,255,.08)}
    .iconBtnGlow{
      border-color: rgba(80,240,255,.22);
      background: linear-gradient(135deg, rgba(80,240,255,.12), rgba(255,76,207,.08));
      box-shadow: var(--glowS), var(--glowA), var(--shadow2);
    }

    
    .hero{padding:14px 0 10px}
    .heroCard{
      border-radius: calc(var(--radius) + 8px);
      border:1px solid rgba(255,255,255,.16);
      background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.03));
      box-shadow: var(--shadow);
      overflow:hidden;
      position:relative;
    }
    .heroCard::before{
      content:"";
      position:absolute; inset:-2px;
      background:
        radial-gradient(520px 240px at 14% 0%, rgba(255,255,255,.10), transparent 62%),
        radial-gradient(520px 240px at 100% 12%, rgba(255,76,207,.08), transparent 64%);
      filter: blur(18px);
      opacity:.85;
      pointer-events:none;
    }
    .heroInner{position:relative; padding:16px}
    .kicker{
      display:flex; gap:8px; flex-wrap:wrap;
      font-family:var(--mono);
      font-size:11px;
      color:rgba(255,255,255,.70);
      letter-spacing:.02em;
    }
    .pill{
      border:1px solid rgba(255,255,255,.14);
      background: rgba(0,0,0,.18);
      padding:7px 10px;
      border-radius:999px;
    }
    .heroTitle{
      margin:12px 0 6px;
      font-family:var(--serif);
      font-weight:900;
      letter-spacing:.06em;
      line-height:1.10;
      font-size: clamp(28px, 6.5vw, 46px);
    }
    .heroTitle .g{
      background: linear-gradient(90deg, var(--seira), var(--astra));
      -webkit-background-clip:text;
      background-clip:text;
      color:transparent;
    }
    .heroSub{
      margin:0;
      font-family:var(--mono);
      font-size:12px;
      line-height:1.7;
      color:rgba(255,255,255,.74);
      letter-spacing:.01em;
    }

    main{padding-bottom: calc(var(--tapbarH) + 14px + env(safe-area-inset-bottom));}

    
    .toolStrip{
      margin-top:12px;
      display:grid;
      grid-template-columns: 1fr auto;
      gap:10px;
      align-items:center;
    }
    .searchWrap{
      position:relative;
      border-radius:18px;
      border:1px solid rgba(255,255,255,.16);
      background: rgba(0,0,0,.16);
      box-shadow: var(--shadow2);
      overflow:hidden;
    }
    .searchWrap::before{
      content:"";
      position:absolute; inset:-1px;
      background: linear-gradient(90deg, rgba(80,240,255,.10), rgba(255,76,207,.08));
      opacity:.55;
      pointer-events:none;
      filter: blur(12px);
    }
    .search{
      position:relative;
      width:100%;
      padding:12px 14px 12px 40px;
      border:0;
      outline:none;
      background: transparent;
      color:var(--ink);
      font-family:var(--sans);
      font-size:14px;
    }
    .search::placeholder{color:rgba(255,255,255,.50)}
    .searchIcon{
      position:absolute;
      left:12px; top:50%;
      transform:translateY(-50%);
      width:18px; height:18px;
      opacity:.75;
    }
    .filterBtn{
      border-radius:18px;
      border:1px solid rgba(255,255,255,.16);
      background: rgba(0,0,0,.16);
      box-shadow: var(--shadow2);
      padding:12px 12px;
      font-family:var(--mono);
      font-size:12px;
      color:rgba(255,255,255,.84);
      display:flex; align-items:center; gap:10px;
      cursor:pointer;
      user-select:none;
    }
    .filterDot{
      width:10px; height:10px; border-radius:999px;
      background: linear-gradient(180deg, var(--seira), var(--astra));
      box-shadow: var(--glowS), var(--glowA);
    }

    .filters{
      margin-top:10px;
      display:flex; gap:8px; flex-wrap:wrap;
    }
    .chip{
      display:inline-flex; align-items:center; gap:8px;
      padding:10px 12px;
      border-radius:999px;
      border:1px solid rgba(255,255,255,.14);
      background: rgba(255,255,255,.05);
      color:rgba(255,255,255,.84);
      font-family:var(--mono);
      font-size:12px;
      letter-spacing:.01em;
      cursor:pointer;
      user-select:none;
      transition:.18s ease;
    }
    .chip:hover{transform:translateY(-1px); background:rgba(255,255,255,.07)}
    .chip.active{
      border-color: rgba(255,255,255,.22);
      background: linear-gradient(135deg, rgba(80,240,255,.12), rgba(255,76,207,.08));
      box-shadow: var(--glowS), var(--glowA);
    }

    
    .sectionTitleRow{
      display:flex; justify-content:space-between; align-items:flex-end; gap:10px;
      margin:14px 0 10px;
    }
    .sectionTitleRow h2{
      margin:0;
      font-family:var(--mono);
      font-size:12px;
      letter-spacing:.08em;
      color:rgba(255,255,255,.84);
    }
    .sectionTitleRow p{
      margin:0;
      font-family:var(--mono);
      font-size:12px;
      color:rgba(255,255,255,.60);
      letter-spacing:.02em;
    }

    .panel{
      border-radius:var(--radius);
      border:1px solid rgba(255,255,255,.16);
      background: rgba(255,255,255,.06);
      box-shadow: var(--shadow2);
      overflow:hidden;
    }

    .rosterPanel{padding:12px}
    .rosterScroller{
      display:flex; gap:10px;
      overflow:auto;
      padding-bottom:6px;
      scroll-snap-type:x mandatory;
      -webkit-overflow-scrolling: touch;
    }
    .rosterScroller::-webkit-scrollbar{height:8px}
    .rosterScroller::-webkit-scrollbar-thumb{background:rgba(255,255,255,.10); border-radius:999px}

    .card{
      min-width: 256px;
      max-width: 340px;
      flex:0 0 auto;
      border-radius:22px;
      border:1px solid rgba(255,255,255,.16);
      background: rgba(0,0,0,.16);
      padding:14px;
      cursor:pointer;
      transition:.22s ease;
      scroll-snap-align:start;
      position:relative;
      overflow:hidden;
    }
    .card::before{
      content:"";
      position:absolute; inset:-1px;
      background: linear-gradient(90deg, rgba(80,240,255,.10), rgba(255,76,207,.08));
      opacity:.0;
      transition:.22s ease;
      pointer-events:none;
      filter: blur(16px);
    }
    .card:hover{transform:translateY(-2px); background:rgba(255,255,255,.06)}
    .card:hover::before{opacity:.9}
    .cardName{
      font-family:var(--serif);
      font-weight:900;
      letter-spacing:.02em;
      font-size:16px;
      margin:0;
    }
    .cardMeta{
      margin-top:8px;
      font-family:var(--mono);
      font-size:12px;
      color:rgba(255,255,255,.70);
      line-height:1.5;
      letter-spacing:.01em;
    }
    .cardFooter{
      margin-top:12px;
      display:flex;
      justify-content:space-between;
      align-items:center;
      gap:10px;
    }
    .badge{
      display:inline-flex; align-items:center; gap:8px;
      padding:8px 10px;
      border-radius:999px;
      border:1px solid rgba(255,255,255,.14);
      background: rgba(255,255,255,.04);
      font-family:var(--mono);
      font-size:12px;
      color:rgba(255,255,255,.78);
      white-space:nowrap;
    }
    .mark{
      width:10px; height:10px; border-radius:999px;
      background: linear-gradient(180deg, var(--seira), var(--astra));
      box-shadow: var(--glowS), var(--glowA);
    }
    .openHint{
      font-family:var(--mono);
      font-size:12px;
      color:rgba(255,255,255,.62);
      white-space:nowrap;
    }

    
    .galleryPanel{padding:12px}
    .grid{
      display:grid;
      grid-template-columns: repeat(2, 1fr);
      gap:10px;
    }
    @media (min-width: 720px){
      .grid{grid-template-columns: repeat(4, 1fr);}
    }
    .shot{
      position:relative;
      aspect-ratio: 4 / 3;
      border-radius:18px;
      border:1px solid rgba(255,255,255,.16);
      background: rgba(255,255,255,.06);
      overflow:hidden;
      cursor:pointer;
      transition:.2s ease;
      box-shadow: var(--shadow2);
    }
    .shot:hover{transform:translateY(-1px); box-shadow: var(--shadow2), var(--glowS);}
    .shot img{
      width:100%; height:100%;
      object-fit:cover;
      display:block;
      filter: contrast(1.06) saturate(1.02) brightness(1.06);
    }
    .idx{
      position:absolute; left:10px; bottom:10px;
      font-family:var(--mono);
      font-size:12px;
      letter-spacing:.01em;
      color:rgba(255,255,255,.86);
      background: rgba(0,0,0,.40);
      border:1px solid rgba(255,255,255,.14);
      padding:7px 10px;
      border-radius:999px;
      white-space:nowrap;
    }

    
    .tapbar{
      position:fixed; left:0; right:0; bottom:0;
      height: calc(var(--tapbarH) + env(safe-area-inset-bottom));
      padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
      background: linear-gradient(180deg, rgba(10,12,18,.10), rgba(10,12,18,.90));
      border-top:1px solid rgba(255,255,255,.10);
      backdrop-filter: blur(14px);
      z-index:60;
    }
    .tabs{
      display:grid;
      grid-template-columns: 1fr 1fr 1fr;
      gap:10px;
      max-width: var(--max);
      margin:0 auto;
    }
    .tab{
      display:flex; align-items:center; justify-content:center; gap:8px;
      padding:12px 10px;
      border-radius:16px;
      border:1px solid rgba(255,255,255,.14);
      background: rgba(255,255,255,.05);
      color:rgba(255,255,255,.86);
      font-family:var(--mono);
      font-size:12px;
      letter-spacing:.01em;
      cursor:pointer;
      transition:.2s ease;
      user-select:none;
      white-space:nowrap;
    }
    .tab:hover{background:rgba(255,255,255,.07)}
    .tab.active{
      border-color: rgba(255,255,255,.22);
      background: linear-gradient(135deg, rgba(80,240,255,.12), rgba(255,76,207,.08));
      box-shadow: var(--glowS), var(--glowA);
    }
    .tabDot{
      width:10px; height:10px; border-radius:999px;
      background: linear-gradient(180deg, var(--seira), var(--astra));
      box-shadow: var(--glowS), var(--glowA);
      flex:0 0 auto;
    }

    @media (min-width: 1024px){
      main{padding-bottom:28px}
      .tapbar{display:none}
    }

    footer{
      padding:22px 0 28px;
      color:rgba(255,255,255,.56);
      font-size:12px;
      font-family:var(--mono);
      letter-spacing:.01em;
    }
    .foot{
      border-top:1px solid rgba(255,255,255,.10);
      padding-top:14px;
      display:flex; justify-content:space-between; gap:10px; flex-wrap:wrap;
    }

    
    .modal{
      position:fixed; inset:0; z-index:100;
      display:none;
      align-items:flex-end;
      justify-content:center;
      background: rgba(0,0,0,.74);
      backdrop-filter: blur(10px);
    }
    .modal.show{display:flex}

    .sheet{
      width: 100%;
      max-width: 980px;
      border-radius: 26px 26px 0 0;
      border:1px solid rgba(255,255,255,.16);
      background: rgba(14,16,24,.86);
      box-shadow: var(--shadow);
      overflow:hidden;
      transform: translateZ(0);
      animation: sheetIn .22s ease-out;
    }
    @keyframes sheetIn{
      from{transform: translate3d(0, 18px, 0); opacity:0}
      to{transform: translate3d(0, 0, 0); opacity:1}
    }

    .sheetTop{
      padding:12px 14px;
      border-bottom:1px solid rgba(255,255,255,.10);
      background: rgba(255,255,255,.03);
      display:grid;
      grid-template-columns: 1fr auto;
      gap:10px;
      align-items:center;
    }

    .handle{
      width: 52px;
      height: 5px;
      border-radius: 999px;
      background: rgba(255,255,255,.22);
      margin: 10px auto 0;
    }

    .sheetTitle{
      min-width:0;
      margin:0;
      font-family:var(--serif);
      font-weight:900;
      letter-spacing:.02em;
      font-size:16px;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
    }
    .sheetTitle .g{
      background: linear-gradient(90deg, var(--seira), var(--astra));
      -webkit-background-clip:text;
      background-clip:text;
      color:transparent;
    }

    .sheetBtns{
      display:flex;
      gap:8px;
      flex-wrap:wrap;
      justify-content:flex-end;
    }
    .sheetBtn{
      border:1px solid rgba(255,255,255,.14);
      background: rgba(255,255,255,.05);
      color:rgba(255,255,255,.88);
      padding:10px 12px;
      border-radius:14px;
      cursor:pointer;
      transition:.2s ease;
      font-family:var(--mono);
      font-size:12px;
      letter-spacing:.01em;
      white-space:nowrap;
    }
    .sheetBtn:hover{background:rgba(255,255,255,.08); transform:translateY(-1px)}
    .sheetBtn.icon{
      padding:10px 10px;
      min-width: 44px;
      text-align:center;
    }

    .sheetBody{
      padding:14px;
      display:grid;
      gap:12px;
    }

    .visualFrame{
      border-radius:22px;
      border:1px solid rgba(255,255,255,.16);
      background: rgba(0,0,0,.16);
      overflow:hidden;
      box-shadow: var(--shadow2);
      position:relative;
    }
    .visualFrame::before{
      content:"";
      position:absolute; inset:-2px;
      background:
        radial-gradient(520px 220px at 18% 0%, rgba(80,240,255,.16), transparent 62%),
        radial-gradient(520px 220px at 88% 10%, rgba(255,76,207,.14), transparent 64%);
      filter: blur(18px);
      opacity:.85;
      pointer-events:none;
    }
    .visualFrame::after{
      content:"";
      position:absolute; inset:0;
      background: linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.45));
      pointer-events:none;
    }

    .visual{
      width:100%;
      aspect-ratio: 16/10;
      object-fit:cover;
      display:block;
      filter: contrast(1.05) saturate(1.02) brightness(1.06);
      transform: translateZ(0);
    }

    .visualMeta{
      position:absolute;
      left:12px; right:12px; bottom:12px;
      display:flex;
      justify-content:space-between;
      align-items:flex-end;
      gap:10px;
      pointer-events:none;
    }
    .visualTag{
      display:inline-flex;
      align-items:center;
      gap:8px;
      padding:8px 10px;
      border-radius:999px;
      border:1px solid rgba(255,255,255,.14);
      background: rgba(0,0,0,.44);
      backdrop-filter: blur(8px);
      font-family:var(--mono);
      font-size:12px;
      color:rgba(255,255,255,.88);
      white-space:nowrap;
    }
    .visualTag .mark{
      width:10px; height:10px; border-radius:999px;
      background: linear-gradient(180deg, var(--seira), var(--astra));
      box-shadow: var(--glowS), var(--glowA);
    }

    .visualHint{
      font-family:var(--mono);
      font-size:12px;
      color:rgba(255,255,255,.74);
      letter-spacing:.01em;
      padding:8px 10px;
      border-radius:999px;
      border:1px solid rgba(255,255,255,.14);
      background: rgba(0,0,0,.34);
      backdrop-filter: blur(8px);
      white-space:nowrap;
    }

    .infoCard{
      border-radius:22px;
      border:1px solid rgba(255,255,255,.16);
      background: linear-gradient(180deg, rgba(255,255,255,.06), rgba(0,0,0,.12));
      box-shadow: var(--shadow2);
      overflow:hidden;
      position:relative;
    }
    .infoCard::before{
      content:"";
      position:absolute; inset:-2px;
      background:
        repeating-linear-gradient(
          135deg,
          rgba(255,255,255,.05) 0px,
          rgba(255,255,255,.05) 1px,
          rgba(0,0,0,0) 10px,
          rgba(0,0,0,0) 18px
        );
      opacity:.22;
      pointer-events:none;
    }
    .infoTop{
      padding:12px 14px;
      border-bottom:1px solid rgba(255,255,255,.10);
      background: rgba(255,255,255,.03);
      display:flex;
      justify-content:space-between;
      align-items:center;
      gap:10px;
    }
    .infoTop .label{
      font-family:var(--mono);
      font-size:12px;
      color:rgba(255,255,255,.78);
      letter-spacing:.06em;
    }
    .infoTop .stamp{
      font-family:var(--mono);
      font-size:12px;
      padding:7px 10px;
      border-radius:999px;
      border:1px solid rgba(255,255,255,.14);
      background: rgba(0,0,0,.22);
      color:rgba(255,255,255,.82);
      white-space:nowrap;
    }
    .infoBody{
      padding:14px;
      display:grid;
      gap:10px;
    }
    .rowLine{
      display:grid;
      grid-template-columns: 108px 1fr;
      gap:10px;
      align-items:start;
    }
    .k{
      font-family:var(--mono);
      font-size:12px;
      color:rgba(255,255,255,.60);
      letter-spacing:.02em;
    }
    .v{
      font-family:var(--sans);
      font-size:15px;
      color:rgba(255,255,255,.88);
      line-height:1.55;
      word-break:keep-all;
    }
    @media (max-width: 380px){
      .rowLine{grid-template-columns: 96px 1fr;}
      .v{font-size:14px}
    }

    @media (min-width: 900px){
      .modal{align-items:center; padding:16px;}
      .sheet{
        border-radius: 26px;
        max-width: 980px;
      }
      .handle{display:none}
      .sheetBody{
        grid-template-columns: 1.05fr .95fr;
        align-items:start;
      }
      .visualFrame{aspect-ratio: auto;}
      .visual{aspect-ratio: 4/3;}
      .infoCard{height:100%;}
    }

    
    .lightbox{
      position:fixed; inset:0; z-index:90;
      display:none;
      align-items:center; justify-content:center;
      background: rgba(0,0,0,.78);
      backdrop-filter: blur(12px);
      padding: 12px;
    }
    .lightbox.show{display:flex}
    .lbInner{
      width:min(1100px, 100%);
      border-radius:22px;
      border:1px solid rgba(255,255,255,.14);
      background: rgba(14,16,24,.74);
      box-shadow: var(--shadow);
      overflow:hidden;
    }
    .lbTop{
      display:flex; justify-content:space-between; align-items:center; gap:10px;
      padding:12px 12px;
      border-bottom:1px solid rgba(255,255,255,.10);
      background: rgba(255,255,255,.03);
    }
    .lbTop .title{
      font-family:var(--mono);
      font-size:12px;
      letter-spacing:.01em;
      color:rgba(255,255,255,.80);
      margin:0;
      white-space:nowrap;
      overflow:hidden;
      text-overflow:ellipsis;
    }
    .lbBtns{display:flex; gap:8px; flex-wrap:wrap}
    .lbImgWrap{background: rgba(0,0,0,.20)}
    .lbImg{
      width:100%;
      max-height: min(78vh, 760px);
      object-fit:contain;
      display:block;
      margin:0 auto;
      filter: contrast(1.03) saturate(1.00) brightness(1.06);
    }

    
    .toast{
      position:fixed; left:50%; bottom: calc(var(--tapbarH) + 14px + env(safe-area-inset-bottom));
      transform:translateX(-50%);
      z-index:110;
      background: rgba(12,14,20,.92);
      border:1px solid rgba(255,255,255,.14);
      box-shadow: var(--shadow2), var(--glowS);
      padding:10px 12px;
      border-radius:14px;
      font-size:12px;
      color:rgba(255,255,255,.86);
      opacity:0; pointer-events:none;
      transition:.22s ease;
      backdrop-filter: blur(10px);
      font-family:var(--mono);
      letter-spacing:.01em;
      white-space:nowrap;
    }
    .toast.show{opacity:1; transform:translateX(-50%) translateY(-4px)}
    @media (min-width: 1024px){
      .toast{bottom: 18px;}
    }


img{
  max-width:100%;
  -webkit-user-drag:none;
}
.card,
.shot,
.infoCard,
.visualFrame{
  content-visibility:auto;
}
.card{contain-intrinsic-size:190px}
.shot{contain-intrinsic-size:180px}
@media (max-width:720px){
  :root{
    --fxShiftOpacity:.28;
    --fxScanOpacity:.055;
    --fxGrainOpacity:.10;
    --fxDotOpacity:.13;
  }
  .fx-bloom{
    display:none;
  }
  header,
  .tapbar,
  .modal,
  .lightbox{
    backdrop-filter:none;
  }
  .heroCard,
  .panel,
  .card,
  .shot,
  .sheet,
  .lbInner{
    box-shadow:0 12px 34px rgba(0,0,0,.36);
  }
}
@media (prefers-reduced-motion: reduce){
  *,
  *::before,
  *::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
}


/* v4: mobile roster card spacing fix */
@media (max-width:720px){
  .rosterPanel{
    padding:10px !important;
  }

  .rosterScroller{
    gap:10px !important;
    align-items:stretch !important;
    padding-bottom:4px !important;
  }

  .card{
    min-width:250px !important;
    max-width:250px !important;
    min-height:0 !important;
    height:154px !important;
    padding:13px 13px 12px !important;
    border-radius:20px !important;
    display:flex !important;
    flex-direction:column !important;
    justify-content:space-between !important;
  }

  .cardName{
    font-size:18px !important;
    line-height:1.18 !important;
    margin:0 !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
  }

  .cardMeta{
    margin-top:7px !important;
    font-size:12px !important;
    line-height:1.48 !important;
    display:-webkit-box !important;
    -webkit-line-clamp:2 !important;
    -webkit-box-orient:vertical !important;
    overflow:hidden !important;
  }

  .cardFooter{
    margin-top:10px !important;
  }

  .badge{
    padding:7px 10px !important;
    font-size:11px !important;
  }

  .openHint{
    font-size:11px !important;
  }
}

@media (max-width:390px){
  .card{
    min-width:235px !important;
    max-width:235px !important;
    height:146px !important;
    padding:12px !important;
  }

  .cardName{
    font-size:17px !important;
  }

  .cardMeta{
    font-size:11px !important;
  }
}

