/* ============================================================
   小维基 · Material Design 3 (Material You) 主题
   类名与原 style.css 完全兼容，三个页面无需改 HTML 即可生效
   ============================================================ */

:root{
  /* MD3 基线色板（紫色主色调 / Material You baseline） */
  --md-primary:#6750A4;
  --md-on-primary:#FFFFFF;
  --md-primary-container:#EADDFF;
  --md-on-primary-container:#21005D;

  --md-secondary:#625B71;
  --md-secondary-container:#E8DEF8;
  --md-on-secondary-container:#1D192B;

  --md-tertiary:#7D5260;
  --md-tertiary-container:#FFD8E4;

  --md-error:#B3261E;
  --md-on-error:#FFFFFF;
  --md-error-container:#F9DEDC;
  --md-on-error-container:#410E0B;

  --md-success:#146C2E;
  --md-success-container:#C6F6D6;

  /* 表面层级 surface containers */
  --md-surface:#FEF7FF;
  --md-surface-dim:#DED8E1;
  --md-surface-bright:#FEF7FF;
  --md-surface-container-lowest:#FFFFFF;
  --md-surface-container-low:#F7F2FA;
  --md-surface-container:#F3EDF7;
  --md-surface-container-high:#ECE6F0;
  --md-surface-container-highest:#E6E0E9;

  --md-on-surface:#1D1B20;
  --md-on-surface-variant:#49454F;
  --md-outline:#79747E;
  --md-outline-variant:#CAC4D0;
  --md-scrim:rgba(0,0,0,0.32);

  /* 别名（兼容原变量名） */
  --bg:var(--md-surface-container-low);
  --card:var(--md-surface-container-lowest);
  --text:var(--md-on-surface);
  --muted:var(--md-on-surface-variant);
  --border:var(--md-outline-variant);
  --primary:var(--md-primary);
  --danger:var(--md-error);
  --ok:var(--md-success);

  /* 圆角 */
  --r-xs:8px;
  --r-sm:12px;
  --r-md:16px;
  --r-lg:28px;
  --r-full:999px;

  /* 阴影 elevation */
  --e1:0 1px 2px rgba(0,0,0,.12),0 1px 3px 1px rgba(0,0,0,.06);
  --e2:0 1px 2px rgba(0,0,0,.14),0 2px 6px 2px rgba(0,0,0,.08);
  --e3:0 4px 8px 3px rgba(0,0,0,.10),0 1px 3px rgba(0,0,0,.12);

  --font:'Roboto','Segoe UI','Noto Sans SC','PingFang SC','Microsoft YaHei',sans-serif;
}

/* 跟随系统深色模式 */
@media(prefers-color-scheme:dark){
  :root{
    --md-primary:#D0BCFF;
    --md-on-primary:#381E72;
    --md-primary-container:#4F378B;
    --md-on-primary-container:#EADDFF;

    --md-secondary:#CCC2DC;
    --md-secondary-container:#4A4458;
    --md-on-secondary-container:#E8DEF8;

    --md-tertiary:#EFB8C8;
    --md-tertiary-container:#633B48;

    --md-error:#F2B8B5;
    --md-on-error:#601410;
    --md-error-container:#8C1D18;
    --md-on-error-container:#F9DEDC;

    --md-success:#6DD58C;
    --md-success-container:#0F5223;

    --md-surface:#141218;
    --md-surface-dim:#141218;
    --md-surface-bright:#3B383E;
    --md-surface-container-lowest:#0F0D13;
    --md-surface-container-low:#1D1B20;
    --md-surface-container:#211F26;
    --md-surface-container-high:#2B2930;
    --md-surface-container-highest:#36343B;

    --md-on-surface:#E6E0E9;
    --md-on-surface-variant:#CAC4D0;
    --md-outline:#938F99;
    --md-outline-variant:#49454F;
  }
}

*{box-sizing:border-box}

body{
  margin:0;
  font-family:var(--font);
  background:var(--md-surface-container-low);
  color:var(--md-on-surface);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  letter-spacing:.01em;
}

a{color:var(--md-primary);text-decoration:none;font-weight:500}
a:hover{text-decoration:underline}

