/* Global theme switcher: light / dark / Wang Chenyu */
:root,
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#f5f5f7;--bg-soft:#f2f2f7;--card:#ffffff;--card-2:#f9f9fb;
  --bg-card:#ffffff;--bg-secondary:#f2f2f7;--panel:#ffffff;--panel2:#f2f2f7;
  --ink:#1d1d1f;--ink-soft:#6e6e73;--ink-muted:#8e8e93;
  --text-primary:#1d1d1f;--text-secondary:#6e6e73;--text-tertiary:#8e8e93;--muted:#8e8e93;
  --line:#d1d1d6;--line-light:#e5e5ea;--border:#d1d1d6;--border-light:#e5e5ea;
  --accent:#007aff;--accent-light:#e8f2ff;--accent-2:#5856d6;--accent-2-light:#f0efff;
  --brand:#007aff;--brand-light:#e8f2ff;--theme:#007aff;--theme-soft:#e8f2ff;--blue:#007aff;--blue-soft:#e8f2ff;
  --green:#34c759;--green-light:#e9f9ee;--green-soft:#e9f9ee;
  --amber:#ff9500;--amber-light:#fff3e0;--orange:#ff9500;--orange-light:#fff3e0;--orange-soft:#fff3e0;
  --red:#ff3b30;--red-light:#ffecea;--red-soft:#ffecea;
  --pink:#af52de;--pink-light:#f5e6ff;--purple:#5856d6;--purple-light:#f0efff;
  --cyan:#5ac8fa;--cyan-light:#e6f7ff;--teal:#5ac8fa;--teal-light:#e6f7ff;
  --code-bg:#f2f2f7;
  --shadow-xs:0 1px 2px 0 rgba(0,0,0,0.04);
  --shadow-sm:0 2px 8px rgba(0,0,0,0.04);
  --shadow:0 4px 16px rgba(0,0,0,0.06);
  --shadow-md:0 8px 24px rgba(0,0,0,0.08);
  --shadow-lg:0 16px 48px rgba(0,0,0,0.10);
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#000000;--bg-soft:#1c1c1e;--card:#1c1c1e;--card-2:#2c2c2e;
  --bg-card:#1c1c1e;--bg-secondary:#2c2c2e;--panel:#1c1c1e;--panel2:#2c2c2e;
  --ink:#f5f5f7;--ink-soft:#a1a1a6;--ink-muted:#8e8e93;
  --text-primary:#f5f5f7;--text-secondary:#a1a1a6;--text-tertiary:#8e8e93;--muted:#8e8e93;
  --line:#3a3a3c;--line-light:#2c2c2e;--border:#3a3a3c;--border-light:#2c2c2e;
  --accent:#2e8dff;--accent-light:rgba(46,141,255,0.12);--accent-2:#bf5af2;--accent-2-light:rgba(191,90,242,0.12);
  --brand:#2e8dff;--brand-light:rgba(46,141,255,0.12);--theme:#2e8dff;--theme-soft:rgba(46,141,255,0.12);--blue:#2e8dff;--blue-soft:rgba(46,141,255,0.12);
  --green:#30d158;--green-light:rgba(48,209,88,0.12);--green-soft:rgba(48,209,88,0.12);
  --amber:#ff9f0a;--amber-light:rgba(255,159,10,0.12);--orange:#ff9f0a;--orange-light:rgba(255,159,10,0.12);--orange-soft:rgba(255,159,10,0.12);
  --red:#ff453a;--red-light:rgba(255,69,58,0.12);--red-soft:rgba(255,69,58,0.12);
  --pink:#bf5af2;--pink-light:rgba(191,90,242,0.12);--purple:#bf5af2;--purple-light:rgba(191,90,242,0.12);
  --cyan:#64d2ff;--cyan-light:rgba(100,210,255,0.12);--teal:#64d2ff;--teal-light:rgba(100,210,255,0.12);
  --code-bg:#1c1c1e;
  --shadow-xs:0 1px 2px 0 rgba(0,0,0,0.5);
  --shadow-sm:0 2px 8px rgba(0,0,0,0.5);
  --shadow:0 4px 16px rgba(0,0,0,0.55);
  --shadow-md:0 8px 24px rgba(0,0,0,0.60);
  --shadow-lg:0 16px 48px rgba(0,0,0,0.65);
}
:root[data-theme="wcy"]{
  color-scheme:light;
  --bg:#ffe5ec;--bg-soft:#ffc2d1;--card:rgba(255,247,250,0.88);--card-2:rgba(255,238,243,0.82);
  --bg-card:rgba(255,247,250,0.88);--bg-secondary:#ffc2d1;--panel:rgba(255,247,250,0.88);--panel2:rgba(255,238,243,0.82);
  --ink:#4a1727;--ink-soft:#8a4057;--ink-muted:#b05a73;
  --text-primary:#4a1727;--text-secondary:#8a4057;--text-tertiary:#b05a73;--muted:#8a4057;
  --line:#ff8fab;--line-light:#ffb3c6;--border:#ff8fab;--border-light:#ffb3c6;
  --accent:#fb6f92;--accent-light:#ffe5ec;--accent-2:#ff8fab;--accent-2-light:#ffc2d1;
  --brand:#fb6f92;--brand-light:#ffe5ec;--theme:#fb6f92;--theme-soft:#ffe5ec;--blue:#fb6f92;--blue-soft:#ffe5ec;
  --green:#2f9e72;--green-light:#e7f7ef;--green-soft:#e7f7ef;
  --amber:#d97706;--amber-light:#fff3dc;--orange:#d97706;--orange-light:#fff3dc;--orange-soft:#fff3dc;
  --red:#d9365f;--red-light:#ffe1e8;--red-soft:#ffe1e8;
  --pink:#fb6f92;--pink-light:#ffe5ec;--purple:#ff8fab;--purple-light:#ffc2d1;
  --cyan:#2f9ab2;--cyan-light:#e1f7fb;--teal:#2f9ab2;--teal-light:#e1f7fb;
  --code-bg:rgba(255,240,244,0.88);
  --shadow-xs:0 1px 2px 0 rgba(251,111,146,0.10);
  --shadow-sm:0 2px 10px rgba(251,111,146,0.12);
  --shadow:0 6px 18px rgba(251,111,146,0.18);
  --shadow-md:0 10px 28px rgba(251,111,146,0.22);
  --shadow-lg:0 18px 52px rgba(251,111,146,0.26);
}
html[data-theme="wcy"] body{
  background:
    linear-gradient(rgba(255,229,236,0.70),rgba(255,229,236,0.74)),
    var(--wcy-bg-image) center center / cover fixed no-repeat !important;
}
html[data-theme="dark"] body{background:var(--bg)!important}
html[data-theme="light"] body{background:var(--bg)!important}
html[data-theme="wcy"] .chapnav,
html[data-theme="wcy"] .bar,
html[data-theme="wcy"] nav.topbar,
html[data-theme="wcy"] .topbar,
html[data-theme="wcy"] .actions{
  background:rgba(255,229,236,0.78)!important;
  border-color:var(--line-light)!important;
}
html[data-theme="dark"] .chapnav,
html[data-theme="dark"] .bar,
html[data-theme="dark"] nav.topbar,
html[data-theme="dark"] .topbar,
html[data-theme="dark"] .actions{
  background:rgba(0,0,0,0.72)!important;
  border-color:var(--line)!important;
}
html[data-theme="light"] .chapnav,
html[data-theme="light"] .bar,
html[data-theme="light"] nav.topbar,
html[data-theme="light"] .topbar,
html[data-theme="light"] .actions{
  background:rgba(245,245,247,0.72)!important;
}
html[data-theme="wcy"] header.hero,
html[data-theme="wcy"] section,
html[data-theme="wcy"] .stat,
html[data-theme="wcy"] .course,
html[data-theme="wcy"] .ch,
html[data-theme="wcy"] .card,
html[data-theme="wcy"] .ccard,
html[data-theme="wcy"] .panel,
html[data-theme="wcy"] .hero-main,
html[data-theme="wcy"] .rank-card,
html[data-theme="wcy"] .knowledge-structure,
html[data-theme="wcy"] .progress-section{
  backdrop-filter:saturate(150%) blur(10px);
  -webkit-backdrop-filter:saturate(150%) blur(10px);
}
.theme-switcher-wcy{position:fixed;right:18px;bottom:18px;z-index:1000;display:flex;gap:4px;padding:4px;border:1px solid var(--line-light);border-radius:999px;background:var(--card);box-shadow:var(--shadow-md);backdrop-filter:saturate(160%) blur(18px);-webkit-backdrop-filter:saturate(160%) blur(18px)}
.theme-switcher-wcy button{height:30px;border:0;border-radius:999px;padding:0 12px;background:transparent;color:var(--ink-soft);font:600 12px/1 var(--font, -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif);cursor:pointer;white-space:nowrap}
.theme-switcher-wcy button:hover{background:var(--bg-soft);color:var(--ink)}
.theme-switcher-wcy button.active{background:var(--accent);color:#fff}
html.theme-switcher-hidden .theme-switcher-wcy{transform:translateY(140%);opacity:0;pointer-events:none}
@media(max-width:560px){.theme-switcher-wcy{left:12px;right:12px;bottom:12px;justify-content:center}.theme-switcher-wcy button{flex:1;padding:0 8px}}

/* Wang Chenyu photo gallery background */
.wcy-photo-wall{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none;opacity:0;transition:opacity .35s ease;background:#ffe5ec}
html[data-theme="wcy"] .wcy-photo-wall{opacity:1}
.wcy-photo-wall::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,229,236,.34),rgba(255,229,236,.46));z-index:2}
.wcy-photo-track{position:absolute;left:-70vw;width:max-content;display:flex;gap:16px;will-change:transform;z-index:1}
.wcy-photo-track.track-a{top:-10vh}
.wcy-photo-track.track-b{top:6vh}
.wcy-photo-track.track-c{top:22vh}
.wcy-photo-track.track-d{top:38vh}
.wcy-photo-track.track-e{top:54vh}
.wcy-photo{width:140px;height:126px;flex:0 0 auto;border-radius:18px;object-fit:cover;box-shadow:0 18px 46px rgba(74,23,39,.22);border:3px solid rgba(255,247,250,.72);transform:rotate(var(--r));filter:saturate(1.06) contrast(1.02)}
.wcy-photo:nth-child(2n){height:146px;margin-top:10px}
.wcy-photo:nth-child(3n){height:112px;margin-top:4px}
.wcy-photo:nth-child(5n){height:158px;margin-top:-5px}
html[data-theme="wcy"] body{background:transparent!important;position:relative}
html[data-theme="wcy"] body::before{content:"";position:fixed;inset:0;z-index:-1;background:rgba(255,229,236,.12);pointer-events:none}
@media(max-width:720px){.wcy-photo-track{gap:10px;left:-90vw}.wcy-photo{width:98px;height:96px;border-radius:12px}.wcy-photo:nth-child(2n){height:112px;margin-top:8px}.wcy-photo:nth-child(3n){height:88px}.wcy-photo:nth-child(5n){height:122px;margin-top:-4px}}
@media(prefers-reduced-motion:reduce){.wcy-photo-track{transform:none!important}.wcy-photo-wall{transition:none}}

