:root {
    --bg:#f1f5f9; --surface:#fff; --text:#1e293b; --text-secondary:#475569;
    --text-light:#64748b; --text-muted:#94a3b8; --border:#e2e8f0; --border-focus:#cbd5e1;
    --accent:#2563eb; --accent-hover:#1d4ed8; --accent-soft:#eff6ff;
    --accent-glow:rgba(37,99,235,.25); --accent-shadow:rgba(37,99,235,.35);
    --success:#10b981; --warning:#f59e0b; --danger:#ef4444;
    --shadow:0 1px 3px rgba(0,0,0,.06),0 4px 12px rgba(0,0,0,.04);
    --shadow-lg:0 8px 30px rgba(0,0,0,.08),0 2px 8px rgba(0,0,0,.04);
    --shadow-hover:0 16px 40px rgba(37,99,235,.18),0 4px 14px rgba(37,99,235,.08);
    --shadow-accent:0 8px 30px rgba(37,99,235,.15),0 2px 8px rgba(37,99,235,.05);
    --radius-sm:10px; --radius:16px; --radius-lg:22px;
    --transition:.25s cubic-bezier(.4,0,.2,1);
    --font:'Inter','SF Pro Display',system-ui,-apple-system,'PingFang SC','Hiragino Sans GB','Microsoft YaHei','Noto Sans SC','WenQuanYi Micro Hei',sans-serif;
}
body.dark-theme {
    --bg:#0f172a; --surface:#1e293b; --text:#f1f5f9; --text-secondary:#cbd5e1;
    --text-light:#94a3b8; --text-muted:#64748b; --border:#334155; --border-focus:#475569;
    --accent-soft:#1e3a5f; --accent-glow:rgba(59,130,246,.3); --accent-shadow:rgba(59,130,246,.4);
    --shadow:0 1px 3px rgba(0,0,0,.3),0 4px 12px rgba(0,0,0,.2);
    --shadow-lg:0 8px 30px rgba(0,0,0,.4),0 2px 8px rgba(0,0,0,.3);
    --shadow-hover:0 16px 40px rgba(0,0,0,.5),0 4px 14px rgba(37,99,235,.2);
}

* {
    margin: 0; padding: 0; box-sizing: border-box;
    -webkit-text-size-adjust: 100% !important;
    -moz-text-size-adjust: 100% !important;
    -ms-text-size-adjust: 100% !important;
    text-size-adjust: 100% !important;
}
html {
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    -webkit-tap-highlight-color: transparent;
    text-size-adjust: 100% !important;
    -webkit-text-size-adjust: 100% !important;
    font-size: 16px;
    touch-action: manipulation;
}
body {
    font-family: var(--font);
    font-size: 16px;
    line-height: 1.5;
    background: var(--bg);
    color: var(--text);
    background-image:
        radial-gradient(ellipse at 50% 25%,rgba(37,99,235,.05) 0%,transparent 55%),
        radial-gradient(ellipse at 25% 75%,rgba(37,99,235,.03) 0%,transparent 45%);
    min-height: 100vh;
    padding: 16px;
    letter-spacing: .01em;
    overflow-x: hidden;
    transition: background-color .3s,color .3s;
    width: 100%;
    max-width: 100vw;
    touch-action: manipulation;
}
body.dark-theme {
    background-image:
        radial-gradient(ellipse at 50% 25%,rgba(59,130,246,.08) 0%,transparent 55%),
        radial-gradient(ellipse at 25% 75%,rgba(37,99,235,.05) 0%,transparent 45%);
}
img, svg, video, canvas { max-width: 100%; height: auto; display: block; }
input, button, textarea, select { font-family: inherit; font-size: 100%; -webkit-appearance: none; appearance: none; }

.top-tab, .mode-tab, .btn-main, .btn-auto, .theme-toggle, .mode-toggle,
.quick-link, .gift-card, .preset-btn, .random-toggle,
.random-toggle input, .hot-badge, .btn-news-random {
    user-select: none;
    -webkit-user-select: none;
    -webkit-touch-callout: none;
    touch-action: manipulation;
}

.page-container, .main-wrap, .settings-card, .search-card, .news-card {
    touch-action: pan-y;
}

.bg-search-frame{position:fixed!important;left:-9999px!important;top:0!important;width:1px!important;height:1px!important;opacity:0!important;border:0!important;pointer-events:none!important;z-index:-1!important;visibility:hidden!important}
.bg-particles{position:fixed;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:0;overflow:hidden}
.bg-particle{position:absolute;border-radius:50%;animation:floatParticle linear infinite;opacity:0;background:rgba(37,99,235,.35)}
.bg-particle.square{border-radius:3px;background:rgba(14,165,233,.25)}
.bg-particle.diamond{border-radius:2px;transform:rotate(45deg);background:rgba(99,102,241,.22)}
@keyframes floatParticle{
    0%{transform:translateY(108vh) rotate(0) scale(.3);opacity:0}
    5%{opacity:.45}30%{opacity:.3}65%{opacity:.08}
    100%{transform:translateY(-12vh) rotate(360deg) scale(1.1);opacity:0}
}
.theme-toggle{
    position:fixed;top:16px;right:16px;z-index:200;
    width:44px;height:44px;border-radius:50%;
    background:var(--surface);border:1px solid var(--border);
    box-shadow:var(--shadow-lg);cursor:pointer;
    display:flex;align-items:center;justify-content:center;
    transition:all var(--transition);color:var(--text-secondary);flex-shrink:0;
}
.theme-toggle svg{width:22px;height:22px}
.theme-toggle .icon-sun{display:none}
body.dark-theme .theme-toggle .icon-sun{display:block}
body.dark-theme .theme-toggle .icon-moon{display:none}

