@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+TC:wght@300;400;500;700&family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400&display=swap');
*{margin:0;padding:0;box-sizing:border-box;}
:root{--bg:#f4f3f0;--bg2:#fffefa;--bg3:#f8f7f4;--bgi:#ece9e4;--ac:#7a98a8;--acl:#e0eaee;--ach:#5e8090;--tx:#303030;--tx2:#6a7478;--tx3:#1a1a1a;--bd:#e0ddd8;--bd2:#d0ccc6;--sh:rgba(0,0,0,.03);--msg-ai:#fff;--msg-user:#e0eaee;--del:#b05050;--navh:52px;}
body.theme-warm{--bg:#f5f1ea;--bg2:#fffcf5;--bg3:#f9f5ee;--bgi:#ece6dc;--ac:#b87058;--acl:#f0dcd0;--ach:#a05a44;--tx:#3e3830;--tx2:#78706a;--tx3:#1e1a16;--bd:#e2dcd2;--bd2:#d4ccc0;--del:#b05840;--msg-ai:#fff;--msg-user:#f0dcd0;}
body.theme-sage{--bg:#f2f4f0;--bg2:#fcfdf8;--bg3:#f6f8f2;--bgi:#e6eae0;--ac:#7a917a;--acl:#e4e9e2;--ach:#5e7860;--tx:#343830;--tx2:#687068;--tx3:#1c1e1a;--bd:#d8dcd0;--bd2:#c8d0c0;--del:#a86050;--msg-ai:#fff;--msg-user:#e4e9e2;}
body.theme-lavender{--bg:#f3f1f5;--bg2:#fdfbff;--bg3:#f7f5f9;--bgi:#e8e4ee;--ac:#8878a0;--acl:#e0d8ea;--ach:#6a5e8a;--tx:#302c38;--tx2:#6e6878;--tx3:#1c1a20;--bd:#dcd8e2;--bd2:#ccc6d4;--del:#a85868;--msg-ai:#fff;--msg-user:#e0d8ea;}
body.theme-rose{--bg:#f8f3f4;--bg2:#fffbfc;--bg3:#faf6f7;--bgi:#eee4e8;--ac:#c0909a;--acl:#eedce0;--ach:#a07078;--tx:#3a3035;--tx2:#887078;--tx3:#201a1c;--bd:#e4d8dc;--bd2:#d6c8ce;--del:#a85868;--msg-ai:#fff;--msg-user:#eedce0;}
body.theme-ocean{--bg:#f0f2f4;--bg2:#fafcff;--bg3:#f4f7f9;--bgi:#e0e6ec;--ac:#6888a0;--acl:#d8e2ec;--ach:#507088;--tx:#2e3438;--tx2:#687478;--tx3:#181c20;--bd:#d4dae0;--bd2:#c4ccd4;--del:#a85858;--msg-ai:#fff;--msg-user:#d8e2ec;}
body.theme-grey{--bg:#f2f1f0;--bg2:#fdfcfa;--bg3:#f6f5f4;--bgi:#eae8e6;--ac:#808080;--acl:#e0deda;--ach:#606060;--tx:#303030;--tx2:#707070;--tx3:#1a1a1a;--bd:#dcdad8;--bd2:#cccac6;--del:#a05858;--msg-ai:#fff;--msg-user:#e0deda;}
body.theme-brown{--bg:#f4f0ea;--bg2:#fffcf6;--bg3:#f8f4ee;--bgi:#eae4da;--ac:#a08060;--acl:#e6dcd0;--ach:#886848;--tx:#3a3428;--tx2:#787060;--tx3:#1e1a14;--bd:#e0d8cc;--bd2:#d0c8ba;--del:#a06050;--msg-ai:#fff;--msg-user:#e6dcd0;}
body.theme-dark{--bg:#1e2028;--bg2:#282a34;--bg3:#24262e;--bgi:#303440;--ac:#8aa8b8;--acl:rgba(138,168,184,.15);--ach:#a4c0d0;--tx:#e0e2e8;--tx2:#a8aeb8;--tx3:#eceff4;--bd:#363840;--bd2:#444850;--sh:rgba(0,0,0,.15);--del:#c87070;--msg-ai:#2a2c36;--msg-user:rgba(138,168,184,.16);}
body.theme-dark-warm{--bg:#24201c;--bg2:#322c26;--bg3:#2c2822;--bgi:#3e3630;--ac:#c8946a;--acl:rgba(200,148,106,.15);--ach:#daa880;--tx:#e8e0d6;--tx2:#b4aa9e;--tx3:#f2ebe0;--bd:#48403a;--bd2:#564e46;--sh:rgba(0,0,0,.15);--del:#c07050;--msg-ai:#36302a;--msg-user:rgba(200,148,106,.16);}
body.theme-dark-green{--bg:#1e2220;--bg2:#282e28;--bg3:#242a24;--bgi:#343a34;--ac:#88a880;--acl:rgba(136,168,128,.15);--ach:#a0c098;--tx:#e0e6dc;--tx2:#a8b0a4;--tx3:#ecf2e8;--bd:#3a4238;--bd2:#4a5248;--sh:rgba(0,0,0,.15);--del:#c07060;--msg-ai:#2c322c;--msg-user:rgba(136,168,128,.16);}
body.theme-midnight{--bg:#1c1a24;--bg2:#262430;--bg3:#22202a;--bgi:#302e40;--ac:#9a8cc8;--acl:rgba(154,140,200,.15);--ach:#b4a6da;--tx:#e2dced;--tx2:#aea8bc;--tx3:#eee8f6;--bd:#3a3850;--bd2:#484660;--sh:rgba(0,0,0,.2);--del:#b87088;--msg-ai:#28263a;--msg-user:rgba(154,140,200,.16);}
body.theme-dark-grey{--bg:#202020;--bg2:#2a2a2a;--bg3:#262626;--bgi:#363636;--ac:#98a0a0;--acl:rgba(152,160,160,.15);--ach:#b0b8b8;--tx:#e0deda;--tx2:#a8a4a0;--tx3:#eceae6;--bd:#3c3c3c;--bd2:#4a4a4a;--sh:rgba(0,0,0,.15);--del:#c07070;--msg-ai:#2e2e2e;--msg-user:rgba(152,160,160,.16);}
body.theme-dark-brown{--bg:#201e18;--bg2:#2c2a22;--bg3:#28261e;--bgi:#3a3830;--ac:#b8a078;--acl:rgba(184,160,120,.15);--ach:#d0b890;--tx:#e4ddd2;--tx2:#b0a898;--tx3:#f0ece2;--bd:#443e36;--bd2:#524c44;--sh:rgba(0,0,0,.15);--del:#c07050;--msg-ai:#343020;--msg-user:rgba(184,160,120,.16);}
body.theme-dark-rose{--bg:#241e1e;--bg2:#322828;--bg3:#2e2424;--bgi:#403838;--ac:#c87878;--acl:rgba(200,120,120,.15);--ach:#da9090;--tx:#ece4e0;--tx2:#b8aeaa;--tx3:#f4eeea;--bd:#4a3c3c;--bd2:#584c4c;--sh:rgba(0,0,0,.15);--del:#c06868;--msg-ai:#362c2c;--msg-user:rgba(200,120,120,.16);}
body.theme-black{--bg:#0c0c0c;--bg2:#161614;--bg3:#121210;--bgi:#222220;--ac:#8a8a88;--acl:rgba(138,138,136,.12);--ach:#a8a8a6;--tx:#d4d2d0;--tx2:#a09e9a;--tx3:#e0dedc;--bd:#2a2a28;--bd2:#363634;--sh:rgba(0,0,0,.4);--del:#c07070;--msg-ai:#181816;--msg-user:rgba(138,138,136,.12);}
body{font-family:'Noto Sans TC',sans-serif;background:var(--bg);color:var(--tx);height:100dvh;display:flex;flex-direction:column;overflow:hidden;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;font-size:16px;}
::placeholder{color:var(--tx2);opacity:1;}
::-webkit-input-placeholder{color:var(--tx2);opacity:1;}
textarea,input{-webkit-user-select:text;user-select:text;}.msg-bubble{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;}
.nav-w{position:fixed;bottom:0;left:0;right:0;z-index:200;background:var(--bg2);border-top:1px solid var(--bd);padding-bottom:env(safe-area-inset-bottom,0);transition:transform .2s;}.nav-w.hide{transform:translateY(100%);}
.nav-i{display:flex;height:var(--navh);}
.nv{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:11px;color:var(--tx2);cursor:pointer;user-select:none;gap:2px;transition:color .2s;position:relative;}.nv.a{color:var(--ac);font-weight:500;}.nv::after{content:'';position:absolute;top:0;left:20%;right:20%;height:2px;background:var(--ac);border-radius:0 0 1px 1px;transform:scaleX(0);transition:transform .25s cubic-bezier(.4,0,.2,1);}.nv.a::after{transform:scaleX(1);}
.nv svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.main{flex:1;min-height:0;overflow:hidden;padding-bottom:calc(var(--navh) + env(safe-area-inset-bottom,0));}.main.np{padding-bottom:0;}
.scr{flex:1;min-height:0;overflow-y:auto;padding:0 16px 24px;scrollbar-width:none;-ms-overflow-style:none;}.scr::-webkit-scrollbar{display:none;}
*{scrollbar-width:none;-ms-overflow-style:none;}*::-webkit-scrollbar{display:none;}
.pnl{display:none;height:100%;min-height:0;}.pnl.a{display:flex;flex-direction:column;animation:pnlIn .18s ease;}
@keyframes pnlIn{from{opacity:0;}to{opacity:1;}}
@keyframes crPvIn{from{opacity:0;transform:scale(.97);}to{opacity:1;transform:scale(1);}}
.card{background:var(--bg2);border:1px solid var(--bd);border-radius:10px;padding:14px;margin-bottom:10px;box-shadow:0 1px 2px var(--sh);}
.ct{font-size:16px;font-weight:500;color:var(--tx3);margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;}
textarea,input[type="text"],input[type="number"],input[type="password"],select{width:100%;background:var(--bg3);border:1px solid var(--bd);border-radius:8px;color:var(--tx);font-family:inherit;font-size:16px;padding:10px 12px;resize:vertical;}
textarea:focus,input:focus,select:focus{outline:none;border-color:var(--ac);background:var(--bg2);}
label{display:block;font-size:14px;color:var(--tx2);margin-bottom:4px;font-weight:400;padding-left:2px;}
.f{margin-bottom:12px;position:relative;}.f>label~.ctr{position:absolute;top:0;right:2px;margin:0;}.fp-body.full .f>label~.ctr{right:18px;}.fr{display:flex;gap:10px;}.fr .f{flex:1;}
.f.se-err textarea,.f.se-err input[type="text"]{border-color:var(--del);}
.ctr{text-align:right;font-size:13px;color:var(--tx2);margin-top:3px;padding-right:2px;}
.btn{padding:10px 18px;border-radius:10px;border:none;background:var(--bg3);color:var(--tx);font-size:15px;cursor:pointer;font-family:inherit;font-weight:500;transition:transform .1s,opacity .1s;-webkit-tap-highlight-color:transparent;}@media(hover:hover){.btn:hover{opacity:.85;}}.btn:active{transform:scale(.95);opacity:.85;}
.bp{background:var(--ac);color:#fff;}@media(hover:hover){.bp:hover{background:var(--ach);}}
.bdel{background:none;color:var(--del);border:1px solid color-mix(in srgb,var(--del) 30%,transparent);}@media(hover:hover){.bdel:hover{background:color-mix(in srgb,var(--del) 8%,transparent);}}
.bs2{font-size:14px;padding:7px 14px;}
.fp-btn{background:none;border:none;color:var(--ac);font-size:16px;font-weight:600;cursor:pointer;padding:6px 2px;font-family:inherit;}.fp-btn:active{opacity:.5;}
.sh{display:flex;align-items:center;justify-content:space-between;margin:0 -16px 10px;padding:16px 16px 8px;position:sticky;top:0;z-index:10;background:var(--bg);}
.sht{font-size:24px;font-weight:700;color:var(--tx3);}
.bk{font-size:15px;color:var(--tx2);cursor:pointer;display:inline-flex;align-items:center;gap:4px;padding:6px 0;}@media(hover:hover){.bk:hover{color:var(--ac);}}
.li{display:flex;align-items:center;gap:12px;padding:18px 14px;background:var(--bg2);border:1px solid var(--bd);border-radius:12px;cursor:pointer;margin-bottom:16px;box-shadow:0 1px 2px var(--sh);position:relative;flex-wrap:wrap;transition:transform .1s;-webkit-tap-highlight-color:transparent;}.li:active{transform:scale(.98);}
.li-chat{background:var(--bg);border:none;border-radius:0;margin-bottom:0;box-shadow:none;padding:12px 16px;margin-left:-16px;margin-right:-16px;}
.chat-time{font-size:12px;color:var(--tx2);white-space:nowrap;flex-shrink:0;}
.av{width:40px;height:40px;border-radius:50%;background:var(--bgi);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;color:var(--ac);font-weight:500;overflow:hidden;border:1px solid var(--bd);cursor:pointer;}.av img{width:100%;height:100%;object-fit:cover;}
.av-list{width:72px;height:72px;font-size:24px;}
.char-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}.char-grid.anim,.wb-grid.anim{animation:gridIn .3s ease both;}@keyframes gridIn{from{opacity:0;transform:translateY(8px);}to{opacity:1;transform:translateY(0);}}
.home-official-row,.disc-section{animation:gridIn .35s ease both;}
.char-card{display:flex;flex-direction:column;background:var(--bg2);border:1px solid var(--bd);border-radius:14px;cursor:pointer;box-shadow:0 1px 2px var(--sh);position:relative;overflow:hidden;aspect-ratio:2/3;transition:transform .1s;-webkit-tap-highlight-color:transparent;}.char-card:active{transform:scale(.97);}
.char-card-cover{width:100%;flex:1;min-height:0;background:var(--bgi);display:flex;align-items:center;justify-content:center;overflow:hidden;}
.char-card-cover img{width:100%;height:100%;object-fit:cover;object-position:top;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;pointer-events:none;}
.char-card-cover .char-card-initial{font-size:42px;font-weight:600;color:var(--ac);opacity:.6;}
.char-card-info{padding:12px 14px 14px;text-align:center;width:100%;box-sizing:border-box;}
.char-card-name{font-size:17px;font-weight:600;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.char-card-sub{font-size:14px;color:var(--tx2);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.5;}
.char-card-menu{position:absolute;top:6px;right:6px;width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%;color:#fff;background:rgba(0,0,0,.35);z-index:2;}.char-card-menu:active{background:rgba(0,0,0,.5);}
.char-card-menu svg{width:18px;height:18px;}
.char-card-no-img .char-card-menu{color:var(--tx2);background:var(--bgi);}
/* Worldbook cards */
.wb-card{display:flex;flex-direction:column;background:var(--bg2);border:1px solid var(--bd);border-radius:14px;cursor:pointer;box-shadow:0 1px 2px var(--sh);position:relative;overflow:hidden;aspect-ratio:2/3;transition:transform .1s;-webkit-tap-highlight-color:transparent;}.wb-card:active{transform:scale(.97);}
.wb-card-cover{width:100%;flex:1;min-height:0;background:var(--acl);display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;position:relative;}
.wb-card-cover::before{content:'';position:absolute;top:0;left:0;right:0;bottom:0;background:repeating-linear-gradient(0deg,transparent,transparent 22px,var(--bd) 22px,var(--bd) 23px);opacity:.25;pointer-events:none;}
.wb-card-cover::after{content:'';position:absolute;left:28px;top:0;bottom:0;width:1px;background:var(--ac);opacity:.2;pointer-events:none;}
.wb-card-has-cover::before,.wb-card-has-cover::after{display:none;}
.wb-card-has-cover img{width:100%;height:100%;object-fit:cover;object-position:top;position:relative;z-index:1;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;pointer-events:none;}
.wb-card-icon{position:relative;z-index:1;margin-bottom:6px;opacity:.55;}
.wb-card-ch-count{position:relative;z-index:1;font-size:12px;color:var(--ach);opacity:.7;font-weight:500;}
.wb-card-spine{position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--ac);opacity:.35;border-radius:14px 0 0 14px;z-index:2;}
.wb-card-shadow{position:absolute;left:6px;top:0;bottom:0;width:16px;background:linear-gradient(to right,rgba(0,0,0,.12) 0%,rgba(0,0,0,.04) 40%,transparent 100%);pointer-events:none;z-index:2;}
.wb-card-info{padding:10px 12px 12px;text-align:center;width:100%;box-sizing:border-box;}
.wb-card-name{font-size:15px;font-weight:600;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.wb-card-desc{font-size:13px;color:var(--tx2);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* WB cover upload placeholder in edit */
.wb-cover-upload{width:60%;max-width:240px;aspect-ratio:2/3;margin:0 auto 16px;border-radius:14px;border:2px dashed var(--bd2);background:var(--bgi);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative;transition:border-color .15s;}.wb-cover-upload:active{border-color:var(--ac);}
.wb-cover-upload img{width:100%;height:100%;object-fit:cover;display:block;}
.wb-cover-upload .wb-up-placeholder{text-align:center;color:var(--tx2);}
.wb-cover-upload .wb-up-placeholder svg{width:36px;height:36px;stroke:currentColor;fill:none;stroke-width:1.5;opacity:.5;margin-bottom:6px;}
.wb-cover-upload .wb-up-placeholder span{font-size:13px;display:block;}
.pin-badge{position:absolute;bottom:2px;right:2px;width:20px;height:20px;background:var(--ac);border-radius:50%;display:flex;align-items:center;justify-content:center;border:2px solid var(--bg2);box-shadow:0 1px 3px rgba(0,0,0,.15);}
.pin-badge svg{width:11px;height:11px;fill:#fff;stroke:#fff;stroke-width:1;}
.lb{flex:1;min-width:0;}.lt{font-size:17px;font-weight:500;color:var(--tx3);}.ls{font-size:15px;color:var(--tx2);margin-top:6px;line-height:1.5;max-width:80%;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.li-actions{display:flex;gap:8px;width:100%;margin-top:8px;}
.li-act{flex:1;padding:10px 0;border-radius:8px;border:1px solid var(--bd);background:var(--bg2);font-size:15px;color:var(--tx2);cursor:pointer;font-family:inherit;text-align:center;display:flex;align-items:center;justify-content:center;gap:5px;}@media(hover:hover){.li-act:hover{border-color:var(--ac);color:var(--ac);}}
.li-act svg{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.sr{display:flex;align-items:center;gap:10px;}.sr input[type="range"]{flex:1;accent-color:var(--ac);}.svl{width:40px;text-align:right;font-size:15px;color:var(--ac);font-weight:500;}
.stt{font-size:17px;font-weight:600;color:var(--tx3);margin-bottom:8px;padding-bottom:5px;border-bottom:1px solid var(--bd);}
.pl{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
.pi{display:flex;align-items:center;gap:10px;padding:11px 14px;background:var(--bg2);border:1px solid var(--bd);border-radius:8px;cursor:pointer;box-shadow:0 1px 2px var(--sh);}@media(hover:hover){.pi:hover{border-color:var(--ac);}}.pi.sel{border-color:var(--ac);background:var(--acl);}
.pn2{font-size:14px;color:var(--tx3);flex:1;}.ptk{font-size:13px;color:var(--tx2);}
.snv{display:flex;gap:6px;margin-bottom:16px;flex-wrap:nowrap;}
.sbb{padding:8px 16px;border-radius:20px;border:1px solid var(--bd);background:var(--bg2);color:var(--tx2);font-size:15px;cursor:pointer;font-family:inherit;white-space:nowrap;-webkit-tap-highlight-color:transparent;outline:none;}@media(hover:hover){.sbb:hover{border-color:var(--ac);color:var(--ac);}}.sbb.a{background:var(--ac);border-color:var(--ac);color:#fff;}
.sbb.locked{opacity:.4;pointer-events:none;position:relative;}.theme-dot.locked{opacity:.3;pointer-events:none;}
.fw-lock-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:var(--bg);opacity:.85;z-index:50;display:flex;align-items:center;justify-content:center;}.fw-lock-card{text-align:center;color:var(--tx2);padding:20px;}
.sp{display:none;opacity:0;}.sp.a{display:block;animation:spIn .2s ease forwards;}@keyframes spIn{from{opacity:0;transform:translateY(6px);}to{opacity:1;transform:translateY(0);}}
.cw{display:none;flex-direction:column;height:100%;position:relative;}.cw.a{display:flex;}
.ch{padding:10px 16px;border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:8px;background:var(--bg2);flex-shrink:0;}.chn{font-size:17px;font-weight:500;color:var(--tx3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:40vw;}
.cm{flex:1;overflow-y:auto;padding:14px 10px;display:flex;flex-direction:column;gap:28px;background:var(--bg);}
.date-sep{text-align:center;font-size:13px;color:var(--tx2);padding:4px 12px;margin:0 auto;background:var(--bg3);border-radius:20px;}
.msg-row{display:flex;gap:8px;max-width:100%;align-items:flex-start;padding:0 2px;margin-bottom:6px;}.msg-row.ai{align-self:flex-start;}.msg-row.user{align-self:flex-end;flex-direction:row-reverse;}
.msg-av{width:38px;height:38px;border-radius:50%;background:var(--bgi);display:flex;align-items:center;justify-content:center;font-size:13px;flex-shrink:0;color:var(--ac);font-weight:500;overflow:hidden;border:1px solid var(--bd);margin-top:-10px;cursor:pointer;}
.msg-body{flex:1;min-width:0;}.msg-name{font-size:13px;font-weight:500;color:var(--tx2);margin-bottom:3px;display:none;}.msg-row.ai .msg-name{display:block;}
.msg-content-row{display:flex;align-items:stretch;gap:6px;}
.msg-row.user .msg-content-row{flex-direction:row-reverse;}
.msg-bubble{padding:10px 14px;border-radius:18px;font-size:16px;line-height:1.7;color:var(--tx);overflow-wrap:break-word;word-break:break-word;}
.msg-bubble pre,.msg-bubble code{white-space:pre-wrap;word-break:break-all;overflow-x:hidden;}
.msg-row.ai .msg-bubble{background:var(--msg-ai);border:1px solid var(--bd);box-shadow:0 1px 2px var(--sh);}
.msg-row.user .msg-bubble{background:var(--msg-user);border:1px solid var(--bd);}
.msg-row.user .msg-body{padding-top:0;}
.mm{font-size:11px;color:var(--tx2);flex-shrink:0;white-space:nowrap;line-height:1;padding-bottom:2px;}
.msg-meta{display:flex;flex-direction:column;align-items:center;flex-shrink:0;padding:4px 0 2px;}.msg-meta .mm{margin-top:auto;}
.msg-retry{width:22px;height:22px;border-radius:50%;background:var(--bd);color:var(--tx2);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;padding:0;}.msg-retry:active{opacity:.7;}.msg-retry svg{width:12px;height:12px;}
.hbtn{padding:4px;cursor:pointer;color:var(--tx2);display:flex;align-items:center;}
.msg-bubble p{margin:0 0 .6em;}.msg-bubble p:last-child{margin:0;}.msg-bubble em{font-style:italic;color:var(--tx2);}.msg-bubble strong{font-weight:600;}.msg-bubble blockquote{border-left:3px solid var(--ac);padding-left:10px;margin:.5em 0;color:var(--tx2);}
.cev-view-content p{margin:0 0 1.4em;}.cev-view-content p:last-child{margin:0;}.cev-view-content em{font-style:italic;color:var(--tx2);}.cev-view-content strong{font-weight:600;}.cev-view-content blockquote{border-left:3px solid var(--ac);padding-left:10px;margin:.5em 0;color:var(--tx2);}
.msg-bubble ol,.msg-bubble ul{margin:0 0 .6em;padding-left:1.6em;}.msg-bubble li{margin-bottom:.3em;}
.msg-bubble table{border-collapse:collapse;margin:.6em 0;width:100%;font-size:15px;}.msg-bubble th,.msg-bubble td{border:1px solid var(--bd2);padding:6px 10px;text-align:left;line-height:1.6;height:1.6em;}.msg-bubble th{font-weight:600;}
.ci{padding:8px 12px 10px;flex-shrink:0;background:var(--bg);border-top:none;border-image:linear-gradient(90deg,transparent,var(--bd) 50%,var(--bd) 50%,transparent) 1;border-width:1px 0 0 0;border-style:solid;}
.ci-box{display:flex;flex-direction:column;background:var(--bg3);border:1px solid var(--bd);border-radius:16px;overflow:hidden;position:relative;}
.ci-box textarea{width:100%;box-sizing:border-box;max-height:120px;min-height:40px;overflow-y:auto;resize:none;padding:8px 14px 4px 14px;line-height:1.4;border:none;background:transparent;font-family:inherit;font-size:16px;color:var(--tx);}
.ci-box textarea:focus{outline:none;}
.ci-toolbar{display:flex;align-items:center;gap:8px;padding:4px 8px 6px;}
.ci-pill{display:flex;align-items:center;justify-content:center;background:var(--bg2);border:1px solid var(--bd);border-radius:15px;height:30px;padding:0 10px;cursor:pointer;font-size:14px;font-weight:500;color:var(--tx2);flex-shrink:0;-webkit-user-select:none;user-select:none;}@media(hover:hover){.ci-pill:hover{border-color:var(--ac);color:var(--ac);}}
.ci-pill-sm{height:26px;padding:0 8px;font-size:12px;border-radius:12px;}
.ci-send{width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;margin-left:auto;border-radius:50%;transition:background .15s;}@media(hover:hover){.ci-send:hover{background:var(--bg2);}}
.ci-send.stop{background:var(--tx2);border-radius:50%;width:28px;height:28px;}@media(hover:hover){.ci-send.stop:hover{background:var(--tx);}}
.ci-top{display:flex;align-items:center;padding:6px 10px 0;}
.ci-cnt{margin-left:auto;font-size:11px;color:var(--tx2);white-space:nowrap;pointer-events:none;opacity:.5;}.ci-cnt.warn{color:var(--del);opacity:1;}

/* Bond pill (chat header) */
.bond-pill{display:none;align-items:center;justify-content:center;padding:5px 11px 6px 10px;border-radius:14px;font-size:13px;font-weight:600;line-height:1;cursor:pointer;white-space:nowrap;transition:background .2s;margin-left:2px;gap:6px;}.bond-pill.show{display:inline-flex;}
/* Lore pill (chat header) — 永遠顯示，點擊跳商店 */
.lore-pill{display:inline-flex;align-items:center;justify-content:center;padding:5px 11px 6px 10px;border-radius:14px;font-size:13px;font-weight:600;line-height:1;cursor:pointer;white-space:nowrap;transition:background .2s;margin-left:6px;background:var(--bgi);color:var(--tx2);gap:6px;}
/* Bond dropdown */
.bond-dropdown{display:none;padding:12px 16px;background:var(--bg2);border-bottom:1px solid var(--bd);position:absolute;left:0;right:0;z-index:25;box-shadow:0 4px 12px rgba(0,0,0,.1);}
.bond-dropdown.show{display:block;}
.bond-backdrop{display:none;position:fixed;inset:0;z-index:24;}.bond-backdrop.show{display:block;}
.bond-prog-wrap{margin-bottom:12px;}
.bond-prog-labels{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--tx2);}
.bond-prog-labels .bond-prog-cur{font-weight:600;color:var(--tx3);flex-shrink:0;}
.bond-prog-labels .bond-prog-next{opacity:.8;flex-shrink:0;}
.bond-prog-track{height:20px;background:var(--bd);border-radius:10px;overflow:hidden;position:relative;flex:1;min-width:0;}
.bond-prog-fill{height:100%;border-radius:10px;transition:width .3s;position:absolute;top:0;min-width:0;}
.bond-prog-fill.pos{left:0;background:var(--ac);}
.bond-prog-fill.neg{right:0;left:auto;background:rgba(100,149,237,.7);}
.bond-prog-pct{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.3);pointer-events:none;}
/* Bond swipe cards */
.bond-swipe-wrap{overflow:hidden;position:relative;}
.bond-swipe-track{display:flex;transition:transform .3s cubic-bezier(.25,.46,.45,.94);will-change:transform;}
.bond-card{flex:none;box-sizing:border-box;}
.bond-card-inner{background:var(--bg3);border:1px solid var(--bd);border-radius:10px;padding:14px;text-align:center;min-height:60px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;margin:0 2px;}
.bond-card-inner.unreached{opacity:.35;}
.bond-card-inner.active{border-color:var(--ac);background:var(--acl);}
.bond-card-inner.neg-active{border-color:rgba(100,149,237,.5);background:rgba(100,149,237,.08);}
.bond-card-label{font-size:17px;font-weight:600;color:var(--tx3);}
.bond-card-inner.active .bond-card-label{color:var(--ac);}
.bond-card-inner.neg-active .bond-card-label{color:#4a7ec5;}
.bond-card-threshold{font-size:13px;color:var(--tx2);opacity:.5;}
/* Emotion & Tracker bars (Scene Board) */
.emo-bar-row{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.emo-bar-row:last-child{margin-bottom:0;}
.emo-bar-label{font-size:13px;color:var(--tx2);min-width:36px;flex-shrink:0;}
.emo-bar-track{flex:1;height:8px;background:var(--bd);border-radius:4px;overflow:hidden;position:relative;}
.emo-bar-mid{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--tx2);opacity:.4;}
.emo-bar-fill{height:100%;border-radius:4px;background:var(--ac);transition:width .3s;}
.emo-bar-fill.neg{background:var(--del);}
.emo-bar-val{font-size:13px;font-weight:600;color:var(--tx3);min-width:36px;text-align:right;flex-shrink:0;}
/* Bond tier editor (character card) */
.bond-tier-list{display:flex;flex-direction:column;gap:0;}
.bond-tier-row{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--bd);}
.bond-tier-row:last-child{border-bottom:none;}
.bond-tier-row .bond-val-label{font-size:14px;color:var(--tx2);min-width:50px;text-align:right;flex-shrink:0;}
.bond-tier-row .bond-name-input{flex:1;padding:10px 12px;border:1px solid var(--bd);border-radius:8px;font-size:16px;background:var(--bg3);color:var(--tx);font-family:inherit;min-width:0;}
.bond-tier-row .bond-name-input:disabled{opacity:.5;}
.bond-tier-row.disabled .bond-val-label,.bond-tier-row.disabled .bond-name-input{opacity:.35;pointer-events:none;}
/* Creator Dashboard */
.dash-stats{background:var(--bg2);border:1px solid var(--bd);border-radius:12px;overflow:hidden;margin-bottom:10px;}
.dash-stat{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1px solid var(--bd);}
.dash-stat:last-child{border-bottom:none;}
.dash-stat-left{display:flex;align-items:baseline;gap:10px;}
.dash-stat-label{font-size:15px;font-weight:500;color:var(--tx);}
.dash-stat-sub{font-size:13px;color:var(--tx2);}
.dash-stat-val{font-size:15px;font-weight:700;color:var(--tx3);}
.dash-section{font-size:15px;font-weight:600;color:var(--tx3);margin:18px 0 10px;padding-left:2px;}
.dash-section:first-child{margin-top:0;}
.dash-char-row{display:flex;align-items:center;gap:10px;padding:12px 14px;background:var(--bg2);border:1px solid var(--bd);border-radius:10px;margin-bottom:8px;}
.dash-char-row.expanded{border-radius:10px 10px 0 0;margin-bottom:0;border-bottom:none;}
.dash-char-av{width:38px;height:38px;border-radius:50%;background:var(--bgi);display:flex;align-items:center;justify-content:center;font-size:15px;color:var(--ac);font-weight:500;overflow:hidden;flex-shrink:0;border:1px solid var(--bd);}.dash-char-av img{width:100%;height:100%;object-fit:cover;}
.dash-char-name{flex:1;font-size:15px;font-weight:500;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.dash-bond-dots{width:24px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;border-radius:4px;margin-left:-4px;}.dash-bond-dots:active{background:var(--bgi);}
.dash-bond-detail{background:var(--bg2);border:1px solid var(--bd);border-top:none;border-radius:0 0 10px 10px;margin-bottom:8px;}
.dash-char-nums{display:grid;grid-template-columns:repeat(3,60px);flex-shrink:0;}
.dash-char-nums span{font-size:13px;color:var(--tx2);display:flex;align-items:center;justify-content:flex-start;gap:3px;}
.dash-char-nums span svg{width:14px;height:14px;stroke:var(--tx2);fill:none;stroke-width:1.8;flex-shrink:0;}
.ch-icon{width:34px;height:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tx2);flex-shrink:0;border-radius:6px;}@media(hover:hover){.ch-icon:hover{color:var(--ac);background:var(--bgi);}}
.ham{width:28px;height:34px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tx2);flex-shrink:0;border-radius:6px;}@media(hover:hover){.ham:hover{color:var(--ac);background:var(--bgi);}}.ch>.ham.dots{margin-left:-4px;margin-right:-8px;}
.ham svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.ham.dots svg{fill:currentColor;stroke:none;}
.rp-sel{padding:8px 10px;border-radius:8px;border:1px solid var(--bd);background:var(--bg2);font-size:15px;color:var(--tx);cursor:pointer;font-family:inherit;display:flex;align-items:center;gap:4px;white-space:nowrap;}@media(hover:hover){.rp-sel:hover{border-color:var(--ac);color:var(--ac);}}.rp-sel::after{content:'▾';font-size:10px;color:var(--tx2);}
.rp-sel-sm{padding:5px 10px;border-radius:16px;font-size:13px;}
.popup-ov{position:fixed;inset:0;background:rgba(0,0,0,.25);z-index:400;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:opacity .2s,visibility 0s .2s;}.popup-ov.show{visibility:visible;opacity:1;transition:opacity .2s,visibility 0s 0s;}
.popup{background:var(--bg2);border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.12);width:min(320px,90vw);max-height:70vh;overflow-y:auto;padding:20px;transform:scale(.92);opacity:0;transition:transform .2s cubic-bezier(.4,0,.2,1),opacity .2s;}.popup-ov.show .popup{transform:scale(1);opacity:1;}
.popup-title{font-size:16px;font-weight:600;color:var(--tx3);margin-bottom:12px;}
.popup-item{padding:12px 14px;border:1px solid var(--bd);border-radius:8px;margin-bottom:6px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:space-between;gap:8px;transition:transform .1s;-webkit-tap-highlight-color:transparent;}@media(hover:hover){.popup-item:hover{border-color:var(--ac);}}.popup-item:active{transform:scale(.97);}.popup-item.active{border-color:var(--ac);background:var(--acl);}
.popup-item .check{color:var(--ac);font-weight:600;display:none;}.popup-item.active .check{display:inline;}
.confirm-ov{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:9000;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:opacity .2s,visibility 0s .2s;}.confirm-ov.show{visibility:visible;opacity:1;transition:opacity .2s,visibility 0s 0s;}
.confirm-box{background:var(--bg2);border-radius:14px;width:min(320px,88vw);padding:22px;box-shadow:0 8px 24px rgba(0,0,0,.15);text-align:center;transform:scale(.92);transition:transform .2s cubic-bezier(.4,0,.2,1);}.confirm-ov.show .confirm-box{transform:scale(1);}
.confirm-msg{font-size:16px;color:var(--tx);margin-bottom:18px;line-height:1.6;}
.confirm-actions{display:flex;gap:8px;justify-content:center;}
.side-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.25);z-index:300;}.side-overlay.show{display:block;}
.sidebar{position:fixed;top:0;right:-300px;width:300px;height:100%;z-index:301;background:var(--bg2);box-shadow:-4px 0 12px rgba(0,0,0,.08);transition:right .25s ease;overflow-y:auto;padding:20px 16px;}.sidebar.show{right:0;}
.side-title{font-size:17px;font-weight:600;color:var(--tx3);margin-bottom:12px;padding-bottom:6px;border-bottom:1px solid var(--bd);}
.side-item{padding:10px 12px;border:none;border-radius:0;margin-bottom:0;cursor:pointer;font-size:16px;color:var(--tx);display:flex;align-items:center;gap:8px;}@media(hover:hover){.side-item:hover{color:var(--ac);}}.side-item.danger{color:var(--del);margin-top:6px;}.side-item.danger svg{stroke:var(--del);}
.side-item svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
.side-section{font-size:14px;color:var(--tx2);margin:14px 0 6px;text-transform:uppercase;letter-spacing:.5px;}
.side-profile-active{padding:11px 12px;border:1px solid var(--ac);border-radius:8px;margin-bottom:6px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:15px;background:var(--acl);color:var(--tx3);}@media(hover:hover){.side-profile-active:hover{opacity:.85;}}.side-profile-active .switch-hint{font-size:12px;color:var(--ac);margin-left:auto;}
.fp{position:fixed;inset:0;z-index:260;background:var(--bg);display:flex;flex-direction:column;visibility:hidden;opacity:0;transform:translateX(40px);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .25s cubic-bezier(.4,0,.2,1),visibility 0s .25s;}.fp.show{visibility:visible;opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .25s cubic-bezier(.4,0,.2,1),visibility 0s 0s;}
.fp-head{padding:12px 16px;border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:10px;background:var(--bg2);flex-shrink:0;}.fp-title{font-size:17px;font-weight:600;color:var(--tx3);flex:1;}
.fp-body{flex:1;overflow-y:auto;padding:16px;}.fp-body.full{padding:16px 0;display:flex;flex-direction:column;}.fp-body.full .f{padding:0 16px;}.fp-body.full .f:last-of-type{flex:1;display:flex;flex-direction:column;}.fp-body.full .f:last-of-type textarea{flex:1;min-height:120px;}.fp-body.full .ev-content-f{flex:1;display:flex;flex-direction:column;}.fp-body.full .ev-content-f textarea{flex:1;min-height:120px;}
.drag-h{cursor:grab;color:var(--bd2);font-size:16px;padding:0 4px;user-select:none;touch-action:none;display:inline-flex;align-items:center;}.drag-h:active{cursor:grabbing;color:var(--ac);}.drag-h svg{width:16px;height:16px;}
/* Settings page */
.set-section{border-bottom:8px solid var(--bg3);padding-bottom:4px;}
.set-label{font-size:16px;font-weight:700;color:var(--tx3);padding:16px 16px 8px;}
.set-item{display:flex;align-items:center;gap:10px;padding:16px;cursor:pointer;transition:background .1s,transform .1s;min-height:28px;-webkit-tap-highlight-color:transparent;}.set-item:active{background:var(--bg3);transform:scale(.98);}
.set-item-text{flex:1;min-width:0;font-size:16px;color:var(--tx3);}
.set-item-sub{font-size:13px;color:var(--tx2);margin-top:2px;}
.fb-tag{display:inline-block;padding:6px 14px;border-radius:20px;font-size:14px;border:1px solid var(--bd);color:var(--tx2);cursor:pointer;transition:all .15s;}.fb-tag.active{background:var(--ac);color:#fff;border-color:var(--ac);font-weight:500;}.fb-tag:active{transform:scale(.95);}
.set-item-val{font-size:13px;color:var(--tx2);font-family:monospace;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.set-arrow{width:18px;height:18px;stroke:var(--tx2);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
.set-copy{width:16px;height:16px;stroke:var(--tx2);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
.auth-btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;max-width:320px;padding:14px 20px;border-radius:12px;border:1px solid var(--bd);background:var(--bg2);color:var(--tx3);font-size:15px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .15s;}.auth-btn:active{background:var(--bg3);}
.theme-row{display:flex;gap:10px;margin-top:0;flex-wrap:wrap;row-gap:10px;}.theme-dot{width:34px;height:34px;border-radius:50%;cursor:pointer;border:2px solid var(--bd);transition:all .15s;}@media(hover:hover){.theme-dot:hover{transform:scale(1.1);}}.theme-dot.active{border-color:var(--tx3);box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--tx3);}
/* ── Discover Page ── */
.discover-section-title{font-size:18px;font-weight:600;color:var(--tx3);margin-bottom:10px;}
.carousel-wrap{position:relative;margin:0 -16px;overflow:hidden;padding:8px 0;}
.carousel-track{display:flex;align-items:center;transition:transform .35s cubic-bezier(.25,.46,.45,.94);will-change:transform;}
.carousel-slide{flex-shrink:0;padding:0 6px;box-sizing:border-box;transition:transform .35s,opacity .35s;}
.carousel-card{border-radius:14px;overflow:hidden;background:var(--bg2);border:1px solid var(--bd);cursor:pointer;aspect-ratio:2/3;position:relative;}
.carousel-card img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;}
.carousel-card .cc-initial{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:32px;color:var(--ac);font-weight:600;opacity:.4;background:var(--bgi);}
.carousel-card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:50%;background:linear-gradient(to top,rgba(0,0,0,.55) 0%,rgba(0,0,0,.2) 40%,transparent 100%);pointer-events:none;border-radius:0 0 14px 14px;}
.carousel-card-text{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:10px 12px;}
.carousel-card-name{font-size:14px;font-weight:600;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.4);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.carousel-card-tag{font-size:13px;color:#fff;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 4px rgba(0,0,0,.4);}
.carousel-slide.center{transform:scale(1);opacity:1;}
.carousel-slide.side{transform:scale(.88);opacity:.55;}
.carousel-dots{display:none;}
.carousel-dot{width:6px;height:6px;border-radius:50%;background:var(--bd2);transition:all .25s;}.carousel-dot.a{background:var(--ac);width:16px;border-radius:3px;}
/* ── Friends Top Icons ── */
.friends-top{margin-bottom:4px;}
.friends-top-icons{display:flex;justify-content:flex-end;gap:10px;padding:12px 0 0;}
.friends-icon{display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tx2);transition:color .15s;width:24px;height:24px;}@media(hover:hover){.friends-icon:hover{color:var(--ac);}}
.friends-icon svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
.notif-dot{display:none;position:absolute;top:0;right:0;width:8px;height:8px;border-radius:50%;background:var(--del);border:1.5px solid var(--bg);}.notif-dot.show{display:block;}
/* ── Account Header (LINE-style) ── */
.acct-header{display:flex;align-items:center;gap:14px;padding:20px 16px 6px;margin:0 -16px;}.acct-info{cursor:pointer;flex:1;}.acct-info:active{opacity:.7;}.acct-av{cursor:pointer;}
.acct-info{flex:1;min-width:0;}
.acct-name{font-size:22px;font-weight:700;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.acct-bio{font-size:14px;color:var(--tx2);margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;}
/* Signature editor overlay */
.sig-overlay{position:fixed;inset:0;z-index:9999;}
.sig-bg-solid{position:absolute;inset:0;background:#1a1a1a;}
.sig-bg-img{position:absolute;inset:-40px;background-size:cover;background-position:center;filter:blur(35px) brightness(.45) saturate(1.2);}
.sig-content{position:relative;z-index:1;height:100%;display:flex;flex-direction:column;}
.sig-head{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;flex-shrink:0;}
.sig-close{width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;}
.sig-count{font-size:14px;color:rgba(255,255,255,.5);}
.sig-save{font-size:15px;color:#fff;font-weight:600;cursor:pointer;padding:6px 12px;}
.sig-save:active{opacity:.7;}
.sig-body{flex:1;display:flex;align-items:center;justify-content:center;padding:0 32px;}
.sig-input{color:#fff;font-size:20px;text-align:center;width:100%;outline:none;font-family:inherit;line-height:1.6;text-shadow:0 1px 8px rgba(0,0,0,.3);word-break:break-word;min-height:1.6em;}
.sig-input:empty::before{content:attr(data-placeholder);color:rgba(255,255,255,.35);pointer-events:none;}
.acct-av{flex-shrink:0;}
/* ── Friends List ── */
.friend-section-label{font-size:13px;font-weight:500;color:var(--tx2);padding:10px 0;border-top:1px solid var(--bd);margin-top:4px;}
.home-official-row{display:flex;gap:12px;overflow-x:auto;padding:4px 16px 12px;margin:0 -16px;-webkit-overflow-scrolling:touch;scrollbar-width:none;}.home-official-row::-webkit-scrollbar{display:none;}
.home-off-card{flex-shrink:0;width:100px;text-align:center;cursor:pointer;}.home-off-card:active{opacity:.7;}
.home-off-av{width:72px;height:72px;border-radius:50%;overflow:hidden;margin:0 auto 8px;background:var(--bg3);border:2px solid var(--ac);box-shadow:0 2px 8px rgba(0,0,0,.1);}
.home-off-av img{width:100%;height:100%;object-fit:cover;display:block;}
.home-off-name{font-size:14px;font-weight:600;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.home-off-tag{font-size:13px;color:var(--tx2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.home-cat-row{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0 12px;}
.home-cat-pill{padding:8px 16px;border-radius:20px;background:var(--bg3);border:1px solid var(--bd);font-size:13px;font-weight:500;color:var(--tx);cursor:pointer;transition:all .15s;white-space:nowrap;}.home-cat-pill:active{opacity:.7;}.home-cat-pill.hot{background:var(--acl);border-color:var(--ac);color:var(--ac);}
/* Discover tab browsing */
.disc-tab-bar{display:flex;gap:6px;overflow-x:auto;padding:0 0 12px;-webkit-overflow-scrolling:touch;scrollbar-width:none;position:relative;}.disc-tab-bar::-webkit-scrollbar{display:none;}
.disc-swipe-wrap{overflow:hidden;position:relative;}.disc-swipe-track{display:flex;will-change:transform;}.disc-swipe-page{flex-shrink:0;min-height:80px;}
.inspire-ov{position:fixed;inset:0;z-index:600;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:visibility .2s,opacity .2s;padding:16px;}.inspire-ov.show{visibility:visible;opacity:1;}
.inspire-card{background:var(--bg);border-radius:20px;padding:0;max-width:360px;width:100%;box-shadow:0 16px 48px rgba(0,0,0,.3);transform:scale(.92);transition:transform .25s cubic-bezier(.34,1.56,.64,1);overflow:hidden;max-height:85vh;display:flex;flex-direction:column;}
.inspire-ov.show .inspire-card{transform:scale(1);}
.inspire-card-head{padding:18px 20px 12px;text-align:center;flex-shrink:0;}
.inspire-card-head>svg{display:block;margin:0 auto 6px;}
.inspire-card-title{font-size:17px;font-weight:700;color:var(--tx);letter-spacing:.3px;}
.inspire-card-sub{font-size:13px;color:var(--tx2);margin-top:3px;}
.inspire-card-body{padding:0 14px 12px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch;}
.insp-slot-row{display:flex;align-items:center;gap:8px;background:var(--bg2);border-radius:12px;padding:8px 12px;}
.insp-slot-label{font-size:13px;font-weight:600;color:var(--tx2);width:36px;flex-shrink:0;}
.insp-slot-window{flex:1;height:34px;overflow:hidden;position:relative;border-radius:8px;background:var(--bg3);}
.insp-slot-track{display:flex;flex-direction:column;transition:transform .7s cubic-bezier(.23,1,.32,1);}
.insp-slot-item{height:34px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:500;color:var(--tx);white-space:nowrap;padding:0 8px;text-overflow:ellipsis;overflow:hidden;}
.insp-reroll{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--bg3);border:1px solid var(--bd);cursor:pointer;color:var(--tx2);transition:all .15s;flex-shrink:0;-webkit-tap-highlight-color:transparent;}.insp-reroll:active{transform:scale(.85);background:var(--ac);color:#fff;border-color:var(--ac);}
.insp-section{background:var(--bg2);border-radius:12px;padding:10px 12px;}
.insp-section-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.insp-section-label{font-size:13px;font-weight:600;color:var(--tx2);}
.insp-pills{display:flex;gap:6px;flex-wrap:wrap;}
.insp-pill{padding:6px 12px;border-radius:16px;background:var(--bg3);border:1.5px solid var(--bd);font-size:13px;font-weight:500;color:var(--tx);cursor:pointer;transition:all .18s;-webkit-tap-highlight-color:transparent;}.insp-pill:active{opacity:.7;}
.insp-pill.on{background:var(--ac);border-color:var(--ac);color:#fff;font-weight:600;box-shadow:0 2px 8px color-mix(in srgb,var(--ac) 35%,transparent);}
@keyframes inspPop{0%{opacity:0;transform:scale(.85);}100%{opacity:1;transform:scale(1);}}
.insp-pill.pop{animation:inspPop .25s cubic-bezier(.34,1.3,.64,1) both;}
.inspire-actions{display:flex;gap:8px;padding:0 14px 14px;flex-shrink:0;}
.inspire-actions .btn{min-width:0;flex:1;font-size:15px;padding:11px 12px;border-radius:12px;}
.insp-btn-reroll{display:inline-flex;align-items:center;gap:6px;justify-content:center;}
.insp-btn-reroll svg{transition:transform .4s cubic-bezier(.34,1.56,.64,1);}
.insp-btn-reroll.spin svg{transform:rotate(360deg);}
.disc-section{margin-top:28px;}
.disc-swipe-page>.disc-section:first-child{margin-top:8px;}
.disc-tab{padding:9px 18px;border-radius:20px;background:var(--bg3);border:1px solid var(--bd);font-size:15px;font-weight:500;color:var(--tx2);cursor:pointer;transition:all .15s;white-space:nowrap;flex-shrink:0;-webkit-tap-highlight-color:transparent;}
.disc-tab:active{opacity:.7;}
.disc-tab.active{background:var(--ac);border-color:var(--ac);color:#fff;font-weight:600;}
.disc-list{display:flex;flex-direction:column;gap:10px;padding:4px 0 0;}
.disc-card{display:flex;gap:12px;height:130px;padding:10px;border:1px solid var(--bd);border-radius:12px;background:var(--bg2);cursor:pointer;-webkit-tap-highlight-color:transparent;transition:transform .1s;overflow:hidden;}
.disc-card:active{transform:scale(.97);}
.disc-card-av{width:76px;height:110px;flex-shrink:0;background:var(--bgi);border-radius:8px;overflow:hidden;}
.disc-card-av img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;}
.disc-card-av .disc-card-initial{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:600;color:var(--ac);opacity:.4;}
.disc-card-info{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;overflow:hidden;}
.disc-card-name-row{display:flex;align-items:baseline;justify-content:space-between;gap:8px;}
.disc-card-name{font-size:17px;font-weight:600;color:var(--tx);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.disc-card-tags{font-size:13px;color:var(--ac);flex-shrink:0;white-space:nowrap;font-weight:500;}
.disc-card-sub{font-size:14px;color:var(--tx2);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.disc-card-desc{font-size:14px;color:var(--tx2);margin-top:5px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.report-reason{padding:6px 14px;border-radius:16px;font-size:13px;border:1px solid var(--bd);background:var(--bg3);color:var(--tx2);cursor:pointer;transition:all .15s;}.report-reason.sel{background:rgba(231,76,60,.15);border-color:#e74c3c;color:#e74c3c;}
.friend-item{display:flex;align-items:center;gap:12px;padding:12px 2px;cursor:pointer;transition:background .15s,transform .1s;-webkit-tap-highlight-color:transparent;}@media(hover:hover){.friend-item:hover{background:var(--bg3);}}.friend-item:active{background:var(--bg3);transform:scale(.98);}
.friend-info{flex:1;min-width:0;}
.friend-name{font-size:16px;font-weight:500;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:4px;}
.friend-sub{font-size:13px;color:var(--tx2);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* ── Account Page Tabs ── */
.acct-tab{display:none;}.acct-tab.a{display:block;}
.acct-swipe-wrap{flex:1;min-height:0;overflow:hidden;position:relative;}
.acct-swipe-track{display:flex;width:400%;height:100%;will-change:transform;}
.acct-swipe-page{width:25%;flex-shrink:0;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 16px;}
.um-item{display:flex;align-items:center;gap:12px;padding:18px 16px;background:var(--bg2);border:1px solid var(--bd);border-radius:10px;margin-bottom:10px;cursor:pointer;transition:background .15s,transform .1s;min-height:80px;box-sizing:border-box;-webkit-tap-highlight-color:transparent;position:relative;}.um-item:active{background:var(--bg3);transform:scale(.98);}
.um-name{font-size:17px;font-weight:600;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.um-meta{font-size:14px;color:var(--tx2);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.um-tag{display:inline-block;font-size:12px;font-weight:600;padding:4px 10px;border-radius:6px;letter-spacing:.03em;flex-shrink:0;}
.um-tag-creator{background:var(--ac);color:#fff;}
.um-tag-personal{background:var(--bd);color:var(--tx2);}
/* Mode Picker Sheet */
.mp-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:910;}.mp-overlay.show{display:block;}
.mp-sheet{position:fixed;bottom:0;left:0;right:0;z-index:911;background:var(--bg2);border-radius:16px 16px 0 0;height:60vh;display:flex;flex-direction:column;transform:translateY(100%);transition:transform .25s cubic-bezier(.25,.46,.45,.94);padding-bottom:env(safe-area-inset-bottom,0);}
.mp-sheet.show{transform:translateY(0);}
.mp-handle{width:36px;height:4px;background:var(--bd);border-radius:2px;margin:10px auto 6px;flex-shrink:0;}
.mp-title{font-size:16px;font-weight:600;color:var(--tx3);padding:4px 20px 10px;flex-shrink:0;}
.mp-tabs{display:flex;gap:0;padding:0 16px;flex-shrink:0;border-bottom:1px solid var(--bd);position:relative;}.mp-tabs::after{content:'';position:absolute;bottom:-1px;left:var(--ti-left,0);width:var(--ti-w,0);height:2px;background:var(--ac);border-radius:1px;transition:left .25s cubic-bezier(.4,0,.2,1),width .25s cubic-bezier(.4,0,.2,1);}.mp-tabs.dragging::after{transition:none;}
.mp-tab{flex:1;text-align:center;padding:10px 0;font-size:15px;color:var(--tx2);cursor:pointer;transition:color .15s;}.mp-tab.a{color:var(--ac);font-weight:600;}
.mp-swipe-wrap{flex:1;min-height:0;overflow:hidden;position:relative;}
.mp-swipe-track{display:flex;height:100%;transition:transform .3s cubic-bezier(.25,.46,.45,.94);}
.mp-swipe-page{flex-shrink:0;height:100%;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:12px 16px 20px;}
.mp-card{padding:18px 16px;background:var(--bg3);border:1px solid var(--bd);border-radius:10px;margin-bottom:10px;cursor:pointer;transition:background .15s,transform .1s;min-height:80px;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}.mp-card:active{background:var(--bg2);transform:scale(.98);}
.mp-card.active{border-color:var(--ac);background:rgba(var(--ac-rgb),.06);}
.mp-card-name{font-size:17px;font-weight:500;color:var(--tx3);}
.mp-card-desc{font-size:15px;color:var(--tx2);margin-top:4px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.mp-card-model{font-size:14px;color:var(--tx2);margin-top:4px;opacity:.6;}
.toast{position:fixed;top:20px;left:16px;right:16px;transform:translateY(-20px);background:var(--bg2);color:var(--tx);padding:14px 20px;border-radius:12px;font-size:16px;font-weight:500;z-index:600;opacity:0;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s;pointer-events:none;text-align:center;border:1px solid var(--bd);box-shadow:0 4px 16px var(--sh);}.toast.show{opacity:1;transform:translateY(0);}
.toast-quiet{position:fixed;bottom:80px;left:50%;transform:translateX(-50%) translateY(10px);background:var(--bg2);color:var(--tx2);padding:8px 18px;border-radius:20px;font-size:14px;z-index:600;opacity:0;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s;pointer-events:none;border:1px solid var(--bd);box-shadow:0 2px 8px var(--sh);white-space:nowrap;}.toast-quiet.show{opacity:1;transform:translateX(-50%) translateY(0);}
.reward-overlay{position:fixed;inset:0;z-index:1000;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);visibility:hidden;opacity:0;transition:opacity .25s,visibility 0s .25s;}.reward-overlay.show{visibility:visible;opacity:1;transition:opacity .25s,visibility 0s 0s;}
.reward-card{position:relative;z-index:2;width:280px;background:var(--bg2);border-radius:20px;padding:32px 24px 24px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.3);animation:rewardIn .4s cubic-bezier(.16,1,.3,1);overflow:hidden;}
@keyframes rewardIn{from{opacity:0;transform:scale(.7) translateY(20px);}to{opacity:1;transform:scale(1) translateY(0);}}
@keyframes staggerIn{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}.stg>*{animation:staggerIn .4s cubic-bezier(.4,0,.2,1) both;animation-delay:calc(var(--i,0) * 60ms);}
.reward-glow{position:absolute;top:-40px;left:50%;transform:translateX(-50%);width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(var(--ac-rgb,124,158,178),.25) 0%,transparent 70%);pointer-events:none;animation:rewardGlow 2s ease-in-out infinite alternate;}
@keyframes rewardGlow{from{opacity:.6;transform:translateX(-50%) scale(1);}to{opacity:1;transform:translateX(-50%) scale(1.15);}}
.reward-icon{font-size:48px;margin-bottom:12px;display:flex;align-items:center;justify-content:center;}.reward-icon svg{width:48px;height:48px;color:var(--ac);}
.reward-title{font-size:18px;font-weight:700;color:var(--tx3);margin-bottom:4px;}
.reward-desc{font-size:14px;color:var(--tx2);line-height:1.6;}
.reward-amount{font-size:20px;font-weight:700;color:var(--ac);margin-top:14px;display:flex;align-items:center;justify-content:center;gap:6px;}.reward-amount svg{width:20px;height:20px;}
.empty{text-align:center;padding:40px 20px;color:var(--tx2);font-size:16px;}
.hidden{display:none;}
.av-editor{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:16px;position:relative;width:140px;margin-left:auto;margin-right:auto;margin-top:8px;}
.av-ed-wrap{position:relative;width:120px;height:120px;border-radius:50%;overflow:hidden;border:2px solid var(--bd);background:var(--bgi);flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:42px;color:var(--ac);font-weight:500;}
#pf-av-wrap{width:120px;height:120px;border-radius:50%;}
.av-ed-wrap img{width:100%;height:100%;object-fit:cover;pointer-events:none;}
.crop-ov{position:fixed;top:0;left:0;width:100%;height:100%;background:var(--bg);z-index:9999;display:none;flex-direction:column;align-items:center;justify-content:space-between;}
.crop-ov.show{display:flex;}
.crop-area{position:relative;touch-action:none;overflow:hidden;flex:1;display:flex;align-items:center;justify-content:center;width:100%;}
.crop-area img{position:absolute;user-select:none;-webkit-user-drag:none;}
.crop-frame{position:absolute;box-shadow:0 0 0 9999px rgba(0,0,0,.55);pointer-events:none;
background:linear-gradient(to right,#fff 2px,transparent 2px,transparent calc(100% - 2px),#fff calc(100% - 2px)) top left/100% 24px no-repeat,
linear-gradient(to right,#fff 2px,transparent 2px,transparent calc(100% - 2px),#fff calc(100% - 2px)) bottom left/100% 24px no-repeat,
linear-gradient(to bottom,#fff 2px,transparent 2px,transparent calc(100% - 2px),#fff calc(100% - 2px)) top left/24px 100% no-repeat,
linear-gradient(to bottom,#fff 2px,transparent 2px,transparent calc(100% - 2px),#fff calc(100% - 2px)) top right/24px 100% no-repeat;
background-image:linear-gradient(rgba(255,255,255,.25) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.25) 1px,transparent 1px),linear-gradient(to right,#fff 2px,transparent 2px,transparent calc(100% - 2px),#fff calc(100% - 2px)),linear-gradient(to right,#fff 2px,transparent 2px,transparent calc(100% - 2px),#fff calc(100% - 2px)),linear-gradient(to bottom,#fff 2px,transparent 2px,transparent calc(100% - 2px),#fff calc(100% - 2px)),linear-gradient(to bottom,#fff 2px,transparent 2px,transparent calc(100% - 2px),#fff calc(100% - 2px));
background-size:100% 33.33%,33.33% 100%,100% 24px,100% 24px,24px 100%,24px 100%;
background-position:0 0,0 0,top left,bottom left,top left,top right;
background-repeat:repeat,repeat,no-repeat,no-repeat,no-repeat,no-repeat;}
.crop-circle{position:absolute;left:50%;transform:translateX(-50%);border:2px dashed rgba(255,255,255,.7);border-radius:50%;pointer-events:none;transition:top .05s linear;}

.av-ed-badge{position:absolute;bottom:12px;right:4px;width:32px;height:32px;border-radius:50%;background:var(--ac);display:flex;align-items:center;justify-content:center;border:2px solid var(--bg2);cursor:pointer;z-index:99;box-shadow:0 2px 6px rgba(0,0,0,.15);}.av-ed-badge svg{width:14px;height:14px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}

.ctx-menu{position:fixed;z-index:500;background:var(--bg2);border:1px solid var(--bd);border-radius:10px;box-shadow:0 4px 16px rgba(0,0,0,.12);padding:6px 0;min-width:150px;}
.ctx-item{padding:11px 16px;font-size:15px;cursor:pointer;color:var(--tx);display:flex;align-items:center;gap:8px;}@media(hover:hover){.ctx-item:hover{background:var(--bgi);}}.ctx-item.danger{color:var(--del);}
.bs-overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:900;display:flex;align-items:center;justify-content:center;visibility:hidden;opacity:0;transition:opacity .2s,visibility 0s .2s;}.bs-overlay.show{visibility:visible;opacity:1;transition:opacity .2s,visibility 0s 0s;}
.bs-popup{background:var(--bg2);border-radius:16px;width:min(200px,75vw);padding:6px 0;box-shadow:0 8px 30px rgba(0,0,0,.18);transform:scale(.92);opacity:0;transition:transform .2s cubic-bezier(.4,0,.2,1),opacity .2s;}.bs-overlay.show .bs-popup{transform:scale(1);opacity:1;}.bs-popup.mid{width:min(340px,85vw);}.bs-popup.wide{width:min(500px,92vw);}
.bs-item{padding:12px 20px;font-size:15px;cursor:pointer;color:var(--tx);display:flex;align-items:center;gap:10px;border-top:1px solid var(--bd);}.bs-item:first-of-type{border-top:none;}@media(hover:hover){.bs-item:hover{background:var(--bgi);}}.bs-item.danger{color:var(--del);}.bs-item.danger svg{stroke:var(--del);}
.bs-item svg{width:20px;height:20px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
.typing-indicator{display:flex;gap:4px;padding:10px 14px;align-items:center;}.typing-dot{width:6px;height:6px;background:var(--tx2);border-radius:50%;animation:typeBounce 1.4s ease-in-out infinite;}.typing-dot:nth-child(2){animation-delay:.25s;}.typing-dot:nth-child(3){animation-delay:.5s;}
.stop-btn{width:28px;height:28px;border-radius:50%;border:1.5px solid var(--bd2);background:var(--bg2);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--tx2);flex-shrink:0;transition:all .15s;}@media(hover:hover){.stop-btn:hover{border-color:var(--del);color:var(--del);background:color-mix(in srgb,var(--del) 8%,transparent);}}.stop-btn svg{width:14px;height:14px;stroke:currentColor;fill:currentColor;}
@keyframes typeBounce{0%,80%,100%{opacity:.25;transform:translateY(0);}35%{opacity:.9;transform:translateY(-3px);}}
/* Edit message modal - near full screen */
.edit-modal-ov{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:500;display:flex;align-items:center;justify-content:center;padding:16px;visibility:hidden;opacity:0;transition:opacity .2s,visibility 0s .2s;}.edit-modal-ov.show{visibility:visible;opacity:1;transition:opacity .2s,visibility 0s 0s;}
.edit-modal{background:var(--bg2);border-radius:16px;width:100%;max-width:500px;height:calc(66dvh);max-height:520px;padding:22px;box-shadow:0 8px 30px rgba(0,0,0,.18);display:flex;flex-direction:column;transform:scale(.92);transition:transform .2s cubic-bezier(.4,0,.2,1);}.edit-modal-ov.show .edit-modal{transform:scale(1);}
.edit-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-shrink:0;}.edit-modal-title{font-size:16px;font-weight:600;color:var(--tx3);}
.edit-modal-close{width:32px;height:32px;border-radius:50%;border:none;background:var(--bgi);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--tx2);}@media(hover:hover){.edit-modal-close:hover{background:var(--bd);}}
.edit-modal textarea{flex:1;min-height:0;resize:none;}
.edit-modal .ctr{margin-bottom:12px;}
.edit-modal-btn{width:100%;padding:12px;border-radius:10px;border:none;background:var(--bgi);color:var(--tx3);font-size:15px;font-weight:500;cursor:pointer;font-family:inherit;}@media(hover:hover){.edit-modal-btn:hover{background:var(--bd);}}
/* Drag handle for events */
.ev-drag{display:none;}
.ev-toggle-item{display:flex;align-items:center;gap:10px;padding:18px 16px;background:var(--bg2);border:1px solid var(--bd);border-radius:10px;margin-bottom:10px;position:relative;min-height:66px;}
.ev-toggle-item .lb{flex:1;min-width:0;cursor:pointer;overflow:visible;}.ev-toggle-item .lt{font-size:17px;font-weight:500;color:var(--tx3);line-height:1.4;padding-right:40px;}.ev-toggle-item .ls{font-size:15px;color:var(--tx2);margin-top:4px;line-height:1.4;}
.ev-toggle-item>.tog{position:absolute;top:12px;right:12px;}
.tog{position:relative;width:30px;height:16px;background:var(--bd);border-radius:8px;cursor:pointer;flex-shrink:0;transition:background .2s;}.tog.on{background:var(--ac);}.tog::after{content:'';position:absolute;top:2px;left:2px;width:12px;height:12px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 2px rgba(0,0,0,.08);}.tog.on::after{transform:translateX(14px);}
.amb-pill{display:inline-flex;align-items:center;gap:5px;padding:6px 12px;border-radius:16px;font-size:13px;font-weight:500;cursor:pointer;border:1.5px solid var(--bd);background:var(--bg3);color:var(--tx2);transition:all .15s;-webkit-tap-highlight-color:transparent;}.amb-pill:active{transform:scale(.95);}.amb-pill.active{border-color:var(--ac);background:var(--acl);color:var(--ac);}.amb-pill.locked{opacity:.45;}.amb-pill svg{width:14px;height:14px;}
.pcmd-panel{position:fixed;bottom:0;left:0;right:0;z-index:251;background:var(--bg2);border-top:1px solid var(--bd);border-radius:16px 16px 0 0;height:60vh;overflow:hidden;padding:0 16px 20px;display:flex;flex-direction:column;transform:translateY(100%);transition:transform .25s cubic-bezier(.25,.46,.45,.94);}.pcmd-panel.show{transform:translateY(0);}
.pcmd-panel-handle{width:36px;height:4px;background:var(--bd2);border-radius:2px;margin:10px auto 6px;}
.pcmd-overlay{position:fixed;inset:0;z-index:250;background:rgba(0,0,0,.25);visibility:hidden;opacity:0;transition:opacity .2s,visibility 0s .2s;}.pcmd-overlay.show{visibility:visible;opacity:1;transition:opacity .2s,visibility 0s 0s;}
.pcmd-card{padding:14px;border:1px solid var(--bd);border-radius:10px;margin-bottom:8px;background:var(--bg3);}.pcmd-card .lt{font-size:16px;font-weight:500;margin-bottom:6px;}.pcmd-card .ls{font-size:16px;color:var(--tx2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.batch-del-bar{display:none;padding:10px 16px;background:var(--bg2);border-bottom:1px solid var(--bd);gap:10px;align-items:center;justify-content:space-between;}.batch-del-bar.show{display:flex;}
.batch-dot{width:22px;height:22px;border-radius:50%;border:2px solid var(--bd2);background:transparent;flex-shrink:0;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center;}.batch-dot.sel{border-color:var(--ac);background:var(--ac);}
.batch-dot.sel::after{content:'✓';color:#fff;font-size:12px;font-weight:700;}
.msg-del-mode .cm{position:relative;}
.msg-del-mode .msg-row{cursor:pointer;transition:all .15s;-webkit-user-select:none;user-select:none;}.msg-del-mode .msg-row.msg-del-sel .msg-bubble{outline:2px solid var(--ach);outline-offset:2px;}.msg-del-mode .msg-bubble{-webkit-user-select:none;user-select:none;}
.msg-del-banner{display:none;padding:8px 16px;background:var(--ach);color:#fff;font-size:14px;text-align:center;flex-shrink:0;}.msg-del-banner.show{display:block;}
.msg-ss-banner{display:none;padding:8px 16px;background:var(--ac);color:#fff;font-size:14px;text-align:center;flex-shrink:0;}.msg-ss-banner.show{display:block;}
.msg-ss-bar{display:none;padding:12px 16px;flex-shrink:0;z-index:12;flex-direction:column;gap:8px;background:var(--bg2);border-top:1px solid var(--bd);}.msg-ss-bar.show{display:flex;}
.msg-ss-bar .mss-main{width:100%;padding:14px;border-radius:12px;border:none;background:var(--ac);color:#fff;font-size:16px;font-weight:500;cursor:pointer;font-family:inherit;}
.msg-ss-bar .mss-cancel{width:100%;padding:10px;border-radius:10px;border:1px solid var(--bd);background:var(--bg2);color:var(--tx2);font-size:14px;cursor:pointer;font-family:inherit;}
.msg-ss-mode .msg-row{cursor:pointer;transition:opacity .15s;opacity:.3;}.msg-ss-mode .msg-row.msg-ss-sel{opacity:1;}
.msg-del-bar{display:none;padding:12px 16px;flex-shrink:0;z-index:12;flex-direction:column;gap:8px;background:var(--bg2);border-top:1px solid var(--bd);}.msg-del-bar.show{display:flex;}
.msg-del-bar .mdel-main{width:100%;padding:14px;border-radius:12px;border:none;background:var(--ach);color:#fff;font-size:16px;font-weight:500;cursor:pointer;font-family:inherit;}@media(hover:hover){.msg-del-bar .mdel-main:hover{opacity:.85;}}
.msg-del-bar .mdel-cancel{width:100%;padding:10px;border-radius:10px;border:1px solid var(--bd);background:var(--bg2);color:var(--tx2);font-size:14px;cursor:pointer;font-family:inherit;}
.pcmd-plus{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--tx2);flex-shrink:0;}@media(hover:hover){.pcmd-plus:hover{color:var(--ac);}}.pcmd-plus.active{color:var(--ac);}
/* Grimoire (書倉) */
.grim-style-bar{display:flex;gap:8px;padding:4px 16px 8px;overflow-x:auto;-webkit-overflow-scrolling:touch;}
.grim-style-bar::-webkit-scrollbar{display:none;}
.grim-style-opt{position:relative;flex-shrink:0;width:64px;aspect-ratio:3/4;border-radius:8px;border:1.5px solid var(--bd);background:var(--bg2);cursor:pointer;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:4px;transition:all .15s;color:var(--tx2);}
.grim-style-opt.active{border-color:var(--ac);box-shadow:0 0 0 2px var(--acl);}
.grim-style-opt:active{transform:scale(.94);}
.grim-style-opt .grim-style-label{font-size:8px;font-weight:600;opacity:.7;letter-spacing:.03em;}
.grim-style-opt .grim-style-deco{font-size:20px;opacity:.4;margin-bottom:4px;}
.grim-style-opt.locked-style{opacity:.4;}
.grim-style-opt .grim-style-lock{position:absolute;top:2px;right:2px;width:12px;height:12px;stroke:currentColor;fill:none;stroke-width:2;}
.grim-shelf{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;padding:16px;}
.grim-book{position:relative;border-radius:12px;overflow:hidden;cursor:pointer;aspect-ratio:3/4;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;padding:14px;text-align:center;transition:transform .15s;-webkit-tap-highlight-color:transparent;background:var(--bg2);color:var(--tx);border:1.5px solid var(--bd);}
.grim-book:active{transform:scale(.96);}
.grim-book .grim-title{font-size:15px;font-weight:700;line-height:1.3;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.grim-book .grim-count{font-size:11px;margin-top:4px;opacity:.5;}
.grim-book .grim-deco{position:absolute;top:50%;left:50%;transform:translate(-50%,-55%);font-size:40px;opacity:.15;pointer-events:none;}
.grim-book .grim-spine{position:absolute;left:0;top:0;bottom:0;width:6px;background:var(--bd);}
/* Tome (古書) */
.grim-shelf.gs-tome .grim-book{border-radius:4px;}
.grim-shelf.gs-tome .grim-book .grim-spine{border-right:1px solid var(--tx2);opacity:.3;}
/* Scroll (卷軸) */
.grim-shelf.gs-scroll .grim-book{border-radius:20px;}
.grim-shelf.gs-scroll .grim-book .grim-spine{display:none;}
/* Memorial (奏折) */
.grim-shelf.gs-memorial .grim-book{border-radius:2px;border-style:double;border-width:3px;}
.grim-shelf.gs-memorial .grim-book .grim-spine{display:none;}
/* Edict (聖旨) */
.grim-shelf.gs-edict .grim-book{border-radius:2px;border-top:3px solid var(--tx2);border-bottom:3px solid var(--tx2);}
.grim-shelf.gs-edict .grim-book .grim-spine{display:none;}
/* Talisman (符咒) */
.grim-shelf.gs-talisman .grim-book{border-radius:2px;border-style:dashed;}
.grim-shelf.gs-talisman .grim-book .grim-spine{display:none;}
/* Tablet (石板) */
.grim-shelf.gs-tablet .grim-book{border-radius:6px;border-width:2px;}
.grim-shelf.gs-tablet .grim-book .grim-spine{width:0;border-right:2px dotted var(--bd);background:none;opacity:.5;}
.grim-add{border:2px dashed var(--bd);background:var(--bg3);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--tx2);font-size:14px;border-radius:12px;aspect-ratio:3/4;cursor:pointer;transition:border-color .15s;}
.grim-add:active{border-color:var(--ac);color:var(--ac);}
.grim-open-btn{display:flex;align-items:center;gap:6px;padding:10px 14px;margin:0 0 6px;border:1px solid var(--bd);border-radius:10px;background:var(--bg3);color:var(--tx2);font-size:13px;cursor:pointer;transition:all .15s;-webkit-tap-highlight-color:transparent;}
.grim-open-btn:active{background:var(--ac);color:#fff;border-color:var(--ac);}
.grim-spell-item{display:flex;align-items:center;gap:10px;padding:14px;border:1px solid var(--bd);border-radius:10px;margin-bottom:8px;background:var(--bg3);cursor:pointer;-webkit-tap-highlight-color:transparent;}
.grim-spell-item:active{background:var(--bgi);}
.grim-spell-item .lt{font-size:15px;font-weight:500;}
.grim-spell-item .ls{font-size:13px;color:var(--tx2);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;margin-top:2px;}
.grim-pin{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;flex-shrink:0;cursor:pointer;color:var(--tx2);transition:all .15s;}
.grim-pin.on{color:var(--ac);background:rgba(var(--ac-rgb),.12);}
.emb-progress{position:fixed;bottom:80px;left:50%;transform:translateX(-50%);background:var(--bg2);border:1px solid var(--bd);border-radius:12px;padding:14px 20px;box-shadow:0 4px 16px rgba(0,0,0,.1);z-index:600;min-width:260px;display:none;text-align:center;}.emb-progress.show{display:block;}
.emb-progress .prog-bar{width:100%;height:6px;background:var(--bgi);border-radius:3px;margin-top:8px;overflow:hidden;}.emb-progress .prog-fill{height:100%;background:var(--ac);border-radius:3px;transition:width .3s;}
.splash{position:fixed;inset:0;z-index:9999;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .4s ease;}.splash.hide{opacity:0;pointer-events:none;}
.splash-cloud{position:relative;width:220px;height:200px;display:flex;align-items:center;justify-content:center;}
.splash-cloud .splash-title{position:absolute;z-index:3;top:50px;left:50%;transform:translateX(-50%);font-size:26px;font-weight:700;color:var(--tx3);letter-spacing:1px;white-space:nowrap;}
.splash-cloud svg.cloud-bg{position:absolute;z-index:2;top:0;left:50%;transform:translateX(-50%);opacity:0;animation:sCloudIn 2.4s ease infinite;}
.splash-dot{position:absolute;border-radius:50%;border:1.5px solid var(--bd);background:var(--bg2);z-index:1;opacity:0;}
.splash-dot.d1{width:10px;height:10px;bottom:32px;left:38%;animation:sDotPop 2.4s ease infinite;}
.splash-dot.d2{width:18px;height:18px;bottom:48px;left:18%;animation:sDotPop 2.4s ease .4s infinite;}
@keyframes sDotPop{0%{opacity:0;}10%{opacity:1;}40%{opacity:1;}55%{opacity:0;}100%{opacity:0;}}
@keyframes sCloudIn{0%{opacity:0;transform:translateX(-50%);}35%{opacity:0;transform:translateX(-50%);}45%{opacity:1;transform:translateX(-50%);}80%{opacity:1;transform:translateX(-50%);}92%{opacity:0;transform:translateX(-50%);}100%{opacity:0;transform:translateX(-50%);}}
.splash-sub{font-size:14px;color:var(--tx2);margin-top:8px;}
.splash-dots{display:flex;gap:6px;margin-top:24px;}.splash-dots span{width:6px;height:6px;background:var(--ac);border-radius:50%;animation:sDot 1.2s infinite;opacity:.3;}.splash-dots span:nth-child(2){animation-delay:.2s;}.splash-dots span:nth-child(3){animation-delay:.4s;}
@keyframes sDot{0%,100%{opacity:.3;transform:scale(1);}50%{opacity:1;transform:scale(1.3);}}
.sb-fab{position:absolute;top:64px;left:12px;z-index:20;width:40px;height:40px;border-radius:50%;background:var(--ac);color:#fff;display:none;align-items:center;justify-content:center;box-shadow:0 2px 10px rgba(0,0,0,.18);cursor:pointer;transition:transform .15s,opacity .15s;opacity:.7;}
.sb-fab:active{transform:scale(.9);}
@media(hover:hover){.sb-fab:hover{opacity:.95;}}
.sb-fab svg{width:20px;height:20px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.sb-fab.has-content{opacity:.85;}
.sf-editor{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.35);display:none;align-items:center;justify-content:center;padding:16px;}
.sf-editor.show{display:flex;}
.sf-editor-panel{background:var(--bg2);border-radius:16px;width:100%;max-width:500px;max-height:75vh;min-height:420px;overflow-y:auto;padding:22px;box-shadow:0 8px 30px rgba(0,0,0,.18);display:flex;flex-direction:column;animation:sfPop .2s ease;}
@keyframes sfPop{from{transform:scale(.95);opacity:0;}to{transform:scale(1);opacity:1;}}

.sb-tabs{display:flex;margin-bottom:12px;position:relative;}.sb-tabs::before{content:'';position:absolute;bottom:0;left:12px;right:12px;height:1px;background:var(--bd);}.sb-tabs::after{content:'';position:absolute;bottom:-1px;left:var(--ti-left,0);width:var(--ti-w,0);height:2px;background:var(--ac);border-radius:1px;transition:left .25s cubic-bezier(.4,0,.2,1),width .25s cubic-bezier(.4,0,.2,1);}.sb-tabs.dragging::after{transition:none;}
.sb-tab{flex:1;text-align:center;padding:10px 0;font-size:15px;color:var(--tx2);cursor:pointer;border-bottom:2px solid transparent;transition:color .15s,font-weight .15s;}
.sb-tab.active{color:var(--ac);font-weight:600;}
.sb-content-area{font-size:16px;color:var(--tx);background:var(--bg2);border:1px solid var(--bd);border-radius:8px;padding:12px 14px;height:260px;line-height:1.7;outline:none;resize:none;width:100%;box-sizing:border-box;font-family:inherit;white-space:pre-wrap;overflow-y:auto;}
.sb-content-area:focus{border-color:var(--ac);}
.sb-prompt-area{font-size:15px;color:var(--tx);background:var(--bg2);border:1px solid var(--bd);border-radius:8px;padding:12px 14px;height:310px;line-height:1.6;outline:none;resize:none;width:100%;box-sizing:border-box;font-family:inherit;overflow-y:auto;}
.sb-prompt-area:focus{border-color:var(--ac);}
.sb-hint{font-size:14px;color:var(--tx2);line-height:1.6;margin-bottom:10px;}
.sb-btn-on{background:var(--ac)!important;color:#fff!important;border-color:var(--ac)!important;}
.sb-btn-on svg{stroke:#fff!important;}
/* ── Character Profile Overlay ── */
.cpf-overlay{position:fixed;inset:0;z-index:260;background:var(--bg);display:flex;flex-direction:column;visibility:hidden;opacity:0;transform:translateX(40px);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .25s cubic-bezier(.4,0,.2,1),visibility 0s .25s;}
.cpf-overlay.show{visibility:visible;opacity:1;transform:translateX(0);transition:transform .25s cubic-bezier(.4,0,.2,1),opacity .25s cubic-bezier(.4,0,.2,1),visibility 0s 0s;}
.cpf-card{width:100%;height:100%;background:var(--bg2);overflow:hidden;display:flex;flex-direction:column;position:relative;}
.cpf-scroll{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;}
.cpf-hero{position:relative;width:100%;aspect-ratio:2/3;background:var(--bgi);overflow:hidden;}
.cpf-hero img{width:100%;height:100%;object-fit:cover;display:block;}
.cpf-hero-empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:80px;font-weight:600;color:var(--ac);opacity:.3;background:linear-gradient(160deg,var(--acl) 0%,var(--bgi) 100%);}
.cpf-hero::after{content:'';position:absolute;bottom:0;left:0;right:0;height:60%;background:linear-gradient(to top,rgba(0,0,0,.65) 0%,rgba(0,0,0,.35) 35%,transparent 100%);pointer-events:none;}
.cpf-hero.no-after::after{display:none;}
.cpf-back{position:absolute;top:max(12px,env(safe-area-inset-top,12px));left:12px;z-index:2;width:36px;height:36px;border-radius:50%;border:none;background:rgba(0,0,0,.25);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;}
.cpf-back:active{background:rgba(0,0,0,.5);}
.cpf-back svg{width:20px;height:20px;}
.cpf-dl{position:absolute;top:max(12px,env(safe-area-inset-top,12px));right:12px;z-index:2;width:36px;height:36px;border-radius:50%;border:none;background:rgba(0,0,0,.25);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s;}
.cpf-dl:active{background:rgba(0,0,0,.5);}
.cpf-dl svg{width:18px;height:18px;}
.cpf-hero-text{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:0 20px 24px;}
.cpf-hero-label{font-family:'Cormorant Garamond',serif;font-size:12px;font-weight:500;letter-spacing:.25em;text-transform:uppercase;color:rgba(255,255,255,.7);margin-bottom:8px;}
.cpf-hero-name{font-size:32px;font-weight:700;color:#fff;line-height:1.2;letter-spacing:.04em;text-shadow:0 2px 12px rgba(0,0,0,.35);margin-bottom:8px;}
.cpf-hero-slogan{font-size:15px;font-weight:400;font-style:italic;color:#fff;letter-spacing:.02em;margin-top:20px;line-height:1.7;text-shadow:0 1px 6px rgba(0,0,0,.35);padding:0;border-bottom:1.5px solid rgba(255,255,255,.25);padding-bottom:6px;text-align:center;}
.cpf-hero-slogan::before{content:'\201C';display:block;font-family:'Cormorant Garamond',serif;font-size:32px;font-style:normal;line-height:0.6;color:rgba(255,255,255,.45);margin-bottom:-2px;text-align:left;}
.cpf-hero-slogan::after{content:'\201D';display:block;font-family:'Cormorant Garamond',serif;font-size:32px;font-style:normal;line-height:1;color:rgba(255,255,255,.45);text-align:right;margin-top:2px;margin-bottom:4px;}
.cpf-hero-tagline:has(+.cpf-hero-slogan){padding-bottom:0;border-bottom:none;}
.cpf-hero-tagline{font-size:15px;font-weight:400;color:#fff;text-shadow:0 1px 6px rgba(0,0,0,.35);display:flex;align-items:center;gap:8px;letter-spacing:.02em;}
.cpf-hero-by{font-size:14px;color:#fff;margin-top:8px;cursor:pointer;letter-spacing:.02em;text-shadow:0 1px 6px rgba(0,0,0,.35);}.cpf-hero-by:active{opacity:.7;}
.cpf-hero-tagline .sep{width:3.5px;height:3.5px;border-radius:50%;background:rgba(255,255,255,.5);flex-shrink:0;}
.cpf-body{padding:32px 28px 48px;display:flex;flex-direction:column;}
/* Showcase tabs */
.cpf-tabs{display:flex;position:sticky;top:0;z-index:5;background:var(--bg2);padding:0 28px;position:relative;}.cpf-tabs::after{content:'';position:absolute;bottom:0;left:var(--ti-left,0);width:var(--ti-w,0);height:1.5px;background:var(--ac);border-radius:1px;transition:left .25s cubic-bezier(.4,0,.2,1),width .25s cubic-bezier(.4,0,.2,1);}.cpf-tabs.dragging::after{transition:none;}
.cpf-tab{flex:1;text-align:center;padding:16px 0 14px;font-family:'Cormorant Garamond',serif;font-size:13px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--tx2);cursor:pointer;transition:color .2s,opacity .2s;opacity:.5;}
.cpf-tab-wrap{overflow:hidden;}
.cpf-tab-track{display:flex;width:300%;transition:transform .3s cubic-bezier(.25,.46,.45,.94);will-change:transform;}
.cpf-tab-page{flex-shrink:0;min-width:0;}
.cpf-comments-panel{position:relative;}
.cpf-comment-bar{display:none;position:absolute;bottom:0;left:28px;right:28px;z-index:10;padding:10px 0;padding-bottom:calc(10px + env(safe-area-inset-bottom,0));background:var(--bg2);border-top:1px solid var(--bd);flex-direction:column;}
.cpf-comment-bar.show{display:flex;}
.cpf-comment-bar textarea{flex:1;border:1px solid var(--bd);border-radius:10px;padding:10px 12px;font-size:14px;font-family:inherit;resize:none;background:var(--bg3);color:var(--tx);min-height:38px;}
.cpf-tab.active{color:var(--ac);font-weight:600;opacity:1;}
/* Showcase: creator pinned */
.cpf-pinned{background:var(--bg3);border:1px solid var(--bd);border-radius:12px;padding:16px;margin-bottom:20px;}
.cpf-pinned-label{font-size:11px;font-weight:600;color:var(--ac);letter-spacing:.08em;margin-bottom:8px;display:flex;align-items:center;gap:4px;}
.cpf-pinned-label svg{width:12px;height:12px;stroke:currentColor;fill:currentColor;}
.cpf-pinned-text{font-size:15px;color:var(--tx);line-height:1.7;}
.cpf-intro{position:relative;margin-bottom:32px;}.cpf-intro::before{content:'';position:absolute;left:0;top:4px;bottom:4px;width:2px;border-radius:1px;background:var(--ac);opacity:.6;}
.cpf-intro-text{font-size:16.5px;line-height:2;color:var(--tx);padding-left:20px;letter-spacing:.02em;}
.cpf-intro-text p{margin:0 0 .8em;}.cpf-intro-text p:last-child{margin:0;}
.cpf-div-label{display:flex;align-items:center;gap:14px;margin:36px 0 24px;}
.cpf-div-label::before,.cpf-div-label::after{content:'';flex:1;height:1px;background:var(--bd);}
.cpf-div-label span{font-family:'Cormorant Garamond',serif;font-size:13px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--tx2);white-space:nowrap;}
.cpf-hr{height:1px;background:var(--bd);margin:32px 0;}
.cpf-encounter{position:relative;background:var(--bg3);border-radius:12px;padding:24px 24px 20px;margin-bottom:6px;}
.cpf-encounter-text{font-size:15.5px;line-height:2;color:var(--tx);word-break:break-word;}
.cpf-encounter-text p{margin:0 0 .8em;}.cpf-encounter-text p:last-child{margin:0;}
.cpf-section-head{font-size:14px;font-weight:600;color:var(--tx3);margin-bottom:12px;display:flex;align-items:center;gap:7px;letter-spacing:.02em;}
.cpf-section-head svg{width:16px;height:16px;stroke:var(--ac);fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.cpf-wb-tags{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px;}
.cpf-wb-tag{padding:7px 16px;border-radius:20px;background:var(--acl);color:var(--ach);font-size:14px;font-weight:500;}
.cpf-events{margin-bottom:0;}
.cpf-ev-item{border:1px solid var(--bd);border-radius:10px;margin-bottom:10px;overflow:hidden;background:var(--bg2);cursor:pointer;-webkit-tap-highlight-color:transparent;}
.cpf-ev-header{display:flex;align-items:center;gap:10px;padding:16px 18px;}.cpf-ev-header:active{background:var(--bg3);}
.cpf-ev-info{flex:1;min-width:0;}
.cpf-ev-name{font-size:16px;font-weight:500;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cpf-ev-trigger{font-size:14px;color:var(--tx2);margin-top:4px;}
.cpf-ev-chevron{width:18px;height:18px;color:var(--tx2);flex-shrink:0;opacity:.5;}
.cpf-ev-item:active{background:var(--bg3);}
.cpf-card.no-img .cpf-hero{aspect-ratio:unset;height:220px;background:linear-gradient(160deg,var(--acl) 0%,var(--bgi) 100%);}
.cpf-empty-intro{color:var(--tx2);font-style:italic;font-size:15px;padding-left:20px;}
.cpf-ev-count{margin-left:auto;font-size:12px;font-weight:600;color:var(--ac);background:var(--acl);padding:2px 8px;border-radius:10px;line-height:1.4;}
.cpf-footer{margin-top:auto;padding-top:20px;text-align:center;}
.cpf-footer-line{width:40px;height:1.5px;background:var(--ac);opacity:.4;margin:0 auto 12px;}
.cpf-footer-text{font-family:'Cormorant Garamond',serif;font-size:14px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--tx2);opacity:.4;}
/* Showcase: creator bar */
.cpf-creator-bar{display:flex;align-items:center;gap:10px;padding:16px 0 0;margin-bottom:24px;cursor:pointer;}
.cpf-creator-bar .av{width:36px;height:36px;font-size:14px;flex-shrink:0;}
.cpf-creator-bar .av img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;}
.cpf-creator-name{font-size:14px;font-weight:600;color:var(--tx3);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
/* Showcase: hashtags */
.cpf-hashtags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:24px;}
.cpf-hashtag{font-size:12px;color:var(--ac);background:var(--acl);padding:4px 10px;border-radius:12px;white-space:nowrap;}
/* Showcase: stats bar (friends count) */
.cpf-stats{display:flex;gap:16px;margin-bottom:20px;}
.cpf-stat{font-size:13px;color:var(--tx2);}
.cpf-stat strong{font-weight:600;color:var(--tx3);margin-right:3px;}
/* Creator page: follow button + follower count */
.cr-follow-row{display:flex;align-items:center;justify-content:center;gap:12px;padding:4px 0 0;}
.cr-follow-btn{padding:8px 28px;border-radius:20px;border:1.5px solid var(--ac);background:var(--ac);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;}.cr-follow-btn:active{transform:scale(.96);}
.cr-follow-btn.following{background:transparent;color:var(--ac);}
.cr-follower-count{font-size:13px;color:var(--tx2);text-align:center;margin-top:6px;margin-bottom:14px;}
.cr-badges{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:0;padding:0 16px;cursor:pointer;max-height:44px;overflow:hidden;transition:max-height .25s ease;}
.cr-badges.expanded{max-height:600px;}
.cr-badge-toggle{display:flex;justify-content:center;padding:2px 0 12px;cursor:pointer;color:var(--tx2);transition:transform .2s;}
.cr-badge-toggle svg{transition:transform .2s;}
.cr-badge-toggle.expanded svg{transform:rotate(180deg);}
.cr-badge{width:36px;height:36px;border-radius:50%;background:var(--bg3);border:1.5px solid var(--bd);display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--ac);transition:transform .15s;position:relative;}.cr-badge:active{transform:scale(.9);}.cr-badge svg{width:18px;height:18px;}
.cr-badge.locked{opacity:.25;filter:grayscale(1);}
.badge-tip{position:fixed;background:var(--bg);color:var(--tx);border:1px solid var(--bd);border-radius:10px;padding:8px 12px;font-size:12px;line-height:1.5;white-space:nowrap;box-shadow:0 4px 16px rgba(0,0,0,.15);z-index:800;pointer-events:none;animation:badgeTipIn .15s ease-out;}
.badge-tip-arrow{position:absolute;top:100%;width:12px;height:6px;overflow:hidden;pointer-events:none;}.badge-tip-arrow::after{content:'';position:absolute;left:50%;transform:translateX(-50%);border:6px solid transparent;border-top-color:var(--bg);}
.badge-tip .bt-name{font-weight:600;color:var(--tx3);}
.badge-tip .bt-desc{color:var(--tx2);margin-top:2px;}
@keyframes badgeTipIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:translateY(0);}}
/* Achievement page */
.ach-list{padding:8px 0;}
.ach-cat-head{font-size:13px;font-weight:600;color:var(--tx2);padding:14px 16px 6px;display:flex;align-items:center;justify-content:space-between;}
.ach-cat-count{font-size:12px;font-weight:500;color:var(--ac);}
.ach-series{border-bottom:1px solid var(--bd);}
.ach-series-head{display:flex;align-items:center;gap:14px;padding:14px 16px;cursor:pointer;-webkit-tap-highlight-color:transparent;}
.ach-series-head:active{background:var(--bg3);}
.ach-detail-ov{position:fixed;inset:0;z-index:800;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);visibility:hidden;opacity:0;transition:opacity .2s,visibility 0s .2s;}.ach-detail-ov.show{visibility:visible;opacity:1;transition:opacity .2s,visibility 0s 0s;}
.ach-detail-card{width:300px;max-height:80vh;overflow-y:auto;background:var(--bg2);border-radius:18px;padding:24px 20px 20px;box-shadow:0 16px 48px rgba(0,0,0,.25);animation:rewardIn .3s cubic-bezier(.16,1,.3,1);}
.ach-detail-top{display:flex;align-items:center;gap:14px;margin-bottom:16px;}
.ach-detail-series-name{font-size:18px;font-weight:700;color:var(--tx3);}
.ach-detail-progress{font-size:12px;color:var(--ac);margin-top:2px;}
.ach-detail-steps{padding:0;}
.ach-detail-step{display:flex;align-items:flex-start;gap:10px;padding:10px 0;position:relative;}
.ach-detail-step+.ach-detail-step{border-top:1px solid var(--bd);}
.ach-detail-step-dot{width:10px;height:10px;border-radius:50%;border:2px solid var(--bd);flex-shrink:0;margin-top:4px;}.ach-detail-step.done .ach-detail-step-dot{background:var(--ac);border-color:var(--ac);}
.ach-detail-step.current .ach-detail-step-dot{border-color:var(--ac);}
.ach-detail-step-info{flex:1;min-width:0;}
.ach-detail-step-name{font-size:14px;font-weight:600;color:var(--tx3);}
.ach-detail-step.locked .ach-detail-step-name{color:var(--tx2);}
.ach-detail-step-desc{font-size:12px;color:var(--tx2);margin-top:2px;}
.ach-detail-step-reward{font-size:12px;color:var(--ac);margin-top:3px;font-weight:500;}
.ach-item{display:flex;align-items:center;gap:14px;padding:14px 16px;}
.ach-item+.ach-item{border-top:1px solid var(--bd);}
.ach-icon{width:46px;height:46px;border-radius:50%;background:var(--bg3);border:1.5px solid var(--bd);display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;color:var(--ac);}.ach-icon svg{width:22px;height:22px;}
.ach-icon.locked-icon{opacity:.25;filter:grayscale(1);}
.ach-name.locked-name{color:var(--tx2);}
.ach-info{flex:1;min-width:0;}
.ach-name{font-size:15px;font-weight:600;color:var(--tx3);}
.ach-desc{font-size:13px;color:var(--tx2);margin-top:2px;}
.ach-date{font-size:11px;color:var(--ac);margin-top:3px;}
/* Story Box */
.story-list{padding:4px 0;}
.story-card{position:relative;display:flex;gap:12px;padding:14px 0;border-bottom:1px solid var(--bd);cursor:pointer;}.story-card:last-child{border-bottom:none;}.story-card:active{opacity:.7;}
.story-card.story-draft{opacity:.6;}
.se-tip-icon{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--bgi);color:var(--tx2);font-size:11px;font-weight:700;cursor:pointer;margin-left:6px;vertical-align:middle;font-style:normal;}.se-tip-icon:active{background:var(--ac);color:#fff;}
.story-cover{width:52px;height:70px;border-radius:8px;background:var(--bgi);flex-shrink:0;overflow:hidden;display:flex;align-items:center;justify-content:center;}
.story-cover img{width:100%;height:100%;object-fit:cover;}
.story-cover-icon{font-size:24px;opacity:.4;}
.story-info{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center;}
.story-title{font-size:15px;font-weight:600;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.story-meta{font-size:12px;color:var(--tx2);margin-top:3px;}
.story-summary{font-size:13px;color:var(--tx2);margin-top:4px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5;}
.story-price{flex-shrink:0;display:flex;align-items:center;font-size:13px;font-weight:600;color:var(--ac);white-space:nowrap;}
.story-price.free{color:var(--tx2);}
.story-read-cover-bg{position:fixed;inset:0;z-index:0;background-size:cover;background-position:center;pointer-events:none;}
.story-read-cover-bg::after{content:'';position:absolute;inset:0;background:rgba(0,0,0,.55);}
.story-read-inner{padding:24px 20px;position:relative;z-index:1;}
.story-read-title{font-size:22px;font-weight:700;color:var(--tx3);line-height:1.4;}
.story-read-divider{height:1px;background:var(--bd);margin:24px 0;}
.story-read-body{font-size:16px;line-height:1.8;color:var(--tx);letter-spacing:.2px;}.story-read-body p{margin:0 0 1.4em;}.story-read-body p:last-child{margin:0;}
.story-read-body em{font-style:italic;color:var(--tx2);}
.story-read-body strong{font-weight:600;}
.story-read-body blockquote{border-left:3px solid var(--ac);padding-left:10px;margin:.5em 0;color:var(--tx2);}
#fp-story-read{overflow:hidden;}
#fp-story-read .fp-body{position:relative;overflow-y:auto;padding:0;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;}
#fp-story-read.has-cover .story-read-inner{color:#e8e8e8;}
#fp-story-read.has-cover .story-read-body{color:rgba(255,255,255,.9);}
#fp-story-read.has-cover .story-read-body em{color:rgba(255,255,255,.6);}
/* ── Envelope Opening Animation ── */
.env-overlay{position:fixed;inset:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.45);opacity:0;transition:opacity .5s;pointer-events:none;}
.env-overlay.show{opacity:1;pointer-events:auto;}
.env-overlay.fade-out{opacity:0;transition:opacity .8s;pointer-events:none;}
.env-scene{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;}
.env-wrap{position:relative;width:300px;height:210px;transition:opacity .8s;}
.env-wrap.hide{opacity:0;}
/* Envelope body */
.env-body{position:absolute;bottom:0;width:300px;height:170px;background:var(--bg2);border-radius:4px;box-shadow:0 8px 32px rgba(0,0,0,.25);overflow:hidden;z-index:2;}
.env-body::before{content:'';position:absolute;inset:0;background:linear-gradient(135deg,transparent 40%,rgba(0,0,0,.03) 40%,rgba(0,0,0,.03) 42%,transparent 42%),linear-gradient(225deg,transparent 40%,rgba(0,0,0,.03) 40%,rgba(0,0,0,.03) 42%,transparent 42%);pointer-events:none;}
.env-body::after{content:'';position:absolute;bottom:0;left:0;right:0;height:60%;background:linear-gradient(to top,rgba(0,0,0,.04),transparent);pointer-events:none;}
.env-inner-fold{position:absolute;inset:0;overflow:hidden;pointer-events:none;}
.env-inner-fold::before{content:'';position:absolute;top:0;left:0;width:150%;height:200%;border-right:1px solid rgba(0,0,0,.06);transform-origin:top left;transform:rotate(33deg);}
.env-inner-fold::after{content:'';position:absolute;top:0;right:0;width:150%;height:200%;border-left:1px solid rgba(0,0,0,.06);transform-origin:top right;transform:rotate(-33deg);}
/* Flap — western V-shape */
.env-flap-wrap{position:absolute;top:30px;left:0;width:300px;height:100px;z-index:3;perspective:800px;}
.env-flap{width:100%;height:100%;transform-origin:top center;transform:rotateX(0deg);transition:transform 1s cubic-bezier(.3,.0,.2,1);background:var(--bg2);clip-path:polygon(0 0,100% 0,100% 4%,50% 100%,0 4%);box-shadow:0 2px 8px rgba(0,0,0,.08);position:relative;}
.env-flap::after{content:'';position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.01),rgba(0,0,0,.05));border-radius:inherit;pointer-events:none;}
.env-flap.open{transform:rotateX(180deg);}
/* Seal */
.env-seal{position:absolute;top:112px;left:50%;transform:translateX(-50%);width:36px;height:36px;border-radius:50%;background:var(--ac);z-index:4;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 8px rgba(0,0,0,.2);transition:opacity .4s,transform .4s;}
.env-seal svg{width:18px;height:18px;stroke:#fff;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
.env-seal.hide{opacity:0;transform:translateX(-50%) scale(.5);}
/* Letter card — absolute to scene, rises to center */
.env-letter{position:absolute;width:min(340px,85vw);background:var(--bg3);border-radius:12px;padding:28px 24px;box-shadow:0 8px 40px rgba(0,0,0,.2);z-index:10;opacity:0;cursor:pointer;}
.env-letter-title{font-size:20px;font-weight:700;color:var(--tx3);line-height:1.4;text-align:center;}
.env-letter-divider{width:40px;height:2px;background:var(--ac);margin:14px auto;}
.env-letter-summary{font-size:14px;color:var(--tx2);line-height:1.7;text-align:center;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.env-letter-cover{width:100%;height:120px;border-radius:10px;overflow:hidden;margin-bottom:16px;background:var(--bgi);}
.env-letter-cover img{width:100%;height:100%;object-fit:cover;}
.fan-story-card{background:var(--bg2);border:1px solid var(--bd);border-radius:12px;padding:14px 16px;margin-bottom:10px;cursor:pointer;box-shadow:0 1px 2px var(--sh);}.fan-story-card:active{opacity:.7;}
.fan-story-title{font-size:16px;font-weight:600;color:var(--tx3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.fan-story-meta{font-size:12px;color:var(--tx2);margin-top:4px;}
.fan-story-summary{font-size:13px;color:var(--tx2);margin-top:6px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.5;}
.story-conds{flex-shrink:0;display:flex;align-items:center;gap:0;margin-left:4px;}
.story-cond-item{display:flex;align-items:center;justify-content:center;gap:2px;font-size:12px;color:var(--tx2);width:40px;}
.story-cond-item svg{fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;opacity:.6;}
.story-cond{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--tx2);margin-top:4px;}.story-cond.met{color:var(--ac);}
.story-cond-icon{display:inline-flex;align-items:center;}.story-cond-icon svg{width:14px;height:14px;}
.story-unlock-btn{display:inline-flex;align-items:center;gap:4px;padding:6px 14px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:1.5px solid var(--ac);background:var(--acl);color:var(--ac);margin-top:8px;}.story-unlock-btn:active{opacity:.7;}
.story-unlock-btn.disabled{opacity:.4;pointer-events:none;}
/* Showcase: comment section */
.cpf-comments{margin-top:12px;padding-bottom:68px;}
.cpf-comment{display:flex;gap:10px;padding:14px 0;border-bottom:1px solid var(--bd);}
.cpf-comment:last-child{border-bottom:none;}
.cpf-comment .av{width:32px;height:32px;font-size:13px;flex-shrink:0;}
.cpf-comment .av img{width:100%;height:100%;object-fit:cover;border-radius:50%;display:block;}
.cpf-comment-body{flex:1;min-width:0;}
.cpf-comment-author{font-size:14px;font-weight:600;color:var(--tx3);}
.cpf-comment-time{font-size:11px;color:var(--tx2);margin-left:6px;font-weight:400;}
.cpf-comment-text{font-size:15px;color:var(--tx);margin-top:4px;line-height:1.7;}
.cpf-comment-send{width:36px;height:36px;border-radius:50%;border:none;background:var(--ac);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity .15s;}.cpf-comment-send:active{opacity:.7;}
.cpf-comment-send svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;}
/* Creator Page */
/* creator-banner removed — manage is now a nav tab */
.cr-header{text-align:center;padding:32px 24px 20px;}
.cr-av{width:80px;height:80px;border-radius:50%;margin:0 auto 14px;font-size:32px;overflow:hidden;}
.cr-av img{width:100%;height:100%;object-fit:cover;display:block;}
.cr-name{font-size:22px;font-weight:700;color:var(--tx3);margin-bottom:8px;}
.cr-bio{font-size:14px;color:var(--tx2);line-height:1.6;white-space:pre-wrap;word-break:break-word;}
.cr-links{padding:0 24px 8px;}
.cr-link-item{display:flex;align-items:center;gap:8px;padding:3px 0;cursor:pointer;color:var(--ac);font-size:14px;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cr-link-item svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;flex-shrink:0;}
.cr-section-label{font-size:12px;font-weight:600;letter-spacing:.15em;text-transform:uppercase;color:var(--tx2);opacity:.6;padding:20px 24px 12px;font-family:'Cormorant Garamond',serif;}
.cr-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;padding:0 16px 40px;}
.cr-grid-card{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:2/3;background:var(--bgi);cursor:pointer;}.cr-grid-card:active{opacity:.85;}
.cr-grid-card img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;}
.cr-grid-card::after{content:'';position:absolute;bottom:0;left:0;right:0;height:55%;background:linear-gradient(to top,rgba(0,0,0,.6) 0%,rgba(0,0,0,.25) 40%,transparent 100%);pointer-events:none;}
.cr-grid-empty{display:flex;align-items:center;justify-content:center;font-size:36px;font-weight:600;color:var(--ac);opacity:.3;background:linear-gradient(160deg,var(--acl) 0%,var(--bgi) 100%);}
.cr-grid-text{position:absolute;bottom:0;left:0;right:0;z-index:2;padding:10px 12px;}
.cr-grid-name{font-size:14px;font-weight:600;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.4);line-height:1.3;}
.cr-grid-tag{font-size:13px;color:#fff;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 4px rgba(0,0,0,.4);}
.cr-grid-hashtags{font-size:11px;color:rgba(255,255,255,.7);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 1px 4px rgba(0,0,0,.3);}
.cr-empty-wall{text-align:center;padding:40px 20px;color:var(--tx2);font-size:14px;}
/* Style picker */
.cr-style-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
.cr-style-opt{position:relative;aspect-ratio:3/4;border-radius:10px;border:2px solid var(--bd);background:var(--bg2);cursor:pointer;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;transition:all .15s;padding:8px;}
.cr-style-opt.active{border-color:var(--ac);box-shadow:0 0 0 2px var(--acl);}
.cr-style-opt:active{transform:scale(.96);}
.cr-style-opt .cr-style-label{font-size:10px;color:var(--tx2);margin-top:6px;font-weight:600;letter-spacing:.03em;}
.cr-style-opt.locked-style{opacity:.45;}.cr-style-opt.locked-style.active{opacity:.8;}.cr-style-opt.locked-style::after{content:'';position:absolute;inset:0;pointer-events:none;}
.cr-style-opt .cr-style-lock{position:absolute;top:4px;left:4px;width:14px;height:14px;stroke:var(--tx2);fill:none;stroke-width:2;}
.cr-style-opt .cr-style-eye{position:absolute;top:4px;right:4px;width:16px;height:16px;stroke:var(--bd2);stroke-width:1.8;cursor:pointer;z-index:1;transition:stroke .15s;}.cr-style-opt .cr-style-eye .eye-outer{fill:var(--bg2);}.cr-style-opt .cr-style-eye .eye-pupil{fill:none;stroke:var(--bd2);stroke-width:2;}.cr-style-opt .cr-style-eye:active{stroke:var(--tx2);}.cr-style-opt .cr-style-eye:active .eye-pupil{stroke:var(--tx2);}
/* Minimal style */
.cr-minimal .cr-header{text-align:left;padding:40px 24px 20px;}
.cr-minimal .cr-av{margin:0 0 16px;width:64px;height:64px;font-size:24px;}
.cr-minimal .cr-name{font-size:20px;font-weight:400;letter-spacing:.05em;}
.cr-minimal .cr-follower-count{text-align:left;font-size:13px;}
.cr-minimal .cr-bio{font-size:14px;}
.cr-minimal .cr-links{padding:0 24px 8px;}
.cr-minimal .cr-section-label{font-family:inherit;font-size:11px;letter-spacing:.2em;opacity:.6;}
.cr-minimal .cr-grid{gap:10px;}
.cr-minimal .cr-grid-card{border-radius:4px;}
/* Social style */
.cr-social .cr-header{padding:20px 24px;text-align:left;}
.cr-social .cr-social-top{display:flex;align-items:center;gap:16px;}
.cr-social .cr-av{margin:0;flex-shrink:0;}
.cr-social .cr-header-info{flex:1;min-width:0;}
.cr-social .cr-name{font-size:18px;margin-bottom:4px;}
.cr-social .cr-follower-count{text-align:left;}
.cr-social .cr-bio{margin-top:14px;}
.cr-social .cr-grid{grid-template-columns:repeat(3,1fr);gap:2px;padding:0;}
.cr-social .cr-grid-card{border-radius:0;aspect-ratio:1;}
.cr-social .cr-grid-card::after{height:40%;}
.cr-social .cr-grid-text{padding:6px 8px;}
.cr-social .cr-grid-name{font-size:12px;}
.cr-social .cr-grid-tag{font-size:11px;}
.cr-social .cr-grid-hashtags{display:none;}
/* Poster style */
.cr-poster .cr-hero-banner{position:relative;width:100%;aspect-ratio:3/4;overflow:hidden;max-height:50vh;}
.cr-poster .cr-hero-banner img{width:100%;height:100%;object-fit:cover;}
.cr-poster .cr-hero-banner .cr-hero-scrim{position:absolute;bottom:0;left:0;right:0;height:60%;background:linear-gradient(to top,rgba(0,0,0,.7),transparent);}
.cr-poster .cr-hero-banner .cr-hero-text{position:absolute;bottom:0;left:0;right:0;padding:24px;color:#fff;z-index:1;}
.cr-poster .cr-hero-banner .cr-hero-name{font-size:28px;font-weight:700;text-shadow:0 2px 8px rgba(0,0,0,.4);}
.cr-poster .cr-hero-banner .cr-hero-bio{font-size:14px;margin-top:8px;line-height:1.7;white-space:pre-wrap;text-shadow:0 1px 6px rgba(0,0,0,.5);}
.cr-poster .cr-header{padding:16px 24px 12px;text-align:left;}
.cr-poster .cr-follower-count{text-align:left;}
.cr-poster .cr-grid{gap:10px;}
/* Card style */
.cr-card .cr-header{padding:24px 16px 16px;}
.cr-card .cr-profile-card{background:var(--bg2);border-radius:16px;padding:24px;margin:0 16px 12px;box-shadow:0 2px 8px rgba(0,0,0,.06);text-align:center;}
.cr-card .cr-av{width:80px;height:80px;margin:0 auto 12px;box-shadow:0 2px 12px rgba(0,0,0,.1);}
.cr-card .cr-name{font-size:20px;}
.cr-card .cr-follower-count{margin-bottom:8px;}
.cr-card .cr-links{padding:0 4px;}
.cr-card .cr-grid-card{border-radius:14px;box-shadow:0 2px 8px rgba(0,0,0,.08);}
/* Tree / Timeline style */
.cr-tree .cr-header{text-align:center;padding:32px 24px 12px;}
.cr-tree .cr-timeline{position:relative;padding:0 16px 40px;}
.cr-tree .cr-timeline::before{content:'';position:absolute;left:50%;top:0;bottom:0;width:2px;background:var(--bd);transform:translateX(-50%);}
.cr-tree .cr-tl-node{position:relative;display:flex;align-items:center;gap:0;margin-bottom:20px;}
.cr-tree .cr-tl-node.even{flex-direction:row-reverse;}
.cr-tree .cr-tl-img{width:calc(50% - 18px);flex-shrink:0;aspect-ratio:2/3;border-radius:10px;overflow:hidden;cursor:pointer;position:relative;}
.cr-tree .cr-tl-img:active{opacity:.85;}
.cr-tree .cr-tl-img img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;}
.cr-tree .cr-tl-img .cr-tl-empty{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:28px;font-weight:600;color:var(--ac);opacity:.3;background:linear-gradient(160deg,var(--acl),var(--bgi));}
.cr-tree .cr-tl-dot{width:10px;height:10px;border-radius:50%;background:var(--ac);border:2px solid var(--bg);flex-shrink:0;z-index:2;margin:0 8px;box-shadow:0 0 0 3px var(--acl);}
.cr-tree .cr-tl-info{width:calc(50% - 18px);flex-shrink:0;}
.cr-tree .cr-tl-name{font-size:17px;font-weight:700;color:var(--tx3);line-height:1.3;}
.cr-tree .cr-tl-tag{font-size:14px;color:var(--tx2);margin-top:4px;}
.cr-tree .cr-tl-hashtags{font-size:12px;color:var(--tx2);opacity:.6;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cr-tree .cr-tl-slogan{font-size:13px;color:var(--tx2);margin-top:6px;line-height:1.5;font-style:italic;opacity:.75;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;}
.cr-tree .cr-tl-node.even .cr-tl-info{text-align:right;}
.cr-tree .cr-tl-node.odd .cr-tl-info{text-align:left;}
/* Creator link editor in account page */
.cr-link-edit-item{display:flex;align-items:center;gap:6px;margin-bottom:8px;}
.cr-link-edit-item input{flex:1;font-size:14px;min-width:0;}
.cr-lk-grip{display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--bd2);padding:6px 2px;touch-action:none;cursor:grab;}.cr-lk-grip svg{width:14px;height:14px;}
.cr-link-del{width:32px;height:32px;border-radius:8px;border:none;background:var(--bg3);color:var(--tx2);cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;}.cr-link-del:active{background:var(--del);color:#fff;}
.cr-link-del svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;}
/* Shop */
.shop-plan-card{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--bd);cursor:pointer;}.shop-plan-card:last-child{border-bottom:none;}.shop-plan-card:active{opacity:.7;}
.shop-plan-icon{width:44px;height:44px;border-radius:12px;background:var(--acl);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.shop-plan-info{flex:1;min-width:0;}
.shop-plan-name{font-size:15px;font-weight:600;color:var(--tx3);}
.shop-plan-desc{font-size:12px;color:var(--tx2);margin-top:2px;}
.shop-lore-list{padding:4px 0;}
.shop-lore-row{display:flex;align-items:center;justify-content:space-between;padding:13px 14px;border-radius:10px;border:1px solid var(--bd);margin-bottom:8px;cursor:pointer;transition:all .15s;background:var(--bg3);}.shop-lore-row:last-child{margin-bottom:0;}.shop-lore-row:active{transform:scale(.98);}.shop-lore-row.popular{border-color:var(--ac);background:var(--acl);}
.shop-lore-left{font-size:15px;color:var(--tx);font-weight:500;}
.shop-lore-left .shop-lore-amount{font-weight:700;color:var(--tx3);font-size:16px;}
.shop-lore-right{font-size:15px;font-weight:600;color:var(--tx3);display:flex;align-items:center;gap:6px;}
.shop-lore-discount{font-size:11px;font-weight:500;color:var(--ac);background:var(--acl);padding:2px 6px;border-radius:6px;}
.shop-lore-label{font-size:11px;color:var(--tx2);margin-top:2px;}
.shop-lore-price{font-size:14px;font-weight:600;color:var(--ac);margin-top:8px;}
/* ── Checkin Book Page ── */
.ck-book{width:100%;max-width:340px;margin:0 auto;perspective:1200px;}
.ck-cover{background:linear-gradient(145deg,color-mix(in srgb,var(--ac) 8%,var(--bg)),var(--bg));border-radius:4px 16px 16px 4px;border:1px solid var(--bd);border-left:4px solid var(--ac);padding:24px;aspect-ratio:3/4;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative;cursor:pointer;transition:transform .2s;box-shadow:0 8px 32px rgba(0,0,0,.25);}
.ck-cover:active{transform:scale(.98);}
.ck-top-rule,.ck-bottom-rule{width:60%;height:1px;background:linear-gradient(90deg,transparent,var(--ac),transparent);opacity:.2;margin:0 auto;}
.ck-ornament{width:80px;height:80px;margin:0 auto 0;opacity:.35;color:var(--ac);}
.ck-deco-line{display:flex;align-items:center;justify-content:center;gap:8px;margin:22px 0 20px;}
.ck-deco-bar{width:48px;height:1px;background:var(--ac);opacity:.25;}
.ck-title{font-size:22px;font-weight:700;text-align:center;letter-spacing:4px;color:var(--tx3);}
.ck-subtitle{font-size:12px;color:var(--tx2);text-align:center;letter-spacing:2px;margin-top:6px;opacity:.7;}
.ck-deco-line.sm{margin:18px 0 14px;}
.ck-deco-bar.short{width:28px;}
.ck-month{text-align:center;font-size:13px;color:var(--tx2);letter-spacing:2px;font-weight:500;}
.ck-progress{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:20px;width:80%;}
.ck-progress-bar{flex:1;max-width:160px;height:3px;background:var(--bd);border-radius:2px;overflow:hidden;}
.ck-progress-fill{height:100%;background:linear-gradient(90deg,var(--ac),color-mix(in srgb,var(--ac) 70%,#fff));border-radius:2px;transition:width .6s ease;}
.ck-progress-text{font-size:12px;color:var(--tx2);font-weight:600;text-align:center;margin-top:12px;letter-spacing:1px;}
.ck-hint{text-align:center;font-size:13px;color:var(--ac);margin-top:20px;opacity:.7;letter-spacing:.5px;}
.ck-footer{font-size:10px;color:var(--tx2);text-align:center;letter-spacing:3px;opacity:.3;margin-top:auto;padding-top:16px;}
/* Page overlay */
.ck-page-ov{position:fixed;inset:0;background:rgba(0,0,0,.65);display:none;align-items:center;justify-content:center;z-index:900;padding:16px;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);}
.ck-page-ov.show{display:flex;}
.ck-page{width:100%;max-width:320px;animation:ckPageIn .5s cubic-bezier(.34,1.2,.64,1) both;}
@keyframes ckPageIn{0%{opacity:0;transform:rotateY(-15deg) scale(.92);}100%{opacity:1;transform:rotateY(0) scale(1);}}
.ck-paper{background:linear-gradient(170deg,#f4f0e8,#ece6da);border-radius:4px 12px 12px 4px;border-left:3px solid var(--ac);padding:32px 28px;aspect-ratio:3/4;display:flex;flex-direction:column;align-items:center;justify-content:space-between;position:relative;box-shadow:0 16px 48px rgba(0,0,0,.4);}
.ck-paper.milestone{background:linear-gradient(170deg,#faf6ee,#f2ecde);border-left-color:#c8a86e;}
.ck-page-day{font-size:11px;color:#6a6358;letter-spacing:1px;font-weight:600;}
.ck-page-mid{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;}
.ck-page-bot{width:100%;flex-shrink:0;}
.ck-page-line{width:40px;height:1px;background:#6a6358;opacity:.3;margin-bottom:20px;}
.ck-rw-icon{width:56px;height:56px;margin:0 auto 16px;display:flex;align-items:center;justify-content:center;border-radius:50%;animation:ckRwPop .4s .2s cubic-bezier(.34,1.4,.64,1) both;}
.ck-rw-icon.spark{background:linear-gradient(135deg,#f0e6d0,#e8dcc4);color:#b8960a;}
.ck-rw-icon.lore{background:linear-gradient(135deg,#d4e4f0,#c0d4e8);color:#4080b0;}
.ck-rw-icon.ticket{background:linear-gradient(135deg,#e0d4f0,#d0c0e8);color:#8060b0;}
.ck-rw-icon.trial{background:linear-gradient(135deg,#d4f0e0,#c0e8d0);color:#408060;}
@keyframes ckRwPop{0%{opacity:0;transform:scale(.5);}100%{opacity:1;transform:scale(1);}}
.ck-rw-name{font-size:20px;font-weight:700;color:#3a352e;text-align:center;margin-bottom:4px;animation:ckTxtIn .4s .35s both;}
.ck-rw-amount{font-size:14px;color:#6a6358;text-align:center;font-weight:500;animation:ckTxtIn .4s .4s both;}
@keyframes ckTxtIn{0%{opacity:0;transform:translateY(6px);}100%{opacity:1;transform:translateY(0);}}
.ck-ms-badge{width:72px;height:72px;margin:0 auto 16px;position:relative;animation:ckRwPop .5s .15s cubic-bezier(.34,1.4,.64,1) both;}
.ck-ms-ring{position:absolute;inset:0;border:2px solid #c8a86e;border-radius:50%;animation:ckRingGlow 2s ease infinite;}
@keyframes ckRingGlow{0%,100%{box-shadow:0 0 8px rgba(200,168,110,.2);}50%{box-shadow:0 0 20px rgba(200,168,110,.4);}}
.ck-ms-inner{position:absolute;inset:6px;border-radius:50%;background:linear-gradient(135deg,#c8a86e,#e8cc8a);display:flex;align-items:center;justify-content:center;color:#fff;font-size:18px;font-weight:900;}
.ck-flavor-diamond{display:block;font-size:6px;opacity:.3;margin:8px auto;text-align:center;color:#6a6358;}
.ck-flavor{font-size:13px;color:#6a6358;text-align:center;line-height:1.8;font-style:italic;opacity:.7;animation:ckTxtIn .4s .5s both;}
.ck-close{display:block;margin:0 auto;padding:10px 36px;background:none;border:1px solid #6a6358;border-radius:8px;font-size:14px;color:#3a352e;cursor:pointer;transition:all .15s;animation:ckTxtIn .3s .6s both;}
.ck-close:active{transform:scale(.95);background:#3a352e;color:#f4f0e8;}
/* Milestones track */
.ck-ms-track-wrap{width:100%;max-width:340px;margin:24px auto 0;padding:0 16px;}
.ck-ms-title{font-size:13px;color:var(--tx2);letter-spacing:1px;font-weight:600;margin-bottom:12px;}
.ck-ms-track{display:flex;align-items:center;}
.ck-ms-line{flex:1;height:2px;background:var(--bd);}
.ck-ms-line.done{background:var(--ac);}
.ck-ms-node{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--bg2);border:2px solid var(--bd);position:relative;flex-shrink:0;}
.ck-ms-node.done{border-color:var(--ac);background:var(--ac);}
.ck-ms-node.done .ck-ms-day{color:#fff;}
.ck-ms-node.current{border-color:var(--ac);box-shadow:0 0 12px color-mix(in srgb,var(--ac) 40%,transparent);}
.ck-ms-node.gold{border-color:#c8a86e;}
.ck-ms-node.gold.done{background:#c8a86e;border-color:#c8a86e;}
.ck-ms-day{font-size:11px;font-weight:700;color:var(--tx2);}
.ck-ms-lbl{position:absolute;bottom:-18px;font-size:10px;color:var(--tx2);white-space:nowrap;font-weight:500;}
.ck-ms-node.done .ck-ms-lbl{color:var(--ac);}
.ck-ms-node.gold .ck-ms-lbl{color:#c8a86e;}
.ck-stat{display:flex;justify-content:center;gap:24px;padding:12px 0 4px;}
.checkin-stat-item{text-align:center;}
.checkin-stat-num{font-size:36px;font-weight:700;color:var(--ac);}
.checkin-stat-label{font-size:13px;color:var(--tx2);margin-top:2px;}
/* Public toggle in char editor */
.tag-editor{display:flex;flex-wrap:wrap;gap:6px;align-items:center;min-height:44px;padding:8px 10px;border:1px solid var(--bd);border-radius:10px;background:var(--bg3);cursor:text;}
.tag-editor input{border:none;background:transparent;font-size:14px;font-family:inherit;color:var(--tx);outline:none;min-width:60px;flex:1;padding:2px 0;}
.tag-preset-row{display:flex;flex-wrap:wrap;gap:8px;}
.tag-preset{padding:6px 14px;border-radius:16px;font-size:14px;font-weight:500;border:1px solid var(--bd);background:var(--bg3);color:var(--tx2);cursor:pointer;transition:all .15s;}.tag-preset:active{transform:scale(.96);}
.tag-preset.sel{background:var(--acl);border-color:var(--ac);color:var(--ac);}
.tag-pill{display:inline-flex;align-items:center;gap:4px;background:var(--acl);color:var(--ac);font-size:14px;font-weight:500;padding:4px 10px;border-radius:14px;white-space:nowrap;touch-action:manipulation;transition:opacity .15s,transform .15s;}
.tag-pill-x{width:14px;height:14px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.6;font-size:16px;line-height:1;}.tag-pill-x:active{opacity:1;}
.ce-public-row{display:flex;align-items:center;justify-content:space-between;padding:0;}
.ce-public-label{font-size:14px;color:var(--tx);display:flex;align-items:center;gap:6px;}
.ce-public-label svg{width:16px;height:16px;stroke:var(--ac);fill:none;stroke-width:2;}
.cpf-ev-detail{position:fixed;inset:0;background:var(--bg);z-index:300;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .25s cubic-bezier(.16,1,.3,1);overflow:hidden;}
.cpf-ev-detail.show{transform:translateX(0);}
.cpf-ev-detail-bar{padding:12px 16px;display:flex;align-items:center;gap:10px;flex-shrink:0;background:var(--bg2);border-bottom:1px solid var(--bd);}
.cpf-ev-detail-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;}
.cpf-ev-detail-inner{padding:24px 20px;}
.cpf-ev-detail-name{font-size:22px;font-weight:700;color:var(--tx3);line-height:1.4;}
.cpf-ev-detail-trigger{font-size:15px;color:var(--ac);margin-top:10px;}
.cpf-ev-detail-divider{height:1px;background:var(--bd);margin:24px 0;}
.cpf-ev-detail-content{font-size:16px;line-height:1.8;color:var(--tx);letter-spacing:.2px;}
.cpf-ev-detail-content p{margin:0 0 1.4em;}.cpf-ev-detail-content p:last-child{margin:0;}
.cpf-ev-detail-content em{font-style:italic;color:var(--tx2);}
.cpf-ev-detail-content strong{font-weight:600;}
.cpf-ev-detail-content blockquote{border-left:3px solid var(--ac);padding-left:10px;margin:.5em 0;color:var(--tx2);}
/* Utility classes for repeated patterns */
.u-sub{font-size:13px;color:var(--tx2);}
.u-sub2{font-weight:400;color:var(--tx2);font-size:12px;}
.u-row{display:flex;align-items:center;gap:10px;}
.u-btn-full{width:100%;padding:10px;font-size:15px;}
.u-av-sm{width:28px;height:28px;font-size:12px;}
.u-bar{height:44px;display:flex;align-items:center;}
.u-head{font-size:15px;font-weight:600;}
.u-notif-dot{position:relative;top:-1px;left:4px;}
.u-hint{font-size:14px;color:var(--tx2);line-height:1.5;}
.u-hint2{font-size:14px;color:var(--tx2);line-height:1.8;}
.u-hint3{font-size:12px;color:var(--tx2);line-height:1.5;margin-top:4px;}
.u-dim{opacity:.7;font-size:12px;}
.u-flex-c{display:flex;align-items:center;justify-content:center;gap:6px;}
.u-flex-sb{display:flex;justify-content:space-between;align-items:baseline;}
.u-flex-g6{display:flex;align-items:center;gap:6px;}
.u-tap{flex:1;min-width:0;cursor:pointer;}
.u-cover{width:100%;height:100%;object-fit:cover;}
.u-link{color:var(--ac);cursor:pointer;}
.u-title2{font-size:15px;font-weight:500;}
.u-sec-title{font-weight:600;color:var(--tx);margin-top:20px;}
.u-av-cover{width:100%;height:100%;object-fit:cover;border-radius:50%;}
.u-del-btn{width:100%;font-size:15px;padding:10px;background:var(--del);color:#fff;border:none;border-radius:12px;font-weight:600;}
.u-ico16{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
.u-ico15{width:15px;height:15px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;}
.u-bs-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;}