/* ---------- Top App Bar ---------- */
.topbar{
  display:flex;align-items:center;justify-content:space-between;
  padding:0 20px;height:64px;
  background:var(--md-surface);
  color:var(--md-on-surface);
  border-bottom:1px solid var(--md-outline-variant);
  position:sticky;top:0;z-index:10;
  transition:box-shadow .2s,background .2s;
}
.brand{font-weight:600;font-size:20px;color:var(--md-on-surface);letter-spacing:.01em}
.brand:hover{text-decoration:none;opacity:.85}
.topbar-actions{display:flex;align-items:center;gap:10px}

.lock-status{
  font-size:12px;font-weight:500;color:var(--md-on-surface-variant);
  background:var(--md-surface-container-high);
  padding:5px 14px;border-radius:var(--r-full);border:none;
}
.lock-status.ok{color:var(--md-success);background:var(--md-success-container)}

/* ---------- 容器 ---------- */
.container{max-width:840px;margin:0 auto;padding:28px 20px 80px}
.hero h1{margin:0 0 8px;font-size:28px;font-weight:400;letter-spacing:-.01em;color:var(--md-on-surface)}
.muted{color:var(--md-on-surface-variant)}

/* ---------- Card / Panel ---------- */
.panel{
  background:var(--md-surface-container-low);
  border:1px solid var(--md-outline-variant);
  border-radius:var(--r-md);
  padding:22px;margin-top:18px;
}
.panel h2{margin:0 0 14px;font-size:18px;font-weight:600;letter-spacing:.01em;color:var(--md-on-surface)}

/* ---------- Buttons (MD3) ---------- */
.btn{
  position:relative;overflow:hidden;
  display:inline-flex;align-items:center;justify-content:center;
  gap:6px;height:40px;padding:0 22px;border-radius:var(--r-full);
  border:1px solid var(--md-outline);background:transparent;color:var(--md-primary);
  cursor:pointer;font-size:14px;font-weight:600;font-family:inherit;letter-spacing:.04em;
  transition:background .15s,box-shadow .2s,transform .08s;
  user-select:none;-webkit-tap-highlight-color:transparent;
}
.btn::after{
  content:'';position:absolute;inset:0;border-radius:inherit;
  background:currentColor;opacity:0;transition:opacity .15s;
}
.btn:hover::after{opacity:.08}
.btn:active{transform:scale(.98)}
.btn:active::after{opacity:.12}
.btn:focus-visible{outline:2px solid var(--md-primary);outline-offset:2px}

.btn-primary{background:var(--md-primary);border-color:transparent;color:var(--md-on-primary);color:var(--md-surface)}
.btn-primary{color:var(--md-on-primary)}
.btn-primary::after{background:var(--md-on-primary)}

.btn-danger{background:var(--md-error);border-color:transparent;color:var(--md-on-error)}
.btn-danger::after{background:var(--md-on-error)}

.btn-ghost{background:transparent;border-color:transparent;color:var(--md-primary)}

.btn-sm{height:32px;padding:0 14px;font-size:13px}

/* ---------- Text Fields (MD3 Outlined) ---------- */
input,textarea,select{
  width:100%;padding:12px 14px;
  border:1px solid var(--md-outline);border-radius:var(--r-xs);
  font-size:15px;font-family:inherit;background:transparent;color:var(--md-on-surface);
  transition:border-color .15s,box-shadow .15s;
}
input::placeholder,textarea::placeholder{color:var(--md-on-surface-variant);opacity:.7}
input:hover,textarea:hover,select:hover{border-color:var(--md-on-surface)}
input:focus,textarea:focus,select:focus{
  outline:none;border:2px solid var(--md-primary);padding:11px 13px;
}
textarea{min-height:240px;resize:vertical;line-height:1.6}

label{display:block;font-size:13px;font-weight:500;color:var(--md-on-surface-variant);margin:14px 0 6px;letter-spacing:.02em}

/* file input 美化 */
input[type=file]{padding:10px 12px;background:var(--md-surface-container);border-radius:var(--r-xs)}

.inline-form{display:flex;gap:10px;margin-top:16px}
.inline-form input{flex:1}