/* ============ 顶部 Tab ============ */
.top-tabs-wrap { width: 100%; max-width: 460px; margin: 60px auto 14px; position: relative; z-index: 10; }
.top-tabs { display: flex; background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 5px; box-shadow: var(--shadow); }
.top-tab {
    flex: 1 1 0; min-width: 0; padding: 12px 16px; text-align: center;
    font-size: .92rem; font-weight: 700; color: var(--text-muted);
    background: transparent; border: none; border-radius: 12px;
    cursor: pointer; transition: background .18s, color .18s, box-shadow .18s;
    font-family: var(--font);
    display: flex; align-items: center; justify-content: center;
    white-space: nowrap; line-height: 1.3; min-height: 44px;
}
.top-tab + .top-tab { margin-left: 5px; }
.top-tab > * + * { margin-left: 8px; }
.top-tab svg { width: 17px; height: 17px; flex-shrink: 0; }
.top-tab span { white-space: nowrap; }
.top-tab.active { background: linear-gradient(135deg, var(--accent), #3b82f6); color: #fff; box-shadow: 0 4px 14px var(--accent-shadow); }
.top-tab .tab-badge { background: rgba(255,255,255,.25); color: inherit; font-size: .62rem; font-weight: 800; padding: 2px 7px; border-radius: 10px; line-height: 1.2; flex-shrink: 0; }
.top-tab:not(.active) .tab-badge { background: var(--accent-soft); color: var(--accent); }

.main-wrap { width: 100%; max-width: 460px; margin: 0 auto; position: relative; z-index: 1; }
.tab-panel { display: none; }
.tab-panel.active { display: block; }

.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 24px 20px; box-shadow: var(--shadow-lg); transition: box-shadow var(--transition),border-color var(--transition); width: 100%; min-width: 0; box-sizing: border-box; margin-bottom: 14px; }
.card:last-child { margin-bottom: 0; }

/* ============ 搜索卡片 ============ */
.search-card{
    background:linear-gradient(135deg,var(--surface) 0%,var(--accent-soft) 100%);
    border-color:var(--accent-soft); box-shadow:var(--shadow-accent);
    padding:28px 20px 24px; text-align:center;
    display:flex; flex-direction:column; align-items:center;
    position:relative;
}
.search-card > * + * { margin-top: 16px; }
body.dark-theme .search-card{background:linear-gradient(135deg,#1e293b 0%,#1e3a5f 100%);border-color:#334155}

.mode-toggle{position:absolute;top:12px;left:12px;z-index:15;width:38px;height:38px;border-radius:50%;background:var(--surface);border:2px solid var(--border);box-shadow:var(--shadow);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition);color:var(--text-muted);outline:none;flex-shrink:0;}
.mode-toggle svg{width:19px;height:19px;pointer-events:none}
.mode-toggle.active{background:linear-gradient(135deg,var(--accent),#3b82f6);border-color:var(--accent);color:#fff}
.mode-toggle.active svg{animation:boltPulse 1.8s ease-in-out infinite}
@keyframes boltPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15);opacity:.85}}
.mode-toggle .mode-tooltip{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%) translateY(-6px);background:var(--text);color:var(--surface);font-size:.65rem;font-weight:600;padding:4px 10px;border-radius:10px;white-space:nowrap;pointer-events:none;opacity:0;transition:all .15s}