html[data-theme="wcy"] body > :not(.wcy-photo-wall):not(script):not(style){position:relative;z-index:1}
html[data-theme="wcy"] .theme-switcher-wcy{z-index:1000!important}

/* force visible theme switcher */
.theme-switcher-wcy{position:fixed!important;right:18px!important;bottom:18px!important;z-index:2147483000!important;display:flex!important;gap:4px!important;padding:5px!important;border:1px solid var(--line-light)!important;border-radius:999px!important;background:var(--card)!important;box-shadow:var(--shadow-lg)!important;backdrop-filter:saturate(160%) blur(18px)!important;-webkit-backdrop-filter:saturate(160%) blur(18px)!important;pointer-events:auto!important}
.theme-switcher-wcy button{display:inline-flex!important;align-items:center!important;justify-content:center!important;height:32px!important;border:0!important;border-radius:999px!important;padding:0 13px!important;background:transparent!important;color:var(--ink-soft)!important;font:700 12px/1 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif!important;cursor:pointer!important;white-space:nowrap!important;opacity:1!important;visibility:visible!important}
.theme-switcher-wcy button:hover{background:var(--bg-soft)!important;color:var(--ink)!important}
.theme-switcher-wcy button.active{background:var(--accent)!important;color:#fff!important}
html[data-theme="wcy"] .wcy-photo-wall{display:block!important;opacity:1!important;visibility:visible!important;z-index:0!important}
html[data-theme="wcy"] body > :not(.wcy-photo-wall):not(.theme-switcher-wcy):not(script):not(style){position:relative;z-index:1}
html[data-theme="wcy"] .theme-switcher-wcy{z-index:2147483000!important}
@media(max-width:560px){.theme-switcher-wcy{left:12px!important;right:12px!important;bottom:12px!important;justify-content:center!important}.theme-switcher-wcy button{flex:1!important;padding:0 8px!important}}


/* robust flip card: swap faces instead of relying on 3D backface rendering */
.flip{height:auto!important;min-height:175px!important;cursor:pointer!important;perspective:none!important}
.flip-inner{position:relative!important;min-height:175px!important;height:auto!important;transform:none!important;transition:none!important;transform-style:flat!important;filter:none!important}
.flip-front,.flip-back{position:relative!important;inset:auto!important;min-height:175px!important;width:100%!important;box-sizing:border-box!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:center!important;text-align:center!important;border-radius:var(--radius)!important;padding:16px!important;overflow:auto!important;overflow-wrap:anywhere!important;word-break:break-word!important;-webkit-backface-visibility:visible!important;backface-visibility:visible!important;transform:none!important;background:var(--card)!important;color:var(--ink)!important;border:1px solid var(--line-light)!important}
.flip-back{display:none!important;font-size:14px!important;line-height:1.6!important}
.flip.on .flip-front{display:none!important}
.flip.on .flip-back{display:flex!important}
.flip-front .emoji{font-size:36px!important}
.flip-front h4{margin:8px 0 2px!important;color:var(--ink)!important}
.flip-front .en,.flip-back small{color:var(--ink-muted)!important}
.flip-back b,.flip-back strong{color:var(--ink)!important}
.flip-front.c,.flip-back.c{border-top:3px solid var(--accent)!important}
.flip-front.i,.flip-back.i{border-top:3px solid var(--green)!important}
.flip-front.a,.flip-back.a{border-top:3px solid var(--amber)!important}
.flip-front.r,.flip-back.r{border-top:3px solid var(--red)!important}
.flip-front.p,.flip-back.p{border-top:3px solid var(--pink)!important}
.flip-front.d,.flip-back.d{border-top:3px solid var(--cyan)!important}

html.theme-switcher-hidden .theme-switcher-wcy{transform:translateY(140%)!important;opacity:0!important;pointer-events:none!important}
