:root{--bg:#0f0f10;--card:#1a1a1d;--accent:#ff6b5b;--text:#eee;--sub:#9a9aa2;--line:#2a2a2f;--hh:56px;--sw:200px}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--text);font:14px/1.55 system-ui,"Hiragino Sans","Noto Sans JP",Meiryo,sans-serif}
body.gated{overflow:hidden}
a{color:inherit;text-decoration:none}
img{max-width:100%}
.hdr{position:fixed;inset:0 0 auto 0;height:var(--hh);background:var(--bg);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:0 12px;z-index:50}
.burger{background:none;border:0;color:var(--text);font-size:22px;cursor:pointer;padding:6px 10px;border-radius:8px}
.burger:hover{background:var(--card)}
.logo{font-weight:800;font-size:20px;letter-spacing:.5px}
.logo span{color:var(--accent)}
.search{flex:1;display:flex;max-width:560px;margin:0 auto}
.search input{flex:1;min-width:0;background:var(--card);border:1px solid var(--line);color:var(--text);padding:8px 14px;border-radius:20px 0 0 20px;font-size:14px}
.search button{background:var(--line);border:1px solid var(--line);color:var(--text);padding:0 16px;border-radius:0 20px 20px 0;cursor:pointer}
.btn{display:inline-block;background:var(--card);border:1px solid var(--line);color:var(--text);padding:8px 16px;border-radius:20px;cursor:pointer;font-size:14px;white-space:nowrap}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#111;font-weight:700}
.shell{padding-top:var(--hh)}
.side{display:flex;flex-direction:column;position:fixed;top:var(--hh);bottom:0;left:0;width:var(--sw);padding:12px;overflow:auto;border-right:1px solid var(--line);background:var(--bg);z-index:40}
.side a{display:block;padding:9px 12px;border-radius:8px}
.side a:hover{background:var(--card)}
.side hr{border:0;border-top:1px solid var(--line);margin:8px 0}
.main{margin-left:var(--sw);min-width:0}
body.sb-off .side{display:none}
body.sb-off .main{margin-left:0}
.scrim{display:none}
.tagbar{position:sticky;top:var(--hh);z-index:30;background:var(--bg);display:flex;gap:8px;overflow-x:auto;padding:10px 16px;border-bottom:1px solid var(--line);scrollbar-width:thin}
.tagbar a{flex:none;background:var(--card);padding:5px 14px;border-radius:16px;white-space:nowrap}
.tagbar a:hover{background:var(--accent);color:#111}
.content{padding:16px}
.sec{font-size:17px;margin:8px 0 12px}
.sub{color:var(--sub)}
.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px 12px;margin-bottom:24px}
.card{display:block;min-width:0}
.thumb{position:relative;display:block;aspect-ratio:16/9;background:var(--card);border-radius:10px;overflow:hidden}
.thumb img{width:100%;height:100%;object-fit:cover;display:block}
.thumb img.noimg{visibility:hidden}
.dur,.pr{position:absolute;font-style:normal;font-size:12px;background:rgba(0,0,0,.8);padding:1px 6px;border-radius:4px}
.dur{right:6px;bottom:6px}
.pr{left:6px;top:6px;background:var(--accent);color:#111;font-weight:700}
.ttl{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:6px;font-weight:600;line-height:1.4}
.card:hover .ttl{color:var(--accent)}
.pager{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin:16px 0}
.pager a,.pager .cur{padding:6px 12px;border-radius:8px;background:var(--card)}
.pager .cur{background:var(--accent);color:#111;font-weight:700}
.watch{display:grid;grid-template-columns:minmax(0,1fr) 340px;gap:20px}
.player{position:relative;aspect-ratio:16/9;background:#000;border-radius:10px;overflow:hidden}
.player iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.noplay{display:flex;align-items:center;justify-content:center;color:var(--sub)}
.vtitle{font-size:18px;margin:12px 0 6px}
.meta{color:var(--sub);margin-bottom:8px}
.tags{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.tags a{background:var(--card);padding:4px 12px;border-radius:14px}
.tags a:hover{background:var(--accent);color:#111}
.side-grid{grid-template-columns:1fr}
.doc{max-width:760px}
.doc h2{font-size:16px;margin-top:20px}
.msg{text-align:center;padding:60px 0}
.foot{border-top:1px solid var(--line);padding:20px 16px;color:var(--sub);font-size:12px;text-align:center}
.foot a{text-decoration:underline}
.gate{position:fixed;inset:0;background:rgba(10,10,11,.96);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px}
.gate-box{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:28px;max-width:420px;width:100%;text-align:center}
.gate-box h2{margin:0 0 8px;font-size:22px}
.gate-box form{display:flex;gap:12px;justify-content:center;margin:18px 0 10px}
.gate-box small{color:var(--sub)}
[hidden]{display:none!important}
.side-foot{margin-top:auto;padding-top:8px;border-top:1px solid var(--line)}
.side-foot .muted{color:var(--sub);font-size:12px}
.linkbtn{display:block;width:100%;text-align:left;background:none;border:0;color:inherit;font:inherit;padding:9px 12px;border-radius:8px;cursor:pointer}
.linkbtn:hover{background:var(--card)}
.acts{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0}
.acts-l{color:var(--sub)}
.tiers{display:flex;gap:6px}
.btn.on{background:var(--accent);border-color:var(--accent);color:#111;font-weight:700}
.btn[disabled]{opacity:.5;cursor:default}
.rep-box{display:flex;gap:6px;align-items:center}
.rep-sel{background:var(--card);border:1px solid var(--line);color:var(--text);padding:7px 10px;border-radius:8px;font-size:14px}
.act-msg{flex-basis:100%;margin:0;min-height:1.4em;color:var(--sub)}
.act-msg.err{color:var(--accent)}
.tabs{display:flex;gap:8px;margin:0 0 14px}
.tabs a{background:var(--card);padding:6px 14px;border-radius:16px}
.tabs a.on{background:var(--accent);color:#111;font-weight:700}
.msg .row{display:flex;gap:10px;justify-content:center;margin-top:14px}
@media (max-width:1100px){.grid{grid-template-columns:repeat(3,1fr)}.watch{grid-template-columns:1fr}.side-grid{grid-template-columns:repeat(3,1fr)}}
@media (max-width:900px){
  .main{margin-left:0}
  .side{transform:translateX(-100%);transition:transform .2s;width:240px;z-index:70}
  body.sb-off .side{display:flex}
  body.sb-open .side{transform:none}
  body.sb-open .scrim{display:block;position:fixed;inset:0;background:rgba(0,0,0,.6);z-index:60}
}
@media (max-width:640px){
  .grid,.side-grid{grid-template-columns:repeat(2,1fr);gap:12px 8px}
  .logo{font-size:17px}.btn{padding:7px 10px}.content{padding:10px}
  .search button{padding:0 10px}
}