.brand-icon-wrap{position:relative;width:60px;height:60px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#2563eb,#3b82f6 50%,#60a5fa);border-radius:18px;box-shadow:0 6px 20px var(--accent-shadow);flex-shrink:0}
.brand-icon-wrap svg{width:30px;height:30px;color:#fff}
.title{font-size:1.5rem;font-weight:700;letter-spacing:.02em;line-height:1.35;word-break:break-word;max-width:100%}
.subtitle{font-size:.8rem;color:var(--text-muted);letter-spacing:.04em;margin-top:-6px;line-height:1.5;word-break:break-word}

/* 主按钮：icon+label+countdown 之间用 margin 代替 gap */
.btn-main{position:relative;display:flex;align-items:center;justify-content:center;width:100%;max-width:280px;padding:16px 24px;font-size:1rem;font-weight:700;font-family:var(--font);letter-spacing:.03em;color:#fff;background:linear-gradient(135deg,var(--accent),#3b82f6);border:none;border-radius:40px;cursor:pointer;box-shadow:0 6px 18px var(--accent-shadow);transition:all var(--transition);outline:none;white-space:nowrap;overflow:hidden;isolation:isolate;min-height:52px;line-height:1.2}
.btn-main > * + * { margin-left: 10px; }
.btn-main:active{transform:translateY(-1px) scale(.97)}
.btn-main .btn-icon{position:relative;z-index:1;display:flex;align-items:center;pointer-events:none;flex-shrink:0}
.btn-main .btn-icon svg{width:20px;height:20px;color:#fff;pointer-events:none}
.btn-main .btn-label{position:relative;z-index:1;color:#fff;pointer-events:none;white-space:nowrap}
.btn-main.btn-cooldown{pointer-events:none!important;cursor:not-allowed!important;background:var(--border)!important;box-shadow:0 2px 6px rgba(0,0,0,.05)!important;transform:none!important;opacity:.85!important}
.btn-main.btn-cooldown .btn-icon{opacity:.5}
.btn-main.btn-cooldown .btn-icon svg{color:var(--text-muted)}
.btn-main.btn-cooldown .btn-label{display:none}
.btn-main .countdown-text{display:none;position:relative;z-index:1;font-weight:700;color:var(--text-light);font-size:1.1rem;animation:countPulse .9s ease-in-out infinite;pointer-events:none}
@keyframes countPulse{0%,100%{opacity:.7}50%{opacity:1}}
.btn-main.btn-cooldown .countdown-text{display:inline-block}
.btn-main.btn-auto-running{background:linear-gradient(135deg,#10b981,#34d399)!important;box-shadow:0 6px 20px rgba(16,185,129,.45)!important;pointer-events:none!important;cursor:default!important}
.btn-main.btn-auto-running .btn-icon svg{animation:autoPulse 1.6s ease-in-out infinite}
@keyframes autoPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.15);opacity:.75}}

/* info-row：用子元素 margin 代替 gap，避免 flex gap 兼容问题 */
.info-row{display:flex;flex-wrap:wrap;justify-content:center;font-size:.75rem;color:var(--text-light);background:var(--surface);padding:8px 10px;border-radius:32px;border:1px solid var(--border);max-width:100%;line-height:1.5;min-height:34px;align-items:center;}
.info-row .info-item{display:flex;align-items:center;margin:2px 6px;white-space:nowrap;flex-shrink:0}
.info-row .info-value{font-weight:700;color:var(--text-secondary);font-size:.85rem;margin-left:5px}
.info-row .dot-indicator + *{margin-left:5px}
.info-row .info-value.available{color:var(--success)}
.info-row .info-value.low{color:var(--warning)}
.info-row .info-value.empty{color:var(--danger)}
.dot-indicator{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0;animation:dotBreath 2.2s ease-in-out infinite}
.dot-indicator.green{background:var(--success)}
.dot-indicator.orange{background:var(--warning);animation-delay:.6s}
.dot-indicator.red{background:var(--danger);animation-delay:1.2s}
@keyframes dotBreath{0%,100%{transform:scale(1);opacity:.55}50%{transform:scale(2);opacity:1}}

.settings-card{display:flex;flex-direction:column}
.settings-divider{height:1px;background:var(--border);margin:16px 0;width:100%;flex-shrink:0}

/* mode-tabs：margin-left 代替 gap */
.mode-tabs{display:flex;background:var(--bg);border-radius:var(--radius-sm);padding:4px;margin-bottom:16px;width:100%;flex-wrap:nowrap}
.mode-tab{flex:1 1 0;min-width:0;padding:10px 12px;text-align:center;font-size:.82rem;font-weight:700;color:var(--text-muted);background:transparent;border:none;border-radius:8px;cursor:pointer;transition:background .18s, color .18s, box-shadow .18s;font-family:var(--font);display:flex;align-items:center;justify-content:center;white-space:nowrap;line-height:1.35;min-height:40px;}
.mode-tab + .mode-tab{margin-left:4px}
.mode-tab svg{width:15px;height:15px;flex-shrink:0;margin-right:6px}
.mode-tab.active{background:var(--surface);color:var(--accent);box-shadow:0 2px 8px rgba(37,99,235,.15)}

.panel{display:none;flex-direction:column}
.panel.active{display:flex}

.settings-section{display:flex;flex-direction:column;width:100%}
.settings-section > * + * { margin-top: 10px; }
.settings-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:nowrap;width:100%}
.settings-header > * + * { margin-left: 8px; }
.settings-label{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;flex-shrink:0;line-height:1.5;white-space:nowrap}
.settings-label svg{width:14px;height:14px;color:var(--text-muted);flex-shrink:0;margin-right:5px}
.settings-value-display{font-size:.9rem;font-weight:700;color:var(--accent);background:var(--accent-soft);padding:3px 10px;border-radius:14px;min-width:50px;text-align:center;white-space:nowrap;flex-shrink:0;line-height:1.4}

.settings-row{display:flex;align-items:center;flex-wrap:nowrap;width:100%}
.settings-row > * + * { margin-left: 12px; }
.settings-row input[type=range]{flex:1 1 0;min-width:0;-webkit-appearance:none;appearance:none;height:6px;border-radius:3px;background:var(--border);outline:none;cursor:pointer}
.settings-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid var(--accent);cursor:pointer;box-shadow:0 2px 8px rgba(37,99,235,.3)}
.settings-row input[type=range]::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;border:3px solid var(--accent);cursor:pointer}
.settings-row input[type=number],.target-input,.random-range-row input[type=number]{width:68px;padding:8px 10px;font-size:.85rem;font-weight:600;font-family:var(--font);color:var(--text);background:var(--surface);border:1.5px solid var(--border);border-radius:8px;outline:none;text-align:center;-moz-appearance:textfield;appearance:textfield;flex-shrink:0;min-height:36px;line-height:1.4;}
.settings-row input[type=number]::-webkit-outer-spin-button,.settings-row input[type=number]::-webkit-inner-spin-button,
.target-input::-webkit-outer-spin-button,.target-input::-webkit-inner-spin-button,
.random-range-row input[type=number]::-webkit-outer-spin-button,.random-range-row input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.settings-row input[type=number]:focus,.target-input:focus,.random-range-row input[type=number]:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
.settings-row .unit-label{font-size:.75rem;color:var(--text-muted);font-weight:500;flex-shrink:0;white-space:nowrap}
.settings-hint{font-size:.68rem;color:var(--text-muted);line-height:1.6;word-break:break-word}
.hint-warning{display:block;color:var(--warning);font-weight:700;margin-bottom:4px;font-size:.7rem;line-height:1.5}

.random-toggle-row{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--accent-soft);border-radius:var(--radius-sm);flex-wrap:nowrap;width:100%}
.random-toggle{display:inline-flex;align-items:center;cursor:pointer;user-select:none;flex-shrink:0}
.random-toggle input{position:absolute;opacity:0;pointer-events:none}
.random-toggle-track{position:relative;width:40px;height:22px;background:var(--border);border-radius:11px;transition:background var(--transition);flex-shrink:0;margin-right:10px}
.random-toggle-thumb{position:absolute;top:2px;left:2px;width:18px;height:18px;background:#fff;border-radius:50%;transition:transform var(--transition);box-shadow:0 1px 3px rgba(0,0,0,.2)}
.random-toggle input:checked + .random-toggle-track{background:var(--accent)}
.random-toggle input:checked + .random-toggle-track .random-toggle-thumb{transform:translateX(18px)}
.random-toggle-label{font-size:.78rem;font-weight:600;color:var(--text-secondary);white-space:nowrap}

.random-range-row{display:none;align-items:center;flex-wrap:nowrap;width:100%}
.random-range-row.show{display:flex}
.random-range-row > * + * { margin-left: 8px; }
.random-range-row input[type=number]{flex:1 1 0;width:auto;min-width:0}
.range-sep{color:var(--text-muted);font-weight:700;flex-shrink:0;font-size:1rem;line-height:1}

.schedule-time-row {
    display: flex;
    align-items: center;
    padding: 10px 12px;
    background: var(--surface);
    border: 1.5px solid var(--border);
    border-radius: var(--radius-sm);
    width: 100%;
    opacity: 0.5;
    transition: opacity 0.2s, border-color 0.2s;
    pointer-events: none;
}
.schedule-time-row > * + * { margin-left: 10px; }
.schedule-time-row.active { opacity: 1; border-color: var(--accent); pointer-events: auto; }
.schedule-time-input {
    flex: 1; min-width: 0; padding: 8px 12px;
    font-size: 1rem; font-weight: 800; font-family: var(--font);
    color: var(--accent); background: var(--accent-soft);
    border: 1.5px solid transparent; border-radius: 8px;
    outline: none; text-align: center;
    -webkit-appearance: none; appearance: none; -moz-appearance: textfield;
    cursor: pointer; line-height: 1.4;
}
.schedule-time-input:focus { border-color: var(--accent); background: var(--surface); box-shadow: 0 0 0 3px rgba(37,99,235,.12); }
.schedule-time-input::-webkit-calendar-picker-indicator { cursor: pointer; opacity: 0.6; transition: opacity 0.2s; }
.schedule-time-input::-webkit-calendar-picker-indicator:hover { opacity: 1; }
body.dark-theme .schedule-time-input::-webkit-calendar-picker-indicator { filter: invert(1); opacity: 0.7; }

/* ============ 预设：grid 改 flex+margin，兼容性更好 ============ */
.preset-grid{display:flex;flex-wrap:wrap;margin:0 -4px -8px;width:calc(100% + 8px)}
.preset-btn{display:flex;flex-direction:column;align-items:center;padding:10px 4px;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);font-family:var(--font);color:var(--text);text-align:center;flex:0 0 calc(33.333% - 8px);margin:0 4px 8px;box-sizing:border-box}
.preset-btn > * + * { margin-top: 3px; }
.preset-btn.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent-glow)}
.preset-value{font-size:1.15rem;font-weight:800;color:var(--accent);line-height:1.25}
.preset-unit{font-size:.6rem;color:var(--text-muted);font-weight:600;letter-spacing:.04em;line-height:1.35}
.preset-desc{font-size:.58rem;color:var(--text-light);line-height:1.35;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}

