/* 配色主题共用同一套内容、数据和交互。 */
:root[data-theme="sandglass"]{
  --ink:#2f2925;
  --muted:#655b53;
  --line:rgba(255,255,255,.62);
  --accent:#a6562b;
  --accent-dark:#713b22;
  --accent-soft:rgba(255,188,119,.28);
  --glass:rgba(255,250,242,.54);
  --glass-strong:rgba(255,253,248,.77);
  --glass-edge:rgba(255,255,255,.82);
  --glass-shadow:0 16px 36px rgba(77,48,27,.14),inset 0 1px 0 rgba(255,255,255,.83);
  --field-edge:#d9c9b9;
  --primary:#2d2926;
  --primary-hover:#4a3830;
  --outer-bg:linear-gradient(130deg,#a88d75,#ddcab4 42%,#b99f86);
  --shell-bg:radial-gradient(circle at 88% 260px,rgba(255,168,77,.52),transparent 210px),radial-gradient(circle at 3% 690px,rgba(255,255,255,.65),transparent 270px),linear-gradient(165deg,#d0b89f 0%,#f2e7d9 45%,#e1cbb7 100%);
}
:root[data-theme="roseglass"]{
  --ink:#43343a;
  --muted:#78666b;
  --line:rgba(255,255,255,.68);
  --accent:#a85064;
  --accent-dark:#78374a;
  --accent-soft:rgba(243,156,174,.32);
  --glass:rgba(255,245,246,.57);
  --glass-strong:rgba(255,252,252,.78);
  --glass-edge:rgba(255,255,255,.85);
  --glass-shadow:0 16px 36px rgba(110,54,71,.14),inset 0 1px 0 rgba(255,255,255,.87);
  --field-edge:#e6c8d0;
  --primary:#4b323b;
  --primary-hover:#69404e;
  --outer-bg:linear-gradient(135deg,#d5aeb5,#f2d9dc 50%,#d7adb7);
  --shell-bg:radial-gradient(circle at 88% 270px,rgba(229,113,139,.38),transparent 220px),radial-gradient(circle at 0% 720px,rgba(255,255,255,.76),transparent 280px),linear-gradient(165deg,#e8c6cb 0%,#fbebeb 49%,#f0d4d8 100%);
}
:root[data-theme="pastelglass"]{
  --ink:#30314d;
  --muted:#696b82;
  --line:rgba(221,224,244,.87);
  --purple:#7472c4;
  --purple-dark:#5b589f;
  --lavender:#f0edff;
  --blue:#eaf5ff;
  --accent:#797bc8;
  --accent-dark:#5b599f;
  --accent-soft:rgba(191,185,239,.4);
  --glass:rgba(255,255,255,.7);
  --glass-strong:rgba(255,255,255,.84);
  --glass-edge:rgba(255,255,255,.94);
  --glass-shadow:0 13px 32px rgba(104,106,170,.12),inset 0 1px 0 rgba(255,255,255,.9);
  --field-edge:#d9dcef;
  --primary:linear-gradient(110deg,#637fc9,#8a70c4);
  --primary-hover:linear-gradient(110deg,#5470bb,#785db3);
  --outer-bg:linear-gradient(135deg,#dceeff 0%,#faeaf5 54%,#e6e4ff 100%);
  --shell-bg:radial-gradient(circle at 16% 235px,rgba(123,190,249,.43),transparent 230px),radial-gradient(circle at 88% 570px,rgba(248,191,220,.49),transparent 270px),linear-gradient(165deg,#fffafb 0%,#f4f8ff 38%,#fdf5fc 74%,#f2f7ff 100%);
}
:root[data-theme="sandglass"] .visual-rose,
:root[data-theme="sandglass"] .visual-pastel,
:root[data-theme="roseglass"] .visual-sand,
:root[data-theme="roseglass"] .visual-pastel,
:root[data-theme="pastelglass"] .visual-sand,
:root[data-theme="pastelglass"] .visual-rose{display:none}
html[data-theme] body{background:var(--outer-bg);color:var(--ink)}
html[data-theme] .app-shell,
html[data-theme] .auth-shell{background:var(--shell-bg);box-shadow:0 0 80px rgba(48,33,31,.16)}
html[data-theme] .topbar,
html[data-theme] .mobile-nav{background:var(--glass-strong);border-color:var(--glass-edge);box-shadow:0 8px 22px rgba(69,48,43,.06);backdrop-filter:blur(22px) saturate(115%)}
html[data-theme] .topbar{border-bottom:1px solid var(--glass-edge)}
html[data-theme] .mobile-nav{border-top:1px solid var(--glass-edge);box-shadow:0 -10px 26px rgba(69,48,43,.1)}
html[data-theme] .brand-mark{background:linear-gradient(140deg,var(--accent),var(--accent-dark));box-shadow:0 8px 15px rgba(70,42,32,.2);border:1px solid rgba(255,255,255,.5)}
html[data-theme] .sidebar-brand small,
html[data-theme] .auth-brand small{color:var(--muted)}
html[data-theme] .topbar-person{background:var(--glass);border:1px solid var(--glass-edge);color:var(--accent-dark);box-shadow:inset 0 1px rgba(255,255,255,.7)}
html[data-theme] .topbar-person span{background:var(--accent-soft);color:var(--accent-dark)}
html[data-theme] .nav-item{color:#81746f}
html[data-theme] .nav-item.active{color:var(--accent-dark);background:var(--accent-soft)}
html[data-theme] .nav-item:hover{color:var(--accent-dark);background:var(--glass)}
html[data-theme] .eyebrow,
html[data-theme] .select-card .code{color:var(--accent-dark)}
html[data-theme] .page-head h1{font-weight:800}
html[data-theme] .page-head p:not(.eyebrow),
html[data-theme] .hero p:not(.eyebrow){color:var(--muted)}
html[data-theme] .home-visual{height:164px;border:2px solid var(--glass-edge);border-radius:24px;box-shadow:0 16px 32px rgba(70,43,31,.17)}
html[data-theme] .home-visual img{object-position:center 54%}
html[data-theme] .home-visual:after{background:linear-gradient(transparent,rgba(35,25,23,.48))}
html[data-theme] .hero,
html[data-theme] .card,
html[data-theme] .record-row,
html[data-theme] .select-card,
html[data-theme] .empty,
html[data-theme] .auth-card,
html[data-theme] .modal-card{border:1px solid var(--glass-edge);background:var(--glass);box-shadow:var(--glass-shadow);backdrop-filter:blur(20px) saturate(115%)}
html[data-theme] .hero{padding:21px 20px;border-radius:25px}
html[data-theme] .hero h2{font-size:21px}
html[data-theme] .card,
html[data-theme] .record-row,
html[data-theme] .select-card{border-radius:20px}
html[data-theme] .card:has(form){background:var(--glass-strong)}
html[data-theme] .metric-card .metric{color:var(--accent-dark)}
html[data-theme] .system-note{color:var(--muted)}
html[data-theme] .empty{color:var(--muted)}
html[data-theme] .button{border-radius:999px}
html[data-theme] .button.primary{background:var(--primary);color:#fff;box-shadow:0 8px 18px rgba(43,30,27,.2)}
html[data-theme] .button.primary:hover{background:var(--primary-hover)}
html[data-theme] .button.secondary,
html[data-theme] .button.ghost{border:1px solid var(--glass-edge);background:rgba(255,255,255,.48);color:var(--accent-dark);box-shadow:inset 0 1px rgba(255,255,255,.8)}
html[data-theme] .text-button,
html[data-theme] .link-button{color:var(--accent-dark)}
html[data-theme] .pill{border:1px solid var(--glass-edge);background:rgba(255,255,255,.56);color:var(--muted);box-shadow:inset 0 1px rgba(255,255,255,.75)}
html[data-theme] .pill.active{border-color:var(--accent);background:var(--accent-dark);color:#fff}
html[data-theme] .select-card:hover{border-color:var(--accent);background:var(--glass-strong)}
html[data-theme] input,
html[data-theme] select,
html[data-theme] textarea{border-color:var(--field-edge);background:rgba(255,255,255,.86);color:var(--ink)}
html[data-theme] input:focus,
html[data-theme] select:focus,
html[data-theme] textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
html[data-theme] .help-panel,
html[data-theme] .feedback,
html[data-theme] .notice,
html[data-theme] .privacy-note{border:1px solid var(--glass-edge);background:var(--glass-strong);color:var(--muted);box-shadow:inset 0 1px rgba(255,255,255,.7)}
html[data-theme] .help-panel .example,
html[data-theme] .help-panel .example.bad{background:rgba(255,255,255,.65)}
html[data-theme] .tag{background:var(--accent-soft);color:var(--accent-dark)}
html[data-theme] .progress-row strong{color:var(--accent-dark)}
html[data-theme] .progress-track{background:rgba(255,255,255,.5)}
html[data-theme] .progress-track>span{background:var(--accent)}
html[data-theme] .modal-layer{background:rgba(45,31,33,.55)}
html[data-theme] .modal-card{background:var(--glass-strong)}
html[data-theme] .toast{background:var(--primary)}
html[data-theme] .auth-visual{width:100%;height:200px;margin:18px 0 0;border:2px solid var(--glass-edge);border-radius:24px;object-position:center 52%;box-shadow:0 16px 32px rgba(70,43,31,.14)}
html[data-theme] .auth-panel{position:relative;z-index:1;margin-top:-17px}
html[data-theme] .auth-card{border-radius:24px;background:var(--glass-strong)}
html[data-theme] .form-error{color:#9c3445}
:root[data-theme="sandglass"] .hero{background:linear-gradient(135deg,rgba(255,252,246,.68),rgba(255,232,203,.37))}
:root[data-theme="roseglass"] .hero{background:linear-gradient(135deg,rgba(255,250,250,.68),rgba(250,206,217,.42))}
:root[data-theme="sandglass"] .brand-mark{background:linear-gradient(140deg,#3f342d,#b96936)}
:root[data-theme="roseglass"] .brand-mark{background:linear-gradient(140deg,#90485d,#db8a98)}
:root[data-theme="roseglass"] .nav-item{color:#927d83}
:root[data-theme="pastelglass"] .brand-mark{background:linear-gradient(145deg,#6a9fe2 0%,#8b87d9 55%,#d49bcf 100%);box-shadow:0 8px 17px rgba(95,112,190,.19)}
:root[data-theme="pastelglass"] .topbar-person.active{border-color:#bbb9e8;background:#f2efff}
:root[data-theme="pastelglass"] .nav-item{color:#85859d}
:root[data-theme="pastelglass"] .nav-item.active{color:#5d5aa8;background:linear-gradient(145deg,#e6f3ff,#f7e3f0)}
:root[data-theme="pastelglass"] .nav-item:hover{background:#eff1ff;color:#5d5aa8}
:root[data-theme="pastelglass"] .hero{background:linear-gradient(128deg,rgba(255,255,255,.84),rgba(226,238,255,.65) 50%,rgba(255,222,239,.66))}
:root[data-theme="pastelglass"] .home-visual{box-shadow:0 15px 30px rgba(91,117,185,.16)}
:root[data-theme="pastelglass"] .home-visual img{object-position:center 52%}
:root[data-theme="pastelglass"] .home-visual:after{background:linear-gradient(transparent 58%,rgba(58,57,104,.29))}
:root[data-theme="pastelglass"] .home-visual span{padding:4px 9px;border-radius:999px;background:rgba(75,73,126,.57);backdrop-filter:blur(8px)}
:root[data-theme="pastelglass"] .metric-card:nth-child(1){background:linear-gradient(145deg,rgba(255,255,255,.86),rgba(221,238,255,.7))}
:root[data-theme="pastelglass"] .metric-card:nth-child(2){background:linear-gradient(145deg,rgba(255,255,255,.86),rgba(252,221,237,.67))}
:root[data-theme="pastelglass"] .metric-card:nth-child(3){background:linear-gradient(145deg,rgba(255,255,255,.86),rgba(232,224,254,.72))}
:root[data-theme="pastelglass"] .button.secondary{background:rgba(242,232,253,.75);color:#59589a}
:root[data-theme="pastelglass"] .notice{background:rgba(255,250,238,.89);color:#765f4a;border-color:#f1e5cc}
:root[data-theme="pastelglass"] .feedback{background:rgba(244,242,255,.86)}
:root[data-theme="pastelglass"] .privacy-note{background:rgba(250,246,255,.86);color:#67627e}
:root[data-theme="pastelglass"] .help-panel .example.bad{background:rgba(255,244,248,.9)}
:root[data-theme="pastelglass"] .tag.gray{background:#f1f1f7;color:#75768a}
:root[data-theme="pastelglass"] .progress-track>span{background:linear-gradient(90deg,#79b7ed,#b494e3)}
:root[data-theme="pastelglass"] .practice-modes label{border-color:#dde0f1;background:rgba(255,255,255,.85)}
:root[data-theme="pastelglass"] .practice-modes input{accent-color:#7774c9}
:root[data-theme="pastelglass"] label{color:#4e506d}
:root[data-theme="pastelglass"] input::placeholder,
:root[data-theme="pastelglass"] textarea::placeholder{color:#9698ad}
:root[data-theme="pastelglass"] .form-error{color:#ad4d72}
@supports not (backdrop-filter:blur(1px)){
  html[data-theme] .hero,
  html[data-theme] .card,
  html[data-theme] .record-row,
  html[data-theme] .select-card,
  html[data-theme] .auth-card{background:#fffaf8}
}
