/* ============================================
   归港 · 样式表
   ============================================ */

/* --- 变量 --- */
:root {
  --cream: #FDF8F2;
  --dark: #2C3E4E;
  --warm: #E8A87C;
  --rose: #C38D9E;
  --mint: #7DB5A0;
  --sky: #7BA5C4;
  --gold: #D4A574;
  --text: #3D3D3D;
  --text2: #6B6B6B;
  --sh: 0 2px 12px rgba(44,62,78,.06);
  --sh2: 0 6px 24px rgba(44,62,78,.1);
  --r: 12px;
  --t: .25s ease;
  --f1: 'Noto Sans SC', sans-serif;
  --f2: 'Crimson Text', 'Noto Sans SC', serif;
  --f3: 'Ma Shan Zheng', cursive;
}

/* --- 重置 --- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; scroll-padding-top: 64px; }
body { font-family: var(--f2); background: var(--cream); color: var(--text); font-size: 17px; line-height: 1.8; overflow-x: hidden; }
h1, h2, h3 { font-family: var(--f1); color: var(--dark); }
a { color: inherit; text-decoration: none; }
img { max-width: 100%; }

/* --- 导航栏 --- */
.nav { position: fixed; top:0;left:0;right:0;z-index:1000; background:rgba(253,248,242,.88); backdrop-filter:blur(16px); border-bottom:1px solid rgba(44,62,78,.05); }
.nav-inner { max-width:1100px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 20px;height:60px; }
.nav-logo { font-family:var(--f1);font-size:1.1rem;font-weight:700; }
.nav-menu { display:flex;list-style:none;gap:2px; }
.nav-menu a { display:block;padding:6px 12px;border-radius:16px;font-size:.85rem;font-family:var(--f1);color:var(--text2);transition:var(--t);white-space:nowrap; }
.nav-menu a:hover, .nav-menu a.on { color:var(--warm);background:rgba(232,168,124,.1); }

.nav-burger { display:none;flex-direction:column;gap:5px;background:none;border:none;cursor:pointer;padding:8px; }
.nav-burger span { display:block;width:22px;height:2px;background:var(--dark);border-radius:1px;transition:var(--t); }
.nav-burger.open span:nth-child(1) { transform:rotate(45deg) translate(5px,5px); }
.nav-burger.open span:nth-child(2) { opacity:0; }
.nav-burger.open span:nth-child(3) { transform:rotate(-45deg) translate(5px,-5px); }