.target-row{display:flex;align-items:center;padding:10px 12px;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);flex-wrap:nowrap;width:100%}
.target-row > * + * { margin-left: 8px; }
.target-label{font-size:.78rem;font-weight:600;color:var(--text-secondary);flex-shrink:0;white-space:nowrap}
.target-input{flex:1 1 0;width:auto;min-width:0;padding:6px 8px;font-size:.85rem;font-weight:700;color:var(--accent);background:var(--accent-soft);border-color:transparent}
.target-unit{font-size:.72rem;color:var(--text-muted);font-weight:500;flex-shrink:0;white-space:nowrap}

.preset-progress{display:none;flex-direction:column;padding:10px 12px;background:var(--accent-soft);border-radius:var(--radius-sm);width:100%}
.preset-progress > * + * { margin-top: 6px; }
.preset-progress.show{display:flex}
.progress-text{display:flex;justify-content:space-between;font-size:.68rem;color:var(--text-secondary);font-weight:700;line-height:1.4}
.progress-text > * + * { margin-left: 8px; }
.progress-bar{width:100%;height:6px;background:var(--border);border-radius:3px;overflow:hidden}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),#60a5fa);border-radius:3px;width:0;transition:width .4s ease}

.auto-status{font-size:.68rem;font-weight:700;padding:4px 10px;border-radius:12px;background:var(--border);color:var(--text-muted);display:inline-flex;align-items:center;flex-shrink:0;white-space:nowrap;line-height:1.4}
.auto-status.running{background:rgba(16,185,129,.15);color:var(--success)}
.auto-status.running::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--success);animation:dotBreath 1.2s ease-in-out infinite;flex-shrink:0;margin-right:5px}
.auto-status.scheduled{background:rgba(37,99,235,.15);color:var(--accent)}
.auto-status.scheduled::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;margin-right:5px}

