﻿
:root{
  --bg:#0A0708; --bg2:#120B0C; --card:#1A1012; --card2:#150D0F;
  --blue:#FF5A1F; --blue2:#FF8A3D; --blue3:#FFC48A;
  --orange:#FFD166; --teal:#3ED6A6; --gold:#FFE066;
  --txt:#FFF7F2; --dim:#C7AFA4; --dim2:#8F7469;
  --line:rgba(255,255,255,.09);
  --maxw:1200px;
  --ph:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cpath d='M6 66c8-6 14-6 22 0s14 6 22 0 14-6 22 0 14 6 22 0' fill='none' stroke='%23FF8A3D' stroke-opacity='.16' stroke-width='2'/%3E%3Cpath d='M6 84c8-6 14-6 22 0s14 6 22 0 14-6 22 0 14 6 22 0' fill='none' stroke='%23FFC48A' stroke-opacity='.1' stroke-width='2'/%3E%3C/svg%3E");
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--txt);
  font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,sans-serif;
  line-height:1.6;overflow-x:hidden;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
img.no-img{opacity:0}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}
input{font-family:inherit}

/* ---------- 全站海洋背景（固定层，淡印在页面底部） ---------- */
.ocean{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  background:
    radial-gradient(1200px 620px at 50% -8%,rgba(255,90,31,.13),transparent 62%),
    radial-gradient(900px 500px at 92% 42%,rgba(62,214,166,.06),transparent 60%),
    linear-gradient(180deg,#0A0708 0%,#1A0C08 46%,#24110B 100%)}
/* 海面：三层缓动波浪，越近越亮 */
.ocean .sea-layer{position:absolute;left:-10%;width:240%;bottom:0;height:46vh;min-height:300px}
.ocean .sea-layer svg{width:100%;height:100%;display:block}
.ocean .sl1{opacity:.5;animation:drift 34s linear infinite}
.ocean .sl2{opacity:.36;animation:drift 23s linear infinite reverse}
.ocean .sl3{opacity:.24;animation:drift 15s linear infinite}
@keyframes drift{to{transform:translateX(-16.66%)}}
/* 地平线微光 */
.ocean .glow{position:absolute;left:0;right:0;bottom:44vh;height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,196,138,.34) 30%,rgba(255,196,138,.34) 70%,transparent)}
.ocean .glow2{position:absolute;left:50%;bottom:44vh;width:560px;height:300px;transform:translateX(-50%);
  background:radial-gradient(ellipse at 50% 100%,rgba(255,209,102,.16),transparent 68%)}
/* 海鸥：三群，缓慢横飞 */
.ocean .birds{position:absolute;left:0;top:0;width:100%;height:52vh}
.ocean .flock{position:absolute;white-space:nowrap;opacity:.5}
.ocean .flock svg{display:inline-block;vertical-align:middle}
.ocean .f1{top:12%;animation:fly1 78s linear infinite}
.ocean .f2{top:22%;animation:fly2 104s linear infinite}
.ocean .f3{top:7%;animation:fly3 92s linear infinite}
@keyframes fly1{0%{transform:translateX(-14vw) translateY(0)}50%{transform:translateX(58vw) translateY(-22px)}100%{transform:translateX(114vw) translateY(0)}}
@keyframes fly2{0%{transform:translateX(112vw) translateY(0)}50%{transform:translateX(40vw) translateY(18px)}100%{transform:translateX(-14vw) translateY(0)}}
@keyframes fly3{0%{transform:translateX(-10vw) translateY(8px)}100%{transform:translateX(118vw) translateY(-14px)}}
/* 远处灯塔 */
.ocean .lighthouse{position:absolute;right:7%;bottom:44vh;width:64px;opacity:.5}
.ocean .lighthouse svg{width:100%;display:block}
.ocean .lighthouse .beam{animation:sweep 9s ease-in-out infinite;transform-origin:32px 24px}
@keyframes sweep{0%,100%{opacity:.18}50%{opacity:.62}}
/* 星点 */
.ocean .stars{position:absolute;left:0;top:0;width:100%;height:56vh;
  background-image:
    radial-gradient(1.4px 1.4px at 12% 14%,rgba(255,255,255,.5),transparent),
    radial-gradient(1.2px 1.2px at 28% 8%,rgba(255,255,255,.34),transparent),
    radial-gradient(1.6px 1.6px at 46% 18%,rgba(255,255,255,.42),transparent),
    radial-gradient(1.2px 1.2px at 63% 6%,rgba(255,255,255,.3),transparent),
    radial-gradient(1.5px 1.5px at 78% 16%,rgba(255,255,255,.46),transparent),
    radial-gradient(1.1px 1.1px at 88% 9%,rgba(255,255,255,.3),transparent),
    radial-gradient(1.3px 1.3px at 7% 24%,rgba(255,255,255,.28),transparent),
    radial-gradient(1.2px 1.2px at 36% 26%,rgba(255,255,255,.24),transparent),
    radial-gradient(1.1px 1.1px at 71% 27%,rgba(255,255,255,.26),transparent);
  animation:twinkle 7s ease-in-out infinite}
@keyframes twinkle{0%,100%{opacity:.55}50%{opacity:.92}}
@media(max-width:820px){
  .ocean .sea-layer{height:38vh;min-height:220px}
  .ocean .glow,.ocean .glow2{bottom:36vh}
  .ocean .lighthouse{right:3%;width:44px;bottom:36vh}
  .ocean .f3{display:none}
}

.wrap{max-width:var(--maxw);margin:0 auto;padding:0 24px}
.sec{padding:96px 0;position:relative;z-index:1}
.kicker{display:inline-block;font-size:12px;font-weight:900;letter-spacing:2.5px;
  color:var(--blue2);margin-bottom:14px}
.sec-head{margin-bottom:44px;max-width:760px}
.sec-head h2{font-size:36px;font-weight:900;line-height:1.25;letter-spacing:-.5px}
.sec-head p{margin-top:14px;font-size:16px;color:var(--dim);line-height:1.85}

/* ---------- 内容补充组件（回声 / 留言 / 节目单 / 清单） ---------- */
.thread{margin-top:18px;border-top:1px solid var(--line);padding-top:16px}
.thread .th{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--dim2);
  letter-spacing:.5px;margin-bottom:12px;flex-wrap:wrap}
.thread .th b{color:var(--txt);font-weight:700;letter-spacing:0}
.cmt{display:flex;gap:10px;padding:9px 0;min-width:0}
.cmt + .cmt{border-top:1px solid rgba(255,255,255,.04)}
.cmt .ca{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;
  font-size:12px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--blue),var(--teal))}
.cmt .cb{min-width:0;flex:1}
.cmt .cn{font-size:12.5px;font-weight:700;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.cmt .cn em{font-style:normal;font-size:11px;color:var(--dim2);font-weight:500}
.cmt .cx{font-size:13px;color:var(--dim);line-height:1.7;margin-top:2px}
.cmt .cl{font-size:11.5px;color:var(--dim2);margin-top:4px;display:flex;gap:12px;flex-wrap:wrap}
.cmt .cl span{transition:.25s}
.cmt .cl span:hover{color:var(--orange)}
.more-cmt{width:100%;margin-top:10px;padding:9px;border-radius:9px;border:1px dashed var(--line);
  font-size:12.5px;color:var(--dim2);transition:.25s;background:rgba(255,255,255,.02)}
.more-cmt:hover{border-color:rgba(255,138,61,.5);color:var(--blue3)}
.more-cmt:disabled{opacity:.5}
.tagline{display:flex;gap:7px;margin-top:14px;flex-wrap:wrap}
.tagline span{font-size:11.5px;padding:4px 10px;border-radius:999px;color:var(--dim);
  border:1px solid var(--line);background:rgba(255,255,255,.03);transition:.25s;cursor:default}
.tagline span:hover{border-color:rgba(255,209,102,.45);color:var(--orange)}
.sched{margin-top:18px;border-top:1px solid var(--line);padding-top:15px}
.sched .sh{font-size:12px;color:var(--dim2);letter-spacing:.5px;margin-bottom:11px}
.sched .sr{display:flex;align-items:center;gap:12px;padding:8px 11px;border-radius:9px;
  font-size:13px;transition:.25s;min-width:0}
.sched .sr + .sr{margin-top:3px}
.sched .sr:hover{background:rgba(255,138,61,.09)}
.sched .sr.on{background:rgba(255,138,61,.14);border:1px solid rgba(255,138,61,.3)}
.sched .sr .st{font-size:11.5px;color:var(--blue3);font-weight:800;width:44px;flex-shrink:0;
  font-variant-numeric:tabular-nums}
.sched .sr .sn2{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sched .sr .sd{font-size:11.5px;color:var(--dim2);flex-shrink:0}
.sched .sr.on .sn2{color:var(--txt);font-weight:600}
.checklist{margin:16px 0 4px;padding:14px 15px;border-radius:12px;background:rgba(0,0,0,.26);
  border:1px solid var(--line)}
.checklist .cl-h{font-size:11.5px;color:var(--blue3);letter-spacing:1px;font-weight:800;margin-bottom:10px}
.checklist li{list-style:none;display:flex;align-items:flex-start;gap:9px;font-size:13px;
  color:var(--dim);padding:4px 0;line-height:1.65}
.checklist li b{color:var(--txt);font-weight:700}
.checklist li svg{flex-shrink:0;margin-top:3px}
.barcode{display:flex;align-items:flex-end;gap:2px;height:38px;margin:16px 0 8px;opacity:.72}
.barcode i{flex:1;border-radius:1px;background:linear-gradient(180deg,rgba(255,196,138,.85),rgba(255,196,138,.5))}
.stamp{position:absolute;right:18px;top:16px;width:74px;height:74px;border-radius:50%;
  border:2px solid rgba(255,209,102,.5);display:grid;place-items:center;transform:rotate(-14deg);
  pointer-events:none}
.stamp span{font-size:10.5px;font-weight:900;color:var(--orange);letter-spacing:1px;
  text-align:center;line-height:1.35;opacity:.9}
.stamp::after{content:"";position:absolute;inset:5px;border-radius:50%;border:1px dashed rgba(255,209,102,.35)}
.passengers{display:flex;align-items:center;gap:10px;margin-top:18px;padding:12px 14px;
  border-radius:12px;background:rgba(255,224,102,.06);border:1px solid rgba(255,224,102,.22);flex-wrap:wrap}
.passengers .ps{display:flex}
.passengers .ps i{width:26px;height:26px;border-radius:50%;border:2px solid #3A2118;
  display:grid;place-items:center;font-size:11px;font-weight:800;color:#fff;margin-left:-8px}
.passengers .ps i:first-child{margin-left:0}
.passengers .pt{font-size:12.5px;color:var(--dim);min-width:0}
.passengers .pt b{color:var(--gold);font-size:15px;font-weight:900;font-variant-numeric:tabular-nums}

/* ---------- 顶栏 ---------- */
#progress{position:fixed;top:0;left:0;height:3px;width:0;z-index:120;
  background:linear-gradient(90deg,var(--blue),var(--blue3));box-shadow:0 0 12px rgba(255,138,61,.6)}
#hd{position:fixed;top:0;left:0;right:0;z-index:100;transition:.35s;
  background:rgba(10,7,8,.72);backdrop-filter:blur(16px);border-bottom:1px solid transparent}
#hd.on{background:rgba(10,7,8,.94);border-bottom-color:var(--line)}
.nav{display:flex;align-items:center;gap:26px;height:70px;max-width:var(--maxw);margin:0 auto;padding:0 24px;min-width:0}
.logo{display:flex;align-items:center;gap:10px;font-weight:900;font-size:20px;flex-shrink:0;letter-spacing:.5px}
.logo .wt,.brand-lg .wt{display:inline-flex;align-items:baseline;gap:0;white-space:nowrap}
.logo .mark,.brand-lg .mark{position:relative;width:36px;height:36px;display:grid;place-items:center;
  border-radius:9px;overflow:hidden;box-shadow:0 6px 18px rgba(255,90,31,.4)}
.logo .mark svg,.brand-lg .mark svg{width:100%;height:100%;display:block}
.logo .mark img,.brand-lg .mark img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;
  border-radius:9px;opacity:0;transition:opacity .3s;background:transparent}