/* --- 管理员工具栏 --- */
.admin-bar { position:fixed;top:60px;left:0;right:0;z-index:999;background:var(--dark);color:#fff;padding:8px 24px;display:none;align-items:center;justify-content:space-between;font-family:var(--f1);font-size:.85rem; }
.admin-bar.on { display:flex; }
.admin-bar button { padding:4px 14px;border-radius:12px;border:1px solid rgba(255,255,255,.25);background:transparent;color:rgba(255,255,255,.7);cursor:pointer;font-family:var(--f1);font-size:.78rem; }
.admin-bar button:hover { background:rgba(255,255,255,.1);color:#fff; }

.admin-add { display:none;padding:4px 14px;border-radius:14px;border:1.5px dashed var(--warm);background:rgba(232,168,124,.05);cursor:pointer;font-family:var(--f1);font-size:.82rem;color:var(--warm);transition:var(--t); }
.admin-add.on { display:inline-block; }
.admin-add:hover { background:var(--warm);color:#fff;border-style:solid; }

.admin-edit, .admin-del { padding:3px 10px;border-radius:10px;border:none;cursor:pointer;font-family:var(--f1);font-size:.72rem;transition:var(--t);display:none; }
.admin-edit { background:rgba(125,181,160,.12);color:var(--mint); }
.admin-edit:hover { background:var(--mint);color:#fff; }
.admin-del { background:rgba(220,80,80,.08);color:#d44; }
.admin-del:hover { background:#d44;color:#fff; }
.admin-edit.on, .admin-del.on { display:inline-block; }

/* --- 通用Section --- */
.section { padding:80px 24px;max-width:1100px;margin:0 auto; }
.sec-head { text-align:center;margin-bottom:48px; }
.sec-icon { font-size:2.2rem;display:block;margin-bottom:8px; }
.sec-head h2 { font-size:2rem;letter-spacing:.04em;margin-bottom:4px; }
.sec-head p { color:var(--text2);font-style:italic; }

/* --- 滚动动画 --- */
.fade-up { opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s ease; }
.fade-up.vis { opacity:1;transform:translateY(0); }

/* --- Hero --- */
.hero { min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;padding:80px 24px; }
.hero-bg { position:absolute;inset:0;background:radial-gradient(ellipse at 30% 20%, rgba(232,168,124,.1) 0%, transparent 55%), radial-gradient(ellipse at 70% 60%, rgba(195,141,158,.08) 0%, transparent 55%); }
.hero-content { position:relative;text-align:center;z-index:1; }
.hero-title { margin-bottom:24px; }
.title-line { display:block;font-size:1rem;font-weight:300;color:var(--text2);letter-spacing:.16em;margin-bottom:6px; }
.title-main { display:block;font-size:4.5rem;font-weight:700;background:linear-gradient(135deg, var(--dark), var(--rose), var(--warm));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:.12em;line-height:1.1; }
.title-sub { display:block;font-size:1.2rem;font-weight:300;color:var(--text2);margin-top:4px;letter-spacing:.1em; }
.hero-desc { font-size:1.1rem;color:var(--text2);line-height:2;margin-bottom:40px; }
.hero-scroll { display:flex;flex-direction:column;align-items:center;gap:6px;font-size:.8rem;color:var(--text2);opacity:.7; }
.scroll-icon { animation:bounce 2s ease-in-out infinite; }
@keyframes bounce { 0%,100%{transform:translateY(0)}50%{transform:translateY(6px)} }

/* 花瓣 */
.petals { position:absolute;inset:0;pointer-events:none;z-index:2; }
.petal { position:absolute;top:-30px;font-size:1.3rem;animation:petalFall linear forwards; }
@keyframes petalFall { 0%{transform:translateY(0) translateX(0) rotate(0deg);opacity:.9}100%{transform:translateY(105vh) translateX(var(--dx)) rotate(var(--sp));opacity:0} }

/* --- 拾光工坊 --- */
.filter-bar { display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin-bottom:36px; }
.filter-btn { padding:7px 18px;border:1px solid rgba(44,62,78,.12);background:transparent;border-radius:18px;cursor:pointer;font-family:var(--f1);font-size:.85rem;color:var(--text2);transition:var(--t); }
.filter-btn.on, .filter-btn:hover { background:var(--warm);color:#fff;border-color:var(--warm); }
.works-grid { display:grid;grid-template-columns:repeat(auto-fill, minmax(260px, 1fr));gap:20px; }
.work-card { background:#fff;border-radius:var(--r);overflow:hidden;cursor:pointer;box-shadow:var(--sh);transition:var(--t);position:relative; }
.work-card:hover { transform:translateY(-3px);box-shadow:var(--sh2); }
.work-card.complete { border:2px solid var(--mint); }
.work-card.wip { border:2px dashed var(--warm); }
.work-card.idea { border:2px dotted var(--text2); }
.work-img { height:150px;background:linear-gradient(135deg, #F5EDE0, #FDF8F2);display:flex;align-items:center;justify-content:center;font-size:2.8rem; }
.work-body { padding:18px; }
.work-body h3 { font-size:1.05rem;margin-bottom:4px; }
.work-body p { font-size:.85rem;color:var(--text2);margin-bottom:8px; }
.work-tags { display:flex;flex-wrap:wrap;gap:4px; }
.tag { padding:2px 10px;border-radius:10px;font-size:.7rem;font-family:var(--f1);background:rgba(232,168,124,.1);color:var(--warm); }
.tag.writing { background:rgba(123,165,196,.1);color:var(--sky); }
.tag.art { background:rgba(195,141,158,.1);color:var(--rose); }
.tag.code { background:rgba(123,165,196,.1);color:var(--sky); }
.tag.photo { background:rgba(125,181,160,.1);color:var(--mint); }
.work-badge { position:absolute;top:10px;right:10px;padding:3px 10px;border-radius:10px;font-size:.68rem;font-family:var(--f1); }
.work-badge.complete { background:var(--mint);color:#fff; }
.work-badge.wip { background:var(--warm);color:#fff; }
.work-badge.idea { background:#ddd;color:var(--text2); }

/* Lightbox */
.lb-overlay { position:fixed;inset:0;z-index:3000;display:none;align-items:center;justify-content:center; }
.lb-overlay.on { display:flex; }
.lb-overlay::before { content:'';position:absolute;inset:0;background:rgba(44,62,78,.8);backdrop-filter:blur(6px); }
.lb-card { position:relative;background:#fff;border-radius:var(--r);max-width:600px;width:90%;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.3); }
.lb-body { padding:36px; }

/* --- 夜航船 --- */
.nightship { background:linear-gradient(180deg, #FDF8F2, #F7EFE2 50%, #FDF8F2);border-radius:20px; }
.night-tabs { display:flex;justify-content:center;gap:6px;margin-bottom:36px;flex-wrap:wrap; }
.night-tab { padding:8px 22px;border:1px solid rgba(44,62,78,.1);background:transparent;border-radius:20px;cursor:pointer;font-family:var(--f1);font-size:.9rem;color:var(--text2);transition:var(--t); }
.night-tab.on, .night-tab:hover { background:var(--dark);color:#fff;border-color:var(--dark); }
.night-panel { display:none; }
.night-panel.on { display:block; }

.diary-list { display:flex;flex-direction:column;gap:14px; }
.diary-entry { background:rgba(255,255,255,.7);border-radius:var(--r);padding:22px;cursor:pointer;border-left:4px solid var(--warm);font-family:var(--f3);font-size:1.05rem;position:relative;transition:var(--t); }
.diary-entry:hover { background:#fff;box-shadow:var(--sh); }
.diary-date { font-family:var(--f1);font-size:.8rem;color:var(--text2);margin-bottom:6px; }
.diary-title { font-family:var(--f1);font-size:1.1rem;font-weight:600;margin-bottom:6px; }
.diary-preview { color:var(--text2);font-size:.95rem; }
.diary-full { display:none;margin-top:10px;padding-top:10px;border-top:1px dashed rgba(0,0,0,.08);line-height:2; }
.diary-entry.expanded .diary-full { display:block; }

.cabin-lock { text-align:center;padding:50px 20px; }
.lock-icon { font-size:3.5rem;margin-bottom:12px; }
.cabin-row { display:flex;gap:8px;justify-content:center;margin:16px 0;max-width:340px;margin-left:auto;margin-right:auto; }
.cabin-row .input { flex:1; }
.hint { font-size:.8rem;color:var(--text2);font-style:italic; }
.err { color:#d44;font-size:.85rem;min-height:1.2em;margin-top:6px; }

.drift-intro { text-align:center;margin-bottom:24px; }
.drift-intro .sub { font-size:.85rem;color:var(--text2); }
.drift-form { max-width:480px;margin:0 auto 36px;display:flex;flex-direction:column;gap:12px; }
.drift-row { display:flex;align-items:center;gap:10px; }
.drift-row label { font-family:var(--f1);font-size:.85rem;white-space:nowrap;color:var(--text2); }
.bottles { text-align:center; }
.bottles h3 { margin-bottom:16px; }
.bottle-card { display:inline-block;background:rgba(255,255,255,.7);border-radius:var(--r);padding:18px 24px;margin:8px;cursor:pointer;transition:var(--t);animation:float 3s ease-in-out infinite; }
.bottle-card:hover { background:#fff;box-shadow:var(--sh); }
@keyframes float { 0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)} }

/* --- 解忧游廊 --- */
.game-row { display:flex;gap:20px;overflow-x:auto;padding:8px 4px 24px;scroll-snap-type:x mandatory; }
.game-row::-webkit-scrollbar { height:6px; }
.game-row::-webkit-scrollbar-thumb { background:var(--warm);border-radius:3px; }
.game-card { min-width:300px;flex-shrink:0;scroll-snap-align:start;background:#fff;border-radius:var(--r);padding:28px;text-align:center;box-shadow:var(--sh); }
.game-card h3 { font-size:1.15rem;margin-bottom:16px; }
.game-card>p { font-size:.85rem;color:var(--text2);margin-bottom:14px; }

.fortune-box { min-height:100px;display:flex;flex-direction:column;align-items:center;justify-content:center;margin-bottom:12px; }
.fortune-stick { font-size:2.2rem;cursor:pointer;transition:transform .2s; }
.fortune-stick:hover { transform:rotate(-12deg) scale(1.08); }
.fortune-stick.shake { animation:shake .5s ease-in-out; }
@keyframes shake { 0%,100%{transform:rotate(0)}25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)} }
.fortune-text { font-family:var(--f3);font-size:1.15rem;margin-top:10px;min-height:1.5em; }

.ttt-board { display:grid;grid-template-columns:repeat(3,1fr);gap:5px;max-width:180px;margin:0 auto 12px; }
.ttt-cell { aspect-ratio:1;background:#F5EDE0;border-radius:8px;border:none;font-size:1.8rem;cursor:pointer;font-family:var(--f1);display:flex;align-items:center;justify-content:center;transition:var(--t); }
.ttt-cell:hover { background:rgba(232,168,124,.12); }
.ttt-cell.win { background:var(--mint);color:#fff; }
.ttt-status { font-family:var(--f1);font-size:.85rem;color:var(--text2);margin-bottom:8px; }

.palette { display:flex;justify-content:center;gap:12px;margin-bottom:12px; }
.pal-btn { width:50px;height:50px;border-radius:50%;border:3px solid transparent;cursor:pointer;font-size:1.2rem;transition:var(--t);display:flex;align-items:center;justify-content:center; }
.pal-btn:hover, .pal-btn.on { border-color:var(--dark);transform:scale(1.12); }
.pal-btn.on { animation:pulse 1.5s ease-in-out infinite; }
@keyframes pulse { 0%,100%{box-shadow:0 0 0 0 rgba(0,0,0,.15)}50%{box-shadow:0 0 0 14px rgba(0,0,0,0)} }
.pal-status { font-size:.8rem;color:var(--text2);margin-bottom:10px; }

/* --- 按钮 --- */
.btn { padding:10px 22px;border-radius:20px;border:none;cursor:pointer;font-family:var(--f1);font-size:.88rem;transition:var(--t); }
.btn-dark { background:var(--dark);color:#fff; }
.btn-dark:hover { background:var(--warm);transform:scale(1.02); }
.btn-game { background:rgba(232,168,124,.1);color:var(--warm); }
.btn-game:hover { background:var(--warm);color:#fff; }
.input { padding:11px 16px;border:1px solid rgba(44,62,78,.1);border-radius:8px;font-size:.92rem;font-family:var(--f2);background:#fff;outline:none;transition:var(--t);width:100%; }
.input:focus { border-color:var(--warm);box-shadow:0 0 0 3px rgba(232,168,124,.08); }

/* --- 四季圃 --- */
.season-tag { text-align:center;margin-bottom:32px; }
.season-icon { font-size:2.8rem;display:block;margin-bottom:6px; }
.season-tag span { font-family:var(--f1);font-size:1.1rem;color:var(--text2); }
.habit-grid { display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:18px;margin-bottom:24px; }
.habit-card { background:#fff;border-radius:var(--r);padding:24px;text-align:center;box-shadow:var(--sh);position:relative;transition:var(--t); }
.habit-card:hover { transform:translateY(-2px);box-shadow:var(--sh2); }
.habit-card h4 { font-size:.95rem;margin-bottom:14px; }
.habit-ring { position:relative;width:90px;height:90px;margin:0 auto 12px; }
.habit-ring svg { transform:rotate(-90deg); }
.habit-ring-bg { fill:none;stroke:#eee;stroke-width:7; }
.habit-ring-fill { fill:none;stroke:var(--mint);stroke-width:7;stroke-linecap:round;transition:stroke-dashoffset .5s ease; }
.habit-ring-num { position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--f1);font-size:1rem;font-weight:600;color:var(--dark); }
.habit-water { padding:6px 18px;border-radius:16px;border:2px solid var(--mint);background:transparent;cursor:pointer;font-family:var(--f1);font-size:.8rem;color:var(--mint);transition:var(--t); }
.habit-water:hover { background:var(--mint);color:#fff; }
.habit-done { font-size:.8rem;color:var(--mint);font-family:var(--f1); }
.garden-motto { text-align:center;font-style:italic;color:var(--text2); }

/* --- 远航图 --- */
.star-box { position:relative;min-height:350px;background:linear-gradient(180deg, #1a1a2e, #16213e, #0f3460);border-radius:var(--r);overflow:hidden;display:flex;align-items:center;justify-content:center; }
.star-box svg { max-width:700px;width:100%;height:auto; }
.voyage-note { text-align:center;font-size:.85rem;color:var(--text2);margin-top:24px; }
.voyage-pwd { display:flex;gap:8px;justify-content:center;margin-top:12px;max-width:340px;margin-left:auto;margin-right:auto; }

/* --- 双星帖 --- */
.envelope-row { display:flex;flex-wrap:wrap;gap:20px;justify-content:center; }
.envelope { width:150px;height:110px;background:linear-gradient(135deg, #D4A5B3, var(--rose));border-radius:var(--r);cursor:pointer;position:relative;transition:var(--t);box-shadow:var(--sh);overflow:hidden; }
.envelope::before { content:'';position:absolute;top:0;left:0;border-style:solid;border-width:0 75px 55px 75px;border-color:transparent transparent rgba(255,255,255,.25) transparent; }
.envelope:hover { transform:translateY(-5px) rotate(-1deg);box-shadow:var(--sh2); }
.envelope-inner { position:relative;z-index:1;text-align:center;padding:26px 10px 10px;color:#fff; }
.envelope-icon { font-size:1.3rem;display:block;margin-bottom:2px; }
.envelope-title { font-family:var(--f1);font-size:.82rem;font-weight:500; }

/* --- 风信子墙 --- */
.gw-stats { text-align:center;margin-bottom:20px;font-family:var(--f1);font-size:.9rem;color:var(--text2);display:flex;gap:20px;justify-content:center;flex-wrap:wrap; }
.gw-form { max-width:520px;margin:0 auto 36px;display:flex;flex-direction:column;gap:10px; }
.gw-row { display:flex;align-items:center;gap:12px; }
.anon { display:flex;align-items:center;gap:4px;font-size:.85rem;color:var(--text2);cursor:pointer;white-space:nowrap;font-family:var(--f1); }
.gw-list { display:flex;flex-direction:column;gap:14px;max-width:580px;margin:0 auto; }
.gw-msg { background:#fff;border-radius:var(--r);padding:20px 22px;box-shadow:var(--sh);position:relative;transition:var(--t); }
.gw-msg:hover { box-shadow:var(--sh2); }
.gw-msg.pending { border:1px dashed rgba(232,168,124,.4);background:rgba(232,168,124,.03); }
.gw-msg-header { display:flex;justify-content:space-between;align-items:center;margin-bottom:6px; }
.gw-msg-name { font-family:var(--f1);font-weight:600;font-size:.9rem; }
.gw-msg-name.anon { color:var(--text2);font-style:italic; }
.gw-msg-time { font-size:.75rem;color:var(--text2); }
.gw-msg-text { line-height:1.7; }
.gw-light { display:inline-flex;align-items:center;gap:4px;margin-top:8px;padding:4px 12px;border-radius:12px;border:1px solid rgba(232,168,124,.25);background:transparent;cursor:pointer;font-size:.8rem;font-family:var(--f1);color:var(--warm);transition:var(--t); }
.gw-light:hover { background:rgba(232,168,124,.1); }
.gw-light.lit { background:rgba(232,168,124,.12); }

.pending-section { margin-bottom:28px;padding-bottom:20px;border-bottom:2px dashed rgba(232,168,124,.25); }
.pending-title { font-family:var(--f1);font-size:.95rem;color:var(--warm);margin-bottom:14px;text-align:center; }
.pending-btns { display:flex;gap:6px;margin-top:8px; }
.pending-yes, .pending-no { padding:3px 12px;border-radius:10px;border:none;cursor:pointer;font-family:var(--f1);font-size:.78rem;transition:var(--t); }
.pending-yes { background:rgba(125,181,160,.15);color:var(--mint); }
.pending-yes:hover { background:var(--mint);color:#fff; }
.pending-no { background:rgba(220,80,80,.08);color:#d44; }
.pending-no:hover { background:#d44;color:#fff; }

.empty-msg { text-align:center;color:var(--text2);padding:32px; }

/* --- 拾贝 --- */
.shells-grid { display:grid;grid-template-columns:repeat(auto-fill, minmax(220px, 1fr));gap:18px; }
.shell-card { background:#fff;border-radius:var(--r);overflow:hidden;box-shadow:var(--sh);transition:var(--t);position:relative; }
.shell-card:hover { transform:translateY(-2px);box-shadow:var(--sh2); }
.shell-img { width:100%;min-height:100px;display:flex;align-items:center;justify-content:center;font-size:2.6rem;background:linear-gradient(135deg, #F5EDE0, #faf5ee); }
.shell-body { padding:14px 18px; }
.shell-body p { font-size:.85rem;color:var(--text2);line-height:1.6; }
.shell-src { font-size:.75rem;color:var(--text2);margin-top:6px;font-style:italic; }

/* --- 静默室 --- */
.silence-room { text-align:center;padding:50px 24px; }
.silence-btn { display:inline-flex;flex-direction:column;align-items:center;gap:10px;padding:36px 56px;background:#fff;border-radius:var(--r);cursor:pointer;box-shadow:var(--sh);transition:var(--t); }
.silence-btn:hover { transform:scale(1.02);box-shadow:var(--sh2); }
.silence-icon { font-size:2.8rem; }
.silence-btn p { font-family:var(--f1);color:var(--text2); }
.silence-overlay { position:fixed;inset:0;z-index:4000;background:#111;display:none;flex-direction:column;align-items:center;justify-content:center;gap:36px; }
.silence-overlay.on { display:flex; }
.so-center { text-align:center; }
.breath-circle { width:140px;height:140px;border-radius:50%;background:radial-gradient(circle, rgba(255,255,255,.06) 0%, transparent 70%);border:2px solid rgba(255,255,255,.1);margin:0 auto 20px;animation:breathe 6s ease-in-out infinite; }
@keyframes breathe { 0%,100%{transform:scale(.8);opacity:.3}50%{transform:scale(1.2);opacity:.7} }
.breath-text { font-family:var(--f1);font-size:1.1rem;color:rgba(255,255,255,.4);margin-bottom:8px; }
.breath-timer { font-family:var(--f1);font-size:2.8rem;color:rgba(255,255,255,.25);font-weight:300; }
.so-exit { padding:8px 24px;border-radius:20px;border:1px solid rgba(255,255,255,.15);background:transparent;color:rgba(255,255,255,.4);cursor:pointer;font-family:var(--f1);font-size:.85rem;transition:var(--t); }
.so-exit:hover { border-color:rgba(255,255,255,.4);color:rgba(255,255,255,.7); }

/* --- Footer --- */
.footer { background:var(--dark);color:rgba(255,255,255,.65);text-align:center;padding:44px 24px 28px; }
.footer-logo { font-family:var(--f1);font-size:1.2rem;font-weight:700;color:#fff;margin-bottom:4px; }
.footer-text { font-size:.85rem; }
.footer-quote { font-style:italic;font-size:.85rem;color:rgba(255,255,255,.4);margin-bottom:16px; }
.footer-links { display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-bottom:12px; }
.footer-links a { color:rgba(255,255,255,.4);font-family:var(--f1);font-size:.8rem;transition:var(--t); }
.footer-links a:hover { color:var(--warm); }
.footer-copy { font-size:.75rem;color:rgba(255,255,255,.3); }
.admin-login-trigger { display:inline-block;margin-top:6px;padding:4px 10px;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:transparent;color:rgba(255,255,255,.3);cursor:pointer;font-size:.7rem;transition:var(--t); }
.admin-login-trigger:hover { background:rgba(255,255,255,.06);color:rgba(255,255,255,.6); }

/* --- 弹窗 --- */
.modal-overlay { position:fixed;inset:0;z-index:5000;display:none;align-items:center;justify-content:center; }
.modal-overlay.on { display:flex; }
.modal-overlay::before { content:'';position:absolute;inset:0;background:rgba(44,62,78,.8);backdrop-filter:blur(6px); }
.modal-card { position:relative;background:#fff;border-radius:var(--r);padding:40px 32px;text-align:center;max-width:400px;width:90%;box-shadow:0 20px 60px rgba(0,0,0,.35); }
.modal-x { position:absolute;top:10px;right:10px;width:30px;height:30px;border-radius:50%;border:none;background:rgba(0,0,0,.05);cursor:pointer;font-size:.95rem;transition:var(--t); }
.modal-x:hover { background:rgba(0,0,0,.1); }
.modal-x-fixed { position:sticky;float:right; }
.modal-edit { max-width:520px;padding:0;text-align:left;max-height:85vh;overflow-y:auto; }
.modal-header { display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid rgba(0,0,0,.05);position:sticky;top:0;background:#fff;z-index:1; }
.modal-header h3 { font-size:1.1rem; }
.modal-body { padding:24px; }
.modal-body .form-g { margin-bottom:14px; }
.modal-body label { display:block;font-family:var(--f1);font-size:.82rem;color:var(--text2);margin-bottom:4px;font-weight:500; }
.modal-body .input, .modal-body textarea.input, .modal-body select.input { width:100%; }
.modal-body textarea.input { resize:vertical;min-height:80px; }
.modal-body .btn-dark { width:100%;margin-top:8px; }
.modal-body .form-hint { font-size:.75rem;color:var(--text2);margin-top:2px;font-style:italic; }
.modal-env { max-width:520px;padding:0;max-height:80vh;overflow-y:auto;background:#F5EDE0; }
.env-content { padding:36px 28px;font-family:var(--f3);font-size:1.1rem;line-height:2.2; }
.env-content h3 { font-family:var(--f1);margin-bottom:18px;text-align:center; }
.env-secret { display:block;margin-top:14px;padding:10px;background:rgba(195,141,158,.08);border-radius:8px;text-align:center;font-family:var(--f1);font-size:.82rem;color:var(--rose);cursor:pointer; }

/* --- 响应式 --- */
@media (max-width: 768px) {
  .nav-menu { position:fixed;top:0;right:-100%;width:260px;height:100vh;flex-direction:column;background:rgba(253,248,242,.98);backdrop-filter:blur(12px);padding:72px 20px 20px;gap:0;transition:right .3s ease;box-shadow:-4px 0 16px rgba(0,0,0,.08); }
  .nav-menu.open { right:0; }
  .nav-menu a { padding:12px 14px;font-size:.95rem; }
  .nav-burger { display:flex;z-index:1001; }
  .title-main { font-size:3rem; }
  .works-grid { grid-template-columns:1fr 1fr; }
  .game-row { padding-bottom:16px; }
  .game-card { min-width:260px; }
  .shells-grid { grid-template-columns:1fr 1fr; }
  .habit-grid { grid-template-columns:1fr 1fr; }
  .gw-row { flex-direction:column;align-items:stretch; }
}

@media (max-width: 480px) {
  .section { padding:56px 16px; }
  .sec-head h2 { font-size:1.6rem; }
  .title-main { font-size:2.4rem; }
  .works-grid { grid-template-columns:1fr; }
  .shells-grid { grid-template-columns:1fr; }
  .habit-grid { grid-template-columns:1fr; }
  .game-card { min-width:240px; }
}