.btn-auto{display:flex;align-items:center;justify-content:center;width:100%;padding:13px 16px;font-size:.88rem;font-weight:700;font-family:var(--font);color:#fff;background:linear-gradient(135deg,var(--accent),#3b82f6);border:none;border-radius:12px;cursor:pointer;box-shadow:0 4px 12px rgba(37,99,235,.25);transition:all var(--transition);outline:none;line-height:1.35;min-height:46px;white-space:nowrap}
.btn-auto svg{width:16px;height:16px;flex-shrink:0;margin-right:8px}
.btn-auto.active{background:linear-gradient(135deg,#ef4444,#f87171);box-shadow:0 4px 12px rgba(239,68,68,.3)}

/* ============ 快捷入口 ============ */
.quick-links-section{display:flex;flex-direction:column;width:100%}
.quick-links-section > * + * { margin-top: 10px; }
.quick-links-title{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;justify-content:center;line-height:1.5;white-space:nowrap}
.quick-links-title svg{width:14px;height:14px;color:var(--text-muted);flex-shrink:0;margin-right:5px}
/* 4 列 flex */
.quick-links-grid{display:flex;flex-wrap:wrap;margin:0 -5px -10px;width:calc(100% + 10px)}
.quick-link{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:14px 6px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);text-decoration:none;color:var(--text-secondary);transition:all var(--transition);min-height:80px;flex:0 0 calc(25% - 10px);margin:0 5px 10px;box-sizing:border-box}
.quick-link > * + * { margin-top: 6px; }
.quick-link-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;background:var(--accent-soft);color:var(--accent);flex-shrink:0;overflow:hidden}
.quick-link-icon svg{width:16px;height:16px}
.quick-link-label{font-size:.7rem;font-weight:600;text-align:center;line-height:1.35;word-break:break-word;max-width:100%}

/* ============ 礼品卡 ============ */
.gift-cards-section{display:flex;flex-direction:column;width:100%}
.gift-cards-section > * + * { margin-top: 12px; }
.gift-cards-title{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);display:flex;align-items:center;justify-content:center;line-height:1.5;white-space:nowrap}
.gift-cards-title svg{width:14px;height:14px;color:var(--text-muted);flex-shrink:0;margin-right:5px}
/* 3 列 flex */
.gift-cards-grid{display:flex;flex-wrap:wrap;margin:0 -6px -12px;width:calc(100% + 12px)}
.gift-card{position:relative;display:flex;flex-direction:column;align-items:center;text-decoration:none;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 8px;transition:all var(--transition);box-shadow:var(--shadow);flex:0 0 calc(33.333% - 12px);margin:0 6px 12px;box-sizing:border-box}
.gift-card > * + * { margin-top: 8px; }
/* ★ aspect-ratio 兼容：默认固定高度 110px，支持 aspect-ratio 的浏览器再增强到 1:1 */
.gift-card-img{width:100%;height:110px;border-radius:8px;background:var(--border);display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--border);position:relative;font-size:.7rem;color:var(--text-muted);font-weight:600}
@supports (aspect-ratio: 1 / 1) {
    .gift-card-img { height: auto; aspect-ratio: 1 / 1; }
}
.gift-card-img img{width:100%;height:100%;object-fit:cover;display:block}
.gift-card-name{font-size:.72rem;font-weight:600;text-align:center;color:var(--text);line-height:1.35;word-break:break-word;max-width:100%}