.logo .mark img.ok,.brand-lg .mark img.ok{opacity:1}
.logo .mark.has-logo,.brand-lg .mark.has-logo{box-shadow:none;background:transparent;overflow:visible;border-radius:0}
.logo .mark.has-logo svg,.brand-lg .mark.has-logo svg{display:none}
.logo .mark.has-logo img,.brand-lg .mark.has-logo img{position:static;border-radius:0}
.logo .mark.has-logo{width:auto;height:36px;max-width:170px}
.brand-lg .mark.has-logo{width:auto;height:52px;max-width:250px}
.logo em,.brand-lg em{font-style:normal;color:var(--blue2)}
.nav-links{display:flex;gap:24px;margin-left:10px;font-size:14.5px;color:var(--dim);min-width:0;flex-wrap:wrap}
.nav-links a{transition:.25s;position:relative;padding:4px 0}
.nav-links a:hover,.nav-links a.active{color:var(--txt)}
.nav-links a.active::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;
  background:var(--blue2);border-radius:2px}
.nav .btn{margin-left:auto;flex-shrink:0}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:11px 22px;border-radius:10px;font-size:14.5px;font-weight:700;transition:.28s;white-space:nowrap}
.btn-primary{background:linear-gradient(135deg,#FF7A2F,#FF3D00);color:#fff;
  box-shadow:0 8px 22px rgba(255,90,31,.34)}
.btn-primary:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(255,90,31,.46)}
.btn-ghost{border:1px solid var(--line);color:var(--txt);background:rgba(255,255,255,.04)}
.btn-ghost:hover{border-color:var(--blue2);color:var(--blue3);background:rgba(255,138,61,.12)}
#burger{display:none;margin-left:auto;width:42px;height:42px;border-radius:10px;
  border:1px solid var(--line);align-items:center;justify-content:center}
#mmenu{position:fixed;inset:70px 0 0;background:rgba(10,7,8,.98);backdrop-filter:blur(20px);
  z-index:99;padding:26px 24px;display:none;flex-direction:column;gap:22px;font-size:17px}
body.menu-open #mmenu{display:flex}
body.menu-open{overflow:hidden}

/* ---------- HERO ---------- */
#top{position:relative;z-index:1;padding:130px 0 90px;background:
  radial-gradient(900px 480px at 80% 6%,rgba(255,90,31,.16),transparent 62%),
  radial-gradient(700px 400px at 8% 94%,rgba(62,214,166,.07),transparent 62%)}
.hero{display:grid;grid-template-columns:minmax(0,1fr) 400px;gap:56px;align-items:center}
.eyebrow{display:inline-flex;align-items:center;gap:9px;font-size:12.5px;font-weight:700;
  color:var(--blue3);border:1px solid rgba(255,196,138,.3);background:rgba(255,196,138,.07);
  padding:6px 14px;border-radius:999px;letter-spacing:.5px;flex-wrap:wrap}
