
:root{--c1:#7c3aed;--c2:#e04090;--c3:#0891b2;--c4:#f59e0b;--text:#2d1b4e;--text2:#5c4080;--surf:rgba(255,255,255,0.55);--surf-h:rgba(255,255,255,0.78);--bdr:rgba(124,58,237,0.1);--sh:0 4px 30px rgba(0,0,0,0.04);--r:22px;--r2:14px;--t:0.4s cubic-bezier(0.22,0.61,0.36,1)}
html.dark{--text:#f0e4ff;--text2:#b098d8;--surf:rgba(12,6,30,0.5);--surf-h:rgba(20,10,48,0.7);--bdr:rgba(150,120,220,0.12);--sh:0 4px 40px rgba(0,0,0,0.5)}
.ico{display:inline-block;vertical-align:middle;width:1.2em;height:1.2em;flex-shrink:0}
*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}
body{font-family:"Noto Serif SC","PingFang SC",serif;color:var(--text);min-height:100vh;line-height:1.75;overflow-x:hidden;background:#f5f0ff;transition:background 0.8s,color var(--t)}
html.dark body{background:#060312}
.noise{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0.025;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:200px 200px}
.aurora{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:0.6}
.aurora-band{position:absolute;width:200%;height:50%;border-radius:50%;filter:blur(100px);animation:aurora var(--dur) ease-in-out infinite;opacity:0.5;mix-blend-mode:screen}
.aurora-band:nth-child(1){background:linear-gradient(90deg,transparent,#7c3aed,#c084fc,transparent);top:-20%;left:-50%;--dur:12s;animation-delay:0s}
.aurora-band:nth-child(2){background:linear-gradient(90deg,transparent,#e04090,#f472b6,transparent);top:10%;left:-30%;--dur:16s;animation-delay:-4s}
.aurora-band:nth-child(3){background:linear-gradient(90deg,transparent,#0891b2,#67e8f9,transparent);top:30%;left:-60%;--dur:20s;animation-delay:-8s}
.aurora-band:nth-child(4){background:linear-gradient(90deg,transparent,#f59e0b,#fbbf24,transparent);top:50%;left:-40%;--dur:14s;animation-delay:-12s}
@keyframes aurora{0%,100%{transform:translateX(0)translateY(0)rotate(0deg)}25%{transform:translateX(8%)translateY(-3%)rotate(1deg)}50%{transform:translateX(-5%)translateY(5%)rotate(-1deg)}75%{transform:translateX(3%)translateY(-2%)rotate(0.5deg)}}
.stars{position:fixed;inset:0;z-index:0;pointer-events:none}
.star{position:absolute;background:#fff;border-radius:50%;animation:twinkle var(--dur) ease-in-out infinite;animation-delay:var(--dl)}
@keyframes twinkle{0%,100%{opacity:var(--lo,0.15);transform:scale(1)}50%{opacity:var(--hi,1);transform:scale(var(--sc,2))}}
.petal{position:fixed;pointer-events:none;z-index:0;animation:pf linear forwards}
@keyframes pf{0%{transform:translateY(-5vh)rotate(0deg)translateX(0);opacity:0}8%{opacity:0.65}85%{opacity:0.4}100%{transform:translateY(108vh)rotate(720deg)translateX(120px);opacity:0}}
.danmaku-layer{position:fixed;inset:0;z-index:10;pointer-events:none;overflow:hidden}
.danmaku-item{position:absolute;white-space:nowrap;font-size:0.85em;font-weight:500;padding:8px 20px;border-radius:22px;background:var(--surf);border:1px solid var(--bdr);backdrop-filter:blur(10px);color:var(--text);box-shadow:0 2px 12px rgba(0,0,0,0.06);animation:dm-scroll var(--spd,18s) linear forwards;opacity:0;display:flex;align-items:center;gap:8px}
.danmaku-item .dm-av{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2));display:flex;align-items:center;justify-content:center;font-size:0.75em;flex-shrink:0}
.danmaku-item .dm-tag{font-size:0.7em;color:var(--c1);flex-shrink:0}
.danmaku-item .dm-text{overflow:hidden;text-overflow:ellipsis;max-width:260px}
@keyframes dm-scroll{0%{transform:translateX(105vw);opacity:0}5%{opacity:0.85}85%{opacity:0.7}100%{transform:translateX(-120%);opacity:0}}
::-webkit-scrollbar{width:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(124,58,237,0.2);border-radius:3px}
.wrap{max-width:1200px;margin:0 auto;padding:0 28px;position:relative;z-index:2}
.nav{position:sticky;top:16px;z-index:100;backdrop-filter:blur(24px)saturate(1.8);-webkit-backdrop-filter:blur(24px)saturate(1.8);background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);padding:14px 30px;display:flex;align-items:center;justify-content:space-between;margin-top:20px;box-shadow:var(--sh)}
.nav-logo{font-family:"Space Grotesk",sans-serif;font-size:1.2em;font-weight:700;letter-spacing:2px;background:linear-gradient(135deg,#c084fc,#f472b6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:flex;align-items:center;gap:8px}
.nav-links{display:flex;align-items:center;gap:2px}
.nav-links a{color:var(--text2);text-decoration:none;padding:8px 18px;border-radius:24px;font-size:0.84em;font-weight:500;font-family:"Space Grotesk",sans-serif;transition:all var(--t);position:relative;letter-spacing:1px;display:flex;align-items:center;gap:6px}
.nav-links a::before{content:"";position:absolute;inset:0;border-radius:24px;background:linear-gradient(135deg,var(--c1),var(--c2));opacity:0;transition:opacity var(--t);z-index:-1}
.nav-links a:hover::before,.nav-links a.active::before{opacity:1}.nav-links a:hover,.nav-links a.active{color:#fff}
.theme-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--bdr);background:var(--surf);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--t);margin-left:10px}
.theme-btn:hover{background:var(--surf-h);transform:rotate(25deg)}
.sec-head{font-family:"Space Grotesk",sans-serif;font-size:1.2em;font-weight:700;color:var(--text);margin-bottom:20px;display:flex;align-items:center;gap:12px;letter-spacing:2px}
.sec-head::after{content:"";flex:1;height:1px;background:linear-gradient(90deg,var(--bdr),transparent)}
.card-cat{padding:5px 14px;border-radius:12px;font-size:0.88em;font-weight:600;letter-spacing:0.5px}
.cat-tech{background:rgba(124,58,237,0.18);color:#c084fc}.cat-life{background:rgba(236,72,153,0.18);color:#f472b6}
.cat-anime{background:rgba(252,165,165,0.18);color:#fca5a5}.cat-design{background:rgba(6,182,212,0.18);color:#67e8f9}
.cat-thought{background:rgba(196,181,253,0.18);color:#c4b5fd}.cat-travel{background:rgba(134,239,172,0.18);color:#86efac}
.footer{text-align:center;padding:40px 20px;color:var(--text2);font-size:0.85em;border-top:1px solid var(--bdr);margin-top:24px;font-family:"Space Grotesk",sans-serif;letter-spacing:1px}
.heart{display:inline-block;animation:hb 1.5s ease-in-out infinite}
@keyframes hb{0%,100%{transform:scale(1)}15%{transform:scale(1.3)}30%{transform:scale(1)}}
.page-title{font-family:"Space Grotesk",sans-serif;font-size:2.4em;font-weight:900;text-align:center;padding:50px 0 30px;letter-spacing:4px;background:linear-gradient(135deg,#e9d5ff,#f0abfc,#c4b5fd);-webkit-background-clip:text;-webkit-text-fill-color:transparent;display:flex;align-items:center;justify-content:center;gap:14px}
.card{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);overflow:hidden;backdrop-filter:blur(16px);cursor:pointer;transition:all var(--t)}
.card:hover{background:var(--surf-h);transform:translateY(-4px);box-shadow:0 12px 36px rgba(124,58,237,0.15);border-color:rgba(124,58,237,0.3)}
.card-cover{width:100%;height:150px;background:linear-gradient(135deg,var(--c1),var(--c2),var(--c3));display:flex;align-items:center;justify-content:center;font-size:3em;transition:transform 0.5s;position:relative;overflow:hidden}
.card-cover::after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,transparent 0%,rgba(0,0,0,0.3) 100%)}
.card:hover .card-cover{transform:scale(1.06)}.card-body{padding:22px}
.card-meta{display:flex;align-items:center;gap:12px;margin-bottom:12px;font-size:0.76em;color:var(--text2);font-family:"Space Grotesk",sans-serif}
.card-title{font-family:"Space Grotesk",sans-serif;font-size:1.1em;font-weight:700;margin-bottom:8px;line-height:1.5;transition:color var(--t)}
.card:hover .card-title{color:var(--c1)}.card-excerpt{font-size:0.88em;color:var(--text2);line-height:1.6;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:14px;font-size:0.8em;color:var(--text2);font-family:"Space Grotesk",sans-serif}
.card-more{color:var(--c1);font-weight:600;display:flex;align-items:center;gap:4px;transition:gap var(--t)}.card:hover .card-more{gap:8px}
.tag-btn{padding:8px 22px;border-radius:22px;border:1px solid var(--bdr);background:var(--surf);color:var(--text2);font-size:0.84em;cursor:pointer;font-family:inherit;transition:all var(--t);display:flex;align-items:center;gap:6px}
.tag-btn.sel{background:linear-gradient(135deg,var(--c1),var(--c2))!important;border-color:transparent!important;color:#fff!important;box-shadow:0 4px 16px rgba(124,58,237,0.3)}
.chat-item{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r2);padding:18px 24px;backdrop-filter:blur(12px);transition:all var(--t);display:flex;gap:16px;align-items:flex-start}
.chat-item:hover{background:var(--surf-h);transform:translateX(6px);border-color:rgba(124,58,237,0.25)}
.chat-av{width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2));flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:1.2em}
.chat-name{font-size:0.9em;font-weight:600;color:var(--text);margin-bottom:2px}.chat-text{font-size:0.85em;color:var(--text2);line-height:1.5}
.chat-time{font-size:0.74em;color:rgba(124,58,237,0.4);margin-top:6px}
.fcard{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r2);padding:24px 20px;backdrop-filter:blur(12px);text-align:center;cursor:pointer;transition:all var(--t);text-decoration:none;color:var(--text);display:block}
.fcard:hover{background:var(--surf-h);transform:translateY(-3px);box-shadow:0 10px 30px rgba(124,58,237,0.12);border-color:rgba(124,58,237,0.25)}
.fcard-av{width:56px;height:56px;border-radius:50%;margin:0 auto 12px;background:linear-gradient(135deg,var(--c1),var(--c2));display:flex;align-items:center;justify-content:center;font-size:1.6em}
.fcard-name{font-family:"Space Grotesk",sans-serif;font-size:1em;font-weight:600;margin-bottom:4px}
.fcard-desc{font-size:0.78em;color:var(--text2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5}
@media(max-width:768px){.nav{padding:10px 16px}.nav-links a{padding:6px 10px;font-size:0.76em}.page-title{font-size:1.8em}.danmaku-item{font-size:0.75em;padding:6px 14px}.danmaku-item .dm-text{max-width:160px}}

/* === Homepage === */
.splash{position:fixed;inset:0;z-index:9999;background:radial-gradient(ellipse at 50% 50%,#1a0e38 0%,#08041a 100%);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:32px;transition:opacity 0.7s ease,visibility 0.7s ease}
.splash.hide{opacity:0;visibility:hidden;pointer-events:none}
.splash-logo{font-size:5em;animation:sf 2.5s ease-in-out infinite;filter:drop-shadow(0 0 50px rgba(192,132,252,0.6))}
@keyframes sf{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}
.splash-name{font-family:Space Grotesk,sans-serif;font-size:2.4em;font-weight:900;letter-spacing:0.2em;background:linear-gradient(135deg,#c084fc,#f472b6,#67e8f9,#fbbf24);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-size:300% 300%;animation:splashGradient 2s ease-in-out infinite}
@keyframes splashGradient{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.splash-tag{color:#8878b8;font-size:1em;letter-spacing:0.2em;font-weight:300}
.splash-orbit{position:relative;width:80px;height:80px}
.splash-ring{position:absolute;border-radius:50%;border:2px solid transparent}
.splash-ring:nth-child(1){inset:0;border-top-color:#c084fc;border-right-color:#c084fc;animation:sr1 1.5s linear infinite}
.splash-ring:nth-child(2){inset:8px;border-bottom-color:#f472b6;border-left-color:#f472b6;animation:sr2 2s linear infinite}
.splash-ring:nth-child(3){inset:16px;border-top-color:#67e8f9;animation:sr1 2.5s linear infinite reverse}
@keyframes sr1{to{transform:rotate(360deg)}}@keyframes sr2{to{transform:rotate(-360deg)}}

.hero-zone{text-align:center;padding:56px 20px 36px;position:relative}
.hero-zone::before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:600px;height:350px;background:radial-gradient(ellipse,rgba(124,58,237,0.1)0%,rgba(236,72,153,0.04)40%,transparent 70%);animation:hb 5s ease-in-out infinite;pointer-events:none}
@keyframes hb{0%,100%{transform:translate(-50%,-50%)scale(1);opacity:0.5}50%{transform:translate(-50%,-50%)scale(1.25);opacity:1}}
.hero-av{width:120px;height:120px;border-radius:50%;background:linear-gradient(135deg,var(--c1),var(--c2),var(--c3),var(--c4));padding:4px;margin:0 auto 24px;animation:avGlow 3s ease-in-out infinite;box-shadow:0 0 0 8px rgba(124,58,237,0.1),0 0 80px rgba(124,58,237,0.3)}
@keyframes avGlow{0%,100%{box-shadow:0 0 0 8px rgba(124,58,237,0.1),0 0 30px rgba(124,58,237,0.25)}50%{box-shadow:0 0 0 16px rgba(236,72,153,0.08),0 0 70px rgba(236,72,153,0.4)}}
.hero-av-inner{width:100%;height:100%;border-radius:50%;background:radial-gradient(circle at 40% 35%,#1a1040 0%,#08041a 100%);display:flex;align-items:center;justify-content:center;font-size:3em}
.hero h1{font-family:"Space Grotesk",sans-serif;font-size:2.8em;font-weight:900;letter-spacing:0.08em;background:linear-gradient(135deg,#f5e6ff 0%,#e9b8ff 25%,#fbc4e8 50%,#c4e8ff 75%,#f5e6ff 100%);background-size:200% 200%;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:titleShine 4s ease-in-out infinite;margin:0 0 10px}
@keyframes titleShine{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.hero .sub{color:var(--text2);font-size:0.95em;font-weight:300;letter-spacing:0.15em}

.info-row{display:flex;justify-content:center;gap:16px;flex-wrap:wrap;margin-bottom:24px}
.info-pill{display:flex;align-items:center;gap:10px;padding:12px 22px;border-radius:28px;background:var(--surf);border:1px solid var(--bdr);backdrop-filter:blur(16px);font-size:0.86em;color:var(--text);transition:all var(--t);cursor:default;position:relative;overflow:hidden}
.info-pill::after{content:"";position:absolute;inset:0;border-radius:28px;background:linear-gradient(135deg,var(--c1),var(--c2));opacity:0;transition:opacity var(--t);z-index:-1}
.info-pill:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(124,58,237,0.15);border-color:rgba(124,58,237,0.3)}
.info-pill .pv{font-weight:600;color:var(--c1);font-family:"Space Grotesk",sans-serif;font-size:1.05em}
.info-pill .pl{color:var(--text2);font-size:0.8em}

.status-card{display:grid;grid-template-columns:repeat(4,1fr);gap:2px;margin-bottom:28px;border-radius:var(--r);overflow:hidden;background:var(--bdr)}
.status-item{background:var(--surf);backdrop-filter:blur(16px);padding:22px 16px;text-align:center;transition:all var(--t);cursor:default;position:relative}
.status-item::before{content:"";position:absolute;bottom:0;left:20%;width:60%;height:2px;background:linear-gradient(90deg,transparent,var(--c1),transparent);opacity:0;transition:all var(--t)}
.status-item:hover{transform:translateY(-3px);background:var(--surf-h);box-shadow:0 8px 28px rgba(124,58,237,0.08)}
.status-item:hover::before{opacity:1}
.status-emoji{font-size:1.8em;display:block;margin-bottom:8px;transition:transform var(--t)}
.status-item:hover .status-emoji{transform:scale(1.15)}
.status-label{font-size:0.72em;color:var(--text2);text-transform:uppercase;letter-spacing:2px;display:block;margin-bottom:4px}
.status-value{font-size:0.82em;font-weight:600;color:var(--text);display:block;line-height:1.4}

.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:28px}
.col-block{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);backdrop-filter:blur(16px);padding:24px}
.col-head{font-family:"Space Grotesk",sans-serif;font-size:1em;font-weight:700;color:var(--text);margin-bottom:16px;display:flex;align-items:center;gap:10px;justify-content:space-between}
.col-head a{font-size:0.78em;color:var(--c1);text-decoration:none;font-weight:500;display:flex;align-items:center;gap:4px;transition:gap var(--t)}
.col-head a:hover{gap:8px}
.col-list{display:flex;flex-direction:column;gap:14px}
.mini-item{display:flex;align-items:center;gap:14px;padding:10px 14px;border-radius:var(--r2);transition:all var(--t);cursor:pointer}
.mini-item:hover{background:rgba(124,58,237,0.06)}
.mini-emoji{font-size:1.3em;width:36px;height:36px;border-radius:10px;background:rgba(124,58,237,0.08);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.mini-info{flex:1;min-width:0}
.mini-title{font-size:0.9em;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini-meta{font-size:0.76em;color:var(--text2);margin-top:2px}

.feat-wrap{margin-bottom:28px}
.feat-card{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);padding:28px 40px;display:flex;gap:28px;align-items:center;backdrop-filter:blur(16px);transition:all var(--t);cursor:pointer}
.feat-card:hover{background:var(--surf-h);transform:translateY(-3px);box-shadow:0 14px 40px rgba(124,58,237,0.12);border-color:rgba(124,58,237,0.25)}
.feat-cv{font-size:3.5em;width:100px;height:100px;border-radius:24px;background:linear-gradient(135deg,rgba(124,58,237,0.15),rgba(236,72,153,0.1));display:flex;align-items:center;justify-content:center;flex-shrink:0}
.feat-body{flex:1}
.feat-badge{display:inline-block;padding:3px 14px;border-radius:10px;background:rgba(124,58,237,0.15);color:var(--c1);font-size:0.7em;font-weight:700;letter-spacing:2px;margin-bottom:12px;font-family:"Space Grotesk",sans-serif}
.feat-card h2{font-family:"Space Grotesk",sans-serif;font-size:1.5em;font-weight:700;margin-bottom:8px}
.feat-card p{color:var(--text2);font-size:0.92em;line-height:1.7;margin-bottom:10px}

.bottom-stats{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-bottom:20px}
.stat-box{text-align:center;padding:16px 28px;background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r2);backdrop-filter:blur(12px);min-width:90px;transition:all var(--t)}
.stat-box:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(124,58,237,0.08)}
.stat-num{font-family:"Space Grotesk",sans-serif;font-size:1.6em;font-weight:900;color:var(--c1)}
.stat-unit{font-size:0.76em;color:var(--text2);margin-top:2px}

@media(max-width:768px){
  .status-card{grid-template-columns:repeat(2,1fr)}
  .two-col{grid-template-columns:1fr}
  .feat-card{flex-direction:column;text-align:center;padding:24px}
  .hero h1{font-size:2em}
}


/* === publish article form === */
.pub-article-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 22px;border-radius:28px;font-size:0.92em;font-weight:600;cursor:pointer;border:1px dashed var(--c1);background:rgba(124,58,237,0.08);color:var(--c1);transition:all var(--t);margin-bottom:16px;font-family:"Space Grotesk",sans-serif;letter-spacing:1px}
.pub-article-btn:hover{background:rgba(124,58,237,0.18);border-style:solid;transform:translateY(-1px)}
.article-modal-overlay{position:fixed;inset:0;z-index:999;background:rgba(0,0,0,0.6);backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;visibility:hidden;transition:all 0.3s}
.article-modal-overlay.open{opacity:1;visibility:visible}
.article-modal{background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);padding:32px;width:100%;max-width:640px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,0.3);backdrop-filter:blur(20px)}
.article-modal h2{font-family:"Space Grotesk",sans-serif;font-size:1.4em;margin-bottom:20px;display:flex;align-items:center;gap:10px;color:var(--text)}
.article-modal label{display:block;font-size:0.82em;font-weight:600;color:var(--text2);margin-bottom:4px;margin-top:14px;font-family:"Space Grotesk",sans-serif;letter-spacing:1px}
.article-modal input,.article-modal textarea,.article-modal select{width:100%;padding:11px 16px;border-radius:var(--r2);border:1px solid var(--bdr);background:var(--surf-h);color:var(--text);font-size:0.95em;font-family:"Noto Serif SC",serif;transition:all var(--t);outline:none}
.article-modal input:focus,.article-modal textarea:focus,.article-modal select:focus{border-color:var(--c1);box-shadow:0 0 0 3px rgba(124,58,237,0.15)}
.article-modal select{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12'%3E%3Cpath d='M2 4l4 4 4-4' fill='none' stroke='%23b098d8' stroke-width='2'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;padding-right:36px}
.article-modal textarea{resize:vertical;min-height:150px}
.article-modal .btn-row{display:flex;gap:12px;margin-top:20px;justify-content:flex-end}
.article-modal .btn-cancel{background:rgba(255,255,255,0.05);border:1px solid var(--bdr);color:var(--text2);padding:10px 24px;border-radius:var(--r2);cursor:pointer;font-size:0.9em;font-family:"Space Grotesk",sans-serif;transition:all var(--t)}
.article-modal .btn-cancel:hover{background:rgba(255,255,255,0.1)}
.article-modal .btn-submit{background:linear-gradient(135deg,var(--c1),var(--c2));border:none;color:#fff;padding:10px 28px;border-radius:var(--r2);cursor:pointer;font-size:0.9em;font-weight:600;font-family:"Space Grotesk",sans-serif;transition:all var(--t);letter-spacing:1px}
.article-modal .btn-submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(124,58,237,0.3)}
.pub-art-delete{background:none;border:none;color:var(--text2);cursor:pointer;padding:4px 8px;border-radius:6px;font-size:0.8em;transition:all var(--t);opacity:0.5}
.pub-art-delete:hover{opacity:1;color:#f87171;background:rgba(248,113,113,0.1)}
.user-article .card-cover{background:linear-gradient(135deg,var(--c1),#6366f1,var(--c3))}


/* === music player === */
.music-toggle{position:fixed;bottom:24px;right:24px;z-index:99;width:48px;height:48px;border-radius:50%;background:var(--surf);border:1px solid var(--bdr);backdrop-filter:blur(16px);color:var(--c1);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--t);box-shadow:var(--sh);font-size:1.2em}
.music-toggle:hover{transform:scale(1.1);box-shadow:0 8px 24px rgba(124,58,237,0.2)}
.music-toggle.playing{background:rgba(124,58,237,0.15);border-color:rgba(124,58,237,0.3);animation:music-pulse 2s ease-in-out infinite}
@keyframes music-pulse{0%,100%{box-shadow:0 0 0 0 rgba(124,58,237,0.3)}50%{box-shadow:0 0 0 12px rgba(124,58,237,0)}}
.music-panel{position:fixed;bottom:84px;right:24px;z-index:99;background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);padding:12px;backdrop-filter:blur(24px);box-shadow:0 8px 40px rgba(0,0,0,0.3);opacity:0;visibility:hidden;transform:translateY(10px);transition:all 0.3s}
.music-panel.open{opacity:1;visibility:visible;transform:translateY(0)}
.music-panel iframe{border-radius:8px}

/* === back to top === */
.back-top{position:fixed;bottom:84px;right:24px;z-index:98;width:44px;height:44px;border-radius:50%;background:var(--surf);border:1px solid var(--bdr);backdrop-filter:blur(16px);color:var(--c1);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all 0.4s;box-shadow:var(--sh);opacity:0;visibility:hidden;transform:translateY(20px)}
.back-top.visible{opacity:1;visibility:visible;transform:translateY(0)}
.back-top:hover{transform:translateY(-3px);box-shadow:0 8px 24px rgba(124,58,237,0.2)}
/* === reading progress === */
.read-progress{position:fixed;top:0;left:0;height:3px;background:linear-gradient(90deg,var(--c1),var(--c2));z-index:200;transition:width 0.15s linear}
/* === search bar === */
.search-wrap{position:relative;max-width:500px;margin:0 auto 20px}
.search-wrap input{width:100%;padding:12px 20px 12px 48px;border-radius:28px;border:1px solid var(--bdr);background:var(--surf);color:var(--text);font-size:0.95em;font-family:"Space Grotesk",sans-serif;outline:none;transition:all var(--t);backdrop-filter:blur(8px)}
.search-wrap input:focus{border-color:var(--c1);box-shadow:0 0 0 3px rgba(124,58,237,0.1)}
.search-wrap .search-icon{position:absolute;left:18px;top:50%;transform:translateY(-50%);color:var(--text2);font-size:1em;pointer-events:none}
.search-wrap .search-clear{position:absolute;right:16px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text2);cursor:pointer;font-size:1.2em;display:none;padding:4px 8px;border-radius:50%}
.search-wrap .search-clear:hover{color:var(--text);background:var(--surf-h)}
/* === share btn === */
.share-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border-radius:20px;border:1px solid var(--bdr);background:var(--surf);color:var(--c1);cursor:pointer;font-size:0.88em;font-family:"Space Grotesk",sans-serif;transition:all var(--t);text-decoration:none}
.share-btn:hover{background:var(--surf-h);border-color:var(--c1)}
.share-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:var(--surf);border:1px solid var(--bdr);color:var(--text);padding:10px 24px;border-radius:28px;font-size:0.88em;z-index:300;opacity:0;transition:all 0.3s;pointer-events:none;backdrop-filter:blur(12px)}
.share-toast.show{opacity:1;transform:translateX(-50%) translateY(-10px)}
/* === mini-item hover === */
.mini-item{transition:all var(--t);padding:12px 16px;border-radius:var(--r2);margin:0 -16px}
.mini-item:hover{background:var(--surf-h)}

/* === chatters publish === */
.publish-box{margin:0 auto 32px;max-width:700px;background:var(--surf);border:1px solid var(--bdr);border-radius:var(--r);padding:20px;backdrop-filter:blur(12px)}
.publish-box textarea{width:100%;min-height:60px;background:var(--surf-h);border:1px solid var(--bdr);border-radius:var(--r2);color:var(--text);padding:12px 16px;font-size:0.95em;font-family:"Noto Serif SC",serif;resize:vertical;outline:none;transition:all var(--t)}
.publish-box textarea:focus{border-color:var(--c1);box-shadow:0 0 0 3px rgba(124,58,237,0.1)}
.pub-row{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}
.pub-cats{display:flex;gap:6px;flex-wrap:wrap;flex:1}
.pub-cat{padding:5px 14px;border-radius:16px;border:1px solid var(--bdr);background:var(--surf-h);color:var(--text2);cursor:pointer;font-size:0.78em;font-family:"Space Grotesk",sans-serif;transition:all var(--t);display:flex;align-items:center;gap:4px;white-space:nowrap}
.pub-cat.sel{background:rgba(124,58,237,0.15);border-color:rgba(124,58,237,0.3);color:var(--c1)}
.pub-cat:hover{border-color:var(--c1)}
.pub-btn{padding:8px 24px;border-radius:20px;border:none;background:linear-gradient(135deg,var(--c1),var(--c2));color:#fff;cursor:pointer;font-size:0.88em;font-weight:600;font-family:"Space Grotesk",sans-serif;transition:all var(--t);display:flex;align-items:center;gap:6px;white-space:nowrap}
.pub-btn:disabled{opacity:0.4;cursor:not-allowed;transform:none}
.pub-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px rgba(124,58,237,0.3)}
.del-btn{background:none;border:none;color:var(--text2);cursor:pointer;font-size:0.9em;padding:4px 8px;border-radius:8px;transition:all var(--t);opacity:0;margin-left:auto;display:flex;align-items:center}
.chat-item:hover .del-btn{opacity:1}
.del-btn:hover{color:#f87171;background:rgba(248,113,113,0.1)}

.card-cover[style*="background-image"]{background-size:cover;background-position:center}
.card-cover[style*="background-image"]::after{opacity:0.5}
.article-cover{border:1px solid var(--bdr);overflow:hidden}

.cover-upload-wrap{display:flex;flex-direction:column;gap:8px}
.cover-file-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border-radius:20px;border:1px dashed var(--c1);background:rgba(124,58,237,0.06);color:var(--c1);cursor:pointer;font-size:0.85em;font-family:"Space Grotesk",sans-serif;transition:all var(--t);align-self:flex-start}
.cover-file-btn:hover{background:rgba(124,58,237,0.15);border-style:solid}
.cover-preview{position:relative;display:inline-block}
.cover-rm-btn{position:absolute;top:-6px;right:-6px;width:24px;height:24px;border-radius:50%;border:none;background:#f87171;color:#fff;cursor:pointer;font-size:0.75em;display:flex;align-items:center;justify-content:center;transition:all var(--t)}
.cover-rm-btn:hover{transform:scale(1.15)}