/* ---------- Lists ---------- */
.entry-list,.recent-list{list-style:none;margin:0;padding:0}
.entry-list li,.recent-list li{
  padding:14px 4px;border-bottom:1px solid var(--md-outline-variant);
  display:flex;justify-content:space-between;gap:12px;align-items:baseline;
  transition:background .12s;border-radius:var(--r-xs);
}
.entry-list li:hover,.recent-list li:hover{background:var(--md-surface-container)}
.entry-list li:last-child,.recent-list li:last-child{border-bottom:0}

/* ---------- Gate (MD3 Dialog) ---------- */
.gate{
  position:fixed;inset:0;background:var(--md-scrim);
  display:flex;align-items:center;justify-content:center;padding:20px;z-index:100;
  animation:fadeIn .18s ease;
}
.gate[hidden]{display:none}
.gate-card{
  background:var(--md-surface-container-high);
  border-radius:var(--r-lg);padding:28px;width:100%;max-width:400px;
  box-shadow:var(--e3);
  animation:popIn .22s cubic-bezier(.2,.8,.2,1);
}
.gate-card h2{margin:0 0 6px;font-size:22px;font-weight:500;color:var(--md-on-surface)}
.gate-card .err{color:var(--md-error);font-size:13px;min-height:18px;margin-top:8px}

@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes popIn{from{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}

/* ---------- Article ---------- */
.article-title{font-size:32px;font-weight:400;margin:0 0 6px;letter-spacing:-.01em;color:var(--md-on-surface)}
.article-meta{font-size:13px;color:var(--md-on-surface-variant);margin-bottom:20px}
.article-body{white-space:pre-wrap;word-break:break-word;font-size:16px;line-height:1.75;color:var(--md-on-surface)}

/* ---------- Tabs / Segmented ---------- */
.tabs{display:flex;gap:6px;border-bottom:1px solid var(--md-outline-variant);margin-bottom:18px;flex-wrap:wrap}
.tab{
  position:relative;overflow:hidden;padding:12px 18px;border:0;background:transparent;
  cursor:pointer;font-size:14px;font-weight:600;letter-spacing:.03em;
  color:var(--md-on-surface-variant);border-bottom:3px solid transparent;font-family:inherit;
  border-radius:var(--r-xs) var(--r-xs) 0 0;transition:color .15s,background .12s;
}
.tab:hover{background:var(--md-surface-container);color:var(--md-on-surface)}
.tab.active{color:var(--md-primary);border-bottom-color:var(--md-primary)}

/* ---------- Revisions ---------- */
.rev{
  border:1px solid var(--md-outline-variant);border-radius:var(--r-sm);
  padding:14px 16px;margin-bottom:12px;background:var(--md-surface-container-low);
}
.rev-head{display:flex;justify-content:space-between;gap:10px;font-size:13px;color:var(--md-on-surface-variant);margin-bottom:8px;flex-wrap:wrap}
.rev-body{white-space:pre-wrap;font-size:14px;max-height:180px;overflow:auto;color:var(--md-on-surface)}

/* ---------- Layout helpers ---------- */
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.spacer{flex:1}

/* ---------- Table ---------- */
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--md-outline-variant);vertical-align:top}
th{color:var(--md-on-surface-variant);font-weight:600;font-size:13px;letter-spacing:.03em}
tbody tr:hover{background:var(--md-surface-container)}

/* ---------- Badge / Chip ---------- */
.badge{font-size:12px;font-weight:600;padding:4px 12px;border-radius:var(--r-full);background:var(--md-surface-container-high);color:var(--md-on-surface-variant)}
.badge.ok{background:var(--md-success-container);color:var(--md-success)}
.badge.del{background:var(--md-error-container);color:var(--md-on-error-container)}

/* ---------- Snackbar (MD3) ---------- */
.toast{
  position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(12px);
  background:var(--md-on-surface);color:var(--md-surface);
  padding:14px 22px;border-radius:var(--r-xs);font-size:14px;z-index:200;
  box-shadow:var(--e3);opacity:0;transition:opacity .22s,transform .22s;pointer-events:none;
}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

.hidden{display:none !important}

@media(max-width:600px){
  .topbar{height:56px;padding:0 16px}
  .brand{font-size:18px}
  .container{padding:18px 14px 60px}
  .inline-form{flex-direction:column}
  .hero h1{font-size:24px}
  .article-title{font-size:26px}
}