.eyebrow i{width:7px;height:7px;border-radius:50%;background:var(--blue3);
  box-shadow:0 0 8px var(--blue3);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
h1.big{font-size:54px;font-weight:900;line-height:1.12;margin:22px 0 18px;letter-spacing:-1.5px}
h1.big .r{color:var(--blue2)}
h1.big .sub{display:block;font-size:26px;color:var(--dim);font-weight:700;margin-top:10px;letter-spacing:0}
.lead{font-size:16.5px;color:var(--dim);line-height:1.85;max-width:560px}
.hero-btns{display:flex;gap:14px;margin-top:30px;flex-wrap:wrap}

/* 抖漫实况卡 */
.live{background:var(--card);border:1px solid var(--line);border-radius:18px;overflow:hidden;
  box-shadow:0 26px 60px rgba(0,0,0,.5)}
.lv-top{display:flex;align-items:center;gap:14px;padding:14px 16px;border-bottom:1px solid var(--line);
  flex-wrap:wrap;min-width:0}
.compass{width:62px;height:62px;flex-shrink:0;position:relative}
.compass svg{width:100%;height:100%;display:block}
.compass .needle{transition:transform .8s cubic-bezier(.4,0,.2,1);transform-origin:50% 50%}
.lv-top .info{min-width:0;flex:1}
.lv-top .info .lb{font-size:11.5px;color:var(--dim2);letter-spacing:1px}
.lv-top .info .num{font-size:24px;font-weight:900;color:var(--blue3);line-height:1.2;
  font-variant-numeric:tabular-nums}
.lv-top .info .num small{font-size:13px;color:var(--dim2);font-weight:600;margin-left:4px}
.lv-top .wave-mini{display:flex;align-items:flex-end;gap:3px;height:26px;flex-shrink:0}
.lv-top .wave-mini i{width:3px;border-radius:2px;background:linear-gradient(180deg,var(--blue2),var(--teal));
  animation:mwave 1.2s ease-in-out infinite}
@keyframes mwave{0%,100%{height:6px;opacity:.5}50%{height:24px;opacity:1}}
.lv-list{position:relative;height:340px;overflow:hidden}
.lv-track{transition:transform .6s cubic-bezier(.4,0,.2,1)}
.feed{display:flex;gap:11px;padding:12px 16px;border-bottom:1px solid rgba(255,255,255,.05);
  align-items:flex-start;min-width:0}
.feed .av{width:36px;height:36px;border-radius:50%;flex-shrink:0;overflow:hidden;
  display:grid;place-items:center;font-size:14px;font-weight:800;color:#fff;
  background:linear-gradient(135deg,var(--blue),var(--teal))}
.feed .bd{min-width:0;flex:1}
.feed .nm{font-size:13.5px;font-weight:700;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.feed .nm em{font-style:normal;font-size:11px;color:var(--dim2);font-weight:500}
.feed .tx{font-size:13px;color:var(--dim);line-height:1.65;margin-top:3px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.feed .pic{margin-top:8px;border-radius:9px;overflow:hidden;aspect-ratio:16/9;
  background:var(--card2) var(--ph) center/40px no-repeat}
.feed .pic img{width:100%;height:100%;object-fit:cover;border-radius:0}
.feed .pic img.no-img{opacity:0}
.feed .mt2{display:flex;gap:14px;margin-top:7px;font-size:11.5px;color:var(--dim2)}
.lv-foot{padding:10px 16px;border-top:1px solid var(--line);display:flex;align-items:center;gap:8px;
  font-size:12px;color:var(--dim2);flex-wrap:wrap}
.lv-foot .dotg{width:6px;height:6px;border-radius:50%;background:var(--teal);
  box-shadow:0 0 6px var(--teal);animation:pulse 1.8s infinite}

/* ---------- 情绪海浪 ---------- */
#mood{background:linear-gradient(180deg,transparent,rgba(255,90,31,.05) 50%,transparent);
  position:relative;z-index:1}
.mood-tabs{display:flex;gap:10px;margin-bottom:26px;flex-wrap:wrap}
.mood-tabs button{display:inline-flex;align-items:center;gap:8px;padding:9px 17px;border-radius:999px;
  border:1px solid var(--line);font-size:14px;font-weight:600;color:var(--dim);transition:.28s;
  background:rgba(255,255,255,.03)}
.mood-tabs button:hover{color:var(--txt);border-color:rgba(255,138,61,.5)}
.mood-tabs button.on{color:#fff;border-color:transparent;
  box-shadow:0 8px 20px rgba(0,0,0,.3)}
.mood-tabs button.on .em{font-size:15px}
.sea{position:relative;border-radius:20px;overflow:hidden;border:1px solid var(--line);
  background:var(--card);margin-bottom:22px}
.sea-svg{display:block;width:100%;height:150px}
.sea-svg .wv{transition:.6s cubic-bezier(.4,0,.2,1)}
.sea-count{position:absolute;left:24px;top:20px;z-index:3}
.sea-count .n{font-size:32px;font-weight:900;line-height:1;font-variant-numeric:tabular-nums}
.sea-count .t{font-size:12.5px;color:var(--dim);margin-top:6px}
.mood-pane{display:none;grid-template-columns:minmax(0,420px) minmax(0,1fr);gap:28px;
  align-items:stretch;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:22px;
  animation:fadeUp .45s ease both}
.mood-pane.on{display:grid}
@keyframes fadeUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.mp-pic{position:relative;border-radius:14px;overflow:hidden;min-height:340px;
  background:var(--card2) var(--ph) center/56px no-repeat}
.mp-pic img{width:100%;height:100%;object-fit:cover;border-radius:0;position:relative;z-index:2}
.mp-pic img.no-img{opacity:0}
/* 图片没上传时露出的「抖漫」水印底 */
.mp-pic .wm{position:absolute;inset:0;z-index:1;display:grid;place-items:center;overflow:hidden;
  background:
    radial-gradient(circle at 50% 42%,rgba(255,90,31,.16),transparent 62%),
    linear-gradient(160deg,#24120D,#120B0C)}
.mp-pic .wm .wm-txt{font-size:32px;font-weight:900;letter-spacing:6px;white-space:nowrap;
  color:transparent;-webkit-text-stroke:1.3px rgba(255,196,138,.32);transform:none;
  text-shadow:0 0 30px rgba(255,90,31,.28);user-select:none}
.mp-pic .wm .wm-sub{margin-top:12px;font-size:12px;letter-spacing:6px;color:rgba(255,196,138,.3);
  transform:none;user-select:none}
.mp-pic .wm .wm-wave{position:absolute;left:-10%;right:-10%;bottom:14%;height:60px;opacity:.3}
.mp-pic .wm .wm-wave svg{width:100%;height:100%;display:block}
/* 图片上传后，水印降为极淡的角标 */
.mp-pic.has-img .wm{background:none;place-items:end}
.mp-pic.has-img .wm .wm-txt,.mp-pic.has-img .wm .wm-sub{display:none}
.mp-pic .wm .wm-mark{display:none;position:absolute;right:10px;bottom:8px;font-size:11px;
  font-weight:800;letter-spacing:2px;color:rgba(255,255,255,.5);text-shadow:0 1px 4px rgba(0,0,0,.8);z-index:3}
.mp-pic.has-img .wm .wm-mark{display:block}
.mp-txt .qt{font-size:20px;font-weight:800;line-height:1.55;margin-bottom:12px}
.mp-txt .who{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--dim2);margin-bottom:14px;flex-wrap:wrap}
.mp-txt .who b{color:var(--txt);font-weight:700}
.mp-txt .cm{font-size:14.5px;color:var(--dim);line-height:1.9}
.mp-txt .acts{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.hug{display:inline-flex;align-items:center;gap:7px;padding:9px 17px;border-radius:10px;
  border:1px solid rgba(255,209,102,.4);color:var(--orange);font-size:13.5px;font-weight:700;
  background:rgba(255,209,102,.09);transition:.25s}
.hug:hover{background:rgba(255,209,102,.18)}
.hug.done{opacity:.65;border-color:var(--line);color:var(--dim)}
.mp-txt .cnt{font-size:12.5px;color:var(--dim2);margin-top:12px}

/* ---------- 漂流瓶 ---------- */
#bottle{background:linear-gradient(180deg,rgba(20,11,8,.74),rgba(20,11,8,.4));
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);position:relative;z-index:1}
.sea-wrap{position:relative;height:210px;border-radius:20px;overflow:hidden;border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(255,90,31,.14),rgba(10,7,8,.9));
  margin-bottom:24px}
.sea-wrap .sw-svg{position:absolute;left:0;bottom:0;width:200%;height:100%;
  animation:swim 9s linear infinite}
@keyframes swim{to{transform:translateX(-50%)}}
.btns-row{position:absolute;left:0;right:0;bottom:0;top:0;display:flex;align-items:flex-end;
  justify-content:space-around;padding:0 20px 30px;gap:10px;z-index:3}
.bt{border:none;background:none;display:flex;flex-direction:column;align-items:center;gap:8px;
  transition:.3s;padding:6px;min-width:0}
.bt .gl{width:52px;height:68px;position:relative;transition:.35s;flex-shrink:0}
.bt .gl svg{width:100%;height:100%;display:block;overflow:visible}
.bt .gl .cork{fill:#C08A5A}
.bt .gl .glass{fill:rgba(255,196,138,.22);stroke:var(--blue3);stroke-width:1.6}
.bt .gl .paper{fill:var(--gold)}
.bt .gl .shine{fill:rgba(255,255,255,.35)}
.bt .cap{font-size:11.5px;color:var(--dim);white-space:nowrap;transition:.3s;max-width:70px;
  overflow:hidden;text-overflow:ellipsis}
.bt:hover .gl{transform:translateY(-8px)}
.bt.on .gl{transform:translateY(-12px) scale(1.08)}
.bt.on .gl .glass{fill:rgba(255,196,138,.42);stroke:#fff}
.bt.on .cap{color:var(--txt);font-weight:700}
.bt-pane{display:none;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:30px;
  align-items:start;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:26px 22px;
  animation:fadeUp .45s ease both}
.bt-pane.on{display:grid}
/* 瓶子配图：放大、居中、上下留白 */
.bp-pic{position:relative;border-radius:16px;overflow:hidden;aspect-ratio:3/4;
  margin:auto;max-width:340px;
  background:var(--card2) var(--ph) center/52px no-repeat;
  box-shadow:0 18px 40px rgba(0,0,0,.42)}
.bp-pic img{width:100%;height:100%;object-fit:cover;border-radius:0}
.bp-pic img.no-img{opacity:0}
.bp-pic .wm{position:absolute;inset:0;z-index:1;display:grid;place-items:center;overflow:hidden;
  background:
    radial-gradient(circle at 50% 40%,rgba(255,90,31,.16),transparent 62%),
    linear-gradient(160deg,#24120D,#120B0C)}
.bp-pic .wm .wm-txt{font-size:26px;font-weight:900;letter-spacing:5px;white-space:nowrap;
  color:transparent;-webkit-text-stroke:1.2px rgba(255,196,138,.3);transform:none;
  user-select:none;text-align:center;line-height:1.4}
.bp-pic .wm .wm-sub{margin-top:10px;font-size:11px;letter-spacing:5px;color:rgba(255,196,138,.28);
  transform:none;user-select:none}
.bp-pic.has-img .wm{background:none}
.bp-pic.has-img .wm .wm-txt,.bp-pic.has-img .wm .wm-sub{display:none}
/* 玻璃瓶倒影装饰，图片下方空白时补位 */
.bp-pic .wm .bt-deco{position:absolute;left:50%;bottom:10%;transform:translateX(-50%);
  width:56px;opacity:.28}
.bp-pic .wm .bt-deco svg{width:100%;display:block}
.bp-pic.has-img .wm .bt-deco{display:none}

/* ---------- 通用图片水印（未上传时露出「抖漫」，不出现空框） ----------
   一律水平居中、不旋转，并强制 overflow:hidden，避免斜排溢出压住下方文字。
   图片本身永不旋转，旋转只可能出现在占位水印上，而现在已经全部取消。 */
.ip-pic,.rc .ph,.feed .pic,.isl-item .ic{position:relative;overflow:hidden}
.ip-pic img,.rc .ph img,.feed .pic img,.isl-item .ic img{position:relative;z-index:2}
.ip-pic::before,.rc .ph::before,.feed .pic::before,.isl-item .ic::before{
  content:"抖漫";position:absolute;inset:0;z-index:1;
  display:flex;align-items:center;justify-content:center;overflow:hidden;
  background:
    radial-gradient(circle at 50% 42%,rgba(255,90,31,.16),transparent 64%),
    linear-gradient(160deg,#24120D,#120B0C);
  font-weight:900;letter-spacing:3px;white-space:nowrap;line-height:1.2;
  color:transparent;-webkit-text-stroke:1.1px rgba(255,196,138,.3);
  padding:0 8px;pointer-events:none;transform:none}
/* 按容器大小适配字号，越小越收敛，绝不溢出 */
.ip-pic::before{font-size:22px}
.rc .ph::before{font-size:26px;letter-spacing:5px}
.feed .pic::before{font-size:13px;letter-spacing:2px}
.isl-item .ic::before{content:"海";font-size:15px;letter-spacing:0;
  -webkit-text-stroke:.9px rgba(255,196,138,.34)}
/* 上传后 → 退为右下角小角标（同样不旋转） */
.ip-pic.has-img::before,.rc .ph.has-img::before,
.feed .pic.has-img::before,.isl-item .ic.has-img::before{
  background:none;font-size:10px;letter-spacing:1px;
  align-items:flex-end;justify-content:flex-end;
  -webkit-text-stroke:0;color:rgba(255,255,255,.5);text-shadow:0 1px 4px rgba(0,0,0,.9);
  padding:4px 6px}
.bp-txt .tp{display:inline-flex;align-items:center;gap:7px;font-size:12px;font-weight:800;
  color:var(--gold);border:1px solid rgba(255,224,102,.36);background:rgba(255,224,102,.08);
  padding:4px 11px;border-radius:999px}
.bp-txt h3{font-size:21px;font-weight:900;margin:13px 0 12px;line-height:1.45}
.bp-txt p{font-size:15px;color:var(--dim);line-height:1.9;white-space:pre-line}
.bp-txt .bm{display:flex;gap:22px;margin-top:18px;flex-wrap:wrap;font-size:12.5px;color:var(--dim2)}
.bp-txt .bm b{color:var(--blue3);font-size:17px;font-weight:900;font-variant-numeric:tabular-nums;
  margin-right:5px}
.bp-txt .acts{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}

/* ---------- 人气角色 滑卡 ---------- */
.resident-wrap{display:grid;grid-template-columns:minmax(0,340px) minmax(0,1fr);gap:44px;align-items:center}
.rc-stack{position:relative;height:430px;perspective:1200px}
.rc{position:absolute;top:0;left:0;width:100%;max-width:330px;height:410px;border-radius:20px;
  overflow:hidden;border:1px solid var(--line);background:var(--card);
  transition:transform .5s cubic-bezier(.3,.9,.3,1),opacity .5s,box-shadow .4s;
  box-shadow:0 20px 44px rgba(0,0,0,.45);will-change:transform}
.rc .ph{width:100%;height:100%;position:relative;
  background:var(--card2) var(--ph) center/64px no-repeat}
.rc .ph img{width:100%;height:100%;object-fit:cover;border-radius:0}
.rc .ph img.no-img{opacity:0}
.rc .ov{position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(10,7,8,.1) 0,rgba(10,7,8,.5) 45%,rgba(10,7,8,.96) 100%)}
.rc .tx{position:absolute;left:0;right:0;bottom:0;padding:22px}
.rc .tx .nm{font-size:25px;font-weight:900;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.rc .tx .nm small{font-size:13px;color:var(--blue3);font-weight:600}
.rc .tx .fr{font-size:12.5px;color:var(--dim2);margin-top:6px}
.rc .tx .bio{font-size:14px;color:rgba(242,247,253,.86);line-height:1.7;margin-top:10px}
.rc .tx .tags{display:flex;gap:7px;margin-top:12px;flex-wrap:wrap}
.rc .tx .tags span{font-size:11.5px;padding:3px 9px;border-radius:6px;
  background:rgba(255,138,61,.16);color:var(--blue3);border:1px solid rgba(255,138,61,.3)}
.rc.out{opacity:0;pointer-events:none}
.rc-info h3{font-size:27px;font-weight:900;margin-bottom:10px}
.rc-info p{font-size:15.5px;color:var(--dim);line-height:1.9;margin-bottom:22px}
.rc-acts{display:flex;gap:12px;flex-wrap:wrap}
.rc-acts .btn{min-width:130px}
.rc-acts .skip{border:1px solid var(--line);background:rgba(255,255,255,.04)}
.rc-acts .skip:hover{border-color:var(--dim);color:var(--txt)}
.rc-dots{display:flex;gap:7px;margin-top:20px;flex-wrap:wrap}
.rc-dots i{width:26px;height:4px;border-radius:3px;background:rgba(255,255,255,.14);transition:.3s}
.rc-dots i.on{background:var(--blue2);width:38px}

/* ---------- 群岛 ---------- */
#islands{background:linear-gradient(180deg,rgba(20,11,8,.74),rgba(20,11,8,.4));
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);position:relative;z-index:1}
.isl-wrap{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:40px;align-items:center}
.isl-map{border-radius:20px;overflow:hidden;border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(255,90,31,.1),rgba(10,7,8,.85));position:relative}
.isl-map svg{display:block;width:100%;height:auto}
.isl-map .g{cursor:pointer;transition:.35s}
.isl-map .g .shape{transition:.35s}
.isl-map .g:hover .shape{opacity:.95}
.isl-map .g.on .shape{opacity:1}
.isl-map .g .ring{fill:none;stroke:var(--gold);stroke-width:2;opacity:0;transition:.35s}
.isl-map .g.on .ring{opacity:1}
.isl-map .g .lb{font-size:12px;font-weight:800;fill:var(--txt);text-anchor:middle;pointer-events:none}
.isl-map .g .cnt{font-size:9.5px;fill:var(--blue3);text-anchor:middle;pointer-events:none}
.isl-list{display:flex;flex-direction:column;gap:10px}
.isl-item{display:flex;align-items:center;gap:13px;padding:13px 15px;border-radius:14px;
  border:1px solid var(--line);background:rgba(255,255,255,.03);cursor:pointer;transition:.28s;min-width:0}
.isl-item:hover{border-color:rgba(255,138,61,.5);background:rgba(255,138,61,.09);transform:translateX(4px)}
.isl-item.on{border-color:var(--blue2);background:rgba(255,138,61,.14)}
.isl-item .ic{width:38px;height:38px;border-radius:11px;flex-shrink:0;overflow:hidden;
  background:var(--card2) var(--ph) center/22px no-repeat}
.isl-item .ic img{width:100%;height:100%;object-fit:cover;border-radius:0}
.isl-item .ic img.no-img{opacity:0}
.isl-item .t2{min-width:0;flex:1}
.isl-item .t2 h5{font-size:15.5px;font-weight:700}
.isl-item .t2 p{font-size:12.5px;color:var(--dim2);margin-top:2px}
.isl-pane{display:none;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:26px;align-items:start;
  margin-top:24px;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:22px;
  animation:fadeUp .45s ease both}
.isl-pane.on{display:grid}
.ip-pic{aspect-ratio:16/10;border-radius:14px;overflow:hidden;align-self:start;
  background:var(--card2) var(--ph) center/56px no-repeat}
.ip-pic img{width:100%;height:100%;object-fit:cover;border-radius:0}
.ip-pic img.no-img{opacity:0}
.ip-txt h3{font-size:23px;font-weight:900;margin-bottom:10px}
.ip-txt p{font-size:15px;color:var(--dim);line-height:1.9}
.ip-txt .sm{display:flex;gap:22px;margin-top:16px;flex-wrap:wrap;font-size:12.5px;color:var(--dim2)}
.ip-txt .sm b{color:var(--blue3);font-size:17px;font-weight:900;margin-right:5px;
  font-variant-numeric:tabular-nums}

/* ---------- 电台 ---------- */
.radio{display:grid;grid-template-columns:minmax(0,300px) minmax(0,1fr);gap:34px;
  background:var(--card);border:1px solid var(--line);border-radius:20px;padding:26px}
.rd-left{display:flex;flex-direction:column;align-items:center;gap:16px}
.turntable{width:230px;height:230px;border-radius:50%;position:relative;flex-shrink:0;
  background:
    radial-gradient(circle at 50% 50%,#3A2419 0 22%,#1A0F0C 22% 100%),
    repeating-conic-gradient(from 0deg,rgba(255,255,255,.045) 0deg 2deg,transparent 2deg 7deg);
  box-shadow:0 24px 56px rgba(0,0,0,.55),inset 0 0 0 1px rgba(255,255,255,.09),
    inset 0 0 40px rgba(0,0,0,.5);
  display:grid;place-items:center}
/* 唱片外圈刻度 */
.turntable::before{content:"";position:absolute;inset:6px;border-radius:50%;
  border:1px solid rgba(255,196,138,.14);pointer-events:none;z-index:4}
.turntable::after{content:"";position:absolute;inset:18px;border-radius:50%;
  border:1px dashed rgba(255,196,138,.1);pointer-events:none;z-index:4}
/* 旋转的高光扫过 */
.turntable .sheen{position:absolute;inset:0;border-radius:50%;z-index:5;pointer-events:none;
  background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.13) 46%,transparent 60%)}
/* 唱臂 */
.turntable .arm{position:absolute;right:-6px;top:16px;width:96px;height:96px;z-index:6;
  pointer-events:none;transform-origin:88px 14px;transition:transform .6s cubic-bezier(.4,0,.2,1)}
.turntable .arm svg{width:100%;height:100%;display:block;overflow:visible}
.turntable.off .arm{transform:rotate(-26deg)}
/* 底座光晕 */
.turntable .base{position:absolute;left:50%;bottom:-16px;transform:translateX(-50%);
  width:78%;height:22px;border-radius:50%;background:radial-gradient(ellipse,rgba(255,90,31,.4),transparent 70%);
  filter:blur(8px);z-index:-1}
.turntable .disc{position:absolute;inset:0;border-radius:50%;overflow:hidden}
.turntable .disc img{width:100%;height:100%;object-fit:cover;opacity:.9}
.turntable .disc img.no-img{opacity:0}
.turntable.spin{animation:turn 6s linear infinite}
.turntable.paused{animation-play-state:paused}
@keyframes turn{to{transform:rotate(360deg)}}
.turntable .hole{width:52px;height:52px;border-radius:50%;position:relative;z-index:3;
  background:radial-gradient(circle,#2A1A14 0 40%,#120B0C 40% 100%);
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.1),0 4px 12px rgba(0,0,0,.6);
  display:grid;place-items:center}
.turntable .hole svg{width:22px;height:22px}
.rd-play{width:58px;height:58px;border-radius:50%;border:none;display:grid;place-items:center;
  background:linear-gradient(135deg,#FF7A2F,#FF3D00);color:#fff;flex-shrink:0;
  box-shadow:0 10px 26px rgba(255,90,31,.42),0 0 0 0 rgba(255,138,61,.5);transition:.25s}
.rd-play:hover{transform:scale(1.06)}
.rd-play.playing{animation:rdPulse 2.2s ease-out infinite}
@keyframes rdPulse{0%{box-shadow:0 10px 26px rgba(255,90,31,.42),0 0 0 0 rgba(255,138,61,.45)}
  70%{box-shadow:0 10px 26px rgba(255,90,31,.42),0 0 0 18px rgba(255,138,61,0)}
  100%{box-shadow:0 10px 26px rgba(255,90,31,.42),0 0 0 0 rgba(255,138,61,0)}}

/* ---------- 电台滚动留言 ---------- */
.rd-roll{position:relative;margin-top:16px;border-top:1px solid var(--line);padding-top:14px}
.rd-roll .rh{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--dim2);
  letter-spacing:.5px;margin-bottom:12px;flex-wrap:wrap}
.rd-roll .rh b{color:var(--txt);font-weight:700;letter-spacing:0}
.rd-roll .rh .live2{margin-left:auto;display:inline-flex;align-items:center;gap:6px;
  font-size:11px;color:var(--teal)}
.rd-roll .rh .live2 i{width:6px;height:6px;border-radius:50%;background:var(--teal);
  box-shadow:0 0 6px var(--teal);animation:pulse 1.8s infinite}
.rd-viewport{position:relative;height:400px;overflow:hidden;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 8%,#000 90%,transparent);
  mask-image:linear-gradient(180deg,transparent,#000 8%,#000 90%,transparent)}
.rd-track{transition:transform .7s cubic-bezier(.4,0,.2,1)}
.rd-track.noslide{transition:none}
.rd-card{background:rgba(255,255,255,.035);border:1px solid var(--line);border-radius:14px;
  padding:14px 16px;margin-bottom:11px}
.rd-card .ch{display:flex;align-items:center;gap:10px;margin-bottom:8px;min-width:0}
.rd-card .ca2{width:30px;height:30px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;
  font-size:12px;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--blue),var(--teal))}
.rd-card .cn2{font-size:13px;font-weight:700;min-width:0}
.rd-card .ce{margin-left:auto;font-size:11px;color:var(--dim2);flex-shrink:0}
.rd-card .cx2{font-size:13.5px;color:var(--dim);line-height:1.85}
.rd-card .cf{display:flex;align-items:center;gap:14px;margin-top:10px;font-size:11.5px;color:var(--dim2)}
.rd-card .cf span{transition:.25s}
.rd-card .cf span:hover{color:var(--orange)}
@media(max-width:600px){.rd-viewport{height:320px}}
.rd-host{display:flex;align-items:center;gap:11px;flex-wrap:wrap;justify-content:center}
.rd-host .ha{width:42px;height:42px;border-radius:50%;overflow:hidden;flex-shrink:0;
  background:var(--card2) var(--ph) center/20px no-repeat}
.rd-host .ha img{width:100%;height:100%;object-fit:cover;border-radius:0}
.rd-host .ha img.no-img{opacity:0}
.rd-host .hn{font-size:13.5px;font-weight:700}
.rd-host .hs{font-size:11.5px;color:var(--dim2)}
.rd-right{min-width:0}
.rd-wave{display:flex;align-items:flex-end;gap:4px;height:64px;margin-bottom:18px;flex-wrap:nowrap;
  overflow:hidden}
.rd-wave i{flex:1;min-width:3px;border-radius:3px;background:linear-gradient(180deg,var(--blue2),var(--teal));
  height:8px;transition:height .2s;animation:wv 1.1s ease-in-out infinite}
@keyframes wv{0%,100%{height:8px}50%{height:100%}}
.rd-wave.paused i{animation-play-state:paused;opacity:.4}
.rd-meta h3{font-size:25px;font-weight:900;margin-bottom:8px;line-height:1.35}
.rd-meta p{font-size:15px;color:var(--dim);line-height:1.9}
.rd-meta .tm{display:flex;align-items:center;gap:9px;font-size:12.5px;color:var(--dim2);margin-top:14px;flex-wrap:wrap}
.rd-meta .tm b{color:var(--blue3);font-size:18px;font-weight:900;font-variant-numeric:tabular-nums}
.rd-ch{display:flex;gap:9px;margin-top:20px;flex-wrap:wrap}
.rd-ch button{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:10px;
  border:1px solid var(--line);font-size:13.5px;font-weight:600;color:var(--dim);transition:.28s;
  background:rgba(255,255,255,.03)}
.rd-ch button:hover{color:var(--txt);border-color:rgba(255,138,61,.5)}
.rd-ch button.on{background:linear-gradient(135deg,#FF7A2F,#FF3D00);color:#fff;border-color:transparent;
  box-shadow:0 8px 20px rgba(255,90,31,.32)}

/* ---------- 船票下载 ---------- */
#download{position:relative;z-index:1;background:
  radial-gradient(800px 420px at 18% 22%,rgba(255,90,31,.16),transparent 62%)}
.ticket{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:0;
  align-items:stretch;
  background:linear-gradient(135deg,#3A2118,#1A0E0A);border:1px solid var(--line);
  border-radius:20px;overflow:hidden;box-shadow:0 30px 70px rgba(0,0,0,.5)}
.tk-main{padding:30px 28px;position:relative;display:flex;flex-direction:column}
.tk-main::before,.tk-main::after{content:"";position:absolute;right:-9px;width:18px;height:18px;
  border-radius:50%;background:var(--bg2);z-index:4}
.tk-main::before{top:-9px}
.tk-main::after{bottom:-9px}
.tk-side{padding:30px 26px;border-left:2px dashed rgba(255,196,138,.28);position:relative;
  background:rgba(0,0,0,.18);min-width:0}
/* 副券：软件 logo 展示 */
.tk-logo{margin:14px 0 6px;display:flex;flex-direction:column;align-items:center;gap:9px}
.tk-logo-box{position:relative;width:96px;height:96px;border-radius:20px;overflow:hidden;
  display:grid;place-items:center;flex-shrink:0;
  background:linear-gradient(150deg,rgba(255,90,31,.18),rgba(62,214,166,.08));
  border:1px solid rgba(255,196,138,.26);
  box-shadow:0 10px 26px rgba(0,0,0,.38),inset 0 1px 0 rgba(255,255,255,.07)}
.tk-logo-box svg{width:100%;height:100%;display:block}
.tk-logo-box img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;
  opacity:0;transition:opacity .3s;padding:10px}
.tk-logo-box img.ok{opacity:1}
.tk-logo-box.has-logo svg{display:none}
.tk-logo-box.has-logo{background:linear-gradient(150deg,rgba(255,90,31,.1),rgba(62,214,166,.04))}
.tk-logo-tx{font-size:11.5px;color:var(--dim2);letter-spacing:1px}
.tk-tag{display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:800;letter-spacing:1.5px;
  color:var(--blue3);border:1px solid rgba(255,196,138,.32);padding:5px 12px;border-radius:6px;
  background:rgba(255,196,138,.08)}
.tk-main h3{font-size:30px;font-weight:900;margin:16px 0 8px;line-height:1.25}
.tk-main .sub{font-size:14.5px;color:var(--dim);line-height:1.8;margin-bottom:22px}
.tk-rows{display:flex;flex-direction:column;gap:14px;margin-bottom:24px}
.tk-row{display:flex;align-items:flex-start;gap:13px;min-width:0}
.tk-row .n{width:28px;height:28px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;
  font-size:12.5px;font-weight:900;color:var(--blue3);border:1px solid rgba(255,196,138,.4);
  background:rgba(255,196,138,.08)}
.tk-row .r{min-width:0}
.tk-row .r h5{font-size:15px;font-weight:800;margin-bottom:3px}
.tk-row .r p{font-size:13.5px;color:var(--dim);line-height:1.7}
.tk-btns{display:flex;gap:12px;flex-wrap:wrap;margin-top:auto}
/* 船上有什么：填充主券高度，消除大片留白 */
.aboard{margin-top:24px;padding-top:20px;border-top:1px dashed rgba(255,196,138,.24)}
.aboard .ah{font-size:11.5px;letter-spacing:1.5px;color:var(--blue3);font-weight:800;margin-bottom:14px}
.aboard .ah span{color:var(--dim2);letter-spacing:0;font-weight:600}
.aboard .ag{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.aboard .ai{background:rgba(0,0,0,.24);border:1px solid var(--line);border-radius:12px;padding:10px;
  transition:.28s;min-width:0}
.aboard .ai:hover{border-color:rgba(255,138,61,.5);background:rgba(255,138,61,.1);transform:translateY(-3px)}
/* 每张卡上方是真实界面竖图 */
.aboard .ai-pic{display:block;width:100%;aspect-ratio:3/4;border-radius:9px;overflow:hidden;
  margin-bottom:10px;position:relative;
  background:var(--card2) var(--ph) center/26px no-repeat}
.aboard .ai-pic img{width:100%;height:100%;object-fit:cover;position:relative;z-index:2}
.aboard .ai-pic img.no-img{opacity:0}
.aboard .ai-pic::before{content:"抖漫";position:absolute;inset:0;z-index:1;
  display:flex;align-items:center;justify-content:center;overflow:hidden;
  background:
    radial-gradient(circle at 50% 42%,rgba(255,90,31,.16),transparent 64%),
    linear-gradient(160deg,#24120D,#120B0C);
  font-size:12px;font-weight:900;letter-spacing:1px;white-space:nowrap;line-height:1.2;padding:0 4px;
  color:transparent;-webkit-text-stroke:1px rgba(255,196,138,.3);pointer-events:none}
.aboard .ai-pic.has-img::before{background:none;font-size:9px;letter-spacing:0;
  align-items:flex-end;justify-content:flex-end;-webkit-text-stroke:0;
  color:rgba(255,255,255,.5);text-shadow:0 1px 4px rgba(0,0,0,.9);padding:3px 5px}
.aboard .ai h6{font-size:13px;font-weight:800;margin-bottom:4px}
.aboard .ai p{font-size:11.5px;color:var(--dim2);line-height:1.6}
.tk-side .st{font-size:11.5px;letter-spacing:1.5px;color:var(--blue3);font-weight:800}
.tk-side .flight{font-size:34px;font-weight:900;letter-spacing:2px;margin:10px 0 4px;
  font-variant-numeric:tabular-nums}
.tk-side .gate{font-size:12.5px;color:var(--dim2);margin-bottom:20px}
.tk-info{display:flex;flex-direction:column;gap:11px;margin-bottom:18px}
.tk-info div{display:flex;justify-content:space-between;gap:10px;font-size:13px;flex-wrap:wrap}
.tk-info div span{color:var(--dim2)}
.tk-info div b{color:var(--txt);font-weight:700}
.tk-link{background:rgba(0,0,0,.3);border:1px solid var(--line);border-radius:10px;padding:10px 12px;
  margin-bottom:12px}
.tk-link .lb{font-size:11px;color:var(--blue3);letter-spacing:1px;margin-bottom:6px;font-weight:700}
.tk-link code{display:block;font-size:12px;color:var(--txt);word-break:break-all;line-height:1.6;
  font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}
.tk-side .btn{width:100%;margin-bottom:14px}
.plats{display:flex;gap:8px;flex-wrap:wrap}
.plat{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--dim);
  border:1px solid var(--line);padding:6px 11px;border-radius:8px;transition:.25s;
  background:rgba(255,255,255,.03)}
.plat:hover{border-color:var(--teal);color:var(--teal);background:rgba(62,214,166,.1)}

/* ---------- 明信片问答 ---------- */
.pc-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.pc{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:20px;
  cursor:pointer;transition:.3s;position:relative;overflow:hidden}
.pc:hover{border-color:rgba(255,138,61,.45);transform:translateY(-3px)}
.pc.open{border-color:var(--blue2);background:rgba(255,138,61,.09)}
.pc .stamp{position:absolute;top:16px;right:16px;width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;background:linear-gradient(135deg,var(--blue),var(--teal));
  flex-shrink:0}
.pc .q{font-size:16.5px;font-weight:800;line-height:1.5;padding-right:46px;display:flex;
  align-items:center;gap:11px;min-width:0}
.pc .q .ic{margin-left:auto;flex-shrink:0;width:24px;height:24px;border-radius:50%;
  border:1px solid var(--line);display:grid;place-items:center;transition:.35s}
.pc.open .q .ic{transform:rotate(45deg);background:var(--blue2);border-color:var(--blue2)}
.pc .a{max-height:0;overflow:hidden;transition:max-height .4s ease}
.pc .a p{font-size:14.5px;color:var(--dim);line-height:1.9;padding-top:14px}
.pc .wave-deco{margin-top:14px;opacity:.4}

/* ---------- 页脚 航海图 ---------- */
footer{position:relative;z-index:1;border-top:1px solid var(--line);background:rgba(0,0,0,.42);
  padding:56px 0 30px;overflow:hidden}
.ft-map{position:relative;margin-bottom:34px}
.ft-map svg{display:block;width:100%;height:auto}
.ft-map .route{fill:none;stroke:rgba(255,196,138,.32);stroke-width:1.6;stroke-dasharray:7 7;
  animation:dash 22s linear infinite}
@keyframes dash{to{stroke-dashoffset:-200}}
.ft-map .pt{fill:var(--blue2)}
.ft-map .ptg{fill:none;stroke:var(--blue2);stroke-width:1.4}
.ft-map .pl{font-size:11px;fill:var(--dim);text-anchor:middle}
.ft-cols{display:grid;grid-template-columns:repeat(4,1fr);gap:30px;margin-bottom:28px}
.ft-c h5{font-size:14px;color:var(--txt);margin-bottom:13px;font-weight:800;
  padding-bottom:9px;border-bottom:1px solid var(--line)}
.ft-c a{display:block;font-size:13.5px;color:var(--dim2);padding:5px 0;transition:.25s}
.ft-c a:hover{color:var(--blue3);padding-left:5px}
.ft-brand{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;
  padding-bottom:22px;border-bottom:1px solid var(--line);margin-bottom:20px}
.brand-lg{display:flex;align-items:center;gap:14px;font-weight:900;font-size:26px;letter-spacing:.5px}
.brand-lg .mark{width:52px;height:52px;border-radius:12px}
.ft-brand .slogan{font-size:13px;color:var(--dim2);line-height:1.8;max-width:340px}
.ft-brand .lh{text-align:right;font-size:12.5px;color:var(--dim2);line-height:1.9}
.ft-brand .lh b{color:var(--gold)}
.ft-bottom{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  font-size:12.5px;color:var(--dim2)}

/* ---------- toast ---------- */
#toast{position:fixed;left:50%;bottom:34px;transform:translate(-50%,20px);z-index:200;
  background:rgba(15,26,40,.97);border:1px solid var(--line);backdrop-filter:blur(12px);
  padding:12px 24px;border-radius:12px;font-size:14px;color:var(--txt);opacity:0;
  pointer-events:none;transition:.3s;box-shadow:0 16px 36px rgba(0,0,0,.5);max-width:88vw;text-align:center}
#toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- 响应式 ---------- */
@media(max-width:1080px){
  .hero{grid-template-columns:1fr;gap:44px}
  .live{max-width:520px}
  .mood-pane,.bt-pane,.isl-pane{grid-template-columns:1fr;gap:20px}
  .mp-pic,.bp-pic,.ip-pic{width:100%;max-width:520px}
  .resident-wrap{grid-template-columns:1fr;gap:30px}
  .rc-stack{height:400px;max-width:340px}
  .isl-wrap{grid-template-columns:1fr;gap:30px}
  .radio{grid-template-columns:1fr;gap:26px}
  .rd-left{flex-direction:row;justify-content:flex-start;flex-wrap:wrap}
  .ticket{grid-template-columns:1fr}
  .tk-main::before,.tk-main::after{display:none}
  .tk-side{border-left:none;border-top:2px dashed rgba(255,196,138,.28)}
  .ft-cols{grid-template-columns:repeat(2,1fr)}
  h1.big{font-size:44px}
  .sec-head h2{font-size:30px}
}
@media(max-width:820px){
  .nav-links,.nav .btn{display:none}
  #burger{display:flex}
  .sec{padding:74px 0}
  .pc-grid{grid-template-columns:1fr}
}
@media(max-width:600px){
  .wrap{padding:0 16px}
  .sec{padding:60px 0}
  h1.big{font-size:33px}
  h1.big .sub{font-size:19px}
  .sec-head h2{font-size:25px}
  .sec-head p{font-size:15px}
  /* 双列面板在窄屏加高比例，避免横图过扁 */
  .mood-pane,.bt-pane,.isl-pane{gap:16px;padding:16px;border-radius:16px}
  .mp-pic{aspect-ratio:3/2}
  .bp-pic{aspect-ratio:1/1;max-width:240px}
  .ip-pic{aspect-ratio:3/2}
  .mp-txt .qt{font-size:17.5px}
  .mp-txt .cm{font-size:14px}
  .bp-txt h3{font-size:19px}
  .ip-txt h3{font-size:20px}
  /* 海面&瓶子 */
  .sea-wrap{height:170px}
  .btns-row{padding:0 8px 18px;gap:2px}
  .bt .gl{width:40px;height:52px}
  .bt .cap{font-size:10px;max-width:54px}
  .sea-svg{height:110px}
  /* 居民滑卡 */
  .rc-stack{height:360px}
  .rc{height:340px}
  .rc .tx{padding:16px}
  .rc .tx .nm{font-size:21px}
  .rc-info h3{font-size:22px}
  /* 船票 */
  .tk-main{padding:22px 18px}
  .tk-side{padding:22px 18px}
  .tk-main h3{font-size:24px}
  .tk-side .flight{font-size:28px}
  .tk-btns .btn{flex:1 1 100%;justify-content:center}
  /* 电台 */
  .radio{padding:18px}
  .turntable{width:150px;height:150px}
  .rd-meta h3{font-size:21px}
  /* 页脚 */
  .ft-cols{grid-template-columns:1fr}
  .ft-brand{flex-direction:column;align-items:flex-start;gap:16px}
  .ft-brand .lh{text-align:left}
  .lv-list{height:300px}
  .lv-top .info .num{font-size:21px}
  .lv-top .info .num small{font-size:12px}
  /* 群岛地图 / 页脚航图：窄屏改为横向滚动，避免等比缩放后过小看不清 */
  .isl-map{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .isl-map svg{min-width:620px}
  .ft-map{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .ft-map svg{min-width:700px}
  .tk-logo-box{width:80px;height:80px}
}


/* ================= DOUMAN THEME OVERRIDES ================= */
:root{
  --brand:#FF5A1F; --brand2:#FF8A3D; --brand3:#FFC48A;
  --gold:#FFD166; --pink:#FF4D8D; --mint:#3ED6A6;
  --ink:#0A0708; --paper:#FFF7F2;
}
body{background:var(--ink)}
/* 网点纸 + 速度线，让整体更像漫画印刷 */
body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.5;
  background-image:radial-gradient(rgba(255,196,138,.10) 1px, transparent 1.1px);
  background-size:14px 14px;
  mask-image:linear-gradient(180deg,rgba(0,0,0,.75),transparent 45%,rgba(0,0,0,.55));
  -webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.75),transparent 45%,rgba(0,0,0,.55));
}
body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.16;
  background:repeating-conic-gradient(from 0deg at 50% 40%, transparent 0deg 2.2deg, rgba(255,90,31,.22) 2.2deg 2.6deg);
  mask-image:radial-gradient(circle at 50% 40%, transparent 0 32%, #000 78%);
  -webkit-mask-image:radial-gradient(circle at 50% 40%, transparent 0 32%, #000 78%);
}
/* 把原来的海浪改成“墨浪” */
.ocean{background:
  radial-gradient(1100px 600px at 50% -10%,rgba(255,90,31,.16),transparent 62%),
  radial-gradient(900px 520px at 90% 44%,rgba(255,77,141,.07),transparent 62%),
  linear-gradient(180deg,#0A0708 0%,#110A0B 45%,#1A0D0C 100%)}
.ocean .glow{background:linear-gradient(90deg,transparent,rgba(255,196,138,.34) 30%,rgba(255,196,138,.34) 70%,transparent)}
.ocean .glow2{background:radial-gradient(ellipse at 50% 100%,rgba(255,209,102,.18),transparent 68%)}
.ocean .stars{opacity:.5}
/* 漂浮的漫画分镜框 */
.panels{position:absolute;inset:0;overflow:hidden}
.panels i{position:absolute;display:block;border:1.5px solid rgba(255,196,138,.14);
  background:linear-gradient(135deg,rgba(255,90,31,.06),transparent 65%);
  box-shadow:0 0 0 3px rgba(10,7,8,.35);transform:rotate(var(--r,0deg));animation:floatPanel 18s ease-in-out infinite}
.panels i:nth-child(1){left:4%;top:16%;width:86px;height:112px;--r:-9deg}
.panels i:nth-child(2){left:18%;top:64%;width:64px;height:82px;--r:7deg;animation-delay:-4s}
.panels i:nth-child(3){right:6%;top:24%;width:74px;height:96px;--r:8deg;animation-delay:-7s}
.panels i:nth-child(4){right:19%;top:70%;width:54px;height:70px;--r:-6deg;animation-delay:-11s}
@keyframes floatPanel{0%,100%{transform:translateY(0) rotate(var(--r,0deg))}50%{transform:translateY(-16px) rotate(var(--r,0deg))}}
@media(max-width:820px){.panels i:nth-child(2),.panels i:nth-child(4){display:none}}
/* 图片统一带一点漫画描边 */
.rc .ph img,.mp-pic img,.bp-pic img,.ip-pic img,.ai-pic img{border:1px solid rgba(255,196,138,.16)}
/* 角色卡牌标签 */
.rc .tx .nm small{color:var(--brand2)}
/* 新增页面组件 */
.page-hero{padding:150px 0 40px;position:relative;z-index:1}
.page-hero .eyebrow{margin-bottom:14px}
.page-hero h1{font-size:52px;line-height:1.15;font-weight:900;letter-spacing:-1px}
.page-hero h1 em{font-style:normal;color:var(--brand)}
.page-hero p{margin-top:16px;color:var(--dim);max-width:680px;font-size:16px}
.crumb{font-size:12.5px;color:var(--dim2);margin-bottom:18px;letter-spacing:.5px}
.crumb a:hover{color:var(--brand2)}
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:28px 0 30px}
.chip{padding:8px 16px;border-radius:999px;border:1px solid rgba(255,255,255,.14);color:var(--dim);font-size:13.5px;font-weight:700;background:rgba(255,255,255,.035);transition:.2s}
.chip:hover{border-color:rgba(255,90,31,.5);color:var(--brand3)}
.chip.on{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#1A0B06;border-color:transparent}
.searchbar{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 14px;min-width:280px}
.searchbar input{flex:1;background:none;border:none;outline:none;color:var(--txt);font-size:14px}
.searchbar input::placeholder{color:var(--dim2)}
.comic-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:24px 18px}
@media(max-width:1100px){.comic-grid{grid-template-columns:repeat(4,1fr)}}
@media(max-width:720px){.comic-grid{grid-template-columns:repeat(3,1fr);gap:18px 12px}}
@media(max-width:460px){.comic-grid{grid-template-columns:repeat(2,1fr)}}
.cm-card{position:relative;display:block;min-width:0}
.cm-card .cov{position:relative;display:block;aspect-ratio:3/4;border-radius:12px;overflow:hidden;background:linear-gradient(160deg,var(--card),var(--card2));border:1px solid var(--line)}
.cm-card .cov img{width:100%;height:100%;object-fit:cover;transition:transform .5s ease}
.cm-card:hover .cov img{transform:scale(1.05)}
.cm-card .cov::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(10,7,8,.86));opacity:.9}
.cm-card .badge{position:absolute;left:8px;top:8px;z-index:2;font-size:11px;font-weight:900;letter-spacing:.5px;padding:3px 8px;border-radius:6px;background:var(--brand);color:#1A0B06}
.cm-card .hot{position:absolute;right:8px;top:8px;z-index:2;font-size:11px;font-weight:800;padding:3px 7px;border-radius:6px;background:rgba(10,7,8,.72);color:var(--gold);backdrop-filter:blur(4px)}
.cm-card .cap2{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:10px}
.cm-card .cap2 b{display:block;font-size:14px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-card .cap2 span{display:block;font-size:11.5px;color:var(--dim);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cm-card .meta{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:8px;font-size:11.5px;color:var(--dim2)}
.cm-card .meta em{font-style:normal;color:var(--brand2)}
.tag-row{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.tag-row span{font-size:11px;color:var(--dim);border:1px solid var(--line);border-radius:5px;padding:2px 6px}
.rank-list{display:flex;flex-direction:column;gap:10px}
.rank-row{display:grid;grid-template-columns:52px 64px 1fr auto;align-items:center;gap:16px;padding:12px 16px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(90deg,rgba(255,90,31,.05),rgba(255,255,255,.015));transition:.2s}
.rank-row:hover{border-color:rgba(255,90,31,.45);transform:translateX(4px)}
.rank-row .no{font-size:24px;font-weight:900;color:var(--dim2);font-style:italic}
.rank-row:nth-child(-n+3) .no{color:var(--brand)}
.rank-row img{width:64px;height:84px;object-fit:cover;border-radius:8px}
.rank-row .ri b{font-size:15px}
.rank-row .ri p{font-size:12.5px;color:var(--dim);margin-top:3px;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}
.rank-row .rt{text-align:right;font-size:12px;color:var(--dim2)}
.rank-row .rt b{display:block;color:var(--brand2);font-size:15px}
.detail-grid{display:grid;grid-template-columns:300px 1fr;gap:44px;align-items:start}
@media(max-width:820px){.detail-grid{grid-template-columns:1fr;gap:26px}}
.detail-cover{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--line);box-shadow:0 22px 60px rgba(0,0,0,.5)}
.detail-cover img{width:100%;aspect-ratio:3/4;object-fit:cover}
.detail-cover .tag{position:absolute;left:12px;top:12px;background:var(--brand);color:#1A0B06;font-size:11px;font-weight:900;padding:4px 9px;border-radius:6px}
.detail-info h1{font-size:40px;line-height:1.15;font-weight:900;letter-spacing:-.5px}
.detail-info .sub2{color:var(--dim);margin-top:10px;font-size:14px}
.dstat{display:flex;gap:28px;flex-wrap:wrap;margin:20px 0}
.dstat div b{display:block;font-size:22px;color:var(--brand2)}
.dstat div span{font-size:12px;color:var(--dim2)}
.dtags{display:flex;gap:8px;flex-wrap:wrap;margin:16px 0}
.dtags a{font-size:12px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;color:var(--dim)}
.dtags a:hover{color:var(--brand2);border-color:rgba(255,90,31,.5)}
.dintro{color:var(--dim);line-height:1.9;font-size:14.5px;border-left:2px solid var(--brand);padding-left:16px;margin:18px 0}
.dacts{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
.chapter-box{margin-top:40px;border-top:1px solid var(--line);padding-top:28px}
.chapter-box h3{font-size:22px;font-weight:900}
.chapter-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:16px;max-height:330px;overflow:auto;padding-right:6px}
@media(max-width:820px){.chapter-grid{grid-template-columns:repeat(3,1fr)}}
.chapter-grid a{font-size:12.5px;color:var(--dim);padding:9px 10px;border:1px solid var(--line);border-radius:8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(255,255,255,.02)}
.chapter-grid a:hover{color:var(--brand3);border-color:rgba(255,90,31,.5)}
.reader-top{position:sticky;top:0;z-index:30;background:rgba(10,7,8,.92);backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.reader-bar{display:flex;align-items:center;gap:16px;height:64px;justify-content:space-between}
.reader-bar .rl{display:flex;align-items:center;gap:12px;min-width:0}
.reader-bar .rl b{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.reader-bar .rl span{font-size:12px;color:var(--dim2)}
.reader-bar .rr{display:flex;gap:8px;align-items:center;flex-shrink:0}
.reader-bar .rbtn{font-size:12.5px;padding:7px 12px;border:1px solid var(--line);border-radius:8px;color:var(--dim)}
.reader-bar .rbtn:hover{color:var(--brand2);border-color:rgba(255,90,31,.5)}
.reader-wrap{max-width:860px;margin:0 auto;padding:34px 20px 80px;position:relative;z-index:1}
.reader-page{background:#120B0C;border:1px solid var(--line);border-radius:4px;margin-bottom:22px;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.reader-page img{width:100%;display:block}
.reader-page .rnote{padding:18px;color:var(--dim);font-size:13px;text-align:center}
.reader-tip{text-align:center;color:var(--dim2);font-size:12.5px;margin:26px 0;line-height:1.9}
.reader-nav{display:flex;justify-content:space-between;gap:12px;margin-top:28px}
.empty-note{padding:70px 20px;text-align:center;color:var(--dim);border:1px dashed var(--line);border-radius:14px}
.ft-c a.on{color:var(--brand2)}
/* 主题海 tabs 里的数字色 */
.mood-tabs button .n{opacity:.65;font-size:11px;margin-left:4px}
@media(max-width:820px){
  .page-hero{padding:120px 0 20px}
  .page-hero h1{font-size:34px}
  .detail-info h1{font-size:30px}
  .rank-row{grid-template-columns:38px 52px 1fr;gap:10px;padding:10px}
  .rank-row .rt{display:none}
  .rank-row img{width:52px;height:70px}
}
/* ================= DOUMAN UI ADDITIONS ================= */
.logo .mark img,.brand-lg .mark img{opacity:1;position:static;width:100%;height:100%;object-fit:cover;border-radius:9px}
.logo .mark,.brand-lg .mark{background:#1A1012;box-shadow:0 6px 18px rgba(255,90,31,.32)}
.logo-fb{display:none;width:100%;height:100%;place-items:center;font-style:normal;font-size:20px;font-weight:900;color:#1A0B06;background:linear-gradient(135deg,#FF5A1F,#FFD166);border-radius:9px}
.brand-lg .logo-fb{font-size:28px}
.logo .wt em,.brand-lg .wt em{color:#FF8A3D}
.hero-tags{display:flex;gap:10px;flex-wrap:wrap;margin-top:26px}
.hero-tags span{font-size:12.5px;color:var(--dim);border:1px solid var(--line);background:rgba(255,255,255,.02);padding:6px 11px;border-radius:8px}
.hero-tags b{color:var(--brand2);font-weight:800}
.portal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
@media(max-width:900px){.portal-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.portal-grid{grid-template-columns:1fr}}
.portal-card{position:relative;display:block;padding:24px 22px 20px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(150deg,rgba(255,90,31,.075),rgba(255,255,255,.015));transition:.25s;overflow:hidden}
.portal-card:hover{border-color:rgba(255,90,31,.5);transform:translateY(-3px)}
.portal-card .pc-ic{font-size:12px;font-weight:900;color:var(--brand);letter-spacing:1px}
.portal-card h3{font-size:20px;font-weight:900;margin:8px 0 6px}
.portal-card p{font-size:13px;color:var(--dim);line-height:1.75;min-height:42px}
.portal-card .pc-go{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--brand3);margin-top:14px;font-weight:700}
.portal-card .pc-go b{font-weight:400}
.prose{max-width:840px;margin:0 auto;color:var(--dim);font-size:15px;line-height:1.95}
.prose h2{font-size:24px;font-weight:900;color:var(--txt);margin:36px 0 12px;line-height:1.35}
.prose h2:first-child{margin-top:0}
.prose p{margin:0 0 14px}
.prose b{color:var(--brand3);font-weight:700}
.prose a{color:var(--brand2);border-bottom:1px solid rgba(255,138,61,.35)}
.help-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
@media(max-width:900px){.help-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.help-grid{grid-template-columns:1fr}}
.help-grid a{display:block;padding:20px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02);transition:.2s}
.help-grid a:hover{border-color:rgba(255,90,31,.5);transform:translateY(-2px)}
.help-grid b{color:var(--brand);font-size:12px;letter-spacing:1px}
.help-grid h4{font-size:17px;margin:8px 0 5px}
.help-grid p{font-size:12px;color:var(--dim2);line-height:1.6}
.contact-box{margin-top:34px;padding:26px;border:1px solid var(--line);border-radius:16px;background:linear-gradient(135deg,rgba(255,90,31,.08),rgba(255,255,255,.02))}
.contact-box h3{font-size:21px;font-weight:900;margin-bottom:10px}
.contact-box p{font-size:14px;color:var(--dim);line-height:1.85;margin-bottom:6px}
.search-big{display:flex;gap:10px;max-width:760px;margin:0 auto}
.search-big input{flex:1;min-width:0;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:15px 18px;font-size:15px;color:var(--txt);outline:none}
.search-big input:focus{border-color:rgba(255,90,31,.55);box-shadow:0 0 0 3px rgba(255,90,31,.12)}
.hot-searches{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center;margin:22px auto 0;max-width:820px}
.hot-searches>span{font-size:12px;color:var(--dim2);margin-right:4px}
.dl-panel{display:grid;grid-template-columns:1fr auto;gap:26px;align-items:center;padding:30px;border:1px solid var(--line);border-radius:20px;background:linear-gradient(135deg,rgba(255,90,31,.12),rgba(255,255,255,.02))}
@media(max-width:820px){.dl-panel{grid-template-columns:1fr}}
.dl-app{display:flex;gap:20px;align-items:center;min-width:0}
.dl-icon{width:86px;height:86px;border-radius:20px;overflow:hidden;flex-shrink:0;box-shadow:0 12px 30px rgba(255,90,31,.28)}
.dl-icon img{width:100%;height:100%;object-fit:cover}
.dl-app h2{font-size:28px;font-weight:900;line-height:1.2}
.dl-app p{font-size:13px;color:var(--dim);margin-top:6px}
.dl-badges{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.dl-badges span{font-size:11px;color:var(--brand3);border:1px solid rgba(255,196,138,.25);background:rgba(255,90,31,.08);border-radius:5px;padding:3px 7px}
.dl-actions{display:flex;flex-direction:column;gap:10px;min-width:220px}
.dl-note{grid-column:1/-1;font-size:12px;color:var(--dim2);line-height:1.7}
.dl-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px}
@media(max-width:820px){.dl-steps{grid-template-columns:1fr}}
.dl-steps>div{padding:22px;border:1px solid var(--line);border-radius:14px;background:rgba(255,255,255,.02)}
.dl-steps b{font-size:12px;color:var(--brand);letter-spacing:1px}
.dl-steps h4{font-size:18px;margin:6px 0}
.dl-steps p{font-size:13px;color:var(--dim);line-height:1.7}
.dl-screens{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
@media(max-width:900px){.dl-screens{grid-template-columns:repeat(2,1fr)}}
.dl-shot{margin:0;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--card)}
.dl-shot img{width:100%;aspect-ratio:3/4;object-fit:cover;display:block}
.dl-shot figcaption{padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.dl-shot figcaption b{font-size:14px}
.dl-shot figcaption span{font-size:11.5px;color:var(--dim2)}
.dl-faq{max-width:820px;margin:46px auto 0}
.dl-faq h3{font-size:22px;font-weight:900;margin-bottom:14px}
.dl-q{padding:16px 0;border-top:1px solid var(--line)}
.dl-q b{font-size:15px;display:block;margin-bottom:6px}
.dl-q p{font-size:13.5px;color:var(--dim);line-height:1.8}
.nf-code{font-size:120px;line-height:1;font-weight:900;letter-spacing:-6px;color:transparent;-webkit-text-stroke:2px rgba(255,90,31,.55);font-style:italic;margin-top:30px}
@media(max-width:600px){.nf-code{font-size:80px}}
.go-body{min-height:100vh;display:grid;place-items:center;background:radial-gradient(900px 500px at 50% 0%,rgba(255,90,31,.16),transparent 65%),#0A0708;padding:24px}
.go-wrap{max-width:520px;text-align:center;position:relative;z-index:1}
.go-logo{width:84px;height:84px;border-radius:20px;overflow:hidden;margin:0 auto 22px;box-shadow:0 16px 40px rgba(255,90,31,.35)}
.go-logo img{width:100%;height:100%;object-fit:cover}
.go-wrap h1{font-size:28px;font-weight:900;line-height:1.35}
.go-wrap h1 em{font-style:normal;color:var(--brand)}
.go-wrap p{font-size:13.5px;color:var(--dim);margin:12px 0;line-height:1.8}
.go-bar{height:4px;border-radius:4px;background:rgba(255,255,255,.08);overflow:hidden;margin:22px auto 26px;max-width:320px}
.go-bar i{display:block;height:100%;width:40%;border-radius:4px;background:linear-gradient(90deg,#FF5A1F,#FFD166);animation:goLoad 1.2s ease-in-out infinite}
@keyframes goLoad{0%{transform:translateX(-110%)}100%{transform:translateX(360%)}}
.go-back{display:block;margin-top:16px;font-size:12.5px;color:var(--dim2)}
.go-tip{font-size:11.5px!important;color:var(--dim2)!important;margin-top:26px!important}
.reader-page{background:#0E090A}
.reader-page .pg-cap{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--line);font-size:11.5px;color:var(--dim2)}
.reader-page .pg-body{position:relative;overflow:hidden}
.reader-page .pg-art{width:100%;display:block;aspect-ratio:3/4;object-fit:cover;filter:contrast(1.04) saturate(.95)}
.reader-page .pg-body::after{content:"";position:absolute;inset:0;background-image:radial-gradient(rgba(10,7,8,.22) 1px,transparent 1.2px);background-size:7px 7px;pointer-events:none;opacity:.55}
.reader-dialog{position:absolute;z-index:3;max-width:66%;background:#FFF7F2;color:#160C0A;border:2px solid #160C0A;border-radius:16px;padding:12px 15px;font-size:14px;line-height:1.65;box-shadow:0 8px 20px rgba(0,0,0,.35)}
.reader-dialog::after{content:"";position:absolute;left:26px;bottom:-12px;width:16px;height:16px;background:#FFF7F2;border-right:2px solid #160C0A;border-bottom:2px solid #160C0A;transform:rotate(45deg)}
.reader-dialog.r{right:5%;top:12%}
.reader-dialog.l{left:5%;top:58%}
.reader-sfx{position:absolute;z-index:3;right:8%;bottom:16%;font-size:38px;font-weight:900;font-style:italic;color:#FFF7F2;-webkit-text-stroke:2px #160C0A;transform:rotate(-9deg);letter-spacing:2px}
.reader-page .pg-title{position:absolute;left:6%;bottom:8%;z-index:3;background:rgba(10,7,8,.82);border:1px solid rgba(255,196,138,.3);padding:12px 16px;border-radius:8px}
.reader-page .pg-title b{display:block;font-size:11px;color:#FFD166;letter-spacing:1px}
.reader-page .pg-title strong{display:block;font-size:22px;font-weight:900;color:#FFF7F2;margin-top:3px}
@media(max-width:600px){.reader-dialog{font-size:12px;padding:9px 11px}.reader-sfx{font-size:26px}.reader-page .pg-title strong{font-size:17px}}

/* 首页动态流：右侧小缩略图，信息更紧凑 */
.feed .bd{position:relative;padding-right:76px}
.feed .pic{position:absolute;right:0;top:2px;width:66px;height:84px;aspect-ratio:auto;margin-top:0;border-radius:8px}
.feed .nm{padding-right:0}
.feed .tx{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}

/* 阅读模式：隐藏站点导航，保持沉浸 */
body.reader-mode #hd,body.reader-mode #mmenu,body.reader-mode footer,body.reader-mode #progress{display:none!important}
body.reader-mode .reader-top{top:0}
body.reader-mode .reader-wrap{padding-top:26px}
body.reader-mode .ocean .panels{opacity:.35}
/* 角色卡：文字压在封面之上 */
.rc .ph img{z-index:0}
.rc .ov{z-index:1}
.rc .tx{z-index:2}
/* 船票副券 logo 直接显示 */
.tk-logo-box img{opacity:1!important;position:static;padding:0;object-fit:cover}
/* 船票暖色化（覆盖残余蓝调） */
.ticket{background:linear-gradient(135deg,#2A150F,#160D0A)!important}
.tk-side{background:rgba(0,0,0,.22)}
#bottle,#islands{background:linear-gradient(180deg,rgba(20,11,8,.78),rgba(20,11,8,.44))!important}
.detail-name{font-size:40px;line-height:1.15;font-weight:900;letter-spacing:-.5px}
@media(max-width:820px){.detail-name{font-size:30px}}
/* FAQ 邮戳移到加号左侧，避免重叠 */
.pc .stamp{right:52px;top:14px;width:28px;height:28px;opacity:.55}
/* 阅读页 H1 与视觉隐藏 */
.rd-h1{font-size:14px;line-height:1.2;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}