.hot-badge{position:absolute;top:-9px;right:-9px;width:28px;height:28px;z-index:20;pointer-events:none;display:flex;align-items:center;justify-content:center;filter:drop-shadow(0 2px 6px rgba(255,87,34,.55));animation:hotBadgePulse 1.8s ease-in-out infinite}
.hot-badge img{width:100%;height:100%;object-fit:contain}
@keyframes hotBadgePulse{0%,100%{transform:scale(1) rotate(0)}50%{transform:scale(1.14) rotate(-6deg)}}
.quick-link.hot,.gift-card.hot{border-color:rgba(255,152,0,.55);box-shadow:0 4px 16px rgba(255,152,0,.18),var(--shadow)}

/* ==================== 新闻模块 ==================== */
.news-card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 22px 18px; box-shadow: var(--shadow-lg); width: 100%; box-sizing: border-box; }
.news-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; flex-wrap: wrap; }
.news-header > * + * { margin-left: 10px; }
.news-header-left { display: flex; align-items: center; min-width: 0; }
.news-header-left > * + * { margin-left: 8px; }
.news-header-icon { width: 34px; height: 34px; border-radius: 10px; background: linear-gradient(135deg, var(--accent), #3b82f6); display: flex; align-items: center; justify-content: center; color: #fff; flex-shrink: 0; }
.news-header-icon svg { width: 18px; height: 18px; }
.news-header-text { display: flex; flex-direction: column; min-width: 0; }
.news-header-text > * + * { margin-top: 3px; }
.news-header-title { font-size: 1rem; font-weight: 800; color: var(--text); line-height: 1.35; }
.news-header-sub { font-size: .65rem; color: var(--text-muted); letter-spacing: .04em; font-weight: 600; line-height: 1.4; }
.news-count-badge { display: inline-flex; align-items: center; background: var(--accent-soft); color: var(--accent); font-size: .68rem; font-weight: 700; padding: 5px 10px; border-radius: 12px; flex-shrink: 0; line-height: 1.4; }
.news-count-badge > * + * { margin-left: 5px; }
.news-count-badge .dot-live { width: 6px; height: 6px; border-radius: 50%; background: var(--success); animation: dotBreath 1.6s ease-in-out infinite; }

.news-prompt-banner { display: none; align-items: flex-start; padding: 12px 14px; background: linear-gradient(135deg, #fffbeb 0%, #fef3c7 100%); border: 1px solid #fde68a; border-radius: var(--radius-sm); margin-bottom: 12px; line-height: 1.55; }
.news-prompt-banner > * + * { margin-left: 10px; }
body.dark-theme .news-prompt-banner { background: linear-gradient(135deg, #422006 0%, #78350f 100%); border-color: #92400e; }
.news-prompt-banner.show { display: flex; }
.news-prompt-banner-icon { flex-shrink: 0; width: 28px; height: 28px; border-radius: 8px; background: rgba(245, 158, 11, 0.2); color: #d97706; display: flex; align-items: center; justify-content: center; margin-top: 1px; }
body.dark-theme .news-prompt-banner-icon { color: #fbbf24; background: rgba(251, 191, 36, 0.15); }
.news-prompt-banner-icon svg { width: 16px; height: 16px; }
.news-prompt-banner-body { flex: 1; min-width: 0; }
.news-prompt-banner-title { font-size: .78rem; font-weight: 800; color: #92400e; line-height: 1.45; }
body.dark-theme .news-prompt-banner-title { color: #fcd34d; }
.news-prompt-banner-link { flex-shrink: 0; display: inline-flex; align-items: center; font-size: .68rem; font-weight: 800; color: #b45309; text-decoration: none; background: rgba(255,255,255,.6); padding: 5px 10px; border-radius: 8px; margin-top: 2px; transition: all var(--transition); white-space: nowrap; }
.news-prompt-banner-link > * + * { margin-left: 4px; }
body.dark-theme .news-prompt-banner-link { background: rgba(255,255,255,.1); color: #fcd34d; }
.news-prompt-banner-link svg { width: 11px; height: 11px; }

.news-random-section { display: flex; flex-direction: column; align-items: center; padding: 24px 12px 12px; text-align: center; }
.news-random-section > * + * { margin-top: 14px; }
.btn-news-random {
    display: flex; align-items: center; justify-content: center;
    width: 100%; max-width: 340px; padding: 18px 24px;
    font-size: 1.05rem; font-weight: 700; font-family: var(--font);
    letter-spacing: 0.02em; color: #fff;
    background: linear-gradient(135deg, var(--accent), #3b82f6);
    border: none; border-radius: 16px; cursor: pointer;
    box-shadow: 0 8px 22px var(--accent-shadow);
    transition: background .2s, transform .15s, box-shadow .2s, color .2s;
    outline: none; min-height: 56px; line-height: 1.35;
}
.btn-news-random svg { width: 22px; height: 22px; flex-shrink: 0; margin-right: 10px; }
.btn-news-random:active { transform: translateY(1px) scale(0.985); }
.btn-news-random:disabled, .btn-news-random.btn-news-random-empty { background: var(--border); color: var(--text-muted); box-shadow: none; cursor: not-allowed; pointer-events: none; opacity: 0.75; }
.btn-news-random:disabled svg, .btn-news-random.btn-news-random-empty svg { opacity: 0.5; }
.news-random-hint { font-size: 0.72rem; color: var(--text-muted); line-height: 1.6; max-width: 320px; margin: 0; }

.last-keyword{font-size:.75rem;color:var(--text-light);min-height:1.4em;line-height:1.55;word-break:break-word;text-align:center}
.last-keyword strong{color:var(--text);font-weight:600}
.last-keyword .view-result-link{color:var(--accent);text-decoration:none;font-weight:600;margin-left:6px;border-bottom:1px dashed var(--accent);white-space:nowrap}

.toast{position:fixed;top:16px;left:50%;transform:translateX(-50%) translateY(-140px);background:var(--surface);color:var(--text-secondary);border:1px solid var(--border);padding:10px 18px;border-radius:24px;font-weight:500;font-size:.75rem;z-index:999;box-shadow:0 8px 30px rgba(0,0,0,.12);transition:transform .38s cubic-bezier(.175,.885,.32,1.275);pointer-events:none;white-space:nowrap;max-width:90vw;overflow:hidden;text-overflow:ellipsis;line-height:1.45}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast.success{border-color:#a7f3d0;color:#065f46;background:#f0fdf4}
.toast.warning{border-color:#fde68a;color:#92400e;background:#fffbeb}
.toast.error{border-color:#fecaca;color:#991b1b;background:#fef2f2}

@media (hover: hover) and (pointer: fine) {
    .theme-toggle:hover{transform:scale(1.1);border-color:var(--accent);color:var(--accent)}
    .top-tab:hover:not(.active) { color: var(--text-secondary); }
    .mode-toggle:hover{border-color:var(--accent);color:var(--accent);transform:scale(1.08)}
    .mode-toggle:hover .mode-tooltip,.mode-toggle.active .mode-tooltip{opacity:1;transform:translateX(-50%) translateY(0)}
    .card:hover{box-shadow:var(--shadow-hover);border-color:var(--border-focus)}
    .btn-main:hover{background:linear-gradient(135deg,var(--accent-hover),#2563eb);transform:translateY(-3px);box-shadow:0 10px 24px var(--accent-shadow)}
    .btn-auto:hover{background:linear-gradient(135deg,var(--accent-hover),#2563eb);transform:translateY(-2px)}
    .mode-tab:hover:not(.active){color:var(--text-secondary)}
    .quick-link:hover{background:var(--accent-soft);border-color:var(--accent);transform:translateY(-2px);color:var(--accent)}
    .quick-link:hover .quick-link-icon{background:#dbeafe;color:var(--accent-hover)}
    .gift-card:hover{background:var(--accent-soft);border-color:var(--accent);box-shadow:var(--shadow-hover);transform:translateY(-3px)}
    .preset-btn:hover{border-color:var(--accent);background:var(--accent-soft);transform:translateY(-1px)}
    .news-prompt-banner-link:hover { background: rgba(255,255,255,.9); transform: translateY(-1px); }
    body.dark-theme .news-prompt-banner-link:hover { background: rgba(255,255,255,.2); }
    .btn-news-random:hover { background: linear-gradient(135deg, var(--accent-hover), #2563eb); transform: translateY(-2px); box-shadow: 0 12px 28px var(--accent-shadow); }
}

@media(max-width:480px){
    body{padding:10px;padding-top:8px;font-size:16px}
    .top-tabs-wrap { margin: 56px auto 12px; max-width: 100%; }
    .top-tab{font-size:.86rem;padding:10px 10px;min-height:42px}
    .top-tab > * + * { margin-left: 6px; }
    .top-tab svg{width:15px;height:15px}
    .main-wrap{max-width:100%}
    .card{padding:18px 14px;border-radius:var(--radius);margin-bottom:12px}
    .search-card{padding:22px 14px 18px;padding-top:34px}
    .search-card > * + * { margin-top: 12px; }
    .mode-toggle{top:8px;left:8px;width:32px;height:32px}
    .mode-toggle svg{width:16px;height:16px}
    .mode-toggle .mode-tooltip{display:none}
    .brand-icon-wrap{width:50px;height:50px}
    .brand-icon-wrap svg{width:26px;height:26px}
    .title{font-size:1.25rem;line-height:1.35}
    .subtitle{font-size:.72rem}
    .btn-main{padding:14px 20px;font-size:.95rem;max-width:220px;min-height:48px}
    .btn-main > * + * { margin-left: 8px; }
    .btn-main .btn-icon svg{width:18px;height:18px}
    .info-row{padding:6px 8px;font-size:.68rem;min-height:30px}
    .info-row .info-item{margin:2px 5px}
    .info-row .info-value{font-size:.78rem}
    .settings-label{font-size:.65rem}
    .settings-row > * + * { margin-left: 8px; }
    .settings-row input[type=number]{width:56px;padding:7px 6px;font-size:.8rem;min-height:34px}
    .settings-value-display{font-size:.78rem;padding:3px 8px;min-width:44px}
    .preset-btn{padding:8px 2px}
    .preset-value{font-size:1rem}
    .preset-desc{font-size:.55rem}
    .btn-auto{padding:12px 14px;font-size:.84rem;min-height:44px}
    /* 快捷入口：2 列 */
    .quick-links-grid{margin:0 -4px -8px;width:calc(100% + 8px)}
    .quick-link{flex:0 0 calc(50% - 8px);margin:0 4px 8px;padding:10px 4px;min-height:70px}
    .quick-link > * + * { margin-top: 5px; }
    .quick-link-icon{width:24px;height:24px}
    .quick-link-icon svg{width:14px;height:14px}
    .quick-link-label{font-size:.65rem}
    /* 礼品卡：2 列 */
    .gift-cards-grid{margin:0 -4px -8px;width:calc(100% + 8px)}
    .gift-card{flex:0 0 calc(50% - 8px);margin:0 4px 8px;padding:10px 6px}
    .gift-card > * + * { margin-top: 6px; }
    .gift-card-img{height:100px}
    .gift-card-name{font-size:.65rem}
    .last-keyword{font-size:.7rem}
    .toast{font-size:.7rem;padding:8px 14px;top:10px;max-width:94vw}
    .theme-toggle{top:10px;right:10px;width:40px;height:40px}
    .theme-toggle svg{width:20px;height:20px}
    .hot-badge{width:22px;height:22px;top:-7px;right:-7px}
    .settings-divider{margin:12px 0}
    .mode-tab{font-size:.78rem;padding:9px 10px;min-height:38px}
    .settings-hint{font-size:.66rem}
    .hint-warning{font-size:.66rem}
    .schedule-time-input { font-size: 0.95rem; padding: 7px 10px; }
    .news-card{padding:18px 14px}
    .news-header-icon{width:30px;height:30px}
    .news-header-icon svg{width:16px;height:16px}
    .news-header-title{font-size:.92rem}
    .news-prompt-banner { padding: 10px 12px; }
    .news-prompt-banner-title { font-size: .74rem; }
    .news-prompt-banner-icon { width: 24px; height: 24px; }
    .news-prompt-banner-icon svg { width: 14px; height: 14px; }
    .news-random-section { padding: 18px 8px 8px; }
    .news-random-section > * + * { margin-top: 12px; }
    .btn-news-random { padding: 16px 20px; font-size: 0.98rem; min-height: 52px; }
    .btn-news-random svg { width: 20px; height: 20px; margin-right: 8px; }
    .news-random-hint { font-size: 0.68rem; }
}
@media(max-width:360px){
    .card{padding:14px 10px}
    .search-card{padding:30px 10px 14px}
    .search-card > * + * { margin-top: 10px; }
    .brand-icon-wrap{width:44px;height:44px}
    .brand-icon-wrap svg{width:22px;height:22px}
    .btn-main{padding:12px 14px;font-size:.85rem;max-width:100%}
    .settings-row > * + * { margin-left: 6px; }
    .settings-row input[type=number]{width:50px;padding:5px;font-size:.72rem}
    .preset-value{font-size:.9rem}
    .preset-desc{font-size:.5rem}
    .gift-cards-grid{margin:0 -3px -6px;width:calc(100% + 6px)}
    .gift-card{flex:0 0 calc(50% - 6px);margin:0 3px 6px;padding:8px 4px}
    .gift-card-img{height:88px}
    .hot-badge{width:20px;height:20px;top:-6px;right:-6px}
    .mode-tab{font-size:.74rem;padding:8px 6px}
    .top-tab{font-size:.8rem;padding:9px 8px}
    .btn-news-random { padding: 14px 16px; font-size: 0.9rem; min-height: 48px; }
}
@media(max-width:320px){
    .quick-link{flex:0 0 calc(50% - 8px);min-height:56px;padding:6px 3px}
    .info-row{flex-direction:column;padding:6px 10px}
    .info-row .info-item{margin:3px 0}
    .mode-tab{font-size:.7rem}
    .top-tab{font-size:.74rem}
}
@media(min-width:900px){
    body{padding:32px 24px}
    .top-tabs-wrap { max-width: 720px; margin: 0 auto 24px; }
    .top-tabs { padding: 6px; border-radius: 20px; }
    .top-tab { padding: 14px 24px; font-size: 1rem; min-height: 48px; }
    .top-tab + .top-tab { margin-left: 6px; }
    .top-tab > * + * { margin-left: 10px; }
    .top-tab svg { width: 19px; height: 19px; }
    .main-wrap { max-width: 1000px; }
    .search-grid {
        display: grid;
        grid-template-columns: minmax(0,0.9fr) minmax(0,1.1fr);
        grid-template-areas:
            "search settings"
            "search links"
            "search gifts";
        gap: 20px;
        align-items: start;
    }
    .search-grid .search-card { grid-area: search; align-self: stretch; justify-content: center; padding: 40px 26px 34px; margin-bottom: 0; }
    .search-grid .settings-card { grid-area: settings; margin-bottom: 0; }
    .search-grid .links-card { grid-area: links; margin-bottom: 0; }
    .search-grid .gift-cards-section { grid-area: gifts; }
    .news-prompt-banner { padding: 14px 18px; }
    .news-prompt-banner-icon { width: 32px; height: 32px; }
    .news-prompt-banner-icon svg { width: 18px; height: 18px; }
    .news-prompt-banner-title { font-size: .85rem; }
    .news-random-section { padding: 32px 20px 20px; }
    .btn-news-random { max-width: 400px; min-height: 60px; font-size: 1.1rem; }
}