:root{--ui-bg-page:#f5f5f7;--ui-bg-el:#fff;--ui-bg-soft:#f2f2f4;--ui-bg-muted:#ececf0;--ui-bg-overlay:rgba(255,255,255,.8);--ui-bg-overlay-strong:rgba(255,255,255,.92);--ui-text-primary:#1d1d1f;--ui-text-secondary:#424245;--ui-text-muted:#6e6e73;--ui-text-on-accent: #fff9f4;--ui-border:rgba(0,0,0,.12);--ui-border-strong:rgba(0,0,0,.2);--ui-accent: #b4522f;--ui-accent-hover: #9e4628;--ui-accent-soft: rgba(180, 82, 47, 0.1);--ui-success:#2f8f6f;--ui-success-soft:rgba(47,143,111,.14);--ui-danger:#c9342f;--ui-danger-soft:rgba(201,52,47,.15);--ui-warning:#b06b00;--ui-warning-soft:rgba(176,107,0,.15);--ui-focus-ring:rgba(0,0,0,.1);--ui-radius-sm:.5rem;--ui-radius-md:.75rem;--ui-radius-lg:1rem;--ui-shadow-1:0 10px 24px -18px rgba(0,0,0,.12);--ui-shadow-2:0 18px 38px -24px rgba(0,0,0,.16);--ui-ease-out:cubic-bezier(0.16,1,0.3,1);font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;line-height:1.5;font-weight:400;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]){--ui-bg-page:#000;--ui-bg-el:#1c1c1e;--ui-bg-soft:#2c2c2e;--ui-bg-muted:#242426;--ui-bg-overlay:rgba(28,28,30,.78);--ui-bg-overlay-strong:rgba(28,28,30,.92);--ui-text-primary:#f5f5f7;--ui-text-secondary:#d2d2d7;--ui-text-muted:#8e8e93;--ui-text-on-accent:#17120e;--ui-border:rgba(255,255,255,.14);--ui-border-strong:rgba(255,255,255,.24);--ui-accent:#df7d52;--ui-accent-hover:#e8926c;--ui-accent-soft:rgba(223,125,82,.14);--ui-success:#30d158;--ui-success-soft:rgba(48,209,88,.22);--ui-danger:#ff453a;--ui-danger-soft:rgba(255,69,58,.24);--ui-warning:#ffd60a;--ui-warning-soft:rgba(255,214,10,.24);--ui-focus-ring:rgba(255,255,255,.18);--ui-shadow-1:0 14px 30px -22px rgba(0,0,0,.72);--ui-shadow-2:0 24px 48px -28px rgba(0,0,0,.78)}}
:root[data-theme="dark"]{--ui-bg-page:#000;--ui-bg-el:#1c1c1e;--ui-bg-soft:#2c2c2e;--ui-bg-muted:#242426;--ui-bg-overlay:rgba(28,28,30,.78);--ui-bg-overlay-strong:rgba(28,28,30,.92);--ui-text-primary:#f5f5f7;--ui-text-secondary:#d2d2d7;--ui-text-muted:#8e8e93;--ui-text-on-accent:#17120e;--ui-border:rgba(255,255,255,.14);--ui-border-strong:rgba(255,255,255,.24);--ui-accent:#df7d52;--ui-accent-hover:#e8926c;--ui-accent-soft:rgba(223,125,82,.14);--ui-success:#30d158;--ui-success-soft:rgba(48,209,88,.22);--ui-danger:#ff453a;--ui-danger-soft:rgba(255,69,58,.24);--ui-warning:#ffd60a;--ui-warning-soft:rgba(255,214,10,.24);--ui-focus-ring:rgba(255,255,255,.18);--ui-shadow-1:0 14px 30px -22px rgba(0,0,0,.72);--ui-shadow-2:0 24px 48px -28px rgba(0,0,0,.78)}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
*:focus{outline:none!important}
button,.btn,.theme-toggle,.menu-btn,.drawer-close{-webkit-tap-highlight-color:transparent;outline:none!important}
*,*::before,*::after{transition:background-color .25s ease,border-color .25s ease,color .25s ease}
html,body{background:var(--ui-bg-page);color:var(--ui-text-primary);min-height:100vh}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
button:active,.btn:active{transform:scale(.97)}
::-webkit-scrollbar{width:8px;height:8px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--ui-border-strong);border-radius:999px;border:2px solid transparent;background-clip:content-box}
@keyframes fade-in{from{opacity:0}to{opacity:1}}
@keyframes slide-up{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.animate-fade-in{animation:fade-in .4s var(--ui-ease-out) both}
.animate-slide-up{animation:slide-up .4s var(--ui-ease-out) both}
.container{max-width:48rem;margin:0 auto;padding:0 1rem}
@media(min-width:640px){.container{padding:0 1.5rem}}

.nav{position:fixed;top:0;left:0;right:0;z-index:50;background:var(--ui-bg-overlay-strong);backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border-bottom:1px solid var(--ui-border);height:3.5rem;display:flex;align-items:center}
.nav-inner{display:flex;align-items:center;justify-content:space-between;width:100%;max-width:72rem;margin:0 auto;padding:0 1rem}
@media(min-width:640px){.nav-inner{padding:0 1.5rem}}
.nav-brand{display:inline-flex;align-items:center;gap:.5rem;text-decoration:none;color:var(--ui-text-primary)}
.nav-brand-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:.375rem;overflow:hidden;flex-shrink:0}
.nav-brand-icon img{width:100%;height:100%;object-fit:cover;border-radius:.375rem}
.nav-brand-text{font-weight:700;font-size:.95rem;letter-spacing:-.02em}
.nav-right{display:flex;align-items:center;gap:.25rem}
.nav-links{display:flex;align-items:center;gap:.25rem}
.nav-link{display:inline-flex;align-items:center;border-radius:.5rem;border:1px solid transparent;padding:.375rem .75rem;font-size:.8125rem;font-weight:500;color:var(--ui-text-muted);text-decoration:none;transition:color .2s var(--ui-ease-out),background-color .2s var(--ui-ease-out),border-color .2s var(--ui-ease-out)}
.nav-link:hover{color:var(--ui-text-primary);border-color:var(--ui-border);background:var(--ui-bg-soft)}
.nav-link.active{color:var(--ui-text-primary);border-color:var(--ui-border-strong);background:var(--ui-bg-soft)}
.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--ui-radius-sm);border:1px solid var(--ui-border);background:var(--ui-bg-el);color:var(--ui-text-secondary);cursor:pointer;padding:0;transition:all .3s var(--ui-ease-out);position:relative;overflow:hidden}
.theme-toggle::before{content:'';position:absolute;inset:0;background:var(--ui-accent-soft);opacity:0;transition:opacity .3s ease;border-radius:inherit}
.theme-toggle:hover{border-color:var(--ui-border-strong);color:var(--ui-text-primary)}
.theme-toggle:hover::before{opacity:1}
.theme-toggle:hover svg{transform:rotate(20deg) scale(1.1)}
.theme-toggle:active{transform:scale(.88)}
.theme-toggle:active svg{transform:rotate(180deg) scale(.9)}
.theme-toggle svg{width:1.125rem;height:1.125rem;transition:transform .5s var(--ui-ease-out);position:relative;z-index:1}
.theme-toggle .icon-sun{display:none}.theme-toggle .icon-moon{display:block}
:root[data-theme="dark"] .theme-toggle .icon-sun{display:block}:root[data-theme="dark"] .theme-toggle .icon-moon{display:none}
.menu-btn{display:none;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--ui-radius-sm);border:1px solid var(--ui-border);background:var(--ui-bg-el);color:var(--ui-text-secondary);cursor:pointer;padding:0;transition:color .2s,background-color .2s,border-color .2s,transform .15s var(--ui-ease-out)}
.menu-btn:hover{border-color:var(--ui-border-strong);color:var(--ui-text-primary)}
.menu-btn svg{width:1.125rem;height:1.125rem}
@media(max-width:639px){.menu-btn{display:inline-flex}.nav-links{display:none}}
.drawer-overlay{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.4);backdrop-filter:blur(4px);opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}
.drawer-overlay.open{opacity:1;visibility:visible}
.drawer{position:fixed;top:0;right:0;bottom:0;z-index:70;width:16rem;max-width:80vw;background:var(--ui-bg-el);border-left:1px solid var(--ui-border);box-shadow:var(--ui-shadow-2);transform:translateX(100%);transition:transform .3s var(--ui-ease-out);display:flex;flex-direction:column}
.drawer.open{transform:translateX(0)}
.drawer-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--ui-border)}
.drawer-title{font-weight:700;font-size:.9375rem}
.drawer-close{width:2rem;height:2rem;border-radius:var(--ui-radius-sm);border:none;background:none;color:var(--ui-text-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:color .2s,background-color .2s}
.drawer-close:hover{color:var(--ui-text-primary);background:var(--ui-bg-soft)}
.drawer-close svg{width:1.125rem;height:1.125rem}
.drawer-nav{padding:.75rem;display:flex;flex-direction:column;gap:.25rem}
.drawer-link{display:flex;align-items:center;gap:.75rem;padding:.625rem .875rem;border-radius:var(--ui-radius-sm);font-size:.9375rem;font-weight:500;color:var(--ui-text-secondary);text-decoration:none;transition:color .2s var(--ui-ease-out),background-color .2s var(--ui-ease-out);border:1px solid transparent}
.drawer-link:hover{color:var(--ui-text-primary);background:var(--ui-bg-soft)}
.drawer-link.active{color:var(--ui-text-primary);background:var(--ui-bg-soft);border-color:var(--ui-border-strong);font-weight:600}
.drawer-link svg{width:1.125rem;height:1.125rem;flex-shrink:0}
.drawer-theme-row{display:flex;align-items:center;justify-content:space-between;padding:.75rem .875rem .25rem;margin-top:.5rem;border-top:1px solid var(--ui-border);font-size:.8125rem;color:var(--ui-text-muted)}

.content{padding-top:5rem;padding-bottom:4rem}
.card{background:var(--ui-bg-el);border:1px solid var(--ui-border);border-radius:var(--ui-radius-md);padding:1.25rem;margin-bottom:1rem;transition:border-color .2s var(--ui-ease-out),box-shadow .25s var(--ui-ease-out),transform .25s var(--ui-ease-out)}
.card:hover{box-shadow:var(--ui-shadow-1)}
.card-title{font-size:.9375rem;font-weight:700;margin-bottom:1rem;letter-spacing:-.02em;display:flex;align-items:center;gap:.5rem}
.info-row{display:flex;align-items:center;justify-content:space-between;padding:.625rem 0;border-bottom:1px solid var(--ui-border);font-size:.8125rem;gap:1rem}
.info-row:last-child{border-bottom:none}
.info-label{color:var(--ui-text-muted);font-weight:500;flex-shrink:0}
.info-value{color:var(--ui-text-primary);font-weight:600;font-variant-numeric:tabular-nums;word-break:break-all;text-align:right;min-width:0}
.key-display{font-family:ui-monospace,SFMono-Regular,'SF Mono',Menlo,monospace;font-size:.75rem;background:var(--ui-bg-soft);padding:.625rem .75rem;border-radius:var(--ui-radius-sm);word-break:break-all;line-height:1.5;margin:.5rem 0;border:1px solid var(--ui-border)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;padding:.5rem 1rem;border-radius:var(--ui-radius-sm);font-size:.8125rem;font-weight:500;cursor:pointer;transition:color .2s var(--ui-ease-out),background-color .2s var(--ui-ease-out),border-color .2s var(--ui-ease-out),transform .15s var(--ui-ease-out);border:1px solid var(--ui-border);background:var(--ui-bg-el);color:var(--ui-text-secondary);font-family:inherit;white-space:nowrap}
.btn:hover{border-color:var(--ui-border-strong);color:var(--ui-text-primary)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn-primary{background:var(--ui-accent);color:var(--ui-text-on-accent);border-color:var(--ui-accent)}
.btn-primary:hover{background:var(--ui-accent-hover);border-color:var(--ui-accent-hover);color:var(--ui-text-on-accent)}
.btn-danger{background:var(--ui-danger-soft);color:var(--ui-danger);border-color:transparent}
.btn-danger:hover{opacity:.85}
.btn-sm{padding:.375rem .75rem;font-size:.75rem}
.btn-logout{margin-left:auto}
.form-group{margin-bottom:.75rem}
.form-label{display:block;font-size:.8125rem;font-weight:600;color:var(--ui-text-secondary);margin-bottom:.375rem}
.form-input{width:100%;padding:.5rem .75rem;border-radius:var(--ui-radius-sm);border:1px solid var(--ui-border);background:var(--ui-bg-el);color:var(--ui-text-primary);font-size:.875rem;transition:border-color .2s var(--ui-ease-out),box-shadow .2s var(--ui-ease-out);font-family:inherit}
.form-input:focus{border-color:var(--ui-accent);box-shadow:0 0 0 3px var(--ui-focus-ring)}
.form-input::placeholder{color:var(--ui-text-muted)}
.log-table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -.25rem;padding:0 .25rem}
.log-table{width:100%;border-collapse:collapse;font-size:.8125rem;min-width:24rem}
.log-table th{text-align:left;font-weight:600;color:var(--ui-text-muted);padding:.625rem .75rem;border-bottom:1px solid var(--ui-border);font-size:.75rem;white-space:nowrap}
.log-table td{padding:.625rem .75rem;border-bottom:1px solid var(--ui-border);color:var(--ui-text-primary)}
.log-table tr:last-child td{border-bottom:none}
.log-table tr{transition:background-color .15s ease}
.log-table tbody tr:hover{background:var(--ui-bg-soft)}
.footer{border-top:1px solid var(--ui-border);padding:2rem 0;font-size:.8125rem;color:var(--ui-text-muted)}
.footer-inner{max-width:72rem;margin:0 auto;padding:0 1rem;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem}
@media(min-width:640px){.footer-inner{padding:0 1.5rem}}
.footer-links{display:flex;gap:1rem;flex-wrap:wrap}
.footer-link{color:var(--ui-text-muted);text-decoration:none;transition:color .2s}
.footer-link:hover{color:var(--ui-text-primary)}

/* ===== 动画增强（不影响日夜切换按钮动效与功能） ===== */
:root{--ease-spring:cubic-bezier(.34,1.56,.64,1)}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes pulse-soft{0%,100%{opacity:1}50%{opacity:.45}}
@keyframes shine-sweep{0%{transform:translateX(-130%) skewX(-18deg)}100%{transform:translateX(260%) skewX(-18deg)}}
@keyframes fade-down{from{opacity:0;transform:translateY(-14px)}to{opacity:1;transform:translateY(0)}}
@keyframes zoom-in{from{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}
@keyframes shimmer-sweep{0%{transform:translateX(-100%)}100%{transform:translateX(100%)}}
.anim-float{animation:float 4s ease-in-out infinite;will-change:transform}
.anim-fade-down{animation:fade-down .5s var(--ui-ease-out) both}
.anim-zoom-in{animation:zoom-in .45s var(--ease-spring) both}
.nav{animation:fade-down .45s var(--ui-ease-out) both}
.card{will-change:transform}
.card:hover{transform:translateY(-2px);box-shadow:var(--ui-shadow-2);transition:border-color .2s var(--ui-ease-out),box-shadow .3s var(--ui-ease-out),transform .3s var(--ease-spring)}
.btn{position:relative;overflow:hidden;will-change:transform}
.btn::after{content:'';position:absolute;top:0;left:0;width:45%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.4),transparent);transform:translateX(-130%) skewX(-18deg);pointer-events:none}
.btn:not(:disabled):hover{transform:translateY(-1px)}
.btn:not(:disabled):hover::after{animation:shine-sweep .75s var(--ui-ease-out)}
.btn:not(:disabled):active{transform:translateY(0) scale(.97)}
.log-table tbody tr{animation:slide-up .32s var(--ui-ease-out) both}
.log-table tbody tr:nth-child(1){animation-delay:0ms}
.log-table tbody tr:nth-child(2){animation-delay:40ms}
.log-table tbody tr:nth-child(3){animation-delay:80ms}
.log-table tbody tr:nth-child(4){animation-delay:120ms}
.log-table tbody tr:nth-child(5){animation-delay:160ms}
.log-table tbody tr:nth-child(6){animation-delay:200ms}
.skeleton{position:relative;overflow:hidden}
.skeleton::after{content:'';position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--ui-bg-el),transparent);animation:shimmer-sweep 1.5s ease-in-out infinite;will-change:transform}
/* 暗色模式主按钮修复：白底配深色文字，避免看不清 */
:root[data-theme="dark"] .btn-primary{color:#1d1d1f}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .btn-primary{color:#1d1d1f}}
/* 清空记录按钮微调 */
#clear-logs-btn{opacity:.7;transition:opacity .2s ease}
#clear-logs-btn:hover{opacity:1}
#clear-logs-btn:disabled{opacity:.4;cursor:not-allowed}

/* ===== 小组件与交互增强 ===== */
.ui-scroll-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:999;pointer-events:none}
.ui-scroll-progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--ui-accent),var(--ui-text-muted));border-radius:0 2px 2px 0;transition:width .12s linear;will-change:width}
.ui-back-top{
  position:fixed;right:1.25rem;bottom:1.5rem;z-index:200;
  width:2.75rem;height:2.75rem;border-radius:50%;border:1px solid var(--ui-border);
  background:transparent;color:var(--ui-text-secondary);
  backdrop-filter:none;-webkit-backdrop-filter:none;
  display:flex;align-items:center;justify-content:center;box-shadow:none;
  opacity:0;visibility:hidden;transform:translateY(14px);cursor:pointer;padding:0;
  transition:opacity .3s var(--ui-ease-out),transform .3s var(--ui-ease-out),visibility .3s,border-color .3s var(--ui-ease-out),box-shadow .3s var(--ui-ease-out),color .3s var(--ui-ease-out);
}
.ui-back-top.show{opacity:1;visibility:visible;transform:translateY(0)}
.ui-back-top:hover{color:var(--ui-text-primary);border-color:var(--ui-border-strong)}
.ui-back-top:active{transform:translateY(0) scale(.9)}
.ui-back-top svg{width:1.125rem;height:1.125rem}

/* 卡片悬浮更跟手 */
.card{transition:border-color .2s var(--ui-ease-out),box-shadow .3s var(--ui-ease-out),transform .3s var(--ease-spring)}
.card:hover{box-shadow:var(--ui-shadow-2);transform:translateY(-2px)}
.card:active{transform:translateY(0) scale(.99);transition-duration:.08s}

/* API Key 展示区发光 */
.key-display{transition:box-shadow .3s var(--ui-ease-out),border-color .3s var(--ui-ease-out)}
.key-display:hover{border-color:var(--ui-accent);box-shadow:0 0 0 3px var(--ui-focus-ring)}

/* 统计数字等宽防抖动 */
.info-value{font-variant-numeric:tabular-nums}

@media (prefers-reduced-motion:reduce){
  .ui-back-top{transition:none!important}
}

