/*!
 * 摄影情感光谱 — aphoto.cc 扩展主题 v9.0
 * 60 套全新摄影风格：从冷酷到温暖，从忧伤到甜蜜
 *
 * 情感光谱分组：
 *   冷酷 8 · 温暖 8 · 幸福 8 · 忧伤 8
 *   甜美 8 · 生日 8 · 戏剧 6 · 清新 6
 *
 * 设计原则：
 *   1. 背景效果 z-index:0，pointer-events:none，不遮挡任何内容
 *   2. 所有内容元素 z-index:1+，确保在背景之上
 *   3. 每套主题有独特的 body::before / body::after 背景效果
 *   4. 摄影为核心：每套主题围绕一种摄影情感和视觉氛围
 */

/* ############################################################
   THEME: ext-photo-glacial  (冰川纪元 / Glacial)
   ############################################################ */

[data-theme="ext-photo-glacial"]{
  --bg:#0a1520;--bg-2:#0f1f30;--bg-3:#16293f;--bg-4:#1d3350;
  --text:#dce8f4;--text-dim:#6a8aa0;--text-mid:#8aa0b8;
  --accent:#6db4d4;--accent-glow:rgba(109,180,212,0.4);--white:#dce8f4;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,21,32,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,21,32,0.2) 0%,rgba(10,21,32,0.7) 100%);
  --nav-scrolled-bg:#0a1520ee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a1520;color:#dce8f4;
}
[data-theme="ext-photo-glacial"][data-color="ice"]{--accent:#6db4d4;--accent-glow:rgba(109,180,212,0.4);}
[data-theme="ext-photo-glacial"][data-color="frost"]{--accent:#a0c8e0;--accent-glow:rgba(160,200,224,0.4);}

[data-theme="ext-photo-glacial"] body{background:#0a1520;color:#dce8f4;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-glacial"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-glacial"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-glacial"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-glacial"] .nav-link{color:var(--text-dim);font-family:'Manrope',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-glacial"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-glacial"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-glacial"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-glacial"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-glacial"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-glacial"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-glacial"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-glacial"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-glacial"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-glacial"] .hero > .hero-content,
[data-theme="ext-photo-glacial"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-glacial"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Manrope',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-glacial"] .hero-title{font-family:'Spectral',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-glacial"] .hero-tagline{font-family:'Manrope',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-glacial"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-glacial"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:glacial_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-glacial"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-glacial"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-glacial"] .section-head .kicker{font-family:'Manrope',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-glacial"] .section-head h2{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-glacial"] .about-name{font-family:'Spectral',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-glacial"] .about-role{font-family:'Manrope',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-glacial"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-glacial"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-glacial"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-glacial"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-glacial"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-glacial"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-glacial"] .stat-num{font-family:'Spectral',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-glacial"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-glacial"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-glacial"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-glacial"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-glacial"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-glacial"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-glacial"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-glacial"] .album-info-desc{font-family:'Manrope',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-glacial"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Manrope',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-glacial"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-glacial"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Manrope',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-glacial"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-glacial"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-glacial"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-glacial"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-glacial"] .card-label{font-family:'Manrope',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-glacial"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-glacial"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-glacial"] .footer-logo{font-family:'Spectral',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-glacial"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-glacial"] .footer-links a{color:var(--text-dim);font-family:'Manrope',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-glacial"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-glacial"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-glacial"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-glacial"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes glacial_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes glacial_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes glacial_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes glacial_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-glacial"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(109,180,212,0.15),transparent 35%),radial-gradient(circle at 80% 70%,rgba(160,200,224,0.10),transparent 40%),radial-gradient(circle at 50% 50%,rgba(109,180,212,0.08),transparent 30%);
  animation:glacial_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-glacial"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(109,180,212,0.3),transparent 25%),radial-gradient(circle at 30% 80%,rgba(160,200,224,0.10),transparent 30%);
  animation:glacial_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-glacial{background:linear-gradient(135deg,#0a1520,#6db4d4);}

/* ############################################################
   THEME: ext-photo-steel-mill  (钢铁冷峻 / Steel Mill)
   ############################################################ */

[data-theme="ext-photo-steel-mill"]{
  --bg:#121418;--bg-2:#1a1d22;--bg-3:#23262c;--bg-4:#2d3138;
  --text:#e0e0e0;--text-dim:#787878;--text-mid:#9a9a9a;
  --accent:#6c7a89;--accent-glow:rgba(108,122,137,0.4);--white:#e0e0e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(18,20,24,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(18,20,24,0.2) 0%,rgba(18,20,24,0.7) 100%);
  --nav-scrolled-bg:#121418ee;
  --font-display:'Archivo Black';--font-body:'Barlow';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#121418;color:#e0e0e0;
}
[data-theme="ext-photo-steel-mill"][data-color="steel"]{--accent:#6c7a89;--accent-glow:rgba(108,122,137,0.4);}
[data-theme="ext-photo-steel-mill"][data-color="iron"]{--accent:#4a5560;--accent-glow:rgba(74,85,96,0.4);}

[data-theme="ext-photo-steel-mill"] body{background:#121418;color:#e0e0e0;font-family:'Barlow',sans-serif;}

/* Navbar */
[data-theme="ext-photo-steel-mill"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-steel-mill"] .nav-logo{font-family:'Archivo Black',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-steel-mill"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-steel-mill"] .nav-link{color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-steel-mill"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-steel-mill"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-steel-mill"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-steel-mill"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-steel-mill"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-steel-mill"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-steel-mill"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-steel-mill"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-steel-mill"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-steel-mill"] .hero > .hero-content,
[data-theme="ext-photo-steel-mill"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-steel-mill"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-steel-mill"] .hero-title{font-family:'Archivo Black',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-steel-mill"] .hero-tagline{font-family:'Barlow',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-steel-mill"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-steel-mill"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:steel_mill_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-steel-mill"] .section-num{font-family:'Archivo Black',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-steel-mill"] .section-title{font-family:'Archivo Black',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-steel-mill"] .section-head .kicker{font-family:'Barlow',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-steel-mill"] .section-head h2{font-family:'Archivo Black',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-steel-mill"] .about-name{font-family:'Archivo Black',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-steel-mill"] .about-role{font-family:'Barlow',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-steel-mill"] .about-bio{font-family:'Barlow',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-steel-mill"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-steel-mill"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-steel-mill"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-steel-mill"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-steel-mill"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-steel-mill"] .stat-num{font-family:'Archivo Black',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-steel-mill"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-steel-mill"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-steel-mill"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-steel-mill"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-steel-mill"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-steel-mill"] .album-info-title{font-family:'Archivo Black',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-steel-mill"] .album-info-meta{font-family:'Barlow',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-steel-mill"] .album-info-desc{font-family:'Barlow',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-steel-mill"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Barlow',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-steel-mill"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-steel-mill"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Barlow',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-steel-mill"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-steel-mill"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-steel-mill"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-steel-mill"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-steel-mill"] .card-label{font-family:'Barlow',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-steel-mill"] .card-value{font-family:'Barlow',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-steel-mill"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-steel-mill"] .footer-logo{font-family:'Archivo Black',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-steel-mill"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-steel-mill"] .footer-links a{color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-steel-mill"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-steel-mill"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-steel-mill"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-steel-mill"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes steel_mill_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes steel_mill_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes steel_mill_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes steel_mill_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-steel-mill"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 25%,rgba(108,122,137,0.15),transparent 40%),linear-gradient(135deg,rgba(74,85,96,0.08),transparent 60%);
  animation:steel_mill_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-steel-mill"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(45deg,rgba(108,122,137,0.06),transparent 50%),radial-gradient(circle at 60% 40%,rgba(108,122,137,0.08),transparent 30%);
  animation:steel_mill_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-steel-mill{background:linear-gradient(135deg,#121418,#6c7a89);}

/* ############################################################
   THEME: ext-photo-siberian  (西伯利亚 / Siberian)
   ############################################################ */

[data-theme="ext-photo-siberian"]{
  --bg:#0d1419;--bg-2:#121d26;--bg-3:#192935;--bg-4:#1f3340;
  --text:#c8dde8;--text-dim:#5a7888;--text-mid:#7a98a8;
  --accent:#7da3b8;--accent-glow:rgba(125,163,184,0.4);--white:#c8dde8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,20,25,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,20,25,0.2) 0%,rgba(13,20,25,0.7) 100%);
  --nav-scrolled-bg:#0d1419ee;
  --font-display:'Manrope';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d1419;color:#c8dde8;
}
[data-theme="ext-photo-siberian"][data-color="tundra"]{--accent:#7da3b8;--accent-glow:rgba(125,163,184,0.4);}
[data-theme="ext-photo-siberian"][data-color="permafrost"]{--accent:#a8c4d8;--accent-glow:rgba(168,196,216,0.4);}

[data-theme="ext-photo-siberian"] body{background:#0d1419;color:#c8dde8;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-siberian"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-siberian"] .nav-logo{font-family:'Manrope',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-siberian"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-siberian"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-siberian"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-siberian"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-siberian"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-siberian"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-siberian"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-siberian"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-siberian"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-siberian"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-siberian"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-siberian"] .hero > .hero-content,
[data-theme="ext-photo-siberian"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-siberian"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-siberian"] .hero-title{font-family:'Manrope',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-siberian"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-siberian"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-siberian"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:siberian_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-siberian"] .section-num{font-family:'Manrope',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-siberian"] .section-title{font-family:'Manrope',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-siberian"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-siberian"] .section-head h2{font-family:'Manrope',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-siberian"] .about-name{font-family:'Manrope',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-siberian"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-siberian"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-siberian"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-siberian"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-siberian"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-siberian"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-siberian"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-siberian"] .stat-num{font-family:'Manrope',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-siberian"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-siberian"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-siberian"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-siberian"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-siberian"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-siberian"] .album-info-title{font-family:'Manrope',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-siberian"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-siberian"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-siberian"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-siberian"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-siberian"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-siberian"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-siberian"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-siberian"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-siberian"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-siberian"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-siberian"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-siberian"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-siberian"] .footer-logo{font-family:'Manrope',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-siberian"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-siberian"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-siberian"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-siberian"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-siberian"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-siberian"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes siberian_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes siberian_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes siberian_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes siberian_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-siberian"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 20%,rgba(168,196,216,0.12),transparent 40%),radial-gradient(circle at 80% 60%,rgba(125,163,184,0.08),transparent 35%),radial-gradient(circle at 50% 80%,rgba(168,196,216,0.06),transparent 30%);
  animation:siberian_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-siberian"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 40% 30%,rgba(168,196,216,0.15),transparent 25%),radial-gradient(circle at 70% 70%,rgba(125,163,184,0.08),transparent 30%);
  animation:siberian_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-siberian{background:linear-gradient(135deg,#0d1419,#7da3b8);}

/* ############################################################
   THEME: ext-photo-midnight-ore  (午夜矿脉 / Midnight Ore)
   ############################################################ */

[data-theme="ext-photo-midnight-ore"]{
  --bg:#080a0e;--bg-2:#0e1116;--bg-3:#141820;--bg-4:#1a1f28;
  --text:#c8d0d8;--text-dim:#505868;--text-mid:#687888;
  --accent:#4a6a8a;--accent-glow:rgba(74,106,138,0.4);--white:#c8d0d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(8,10,14,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(8,10,14,0.2) 0%,rgba(8,10,14,0.7) 100%);
  --nav-scrolled-bg:#080a0eee;
  --font-display:'Space Grotesk';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#080a0e;color:#c8d0d8;
}
[data-theme="ext-photo-midnight-ore"][data-color="ore"]{--accent:#4a6a8a;--accent-glow:rgba(74,106,138,0.4);}
[data-theme="ext-photo-midnight-ore"][data-color="cobalt"]{--accent:#3a5a7a;--accent-glow:rgba(58,90,122,0.4);}

[data-theme="ext-photo-midnight-ore"] body{background:#080a0e;color:#c8d0d8;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-midnight-ore"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-midnight-ore"] .nav-logo{font-family:'Space Grotesk',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-midnight-ore"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-midnight-ore"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-midnight-ore"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-midnight-ore"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-midnight-ore"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-midnight-ore"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-midnight-ore"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-midnight-ore"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-midnight-ore"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-midnight-ore"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-midnight-ore"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-midnight-ore"] .hero > .hero-content,
[data-theme="ext-photo-midnight-ore"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-midnight-ore"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-midnight-ore"] .hero-title{font-family:'Space Grotesk',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-midnight-ore"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-midnight-ore"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-midnight-ore"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:midnight_ore_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-midnight-ore"] .section-num{font-family:'Space Grotesk',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-midnight-ore"] .section-title{font-family:'Space Grotesk',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-midnight-ore"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-midnight-ore"] .section-head h2{font-family:'Space Grotesk',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-midnight-ore"] .about-name{font-family:'Space Grotesk',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-midnight-ore"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-midnight-ore"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-midnight-ore"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-midnight-ore"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-midnight-ore"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-midnight-ore"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-midnight-ore"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-midnight-ore"] .stat-num{font-family:'Space Grotesk',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-midnight-ore"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-midnight-ore"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-midnight-ore"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-midnight-ore"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-midnight-ore"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-midnight-ore"] .album-info-title{font-family:'Space Grotesk',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-midnight-ore"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-midnight-ore"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-midnight-ore"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-midnight-ore"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-midnight-ore"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-midnight-ore"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-midnight-ore"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-midnight-ore"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-midnight-ore"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-midnight-ore"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-midnight-ore"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-midnight-ore"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-midnight-ore"] .footer-logo{font-family:'Space Grotesk',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-midnight-ore"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-midnight-ore"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-midnight-ore"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-midnight-ore"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-midnight-ore"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-midnight-ore"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes midnight_ore_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes midnight_ore_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes midnight_ore_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes midnight_ore_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-midnight-ore"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 40%,rgba(74,106,138,0.12),transparent 35%),radial-gradient(circle at 70% 60%,rgba(58,90,122,0.08),transparent 40%);
  animation:midnight_ore_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-midnight-ore"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(74,106,138,0.06),transparent 30%),linear-gradient(180deg,rgba(58,90,122,0.04),transparent 50%);
  animation:midnight_ore_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-midnight-ore{background:linear-gradient(135deg,#080a0e,#4a6a8a);}

/* ############################################################
   THEME: ext-photo-frozen-lake  (冰封湖面 / Frozen Lake)
   ############################################################ */

[data-theme="ext-photo-frozen-lake"]{
  --bg:#0c1620;--bg-2:#101e2a;--bg-3:#182838;--bg-4:#1e3346;
  --text:#d0dce8;--text-dim:#5a7888;--text-mid:#7a98a8;
  --accent:#8ab8d0;--accent-glow:rgba(138,184,208,0.4);--white:#d0dce8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(12,22,32,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(12,22,32,0.2) 0%,rgba(12,22,32,0.7) 100%);
  --nav-scrolled-bg:#0c1620ee;
  --font-display:'Crimson Text';--font-body:'Lora';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0c1620;color:#d0dce8;
}
[data-theme="ext-photo-frozen-lake"][data-color="frozen"]{--accent:#8ab8d0;--accent-glow:rgba(138,184,208,0.4);}
[data-theme="ext-photo-frozen-lake"][data-color="stillness"]{--accent:#6a98b0;--accent-glow:rgba(106,152,176,0.4);}

[data-theme="ext-photo-frozen-lake"] body{background:#0c1620;color:#d0dce8;font-family:'Lora',sans-serif;}

/* Navbar */
[data-theme="ext-photo-frozen-lake"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-frozen-lake"] .nav-logo{font-family:'Crimson Text',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-frozen-lake"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-frozen-lake"] .nav-link{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-frozen-lake"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-frozen-lake"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-frozen-lake"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-frozen-lake"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-frozen-lake"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-frozen-lake"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-frozen-lake"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-frozen-lake"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-frozen-lake"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-frozen-lake"] .hero > .hero-content,
[data-theme="ext-photo-frozen-lake"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-frozen-lake"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-frozen-lake"] .hero-title{font-family:'Crimson Text',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-frozen-lake"] .hero-tagline{font-family:'Lora',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-frozen-lake"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-frozen-lake"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:frozen_lake_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-frozen-lake"] .section-num{font-family:'Crimson Text',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-frozen-lake"] .section-title{font-family:'Crimson Text',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-frozen-lake"] .section-head .kicker{font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-frozen-lake"] .section-head h2{font-family:'Crimson Text',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-frozen-lake"] .about-name{font-family:'Crimson Text',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-frozen-lake"] .about-role{font-family:'Lora',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-frozen-lake"] .about-bio{font-family:'Lora',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-frozen-lake"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-frozen-lake"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-frozen-lake"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-frozen-lake"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-frozen-lake"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-frozen-lake"] .stat-num{font-family:'Crimson Text',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-frozen-lake"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-frozen-lake"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-frozen-lake"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-frozen-lake"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-frozen-lake"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-frozen-lake"] .album-info-title{font-family:'Crimson Text',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-frozen-lake"] .album-info-meta{font-family:'Lora',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-frozen-lake"] .album-info-desc{font-family:'Lora',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-frozen-lake"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Lora',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-frozen-lake"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-frozen-lake"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Lora',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-frozen-lake"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-frozen-lake"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-frozen-lake"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-frozen-lake"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-frozen-lake"] .card-label{font-family:'Lora',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-frozen-lake"] .card-value{font-family:'Lora',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-frozen-lake"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-frozen-lake"] .footer-logo{font-family:'Crimson Text',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-frozen-lake"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-frozen-lake"] .footer-links a{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-frozen-lake"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-frozen-lake"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-frozen-lake"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-frozen-lake"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes frozen_lake_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes frozen_lake_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes frozen_lake_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes frozen_lake_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-frozen-lake"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(ellipse at 50% 60%,rgba(138,184,208,0.10),transparent 50%),radial-gradient(circle at 20% 30%,rgba(138,184,208,0.06),transparent 30%);
  animation:frozen_lake_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-frozen-lake"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 40%,rgba(138,184,208,0.04) 100%),radial-gradient(circle at 60% 40%,rgba(138,184,208,0.05),transparent 25%);
  animation:frozen_lake_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-frozen-lake{background:linear-gradient(135deg,#0c1620,#8ab8d0);}

/* ############################################################
   THEME: ext-photo-coal-seam  (煤层深处 / Coal Seam)
   ############################################################ */

[data-theme="ext-photo-coal-seam"]{
  --bg:#0a0a0a;--bg-2:#141414;--bg-3:#1e1e1e;--bg-4:#282828;
  --text:#c8c8c8;--text-dim:#505050;--text-mid:#686868;
  --accent:#4a4a4a;--accent-glow:rgba(74,74,74,0.4);--white:#c8c8c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,10,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,10,10,0.2) 0%,rgba(10,10,10,0.7) 100%);
  --nav-scrolled-bg:#0a0a0aee;
  --font-display:'IBM Plex Sans';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0a0a;color:#c8c8c8;
}
[data-theme="ext-photo-coal-seam"][data-color="coal"]{--accent:#4a4a4a;--accent-glow:rgba(74,74,74,0.4);}
[data-theme="ext-photo-coal-seam"][data-color="carbon"]{--accent:#6a6a6a;--accent-glow:rgba(106,106,106,0.4);}

[data-theme="ext-photo-coal-seam"] body{background:#0a0a0a;color:#c8c8c8;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-coal-seam"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-coal-seam"] .nav-logo{font-family:'IBM Plex Sans',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-coal-seam"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-coal-seam"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-coal-seam"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-coal-seam"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-coal-seam"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-coal-seam"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-coal-seam"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-coal-seam"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-coal-seam"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-coal-seam"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-coal-seam"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-coal-seam"] .hero > .hero-content,
[data-theme="ext-photo-coal-seam"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-coal-seam"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-coal-seam"] .hero-title{font-family:'IBM Plex Sans',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-coal-seam"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-coal-seam"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-coal-seam"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:coal_seam_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-coal-seam"] .section-num{font-family:'IBM Plex Sans',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-coal-seam"] .section-title{font-family:'IBM Plex Sans',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-coal-seam"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-coal-seam"] .section-head h2{font-family:'IBM Plex Sans',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-coal-seam"] .about-name{font-family:'IBM Plex Sans',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-coal-seam"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-coal-seam"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-coal-seam"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-coal-seam"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-coal-seam"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-coal-seam"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-coal-seam"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-coal-seam"] .stat-num{font-family:'IBM Plex Sans',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-coal-seam"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-coal-seam"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-coal-seam"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-coal-seam"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-coal-seam"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-coal-seam"] .album-info-title{font-family:'IBM Plex Sans',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-coal-seam"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-coal-seam"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-coal-seam"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-coal-seam"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-coal-seam"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-coal-seam"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-coal-seam"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-coal-seam"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-coal-seam"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-coal-seam"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-coal-seam"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-coal-seam"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-coal-seam"] .footer-logo{font-family:'IBM Plex Sans',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-coal-seam"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-coal-seam"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-coal-seam"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-coal-seam"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-coal-seam"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-coal-seam"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes coal_seam_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes coal_seam_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes coal_seam_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes coal_seam_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-coal-seam"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 30%,rgba(106,106,106,0.08),transparent 40%),radial-gradient(circle at 70% 70%,rgba(74,74,74,0.06),transparent 35%);
  animation:coal_seam_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-coal-seam"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(40,40,40,0.04),transparent 50%);
  animation:coal_seam_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-coal-seam{background:linear-gradient(135deg,#0a0a0a,#4a4a4a);}

/* ############################################################
   THEME: ext-photo-iron-sky  (铁灰天空 / Iron Sky)
   ############################################################ */

[data-theme="ext-photo-iron-sky"]{
  --bg:#14161a;--bg-2:#1c1e24;--bg-3:#26282e;--bg-4:#303238;
  --text:#c8ccd0;--text-dim:#5a6068;--text-mid:#7a8088;
  --accent:#7a8a9a;--accent-glow:rgba(122,138,154,0.4);--white:#c8ccd0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(20,22,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(20,22,26,0.2) 0%,rgba(20,22,26,0.7) 100%);
  --nav-scrolled-bg:#14161aee;
  --font-display:'Barlow';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#14161a;color:#c8ccd0;
}
[data-theme="ext-photo-iron-sky"][data-color="iron"]{--accent:#7a8a9a;--accent-glow:rgba(122,138,154,0.4);}
[data-theme="ext-photo-iron-sky"][data-color="overcast"]{--accent:#5a6a7a;--accent-glow:rgba(90,106,122,0.4);}

[data-theme="ext-photo-iron-sky"] body{background:#14161a;color:#c8ccd0;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-iron-sky"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-iron-sky"] .nav-logo{font-family:'Barlow',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-iron-sky"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-iron-sky"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-iron-sky"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-iron-sky"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-iron-sky"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-iron-sky"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-iron-sky"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-iron-sky"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-iron-sky"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-iron-sky"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-iron-sky"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-iron-sky"] .hero > .hero-content,
[data-theme="ext-photo-iron-sky"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-iron-sky"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-iron-sky"] .hero-title{font-family:'Barlow',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-iron-sky"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-iron-sky"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-iron-sky"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:iron_sky_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-iron-sky"] .section-num{font-family:'Barlow',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-iron-sky"] .section-title{font-family:'Barlow',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-iron-sky"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-iron-sky"] .section-head h2{font-family:'Barlow',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-iron-sky"] .about-name{font-family:'Barlow',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-iron-sky"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-iron-sky"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-iron-sky"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-iron-sky"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-iron-sky"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-iron-sky"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-iron-sky"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-iron-sky"] .stat-num{font-family:'Barlow',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-iron-sky"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-iron-sky"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-iron-sky"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-iron-sky"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-iron-sky"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-iron-sky"] .album-info-title{font-family:'Barlow',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-iron-sky"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-iron-sky"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-iron-sky"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-iron-sky"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-iron-sky"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-iron-sky"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-iron-sky"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-iron-sky"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-iron-sky"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-iron-sky"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-iron-sky"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-iron-sky"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-iron-sky"] .footer-logo{font-family:'Barlow',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-iron-sky"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-iron-sky"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-iron-sky"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-iron-sky"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-iron-sky"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-iron-sky"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes iron_sky_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes iron_sky_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes iron_sky_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes iron_sky_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-iron-sky"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(122,138,154,0.06) 0%,transparent 50%),radial-gradient(circle at 50% 0%,rgba(90,106,122,0.08),transparent 40%);
  animation:iron_sky_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-iron-sky"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 60%,rgba(90,106,122,0.04) 100%);
  animation:iron_sky_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-iron-sky{background:linear-gradient(135deg,#14161a,#7a8a9a);}

/* ############################################################
   THEME: ext-photo-wolf-track  (狼踪雪原 / Wolf Track)
   ############################################################ */

[data-theme="ext-photo-wolf-track"]{
  --bg:#0d1118;--bg-2:#121820;--bg-3:#19202c;--bg-4:#1f2838;
  --text:#c0c8d0;--text-dim:#5a6878;--text-mid:#7a8898;
  --accent:#8a9aaa;--accent-glow:rgba(138,154,170,0.4);--white:#c0c8d0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,17,24,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,17,24,0.2) 0%,rgba(13,17,24,0.7) 100%);
  --nav-scrolled-bg:#0d1118ee;
  --font-display:'Oswald';--font-body:'Barlow';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d1118;color:#c0c8d0;
}
[data-theme="ext-photo-wolf-track"][data-color="wolf"]{--accent:#8a9aaa;--accent-glow:rgba(138,154,170,0.4);}
[data-theme="ext-photo-wolf-track"][data-color="snow"]{--accent:#a8b8c8;--accent-glow:rgba(168,184,200,0.4);}

[data-theme="ext-photo-wolf-track"] body{background:#0d1118;color:#c0c8d0;font-family:'Barlow',sans-serif;}

/* Navbar */
[data-theme="ext-photo-wolf-track"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-wolf-track"] .nav-logo{font-family:'Oswald',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-wolf-track"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-wolf-track"] .nav-link{color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-wolf-track"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-wolf-track"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-wolf-track"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-wolf-track"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-wolf-track"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-wolf-track"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-wolf-track"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-wolf-track"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-wolf-track"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-wolf-track"] .hero > .hero-content,
[data-theme="ext-photo-wolf-track"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-wolf-track"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-wolf-track"] .hero-title{font-family:'Oswald',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-wolf-track"] .hero-tagline{font-family:'Barlow',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-wolf-track"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-wolf-track"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:wolf_track_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-wolf-track"] .section-num{font-family:'Oswald',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-wolf-track"] .section-title{font-family:'Oswald',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-wolf-track"] .section-head .kicker{font-family:'Barlow',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-wolf-track"] .section-head h2{font-family:'Oswald',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-wolf-track"] .about-name{font-family:'Oswald',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-wolf-track"] .about-role{font-family:'Barlow',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-wolf-track"] .about-bio{font-family:'Barlow',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-wolf-track"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-wolf-track"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-wolf-track"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-wolf-track"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-wolf-track"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-wolf-track"] .stat-num{font-family:'Oswald',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-wolf-track"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-wolf-track"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-wolf-track"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-wolf-track"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-wolf-track"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-wolf-track"] .album-info-title{font-family:'Oswald',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-wolf-track"] .album-info-meta{font-family:'Barlow',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-wolf-track"] .album-info-desc{font-family:'Barlow',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-wolf-track"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Barlow',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-wolf-track"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-wolf-track"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Barlow',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-wolf-track"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-wolf-track"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-wolf-track"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-wolf-track"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-wolf-track"] .card-label{font-family:'Barlow',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-wolf-track"] .card-value{font-family:'Barlow',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-wolf-track"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-wolf-track"] .footer-logo{font-family:'Oswald',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-wolf-track"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-wolf-track"] .footer-links a{color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-wolf-track"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-wolf-track"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-wolf-track"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-wolf-track"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes wolf_track_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes wolf_track_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes wolf_track_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes wolf_track_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-wolf-track"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 20%,rgba(168,184,200,0.10),transparent 35%),radial-gradient(circle at 80% 80%,rgba(138,154,170,0.06),transparent 40%);
  animation:wolf_track_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-wolf-track"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(45deg,rgba(168,184,200,0.04),transparent 50%);
  animation:wolf_track_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-wolf-track{background:linear-gradient(135deg,#0d1118,#8a9aaa);}

/* ############################################################
   THEME: ext-photo-harvest-gold  (丰收金黄 / Harvest Gold)
   ############################################################ */

[data-theme="ext-photo-harvest-gold"]{
  --bg:#1a1205;--bg-2:#241808;--bg-3:#2e200c;--bg-4:#3a2810;
  --text:#f5e8c8;--text-dim:#a08868;--text-mid:#c0a888;
  --accent:#d4a017;--accent-glow:rgba(212,160,23,0.4);--white:#f5e8c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,18,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,18,5,0.2) 0%,rgba(26,18,5,0.7) 100%);
  --nav-scrolled-bg:#1a1205ee;
  --font-display:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1205;color:#f5e8c8;
}
[data-theme="ext-photo-harvest-gold"][data-color="gold"]{--accent:#d4a017;--accent-glow:rgba(212,160,23,0.4);}
[data-theme="ext-photo-harvest-gold"][data-color="wheat"]{--accent:#c89020;--accent-glow:rgba(200,144,32,0.4);}

[data-theme="ext-photo-harvest-gold"] body{background:#1a1205;color:#f5e8c8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-harvest-gold"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-harvest-gold"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-harvest-gold"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-harvest-gold"] .nav-link{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-harvest-gold"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-harvest-gold"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-harvest-gold"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-harvest-gold"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-harvest-gold"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-harvest-gold"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-harvest-gold"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-harvest-gold"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-harvest-gold"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-harvest-gold"] .hero > .hero-content,
[data-theme="ext-photo-harvest-gold"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-harvest-gold"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-harvest-gold"] .hero-title{font-family:'Fraunces',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-harvest-gold"] .hero-tagline{font-family:'Outfit',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-harvest-gold"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-harvest-gold"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:harvest_gold_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-harvest-gold"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-harvest-gold"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-harvest-gold"] .section-head .kicker{font-family:'Outfit',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-harvest-gold"] .section-head h2{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-harvest-gold"] .about-name{font-family:'Fraunces',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-harvest-gold"] .about-role{font-family:'Outfit',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-harvest-gold"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-harvest-gold"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-harvest-gold"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-harvest-gold"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-harvest-gold"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-harvest-gold"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-harvest-gold"] .stat-num{font-family:'Fraunces',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-harvest-gold"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-harvest-gold"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-harvest-gold"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-harvest-gold"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-harvest-gold"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-harvest-gold"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-harvest-gold"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-harvest-gold"] .album-info-desc{font-family:'Outfit',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-harvest-gold"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Outfit',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-harvest-gold"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-harvest-gold"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Outfit',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-harvest-gold"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-harvest-gold"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-harvest-gold"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-harvest-gold"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-harvest-gold"] .card-label{font-family:'Outfit',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-harvest-gold"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-harvest-gold"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-harvest-gold"] .footer-logo{font-family:'Fraunces',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-harvest-gold"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-harvest-gold"] .footer-links a{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-harvest-gold"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-harvest-gold"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-harvest-gold"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-harvest-gold"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes harvest_gold_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes harvest_gold_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes harvest_gold_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes harvest_gold_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-harvest-gold"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(212,160,23,0.18),transparent 35%),radial-gradient(circle at 80% 70%,rgba(200,144,32,0.12),transparent 40%);
  animation:harvest_gold_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-harvest-gold"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(212,160,23,0.08),transparent 30%),radial-gradient(circle at 70% 20%,rgba(212,160,23,0.10),transparent 25%);
  animation:harvest_gold_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-harvest-gold{background:linear-gradient(135deg,#1a1205,#d4a017);}

/* ############################################################
   THEME: ext-photo-sunbeam  (阳光透射 / Sunbeam)
   ############################################################ */

[data-theme="ext-photo-sunbeam"]{
  --bg:#1a1408;--bg-2:#241c0c;--bg-3:#2e240f;--bg-4:#3a2c14;
  --text:#fff0d0;--text-dim:#a08868;--text-mid:#c0a888;
  --accent:#ffc878;--accent-glow:rgba(255,200,120,0.4);--white:#fff0d0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,20,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,20,8,0.2) 0%,rgba(26,20,8,0.7) 100%);
  --nav-scrolled-bg:#1a1408ee;
  --font-display:'Lora';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1408;color:#fff0d0;
}
[data-theme="ext-photo-sunbeam"][data-color="beam"]{--accent:#ffc878;--accent-glow:rgba(255,200,120,0.4);}
[data-theme="ext-photo-sunbeam"][data-color="ray"]{--accent:#ff9c3c;--accent-glow:rgba(255,156,60,0.4);}

[data-theme="ext-photo-sunbeam"] body{background:#1a1408;color:#fff0d0;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-sunbeam"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-sunbeam"] .nav-logo{font-family:'Lora',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-sunbeam"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-sunbeam"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-sunbeam"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-sunbeam"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-sunbeam"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-sunbeam"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-sunbeam"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-sunbeam"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-sunbeam"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-sunbeam"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-sunbeam"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-sunbeam"] .hero > .hero-content,
[data-theme="ext-photo-sunbeam"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-sunbeam"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-sunbeam"] .hero-title{font-family:'Lora',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-sunbeam"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-sunbeam"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-sunbeam"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:sunbeam_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-sunbeam"] .section-num{font-family:'Lora',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-sunbeam"] .section-title{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-sunbeam"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-sunbeam"] .section-head h2{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-sunbeam"] .about-name{font-family:'Lora',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-sunbeam"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-sunbeam"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-sunbeam"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-sunbeam"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-sunbeam"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-sunbeam"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-sunbeam"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-sunbeam"] .stat-num{font-family:'Lora',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-sunbeam"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-sunbeam"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-sunbeam"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-sunbeam"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-sunbeam"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-sunbeam"] .album-info-title{font-family:'Lora',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-sunbeam"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-sunbeam"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-sunbeam"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-sunbeam"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-sunbeam"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-sunbeam"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-sunbeam"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-sunbeam"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-sunbeam"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-sunbeam"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-sunbeam"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-sunbeam"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-sunbeam"] .footer-logo{font-family:'Lora',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-sunbeam"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-sunbeam"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-sunbeam"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-sunbeam"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-sunbeam"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-sunbeam"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes sunbeam_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes sunbeam_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes sunbeam_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes sunbeam_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-sunbeam"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 0%,rgba(255,200,120,0.20),transparent 50%),linear-gradient(180deg,rgba(255,156,60,0.06),transparent 60%);
  animation:sunbeam_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-sunbeam"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,200,120,0.08),transparent 30%),radial-gradient(circle at 70% 30%,rgba(255,200,120,0.10),transparent 25%);
  animation:sunbeam_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-sunbeam{background:linear-gradient(135deg,#1a1408,#ffc878);}

/* ############################################################
   THEME: ext-photo-amber-room  (琥珀密室 / Amber Room)
   ############################################################ */

[data-theme="ext-photo-amber-room"]{
  --bg:#181005;--bg-2:#221808;--bg-3:#2c200c;--bg-4:#382810;
  --text:#f5e0b8;--text-dim:#988060;--text-mid:#b89880;
  --accent:#ffbf00;--accent-glow:rgba(255,191,0,0.4);--white:#f5e0b8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(24,16,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(24,16,5,0.2) 0%,rgba(24,16,5,0.7) 100%);
  --nav-scrolled-bg:#181005ee;
  --font-display:'Cormorant Garamond';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#181005;color:#f5e0b8;
}
[data-theme="ext-photo-amber-room"][data-color="amber"]{--accent:#ffbf00;--accent-glow:rgba(255,191,0,0.4);}
[data-theme="ext-photo-amber-room"][data-color="resin"]{--accent:#cc9900;--accent-glow:rgba(204,153,0,0.4);}

[data-theme="ext-photo-amber-room"] body{background:#181005;color:#f5e0b8;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-amber-room"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-amber-room"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-amber-room"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-amber-room"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-amber-room"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-amber-room"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-amber-room"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-amber-room"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-amber-room"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-amber-room"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-amber-room"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-amber-room"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-amber-room"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-amber-room"] .hero > .hero-content,
[data-theme="ext-photo-amber-room"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-amber-room"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-amber-room"] .hero-title{font-family:'Cormorant Garamond',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-amber-room"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-amber-room"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-amber-room"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:amber_room_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-amber-room"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-amber-room"] .section-title{font-family:'Cormorant Garamond',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-amber-room"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-amber-room"] .section-head h2{font-family:'Cormorant Garamond',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-amber-room"] .about-name{font-family:'Cormorant Garamond',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-amber-room"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-amber-room"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-amber-room"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-amber-room"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-amber-room"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-amber-room"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-amber-room"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-amber-room"] .stat-num{font-family:'Cormorant Garamond',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-amber-room"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-amber-room"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-amber-room"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-amber-room"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-amber-room"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-amber-room"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-amber-room"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-amber-room"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-amber-room"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-amber-room"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-amber-room"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-amber-room"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-amber-room"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-amber-room"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-amber-room"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-amber-room"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-amber-room"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-amber-room"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-amber-room"] .footer-logo{font-family:'Cormorant Garamond',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-amber-room"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-amber-room"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-amber-room"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-amber-room"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-amber-room"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-amber-room"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes amber_room_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes amber_room_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes amber_room_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes amber_room_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-amber-room"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,191,0,0.16),transparent 35%),radial-gradient(circle at 80% 70%,rgba(204,153,0,0.10),transparent 40%);
  animation:amber_room_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-amber-room"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,191,0,0.06),transparent 30%);
  animation:amber_room_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-amber-room{background:linear-gradient(135deg,#181005,#ffbf00);}

/* ############################################################
   THEME: ext-photo-cinnamon  (肉桂暖意 / Cinnamon)
   ############################################################ */

[data-theme="ext-photo-cinnamon"]{
  --bg:#1a0e08;--bg-2:#24140c;--bg-3:#2e1a10;--bg-4:#3a2014;
  --text:#f0d8c0;--text-dim:#988068;--text-mid:#b89880;
  --accent:#c8651a;--accent-glow:rgba(200,101,26,0.4);--white:#f0d8c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,14,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,14,8,0.2) 0%,rgba(26,14,8,0.7) 100%);
  --nav-scrolled-bg:#1a0e08ee;
  --font-display:'Spectral';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0e08;color:#f0d8c0;
}
[data-theme="ext-photo-cinnamon"][data-color="cinnamon"]{--accent:#c8651a;--accent-glow:rgba(200,101,26,0.4);}
[data-theme="ext-photo-cinnamon"][data-color="nutmeg"]{--accent:#a05018;--accent-glow:rgba(160,80,24,0.4);}

[data-theme="ext-photo-cinnamon"] body{background:#1a0e08;color:#f0d8c0;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-cinnamon"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-cinnamon"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-cinnamon"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-cinnamon"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-cinnamon"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-cinnamon"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-cinnamon"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-cinnamon"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-cinnamon"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-cinnamon"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-cinnamon"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-cinnamon"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-cinnamon"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-cinnamon"] .hero > .hero-content,
[data-theme="ext-photo-cinnamon"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-cinnamon"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-cinnamon"] .hero-title{font-family:'Spectral',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-cinnamon"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-cinnamon"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-cinnamon"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:cinnamon_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-cinnamon"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-cinnamon"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-cinnamon"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-cinnamon"] .section-head h2{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-cinnamon"] .about-name{font-family:'Spectral',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-cinnamon"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-cinnamon"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-cinnamon"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-cinnamon"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-cinnamon"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-cinnamon"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-cinnamon"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-cinnamon"] .stat-num{font-family:'Spectral',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-cinnamon"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-cinnamon"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-cinnamon"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-cinnamon"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-cinnamon"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-cinnamon"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-cinnamon"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-cinnamon"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-cinnamon"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-cinnamon"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-cinnamon"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-cinnamon"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-cinnamon"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-cinnamon"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-cinnamon"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-cinnamon"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-cinnamon"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-cinnamon"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-cinnamon"] .footer-logo{font-family:'Spectral',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-cinnamon"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-cinnamon"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-cinnamon"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-cinnamon"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-cinnamon"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-cinnamon"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes cinnamon_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes cinnamon_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes cinnamon_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes cinnamon_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-cinnamon"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 30%,rgba(200,101,26,0.14),transparent 35%),radial-gradient(circle at 75% 70%,rgba(160,80,24,0.08),transparent 40%);
  animation:cinnamon_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-cinnamon"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(200,101,26,0.06),transparent 30%);
  animation:cinnamon_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-cinnamon{background:linear-gradient(135deg,#1a0e08,#c8651a);}

/* ############################################################
   THEME: ext-photo-pumpkin-glow  (南瓜暖光 / Pumpkin Glow)
   ############################################################ */

[data-theme="ext-photo-pumpkin-glow"]{
  --bg:#1a0a05;--bg-2:#240e06;--bg-3:#2e1408;--bg-4:#3a1a0c;
  --text:#f5dcc8;--text-dim:#a08068;--text-mid:#c09888;
  --accent:#ff7518;--accent-glow:rgba(255,117,24,0.4);--white:#f5dcc8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,5,0.2) 0%,rgba(26,10,5,0.7) 100%);
  --nav-scrolled-bg:#1a0a05ee;
  --font-display:'DM Serif Display';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a05;color:#f5dcc8;
}
[data-theme="ext-photo-pumpkin-glow"][data-color="pumpkin"]{--accent:#ff7518;--accent-glow:rgba(255,117,24,0.4);}
[data-theme="ext-photo-pumpkin-glow"][data-color="squash"]{--accent:#cc5500;--accent-glow:rgba(204,85,0,0.4);}

[data-theme="ext-photo-pumpkin-glow"] body{background:#1a0a05;color:#f5dcc8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-pumpkin-glow"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-pumpkin-glow"] .nav-logo{font-family:'DM Serif Display',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-pumpkin-glow"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-pumpkin-glow"] .nav-link{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-pumpkin-glow"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-pumpkin-glow"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-pumpkin-glow"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-pumpkin-glow"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-pumpkin-glow"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-pumpkin-glow"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-pumpkin-glow"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-pumpkin-glow"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-pumpkin-glow"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-pumpkin-glow"] .hero > .hero-content,
[data-theme="ext-photo-pumpkin-glow"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-pumpkin-glow"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-pumpkin-glow"] .hero-title{font-family:'DM Serif Display',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-pumpkin-glow"] .hero-tagline{font-family:'DM Sans',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-pumpkin-glow"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-pumpkin-glow"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:pumpkin_glow_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-pumpkin-glow"] .section-num{font-family:'DM Serif Display',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-pumpkin-glow"] .section-title{font-family:'DM Serif Display',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-pumpkin-glow"] .section-head .kicker{font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-pumpkin-glow"] .section-head h2{font-family:'DM Serif Display',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-pumpkin-glow"] .about-name{font-family:'DM Serif Display',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-pumpkin-glow"] .about-role{font-family:'DM Sans',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-pumpkin-glow"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-pumpkin-glow"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-pumpkin-glow"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-pumpkin-glow"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-pumpkin-glow"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-pumpkin-glow"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-pumpkin-glow"] .stat-num{font-family:'DM Serif Display',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-pumpkin-glow"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-pumpkin-glow"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-pumpkin-glow"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-pumpkin-glow"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-pumpkin-glow"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-pumpkin-glow"] .album-info-title{font-family:'DM Serif Display',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-pumpkin-glow"] .album-info-meta{font-family:'DM Sans',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-pumpkin-glow"] .album-info-desc{font-family:'DM Sans',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-pumpkin-glow"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'DM Sans',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-pumpkin-glow"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-pumpkin-glow"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'DM Sans',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-pumpkin-glow"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-pumpkin-glow"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-pumpkin-glow"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-pumpkin-glow"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-pumpkin-glow"] .card-label{font-family:'DM Sans',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-pumpkin-glow"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-pumpkin-glow"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-pumpkin-glow"] .footer-logo{font-family:'DM Serif Display',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-pumpkin-glow"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-pumpkin-glow"] .footer-links a{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-pumpkin-glow"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-pumpkin-glow"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-pumpkin-glow"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-pumpkin-glow"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes pumpkin_glow_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes pumpkin_glow_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes pumpkin_glow_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes pumpkin_glow_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-pumpkin-glow"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,117,24,0.16),transparent 35%),radial-gradient(circle at 80% 70%,rgba(204,85,0,0.10),transparent 40%);
  animation:pumpkin_glow_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-pumpkin-glow"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,117,24,0.06),transparent 30%);
  animation:pumpkin_glow_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-pumpkin-glow{background:linear-gradient(135deg,#1a0a05,#ff7518);}

/* ############################################################
   THEME: ext-photo-fireplace  (壁炉暖光 / Fireplace)
   ############################################################ */

[data-theme="ext-photo-fireplace"]{
  --bg:#1a0a05;--bg-2:#240c06;--bg-3:#2e1208;--bg-4:#3a180c;
  --text:#f5d8c8;--text-dim:#a07868;--text-mid:#c09078;
  --accent:#ff6b35;--accent-glow:rgba(255,107,53,0.4);--white:#f5d8c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,5,0.2) 0%,rgba(26,10,5,0.7) 100%);
  --nav-scrolled-bg:#1a0a05ee;
  --font-display:'Lora';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a05;color:#f5d8c8;
}
[data-theme="ext-photo-fireplace"][data-color="hearth"]{--accent:#ff6b35;--accent-glow:rgba(255,107,53,0.4);}
[data-theme="ext-photo-fireplace"][data-color="ember"]{--accent:#cc4515;--accent-glow:rgba(204,69,21,0.4);}

[data-theme="ext-photo-fireplace"] body{background:#1a0a05;color:#f5d8c8;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-fireplace"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-fireplace"] .nav-logo{font-family:'Lora',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-fireplace"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-fireplace"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-fireplace"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-fireplace"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-fireplace"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-fireplace"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-fireplace"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-fireplace"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-fireplace"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-fireplace"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-fireplace"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-fireplace"] .hero > .hero-content,
[data-theme="ext-photo-fireplace"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-fireplace"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-fireplace"] .hero-title{font-family:'Lora',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-fireplace"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-fireplace"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-fireplace"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:fireplace_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-fireplace"] .section-num{font-family:'Lora',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-fireplace"] .section-title{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-fireplace"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-fireplace"] .section-head h2{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-fireplace"] .about-name{font-family:'Lora',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-fireplace"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-fireplace"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-fireplace"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-fireplace"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-fireplace"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-fireplace"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-fireplace"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-fireplace"] .stat-num{font-family:'Lora',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-fireplace"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-fireplace"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-fireplace"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-fireplace"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-fireplace"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-fireplace"] .album-info-title{font-family:'Lora',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-fireplace"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-fireplace"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-fireplace"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-fireplace"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-fireplace"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-fireplace"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-fireplace"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-fireplace"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-fireplace"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-fireplace"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-fireplace"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-fireplace"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-fireplace"] .footer-logo{font-family:'Lora',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-fireplace"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-fireplace"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-fireplace"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-fireplace"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-fireplace"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-fireplace"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes fireplace_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes fireplace_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes fireplace_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes fireplace_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-fireplace"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 80%,rgba(255,107,53,0.18),transparent 40%),radial-gradient(circle at 30% 60%,rgba(204,69,21,0.08),transparent 30%);
  animation:fireplace_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-fireplace"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 90%,rgba(255,107,53,0.10),transparent 25%);
  animation:fireplace_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-fireplace{background:linear-gradient(135deg,#1a0a05,#ff6b35);}

/* ############################################################
   THEME: ext-photo-saffron-sunset  (藏红晚霞 / Saffron Sunset)
   ############################################################ */

[data-theme="ext-photo-saffron-sunset"]{
  --bg:#1a0805;--bg-2:#240c06;--bg-3:#2e1208;--bg-4:#3a180c;
  --text:#f5d0b8;--text-dim:#a07060;--text-mid:#c08878;
  --accent:#e6492d;--accent-glow:rgba(230,73,45,0.4);--white:#f5d0b8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,8,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,8,5,0.2) 0%,rgba(26,8,5,0.7) 100%);
  --nav-scrolled-bg:#1a0805ee;
  --font-display:'Marcellus';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0805;color:#f5d0b8;
}
[data-theme="ext-photo-saffron-sunset"][data-color="saffron"]{--accent:#e6492d;--accent-glow:rgba(230,73,45,0.4);}
[data-theme="ext-photo-saffron-sunset"][data-color="sunset"]{--accent:#cc3a1a;--accent-glow:rgba(204,58,26,0.4);}

[data-theme="ext-photo-saffron-sunset"] body{background:#1a0805;color:#f5d0b8;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-saffron-sunset"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-saffron-sunset"] .nav-logo{font-family:'Marcellus',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-saffron-sunset"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-saffron-sunset"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-saffron-sunset"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-saffron-sunset"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-saffron-sunset"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-saffron-sunset"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-saffron-sunset"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-saffron-sunset"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-saffron-sunset"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-saffron-sunset"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-saffron-sunset"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-saffron-sunset"] .hero > .hero-content,
[data-theme="ext-photo-saffron-sunset"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-saffron-sunset"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-saffron-sunset"] .hero-title{font-family:'Marcellus',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-saffron-sunset"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-saffron-sunset"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-saffron-sunset"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:saffron_sunset_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-saffron-sunset"] .section-num{font-family:'Marcellus',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-saffron-sunset"] .section-title{font-family:'Marcellus',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-saffron-sunset"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-saffron-sunset"] .section-head h2{font-family:'Marcellus',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-saffron-sunset"] .about-name{font-family:'Marcellus',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-saffron-sunset"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-saffron-sunset"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-saffron-sunset"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-saffron-sunset"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-saffron-sunset"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-saffron-sunset"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-saffron-sunset"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-saffron-sunset"] .stat-num{font-family:'Marcellus',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-saffron-sunset"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-saffron-sunset"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-saffron-sunset"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-saffron-sunset"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-saffron-sunset"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-saffron-sunset"] .album-info-title{font-family:'Marcellus',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-saffron-sunset"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-saffron-sunset"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-saffron-sunset"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-saffron-sunset"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-saffron-sunset"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-saffron-sunset"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-saffron-sunset"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-saffron-sunset"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-saffron-sunset"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-saffron-sunset"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-saffron-sunset"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-saffron-sunset"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-saffron-sunset"] .footer-logo{font-family:'Marcellus',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-saffron-sunset"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-saffron-sunset"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-saffron-sunset"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-saffron-sunset"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-saffron-sunset"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-saffron-sunset"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes saffron_sunset_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes saffron_sunset_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes saffron_sunset_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes saffron_sunset_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-saffron-sunset"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(230,73,45,0.08) 0%,transparent 50%),radial-gradient(circle at 50% 80%,rgba(204,58,26,0.12),transparent 40%);
  animation:saffron_sunset_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-saffron-sunset"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(230,73,45,0.08),transparent 25%);
  animation:saffron_sunset_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-saffron-sunset{background:linear-gradient(135deg,#1a0805,#e6492d);}

/* ############################################################
   THEME: ext-photo-wood-fire  (篝火夜话 / Wood Fire)
   ############################################################ */

[data-theme="ext-photo-wood-fire"]{
  --bg:#150a05;--bg-2:#1e0c06;--bg-3:#281008;--bg-4:#32140a;
  --text:#f0d0b8;--text-dim:#a07868;--text-mid:#c08878;
  --accent:#ff5722;--accent-glow:rgba(255,87,34,0.4);--white:#f0d0b8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(21,10,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(21,10,5,0.2) 0%,rgba(21,10,5,0.7) 100%);
  --nav-scrolled-bg:#150a05ee;
  --font-display:'Crimson Text';--font-body:'Lora';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#150a05;color:#f0d0b8;
}
[data-theme="ext-photo-wood-fire"][data-color="campfire"]{--accent:#ff5722;--accent-glow:rgba(255,87,34,0.4);}
[data-theme="ext-photo-wood-fire"][data-color="flame"]{--accent:#cc3300;--accent-glow:rgba(204,51,0,0.4);}

[data-theme="ext-photo-wood-fire"] body{background:#150a05;color:#f0d0b8;font-family:'Lora',sans-serif;}

/* Navbar */
[data-theme="ext-photo-wood-fire"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-wood-fire"] .nav-logo{font-family:'Crimson Text',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-wood-fire"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-wood-fire"] .nav-link{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-wood-fire"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-wood-fire"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-wood-fire"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-wood-fire"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-wood-fire"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-wood-fire"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-wood-fire"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-wood-fire"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-wood-fire"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-wood-fire"] .hero > .hero-content,
[data-theme="ext-photo-wood-fire"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-wood-fire"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-wood-fire"] .hero-title{font-family:'Crimson Text',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-wood-fire"] .hero-tagline{font-family:'Lora',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-wood-fire"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-wood-fire"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:wood_fire_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-wood-fire"] .section-num{font-family:'Crimson Text',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-wood-fire"] .section-title{font-family:'Crimson Text',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-wood-fire"] .section-head .kicker{font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-wood-fire"] .section-head h2{font-family:'Crimson Text',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-wood-fire"] .about-name{font-family:'Crimson Text',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-wood-fire"] .about-role{font-family:'Lora',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-wood-fire"] .about-bio{font-family:'Lora',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-wood-fire"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-wood-fire"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-wood-fire"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-wood-fire"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-wood-fire"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-wood-fire"] .stat-num{font-family:'Crimson Text',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-wood-fire"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-wood-fire"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-wood-fire"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-wood-fire"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-wood-fire"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-wood-fire"] .album-info-title{font-family:'Crimson Text',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-wood-fire"] .album-info-meta{font-family:'Lora',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-wood-fire"] .album-info-desc{font-family:'Lora',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-wood-fire"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Lora',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-wood-fire"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-wood-fire"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Lora',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-wood-fire"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-wood-fire"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-wood-fire"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-wood-fire"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-wood-fire"] .card-label{font-family:'Lora',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-wood-fire"] .card-value{font-family:'Lora',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-wood-fire"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-wood-fire"] .footer-logo{font-family:'Crimson Text',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-wood-fire"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-wood-fire"] .footer-links a{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-wood-fire"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-wood-fire"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-wood-fire"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-wood-fire"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes wood_fire_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes wood_fire_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes wood_fire_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes wood_fire_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-wood-fire"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 75%,rgba(255,87,34,0.16),transparent 35%),radial-gradient(circle at 30% 50%,rgba(204,51,0,0.06),transparent 30%);
  animation:wood_fire_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-wood-fire"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 85%,rgba(255,87,34,0.08),transparent 25%);
  animation:wood_fire_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-wood-fire{background:linear-gradient(135deg,#150a05,#ff5722);}

/* ############################################################
   THEME: ext-photo-sunrise-bliss  (晨曦喜悦 / Sunrise Bliss)
   ############################################################ */

[data-theme="ext-photo-sunrise-bliss"]{
  --bg:#1a120a;--bg-2:#24180e;--bg-3:#2e1e12;--bg-4:#3a2416;
  --text:#fff5e0;--text-dim:#b09878;--text-mid:#d0b898;
  --accent:#ffb347;--accent-glow:rgba(255,179,71,0.4);--white:#fff5e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,18,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,18,10,0.2) 0%,rgba(26,18,10,0.7) 100%);
  --nav-scrolled-bg:#1a120aee;
  --font-display:'Outfit';--font-body:'Poppins';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a120a;color:#fff5e0;
}
[data-theme="ext-photo-sunrise-bliss"][data-color="dawn"]{--accent:#ffb347;--accent-glow:rgba(255,179,71,0.4);}
[data-theme="ext-photo-sunrise-bliss"][data-color="joy"]{--accent:#ffc878;--accent-glow:rgba(255,200,120,0.4);}

[data-theme="ext-photo-sunrise-bliss"] body{background:#1a120a;color:#fff5e0;font-family:'Poppins',sans-serif;}

/* Navbar */
[data-theme="ext-photo-sunrise-bliss"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-sunrise-bliss"] .nav-logo{font-family:'Outfit',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-sunrise-bliss"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-sunrise-bliss"] .nav-link{color:var(--text-dim);font-family:'Poppins',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-sunrise-bliss"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-sunrise-bliss"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-sunrise-bliss"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-sunrise-bliss"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-sunrise-bliss"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-sunrise-bliss"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-sunrise-bliss"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-sunrise-bliss"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-sunrise-bliss"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-sunrise-bliss"] .hero > .hero-content,
[data-theme="ext-photo-sunrise-bliss"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-sunrise-bliss"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Poppins',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-sunrise-bliss"] .hero-title{font-family:'Outfit',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-sunrise-bliss"] .hero-tagline{font-family:'Poppins',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-sunrise-bliss"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-sunrise-bliss"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:sunrise_bliss_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-sunrise-bliss"] .section-num{font-family:'Outfit',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-sunrise-bliss"] .section-title{font-family:'Outfit',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-sunrise-bliss"] .section-head .kicker{font-family:'Poppins',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-sunrise-bliss"] .section-head h2{font-family:'Outfit',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-sunrise-bliss"] .about-name{font-family:'Outfit',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-sunrise-bliss"] .about-role{font-family:'Poppins',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-sunrise-bliss"] .about-bio{font-family:'Poppins',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-sunrise-bliss"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-sunrise-bliss"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-sunrise-bliss"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-sunrise-bliss"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-sunrise-bliss"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-sunrise-bliss"] .stat-num{font-family:'Outfit',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-sunrise-bliss"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-sunrise-bliss"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-sunrise-bliss"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-sunrise-bliss"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-sunrise-bliss"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-sunrise-bliss"] .album-info-title{font-family:'Outfit',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-sunrise-bliss"] .album-info-meta{font-family:'Poppins',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-sunrise-bliss"] .album-info-desc{font-family:'Poppins',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-sunrise-bliss"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Poppins',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-sunrise-bliss"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-sunrise-bliss"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Poppins',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-sunrise-bliss"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-sunrise-bliss"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-sunrise-bliss"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-sunrise-bliss"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-sunrise-bliss"] .card-label{font-family:'Poppins',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-sunrise-bliss"] .card-value{font-family:'Poppins',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-sunrise-bliss"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-sunrise-bliss"] .footer-logo{font-family:'Outfit',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-sunrise-bliss"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-sunrise-bliss"] .footer-links a{color:var(--text-dim);font-family:'Poppins',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-sunrise-bliss"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-sunrise-bliss"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-sunrise-bliss"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-sunrise-bliss"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes sunrise_bliss_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes sunrise_bliss_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes sunrise_bliss_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes sunrise_bliss_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-sunrise-bliss"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,179,71,0.10) 0%,transparent 50%),radial-gradient(circle at 50% 0%,rgba(255,200,120,0.14),transparent 40%);
  animation:sunrise_bliss_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-sunrise-bliss"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 20%,rgba(255,179,71,0.08),transparent 25%),radial-gradient(circle at 70% 30%,rgba(255,200,120,0.06),transparent 25%);
  animation:sunrise_bliss_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-sunrise-bliss{background:linear-gradient(135deg,#1a120a,#ffb347);}

/* ############################################################
   THEME: ext-photo-golden-laugh  (金色欢笑 / Golden Laugh)
   ############################################################ */

[data-theme="ext-photo-golden-laugh"]{
  --bg:#1a1405;--bg-2:#241c08;--bg-3:#2e240c;--bg-4:#3a2c10;
  --text:#fff8d0;--text-dim:#b09868;--text-mid:#d0b888;
  --accent:#ffd700;--accent-glow:rgba(255,215,0,0.4);--white:#fff8d0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,20,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,20,5,0.2) 0%,rgba(26,20,5,0.7) 100%);
  --nav-scrolled-bg:#1a1405ee;
  --font-display:'Poppins';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1405;color:#fff8d0;
}
[data-theme="ext-photo-golden-laugh"][data-color="laugh"]{--accent:#ffd700;--accent-glow:rgba(255,215,0,0.4);}
[data-theme="ext-photo-golden-laugh"][data-color="cheer"]{--accent:#ffcc00;--accent-glow:rgba(255,204,0,0.4);}

[data-theme="ext-photo-golden-laugh"] body{background:#1a1405;color:#fff8d0;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-golden-laugh"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-golden-laugh"] .nav-logo{font-family:'Poppins',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-golden-laugh"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-golden-laugh"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-golden-laugh"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-golden-laugh"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-golden-laugh"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-golden-laugh"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-golden-laugh"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-golden-laugh"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-golden-laugh"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-golden-laugh"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-golden-laugh"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-golden-laugh"] .hero > .hero-content,
[data-theme="ext-photo-golden-laugh"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-golden-laugh"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-golden-laugh"] .hero-title{font-family:'Poppins',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-golden-laugh"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-golden-laugh"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-golden-laugh"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:golden_laugh_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-golden-laugh"] .section-num{font-family:'Poppins',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-golden-laugh"] .section-title{font-family:'Poppins',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-golden-laugh"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-golden-laugh"] .section-head h2{font-family:'Poppins',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-golden-laugh"] .about-name{font-family:'Poppins',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-golden-laugh"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-golden-laugh"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-golden-laugh"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-golden-laugh"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-golden-laugh"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-golden-laugh"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-golden-laugh"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-golden-laugh"] .stat-num{font-family:'Poppins',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-golden-laugh"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-golden-laugh"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-golden-laugh"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-golden-laugh"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-golden-laugh"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-golden-laugh"] .album-info-title{font-family:'Poppins',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-golden-laugh"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-golden-laugh"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-golden-laugh"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-golden-laugh"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-golden-laugh"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-golden-laugh"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-golden-laugh"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-golden-laugh"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-golden-laugh"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-golden-laugh"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-golden-laugh"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-golden-laugh"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-golden-laugh"] .footer-logo{font-family:'Poppins',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-golden-laugh"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-golden-laugh"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-golden-laugh"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-golden-laugh"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-golden-laugh"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-golden-laugh"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes golden_laugh_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes golden_laugh_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes golden_laugh_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes golden_laugh_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-golden-laugh"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,215,0,0.16),transparent 35%),radial-gradient(circle at 80% 70%,rgba(255,204,0,0.10),transparent 40%);
  animation:golden_laugh_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-golden-laugh"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,215,0,0.06),transparent 30%);
  animation:golden_laugh_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-golden-laugh{background:linear-gradient(135deg,#1a1405,#ffd700);}

/* ############################################################
   THEME: ext-photo-meadow-sun  (草地阳光 / Meadow Sun)
   ############################################################ */

[data-theme="ext-photo-meadow-sun"]{
  --bg:#0d1a08;--bg-2:#122410;--bg-3:#1a2e18;--bg-4:#243820;
  --text:#e0f0c8;--text-dim:#789868;--text-mid:#98b888;
  --accent:#8bc34a;--accent-glow:rgba(139,195,74,0.4);--white:#e0f0c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,26,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,26,8,0.2) 0%,rgba(13,26,8,0.7) 100%);
  --nav-scrolled-bg:#0d1a08ee;
  --font-display:'Karla';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d1a08;color:#e0f0c8;
}
[data-theme="ext-photo-meadow-sun"][data-color="meadow"]{--accent:#8bc34a;--accent-glow:rgba(139,195,74,0.4);}
[data-theme="ext-photo-meadow-sun"][data-color="sun"]{--accent:#aed581;--accent-glow:rgba(174,213,129,0.4);}

[data-theme="ext-photo-meadow-sun"] body{background:#0d1a08;color:#e0f0c8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-meadow-sun"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-meadow-sun"] .nav-logo{font-family:'Karla',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-meadow-sun"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-meadow-sun"] .nav-link{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-meadow-sun"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-meadow-sun"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-meadow-sun"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-meadow-sun"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-meadow-sun"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-meadow-sun"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-meadow-sun"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-meadow-sun"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-meadow-sun"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-meadow-sun"] .hero > .hero-content,
[data-theme="ext-photo-meadow-sun"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-meadow-sun"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-meadow-sun"] .hero-title{font-family:'Karla',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-meadow-sun"] .hero-tagline{font-family:'Outfit',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-meadow-sun"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-meadow-sun"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:meadow_sun_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-meadow-sun"] .section-num{font-family:'Karla',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-meadow-sun"] .section-title{font-family:'Karla',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-meadow-sun"] .section-head .kicker{font-family:'Outfit',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-meadow-sun"] .section-head h2{font-family:'Karla',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-meadow-sun"] .about-name{font-family:'Karla',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-meadow-sun"] .about-role{font-family:'Outfit',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-meadow-sun"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-meadow-sun"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-meadow-sun"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-meadow-sun"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-meadow-sun"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-meadow-sun"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-meadow-sun"] .stat-num{font-family:'Karla',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-meadow-sun"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-meadow-sun"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-meadow-sun"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-meadow-sun"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-meadow-sun"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-meadow-sun"] .album-info-title{font-family:'Karla',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-meadow-sun"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-meadow-sun"] .album-info-desc{font-family:'Outfit',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-meadow-sun"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Outfit',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-meadow-sun"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-meadow-sun"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Outfit',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-meadow-sun"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-meadow-sun"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-meadow-sun"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-meadow-sun"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-meadow-sun"] .card-label{font-family:'Outfit',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-meadow-sun"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-meadow-sun"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-meadow-sun"] .footer-logo{font-family:'Karla',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-meadow-sun"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-meadow-sun"] .footer-links a{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-meadow-sun"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-meadow-sun"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-meadow-sun"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-meadow-sun"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes meadow_sun_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes meadow_sun_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes meadow_sun_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes meadow_sun_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-meadow-sun"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(139,195,74,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(174,213,129,0.08),transparent 35%);
  animation:meadow_sun_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-meadow-sun"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(139,195,74,0.06),transparent 50%);
  animation:meadow_sun_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-meadow-sun{background:linear-gradient(135deg,#0d1a08,#8bc34a);}

/* ############################################################
   THEME: ext-photo-festival-joy  (节日欢腾 / Festival Joy)
   ############################################################ */

[data-theme="ext-photo-festival-joy"]{
  --bg:#1a0a1a;--bg-2:#240c24;--bg-3:#2e122e;--bg-4:#3a183a;
  --text:#ffe0f0;--text-dim:#a07088;--text-mid:#c088a8;
  --accent:#ff4081;--accent-glow:rgba(255,64,129,0.4);--white:#ffe0f0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,26,0.2) 0%,rgba(26,10,26,0.7) 100%);
  --nav-scrolled-bg:#1a0a1aee;
  --font-display:'Poppins';--font-body:'Quicksand';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a1a;color:#ffe0f0;
}
[data-theme="ext-photo-festival-joy"][data-color="festival"]{--accent:#ff4081;--accent-glow:rgba(255,64,129,0.4);}
[data-theme="ext-photo-festival-joy"][data-color="celebration"]{--accent:#e91e63;--accent-glow:rgba(233,30,99,0.4);}

[data-theme="ext-photo-festival-joy"] body{background:#1a0a1a;color:#ffe0f0;font-family:'Quicksand',sans-serif;}

/* Navbar */
[data-theme="ext-photo-festival-joy"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-festival-joy"] .nav-logo{font-family:'Poppins',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-festival-joy"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-festival-joy"] .nav-link{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-festival-joy"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-festival-joy"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-festival-joy"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-festival-joy"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-festival-joy"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-festival-joy"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-festival-joy"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-festival-joy"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-festival-joy"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-festival-joy"] .hero > .hero-content,
[data-theme="ext-photo-festival-joy"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-festival-joy"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-festival-joy"] .hero-title{font-family:'Poppins',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-festival-joy"] .hero-tagline{font-family:'Quicksand',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-festival-joy"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-festival-joy"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:festival_joy_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-festival-joy"] .section-num{font-family:'Poppins',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-festival-joy"] .section-title{font-family:'Poppins',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-festival-joy"] .section-head .kicker{font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-festival-joy"] .section-head h2{font-family:'Poppins',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-festival-joy"] .about-name{font-family:'Poppins',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-festival-joy"] .about-role{font-family:'Quicksand',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-festival-joy"] .about-bio{font-family:'Quicksand',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-festival-joy"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-festival-joy"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-festival-joy"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-festival-joy"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-festival-joy"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-festival-joy"] .stat-num{font-family:'Poppins',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-festival-joy"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-festival-joy"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-festival-joy"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-festival-joy"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-festival-joy"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-festival-joy"] .album-info-title{font-family:'Poppins',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-festival-joy"] .album-info-meta{font-family:'Quicksand',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-festival-joy"] .album-info-desc{font-family:'Quicksand',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-festival-joy"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Quicksand',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-festival-joy"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-festival-joy"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Quicksand',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-festival-joy"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-festival-joy"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-festival-joy"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-festival-joy"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-festival-joy"] .card-label{font-family:'Quicksand',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-festival-joy"] .card-value{font-family:'Quicksand',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-festival-joy"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-festival-joy"] .footer-logo{font-family:'Poppins',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-festival-joy"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-festival-joy"] .footer-links a{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-festival-joy"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-festival-joy"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-festival-joy"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-festival-joy"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes festival_joy_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes festival_joy_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes festival_joy_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes festival_joy_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-festival-joy"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,64,129,0.14),transparent 35%),radial-gradient(circle at 80% 70%,rgba(233,30,99,0.10),transparent 40%);
  animation:festival_joy_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-festival-joy"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,64,129,0.06),transparent 30%);
  animation:festival_joy_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-festival-joy{background:linear-gradient(135deg,#1a0a1a,#ff4081);}

/* ############################################################
   THEME: ext-photo-lantern-joy  (灯笼喜乐 / Lantern Joy)
   ############################################################ */

[data-theme="ext-photo-lantern-joy"]{
  --bg:#1a0505;--bg-2:#240806;--bg-3:#2e0c08;--bg-4:#3a100a;
  --text:#f5d0c0;--text-dim:#a07060;--text-mid:#c08878;
  --accent:#ff6b35;--accent-glow:rgba(255,107,53,0.4);--white:#f5d0c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,5,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,5,5,0.2) 0%,rgba(26,5,5,0.7) 100%);
  --nav-scrolled-bg:#1a0505ee;
  --font-display:'Noto Serif';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0505;color:#f5d0c0;
}
[data-theme="ext-photo-lantern-joy"][data-color="lantern"]{--accent:#ff6b35;--accent-glow:rgba(255,107,53,0.4);}
[data-theme="ext-photo-lantern-joy"][data-color="glow"]{--accent:#ff8a50;--accent-glow:rgba(255,138,80,0.4);}

[data-theme="ext-photo-lantern-joy"] body{background:#1a0505;color:#f5d0c0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-lantern-joy"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-lantern-joy"] .nav-logo{font-family:'Noto Serif',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-lantern-joy"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-lantern-joy"] .nav-link{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-lantern-joy"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-lantern-joy"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-lantern-joy"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-lantern-joy"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-lantern-joy"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-lantern-joy"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-lantern-joy"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-lantern-joy"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-lantern-joy"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-lantern-joy"] .hero > .hero-content,
[data-theme="ext-photo-lantern-joy"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-lantern-joy"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-lantern-joy"] .hero-title{font-family:'Noto Serif',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-lantern-joy"] .hero-tagline{font-family:'DM Sans',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-lantern-joy"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-lantern-joy"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:lantern_joy_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-lantern-joy"] .section-num{font-family:'Noto Serif',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-lantern-joy"] .section-title{font-family:'Noto Serif',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-lantern-joy"] .section-head .kicker{font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-lantern-joy"] .section-head h2{font-family:'Noto Serif',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-lantern-joy"] .about-name{font-family:'Noto Serif',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-lantern-joy"] .about-role{font-family:'DM Sans',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-lantern-joy"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-lantern-joy"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-lantern-joy"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-lantern-joy"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-lantern-joy"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-lantern-joy"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-lantern-joy"] .stat-num{font-family:'Noto Serif',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-lantern-joy"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-lantern-joy"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-lantern-joy"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-lantern-joy"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-lantern-joy"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-lantern-joy"] .album-info-title{font-family:'Noto Serif',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-lantern-joy"] .album-info-meta{font-family:'DM Sans',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-lantern-joy"] .album-info-desc{font-family:'DM Sans',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-lantern-joy"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'DM Sans',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-lantern-joy"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-lantern-joy"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'DM Sans',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-lantern-joy"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-lantern-joy"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-lantern-joy"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-lantern-joy"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-lantern-joy"] .card-label{font-family:'DM Sans',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-lantern-joy"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-lantern-joy"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-lantern-joy"] .footer-logo{font-family:'Noto Serif',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-lantern-joy"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-lantern-joy"] .footer-links a{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-lantern-joy"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-lantern-joy"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-lantern-joy"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-lantern-joy"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes lantern_joy_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes lantern_joy_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes lantern_joy_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes lantern_joy_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-lantern-joy"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 40%,rgba(255,107,53,0.14),transparent 30%),radial-gradient(circle at 30% 60%,rgba(255,138,80,0.08),transparent 25%);
  animation:lantern_joy_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-lantern-joy"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 30%,rgba(255,107,53,0.06),transparent 25%);
  animation:lantern_joy_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-lantern-joy{background:linear-gradient(135deg,#1a0505,#ff6b35);}

/* ############################################################
   THEME: ext-photo-carnival-bright  (嘉年华彩 / Carnival Bright)
   ############################################################ */

[data-theme="ext-photo-carnival-bright"]{
  --bg:#1a0a15;--bg-2:#240c1e;--bg-3:#2e1228;--bg-4:#3a1832;
  --text:#ffe0e0;--text-dim:#a07080;--text-mid:#c088a0;
  --accent:#ff6b6b;--accent-glow:rgba(255,107,107,0.4);--white:#ffe0e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,21,0.2) 0%,rgba(26,10,21,0.7) 100%);
  --nav-scrolled-bg:#1a0a15ee;
  --font-display:'Fredoka';--font-body:'Quicksand';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a15;color:#ffe0e0;
}
[data-theme="ext-photo-carnival-bright"][data-color="carnival"]{--accent:#ff6b6b;--accent-glow:rgba(255,107,107,0.4);}
[data-theme="ext-photo-carnival-bright"][data-color="bright"]{--accent:#ff8787;--accent-glow:rgba(255,135,135,0.4);}

[data-theme="ext-photo-carnival-bright"] body{background:#1a0a15;color:#ffe0e0;font-family:'Quicksand',sans-serif;}

/* Navbar */
[data-theme="ext-photo-carnival-bright"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-carnival-bright"] .nav-logo{font-family:'Fredoka',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-carnival-bright"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-carnival-bright"] .nav-link{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-carnival-bright"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-carnival-bright"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-carnival-bright"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-carnival-bright"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-carnival-bright"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-carnival-bright"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-carnival-bright"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-carnival-bright"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-carnival-bright"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-carnival-bright"] .hero > .hero-content,
[data-theme="ext-photo-carnival-bright"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-carnival-bright"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-carnival-bright"] .hero-title{font-family:'Fredoka',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-carnival-bright"] .hero-tagline{font-family:'Quicksand',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-carnival-bright"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-carnival-bright"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:carnival_bright_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-carnival-bright"] .section-num{font-family:'Fredoka',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-carnival-bright"] .section-title{font-family:'Fredoka',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-carnival-bright"] .section-head .kicker{font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-carnival-bright"] .section-head h2{font-family:'Fredoka',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-carnival-bright"] .about-name{font-family:'Fredoka',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-carnival-bright"] .about-role{font-family:'Quicksand',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-carnival-bright"] .about-bio{font-family:'Quicksand',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-carnival-bright"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-carnival-bright"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-carnival-bright"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-carnival-bright"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-carnival-bright"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-carnival-bright"] .stat-num{font-family:'Fredoka',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-carnival-bright"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-carnival-bright"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-carnival-bright"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-carnival-bright"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-carnival-bright"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-carnival-bright"] .album-info-title{font-family:'Fredoka',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-carnival-bright"] .album-info-meta{font-family:'Quicksand',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-carnival-bright"] .album-info-desc{font-family:'Quicksand',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-carnival-bright"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Quicksand',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-carnival-bright"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-carnival-bright"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Quicksand',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-carnival-bright"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-carnival-bright"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-carnival-bright"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-carnival-bright"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-carnival-bright"] .card-label{font-family:'Quicksand',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-carnival-bright"] .card-value{font-family:'Quicksand',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-carnival-bright"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-carnival-bright"] .footer-logo{font-family:'Fredoka',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-carnival-bright"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-carnival-bright"] .footer-links a{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-carnival-bright"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-carnival-bright"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-carnival-bright"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-carnival-bright"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes carnival_bright_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes carnival_bright_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes carnival_bright_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes carnival_bright_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-carnival-bright"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,107,107,0.12),transparent 35%),radial-gradient(circle at 80% 70%,rgba(255,135,135,0.08),transparent 40%);
  animation:carnival_bright_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-carnival-bright"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,107,107,0.06),transparent 30%);
  animation:carnival_bright_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-carnival-bright{background:linear-gradient(135deg,#1a0a15,#ff6b6b);}

/* ############################################################
   THEME: ext-photo-park-bench  (公园长椅 / Park Bench)
   ############################################################ */

[data-theme="ext-photo-park-bench"]{
  --bg:#0d150a;--bg-2:#121e10;--bg-3:#1a2818;--bg-4:#243420;
  --text:#dce8c8;--text-dim:#688860;--text-mid:#88a888;
  --accent:#66bb6a;--accent-glow:rgba(102,187,106,0.4);--white:#dce8c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,21,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,21,10,0.2) 0%,rgba(13,21,10,0.7) 100%);
  --nav-scrolled-bg:#0d150aee;
  --font-display:'DM Sans';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d150a;color:#dce8c8;
}
[data-theme="ext-photo-park-bench"][data-color="park"]{--accent:#66bb6a;--accent-glow:rgba(102,187,106,0.4);}
[data-theme="ext-photo-park-bench"][data-color="grass"]{--accent:#81c784;--accent-glow:rgba(129,199,132,0.4);}

[data-theme="ext-photo-park-bench"] body{background:#0d150a;color:#dce8c8;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-park-bench"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-park-bench"] .nav-logo{font-family:'DM Sans',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-park-bench"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-park-bench"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-park-bench"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-park-bench"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-park-bench"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-park-bench"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-park-bench"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-park-bench"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-park-bench"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-park-bench"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-park-bench"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-park-bench"] .hero > .hero-content,
[data-theme="ext-photo-park-bench"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-park-bench"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-park-bench"] .hero-title{font-family:'DM Sans',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-park-bench"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-park-bench"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-park-bench"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:park_bench_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-park-bench"] .section-num{font-family:'DM Sans',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-park-bench"] .section-title{font-family:'DM Sans',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-park-bench"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-park-bench"] .section-head h2{font-family:'DM Sans',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-park-bench"] .about-name{font-family:'DM Sans',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-park-bench"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-park-bench"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-park-bench"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-park-bench"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-park-bench"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-park-bench"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-park-bench"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-park-bench"] .stat-num{font-family:'DM Sans',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-park-bench"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-park-bench"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-park-bench"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-park-bench"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-park-bench"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-park-bench"] .album-info-title{font-family:'DM Sans',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-park-bench"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-park-bench"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-park-bench"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-park-bench"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-park-bench"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-park-bench"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-park-bench"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-park-bench"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-park-bench"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-park-bench"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-park-bench"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-park-bench"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-park-bench"] .footer-logo{font-family:'DM Sans',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-park-bench"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-park-bench"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-park-bench"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-park-bench"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-park-bench"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-park-bench"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes park_bench_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes park_bench_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes park_bench_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes park_bench_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-park-bench"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 40%,rgba(102,187,106,0.10),transparent 40%),radial-gradient(circle at 70% 60%,rgba(129,199,132,0.06),transparent 35%);
  animation:park_bench_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-park-bench"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(102,187,106,0.04),transparent 50%);
  animation:park_bench_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-park-bench{background:linear-gradient(135deg,#0d150a,#66bb6a);}

/* ############################################################
   THEME: ext-photo-picnic-blanket  (野餐时光 / Picnic Blanket)
   ############################################################ */

[data-theme="ext-photo-picnic-blanket"]{
  --bg:#0f1505;--bg-2:#141e08;--bg-3:#1c280c;--bg-4:#243410;
  --text:#f0f0c8;--text-dim:#888860;--text-mid:#a8a888;
  --accent:#ffca28;--accent-glow:rgba(255,202,40,0.4);--white:#f0f0c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(15,21,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(15,21,5,0.2) 0%,rgba(15,21,5,0.7) 100%);
  --nav-scrolled-bg:#0f1505ee;
  --font-display:'Quicksand';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0f1505;color:#f0f0c8;
}
[data-theme="ext-photo-picnic-blanket"][data-color="picnic"]{--accent:#ffca28;--accent-glow:rgba(255,202,40,0.4);}
[data-theme="ext-photo-picnic-blanket"][data-color="blanket"]{--accent:#fff176;--accent-glow:rgba(255,241,118,0.4);}

[data-theme="ext-photo-picnic-blanket"] body{background:#0f1505;color:#f0f0c8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-picnic-blanket"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-picnic-blanket"] .nav-logo{font-family:'Quicksand',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-picnic-blanket"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-picnic-blanket"] .nav-link{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-picnic-blanket"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-picnic-blanket"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-picnic-blanket"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-picnic-blanket"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-picnic-blanket"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-picnic-blanket"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-picnic-blanket"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-picnic-blanket"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-picnic-blanket"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-picnic-blanket"] .hero > .hero-content,
[data-theme="ext-photo-picnic-blanket"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-picnic-blanket"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-picnic-blanket"] .hero-title{font-family:'Quicksand',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-picnic-blanket"] .hero-tagline{font-family:'Outfit',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-picnic-blanket"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-picnic-blanket"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:picnic_blanket_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-picnic-blanket"] .section-num{font-family:'Quicksand',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-picnic-blanket"] .section-title{font-family:'Quicksand',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-picnic-blanket"] .section-head .kicker{font-family:'Outfit',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-picnic-blanket"] .section-head h2{font-family:'Quicksand',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-picnic-blanket"] .about-name{font-family:'Quicksand',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-picnic-blanket"] .about-role{font-family:'Outfit',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-picnic-blanket"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-picnic-blanket"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-picnic-blanket"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-picnic-blanket"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-picnic-blanket"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-picnic-blanket"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-picnic-blanket"] .stat-num{font-family:'Quicksand',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-picnic-blanket"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-picnic-blanket"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-picnic-blanket"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-picnic-blanket"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-picnic-blanket"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-picnic-blanket"] .album-info-title{font-family:'Quicksand',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-picnic-blanket"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-picnic-blanket"] .album-info-desc{font-family:'Outfit',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-picnic-blanket"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Outfit',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-picnic-blanket"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-picnic-blanket"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Outfit',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-picnic-blanket"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-picnic-blanket"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-picnic-blanket"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-picnic-blanket"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-picnic-blanket"] .card-label{font-family:'Outfit',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-picnic-blanket"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-picnic-blanket"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-picnic-blanket"] .footer-logo{font-family:'Quicksand',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-picnic-blanket"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-picnic-blanket"] .footer-links a{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-picnic-blanket"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-picnic-blanket"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-picnic-blanket"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-picnic-blanket"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes picnic_blanket_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes picnic_blanket_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes picnic_blanket_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes picnic_blanket_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-picnic-blanket"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,202,40,0.12),transparent 35%),radial-gradient(circle at 80% 70%,rgba(255,241,118,0.08),transparent 40%);
  animation:picnic_blanket_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-picnic-blanket"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,202,40,0.04),transparent 30%);
  animation:picnic_blanket_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-picnic-blanket{background:linear-gradient(135deg,#0f1505,#ffca28);}

/* ############################################################
   THEME: ext-photo-faded-memory  (褪色记忆 / Faded Memory)
   ############################################################ */

[data-theme="ext-photo-faded-memory"]{
  --bg:#1a1408;--bg-2:#241c0c;--bg-3:#2e240f;--bg-4:#3a2c14;
  --text:#e0d0b8;--text-dim:#988868;--text-mid:#b0a088;
  --accent:#a0826d;--accent-glow:rgba(160,130,109,0.4);--white:#e0d0b8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,20,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,20,8,0.3) 0%,rgba(26,20,8,0.75) 100%);
  --nav-scrolled-bg:#1a1408ee;
  --font-display:'Special Elite';--font-body:'Lora';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1408;color:#e0d0b8;
}
[data-theme="ext-photo-faded-memory"][data-color="faded"]{--accent:#a0826d;--accent-glow:rgba(160,130,109,0.4);}
[data-theme="ext-photo-faded-memory"][data-color="memory"]{--accent:#8b7355;--accent-glow:rgba(139,115,85,0.4);}

[data-theme="ext-photo-faded-memory"] body{background:#1a1408;color:#e0d0b8;font-family:'Lora',sans-serif;}

/* Navbar */
[data-theme="ext-photo-faded-memory"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-faded-memory"] .nav-logo{font-family:'Special Elite',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-faded-memory"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-faded-memory"] .nav-link{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-faded-memory"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-faded-memory"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-faded-memory"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-faded-memory"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-faded-memory"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-faded-memory"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-faded-memory"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-faded-memory"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-faded-memory"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-faded-memory"] .hero > .hero-content,
[data-theme="ext-photo-faded-memory"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-faded-memory"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-faded-memory"] .hero-title{font-family:'Special Elite',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-faded-memory"] .hero-tagline{font-family:'Lora',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-faded-memory"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-faded-memory"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:faded_memory_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-faded-memory"] .section-num{font-family:'Special Elite',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-faded-memory"] .section-title{font-family:'Special Elite',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-faded-memory"] .section-head .kicker{font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-faded-memory"] .section-head h2{font-family:'Special Elite',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-faded-memory"] .about-name{font-family:'Special Elite',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-faded-memory"] .about-role{font-family:'Lora',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-faded-memory"] .about-bio{font-family:'Lora',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-faded-memory"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-faded-memory"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-faded-memory"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-faded-memory"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-faded-memory"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-faded-memory"] .stat-num{font-family:'Special Elite',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-faded-memory"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-faded-memory"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-faded-memory"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-faded-memory"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-faded-memory"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-faded-memory"] .album-info-title{font-family:'Special Elite',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-faded-memory"] .album-info-meta{font-family:'Lora',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-faded-memory"] .album-info-desc{font-family:'Lora',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-faded-memory"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Lora',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-faded-memory"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-faded-memory"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Lora',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-faded-memory"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-faded-memory"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-faded-memory"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-faded-memory"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-faded-memory"] .card-label{font-family:'Lora',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-faded-memory"] .card-value{font-family:'Lora',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-faded-memory"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-faded-memory"] .footer-logo{font-family:'Special Elite',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-faded-memory"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-faded-memory"] .footer-links a{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-faded-memory"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-faded-memory"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-faded-memory"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-faded-memory"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes faded_memory_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes faded_memory_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes faded_memory_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes faded_memory_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-faded-memory"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 30%,rgba(160,130,109,0.10),transparent 40%),radial-gradient(circle at 70% 70%,rgba(139,115,85,0.06),transparent 35%);
  animation:faded_memory_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-faded-memory"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(160,130,109,0.04),transparent 50%);
  animation:faded_memory_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-faded-memory{background:linear-gradient(135deg,#1a1408,#a0826d);}

/* ############################################################
   THEME: ext-photo-rainy-window  (雨窗模糊 / Rainy Window)
   ############################################################ */

[data-theme="ext-photo-rainy-window"]{
  --bg:#0d1015;--bg-2:#121620;--bg-3:#181c28;--bg-4:#1e2430;
  --text:#c8d0d8;--text-dim:#5a6878;--text-mid:#7a8898;
  --accent:#6c88a0;--accent-glow:rgba(108,136,160,0.4);--white:#c8d0d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,16,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,16,21,0.3) 0%,rgba(13,16,21,0.75) 100%);
  --nav-scrolled-bg:#0d1015ee;
  --font-display:'Lora';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d1015;color:#c8d0d8;
}
[data-theme="ext-photo-rainy-window"][data-color="rain"]{--accent:#6c88a0;--accent-glow:rgba(108,136,160,0.4);}
[data-theme="ext-photo-rainy-window"][data-color="window"]{--accent:#5a7890;--accent-glow:rgba(90,120,144,0.4);}

[data-theme="ext-photo-rainy-window"] body{background:#0d1015;color:#c8d0d8;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-rainy-window"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-rainy-window"] .nav-logo{font-family:'Lora',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-rainy-window"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-rainy-window"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-rainy-window"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-rainy-window"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-rainy-window"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-rainy-window"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-rainy-window"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-rainy-window"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-rainy-window"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-rainy-window"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-rainy-window"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-rainy-window"] .hero > .hero-content,
[data-theme="ext-photo-rainy-window"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-rainy-window"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-rainy-window"] .hero-title{font-family:'Lora',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-rainy-window"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-rainy-window"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-rainy-window"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:rainy_window_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-rainy-window"] .section-num{font-family:'Lora',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-rainy-window"] .section-title{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-rainy-window"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-rainy-window"] .section-head h2{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-rainy-window"] .about-name{font-family:'Lora',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-rainy-window"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-rainy-window"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-rainy-window"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-rainy-window"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-rainy-window"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-rainy-window"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-rainy-window"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-rainy-window"] .stat-num{font-family:'Lora',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-rainy-window"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-rainy-window"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-rainy-window"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-rainy-window"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-rainy-window"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-rainy-window"] .album-info-title{font-family:'Lora',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-rainy-window"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-rainy-window"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-rainy-window"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-rainy-window"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-rainy-window"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-rainy-window"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-rainy-window"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-rainy-window"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-rainy-window"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-rainy-window"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-rainy-window"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-rainy-window"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-rainy-window"] .footer-logo{font-family:'Lora',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-rainy-window"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-rainy-window"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-rainy-window"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-rainy-window"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-rainy-window"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-rainy-window"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes rainy_window_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes rainy_window_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes rainy_window_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes rainy_window_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-rainy-window"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(108,136,160,0.08),transparent 50%),radial-gradient(circle at 50% 50%,rgba(90,120,144,0.06),transparent 40%);
  animation:rainy_window_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-rainy-window"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 40%,rgba(108,136,160,0.04) 100%);
  animation:rainy_window_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-rainy-window{background:linear-gradient(135deg,#0d1015,#6c88a0);}

/* ############################################################
   THEME: ext-photo-empty-room  (空房间 / Empty Room)
   ############################################################ */

[data-theme="ext-photo-empty-room"]{
  --bg:#15151a;--bg-2:#1c1c22;--bg-3:#26262e;--bg-4:#303038;
  --text:#c0c0c8;--text-dim:#5a5a68;--text-mid:#7a7a88;
  --accent:#7a7a8a;--accent-glow:rgba(122,122,138,0.4);--white:#c0c0c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(21,21,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(21,21,26,0.3) 0%,rgba(21,21,26,0.75) 100%);
  --nav-scrolled-bg:#15151aee;
  --font-display:'Inter';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#15151a;color:#c0c0c8;
}
[data-theme="ext-photo-empty-room"][data-color="empty"]{--accent:#7a7a8a;--accent-glow:rgba(122,122,138,0.4);}
[data-theme="ext-photo-empty-room"][data-color="lonely"]{--accent:#6a6a7a;--accent-glow:rgba(106,106,122,0.4);}

[data-theme="ext-photo-empty-room"] body{background:#15151a;color:#c0c0c8;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-empty-room"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-empty-room"] .nav-logo{font-family:'Inter',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-empty-room"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-empty-room"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-empty-room"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-empty-room"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-empty-room"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-empty-room"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-empty-room"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-empty-room"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-empty-room"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-empty-room"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-empty-room"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-empty-room"] .hero > .hero-content,
[data-theme="ext-photo-empty-room"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-empty-room"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-empty-room"] .hero-title{font-family:'Inter',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-empty-room"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-empty-room"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-empty-room"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:empty_room_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-empty-room"] .section-num{font-family:'Inter',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-empty-room"] .section-title{font-family:'Inter',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-empty-room"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-empty-room"] .section-head h2{font-family:'Inter',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-empty-room"] .about-name{font-family:'Inter',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-empty-room"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-empty-room"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-empty-room"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-empty-room"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-empty-room"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-empty-room"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-empty-room"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-empty-room"] .stat-num{font-family:'Inter',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-empty-room"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-empty-room"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-empty-room"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-empty-room"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-empty-room"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-empty-room"] .album-info-title{font-family:'Inter',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-empty-room"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-empty-room"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-empty-room"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-empty-room"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-empty-room"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-empty-room"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-empty-room"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-empty-room"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-empty-room"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-empty-room"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-empty-room"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-empty-room"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-empty-room"] .footer-logo{font-family:'Inter',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-empty-room"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-empty-room"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-empty-room"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-empty-room"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-empty-room"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-empty-room"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes empty_room_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes empty_room_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes empty_room_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes empty_room_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-empty-room"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(122,122,138,0.06),transparent 50%);
  animation:empty_room_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-empty-room"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(106,106,122,0.04),transparent 50%);
  animation:empty_room_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-empty-room{background:linear-gradient(135deg,#15151a,#7a7a8a);}

/* ############################################################
   THEME: ext-photo-dusk-fall  (暮色降临 / Dusk Fall)
   ############################################################ */

[data-theme="ext-photo-dusk-fall"]{
  --bg:#0d0a15;--bg-2:#12101e;--bg-3:#1a1628;--bg-4:#221e32;
  --text:#c8c0d8;--text-dim:#5a5068;--text-mid:#7a6e88;
  --accent:#6a5a7a;--accent-glow:rgba(106,90,122,0.4);--white:#c8c0d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,10,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,10,21,0.3) 0%,rgba(13,10,21,0.75) 100%);
  --nav-scrolled-bg:#0d0a15ee;
  --font-display:'Spectral';--font-body:'Lora';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d0a15;color:#c8c0d8;
}
[data-theme="ext-photo-dusk-fall"][data-color="dusk"]{--accent:#6a5a7a;--accent-glow:rgba(106,90,122,0.4);}
[data-theme="ext-photo-dusk-fall"][data-color="twilight"]{--accent:#5a4a6a;--accent-glow:rgba(90,74,106,0.4);}

[data-theme="ext-photo-dusk-fall"] body{background:#0d0a15;color:#c8c0d8;font-family:'Lora',sans-serif;}

/* Navbar */
[data-theme="ext-photo-dusk-fall"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-dusk-fall"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-dusk-fall"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-dusk-fall"] .nav-link{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-dusk-fall"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-dusk-fall"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-dusk-fall"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-dusk-fall"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-dusk-fall"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-dusk-fall"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-dusk-fall"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-dusk-fall"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-dusk-fall"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-dusk-fall"] .hero > .hero-content,
[data-theme="ext-photo-dusk-fall"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-dusk-fall"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-dusk-fall"] .hero-title{font-family:'Spectral',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-dusk-fall"] .hero-tagline{font-family:'Lora',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-dusk-fall"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-dusk-fall"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:dusk_fall_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-dusk-fall"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-dusk-fall"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-dusk-fall"] .section-head .kicker{font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-dusk-fall"] .section-head h2{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-dusk-fall"] .about-name{font-family:'Spectral',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-dusk-fall"] .about-role{font-family:'Lora',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-dusk-fall"] .about-bio{font-family:'Lora',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-dusk-fall"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-dusk-fall"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-dusk-fall"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-dusk-fall"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-dusk-fall"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-dusk-fall"] .stat-num{font-family:'Spectral',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-dusk-fall"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-dusk-fall"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-dusk-fall"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-dusk-fall"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-dusk-fall"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-dusk-fall"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-dusk-fall"] .album-info-meta{font-family:'Lora',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-dusk-fall"] .album-info-desc{font-family:'Lora',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-dusk-fall"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Lora',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-dusk-fall"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-dusk-fall"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Lora',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-dusk-fall"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-dusk-fall"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-dusk-fall"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-dusk-fall"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-dusk-fall"] .card-label{font-family:'Lora',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-dusk-fall"] .card-value{font-family:'Lora',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-dusk-fall"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-dusk-fall"] .footer-logo{font-family:'Spectral',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-dusk-fall"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-dusk-fall"] .footer-links a{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-dusk-fall"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-dusk-fall"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-dusk-fall"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-dusk-fall"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes dusk_fall_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes dusk_fall_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes dusk_fall_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes dusk_fall_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-dusk-fall"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(106,90,122,0.08),transparent 50%),radial-gradient(circle at 50% 80%,rgba(90,74,106,0.06),transparent 40%);
  animation:dusk_fall_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-dusk-fall"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 40%,rgba(106,90,122,0.04) 100%);
  animation:dusk_fall_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-dusk-fall{background:linear-gradient(135deg,#0d0a15,#6a5a7a);}

/* ############################################################
   THEME: ext-photo-foggy-harbor  (雾港迷离 / Foggy Harbor)
   ############################################################ */

[data-theme="ext-photo-foggy-harbor"]{
  --bg:#0d1115;--bg-2:#121620;--bg-3:#181c28;--bg-4:#1e2430;
  --text:#c0c8d0;--text-dim:#5a6878;--text-mid:#7a8898;
  --accent:#6a88a0;--accent-glow:rgba(106,136,160,0.4);--white:#c0c8d0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,17,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,17,21,0.3) 0%,rgba(13,17,21,0.75) 100%);
  --nav-scrolled-bg:#0d1115ee;
  --font-display:'Hanken Grotesk';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d1115;color:#c0c8d0;
}
[data-theme="ext-photo-foggy-harbor"][data-color="fog"]{--accent:#6a88a0;--accent-glow:rgba(106,136,160,0.4);}
[data-theme="ext-photo-foggy-harbor"][data-color="harbor"]{--accent:#5a7890;--accent-glow:rgba(90,120,144,0.4);}

[data-theme="ext-photo-foggy-harbor"] body{background:#0d1115;color:#c0c8d0;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-foggy-harbor"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-foggy-harbor"] .nav-logo{font-family:'Hanken Grotesk',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-foggy-harbor"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-foggy-harbor"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-foggy-harbor"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-foggy-harbor"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-foggy-harbor"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-foggy-harbor"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-foggy-harbor"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-foggy-harbor"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-foggy-harbor"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-foggy-harbor"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-foggy-harbor"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-foggy-harbor"] .hero > .hero-content,
[data-theme="ext-photo-foggy-harbor"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-foggy-harbor"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-foggy-harbor"] .hero-title{font-family:'Hanken Grotesk',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-foggy-harbor"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-foggy-harbor"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-foggy-harbor"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:foggy_harbor_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-foggy-harbor"] .section-num{font-family:'Hanken Grotesk',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-foggy-harbor"] .section-title{font-family:'Hanken Grotesk',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-foggy-harbor"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-foggy-harbor"] .section-head h2{font-family:'Hanken Grotesk',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-foggy-harbor"] .about-name{font-family:'Hanken Grotesk',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-foggy-harbor"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-foggy-harbor"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-foggy-harbor"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-foggy-harbor"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-foggy-harbor"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-foggy-harbor"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-foggy-harbor"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-foggy-harbor"] .stat-num{font-family:'Hanken Grotesk',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-foggy-harbor"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-foggy-harbor"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-foggy-harbor"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-foggy-harbor"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-foggy-harbor"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-foggy-harbor"] .album-info-title{font-family:'Hanken Grotesk',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-foggy-harbor"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-foggy-harbor"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-foggy-harbor"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-foggy-harbor"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-foggy-harbor"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-foggy-harbor"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-foggy-harbor"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-foggy-harbor"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-foggy-harbor"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-foggy-harbor"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-foggy-harbor"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-foggy-harbor"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-foggy-harbor"] .footer-logo{font-family:'Hanken Grotesk',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-foggy-harbor"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-foggy-harbor"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-foggy-harbor"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-foggy-harbor"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-foggy-harbor"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-foggy-harbor"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes foggy_harbor_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes foggy_harbor_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes foggy_harbor_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes foggy_harbor_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-foggy-harbor"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(106,136,160,0.06),transparent 50%),radial-gradient(circle at 50% 50%,rgba(90,120,144,0.04),transparent 40%);
  animation:foggy_harbor_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-foggy-harbor"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,transparent 40%,rgba(106,136,160,0.04) 100%);
  animation:foggy_harbor_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-foggy-harbor{background:linear-gradient(135deg,#0d1115,#6a88a0);}

/* ############################################################
   THEME: ext-photo-last-light  (最后光线 / Last Light)
   ############################################################ */

[data-theme="ext-photo-last-light"]{
  --bg:#0d0805;--bg-2:#120c06;--bg-3:#1a1208;--bg-4:#22160c;
  --text:#d8c8b0;--text-dim:#6a5848;--text-mid:#8a7868;
  --accent:#a07850;--accent-glow:rgba(160,120,80,0.4);--white:#d8c8b0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,8,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,8,5,0.3) 0%,rgba(13,8,5,0.75) 100%);
  --nav-scrolled-bg:#0d0805ee;
  --font-display:'Crimson Text';--font-body:'Lora';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d0805;color:#d8c8b0;
}
[data-theme="ext-photo-last-light"][data-color="last"]{--accent:#a07850;--accent-glow:rgba(160,120,80,0.4);}
[data-theme="ext-photo-last-light"][data-color="fading"]{--accent:#8b6840;--accent-glow:rgba(139,104,64,0.4);}

[data-theme="ext-photo-last-light"] body{background:#0d0805;color:#d8c8b0;font-family:'Lora',sans-serif;}

/* Navbar */
[data-theme="ext-photo-last-light"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-last-light"] .nav-logo{font-family:'Crimson Text',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-last-light"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-last-light"] .nav-link{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-last-light"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-last-light"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-last-light"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-last-light"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-last-light"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-last-light"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-last-light"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-last-light"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-last-light"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-last-light"] .hero > .hero-content,
[data-theme="ext-photo-last-light"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-last-light"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-last-light"] .hero-title{font-family:'Crimson Text',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-last-light"] .hero-tagline{font-family:'Lora',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-last-light"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-last-light"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:last_light_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-last-light"] .section-num{font-family:'Crimson Text',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-last-light"] .section-title{font-family:'Crimson Text',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-last-light"] .section-head .kicker{font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-last-light"] .section-head h2{font-family:'Crimson Text',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-last-light"] .about-name{font-family:'Crimson Text',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-last-light"] .about-role{font-family:'Lora',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-last-light"] .about-bio{font-family:'Lora',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-last-light"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-last-light"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-last-light"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-last-light"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-last-light"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-last-light"] .stat-num{font-family:'Crimson Text',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-last-light"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-last-light"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-last-light"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-last-light"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-last-light"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-last-light"] .album-info-title{font-family:'Crimson Text',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-last-light"] .album-info-meta{font-family:'Lora',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-last-light"] .album-info-desc{font-family:'Lora',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-last-light"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Lora',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-last-light"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-last-light"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Lora',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-last-light"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-last-light"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-last-light"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-last-light"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-last-light"] .card-label{font-family:'Lora',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-last-light"] .card-value{font-family:'Lora',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-last-light"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-last-light"] .footer-logo{font-family:'Crimson Text',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-last-light"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-last-light"] .footer-links a{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-last-light"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-last-light"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-last-light"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-last-light"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes last_light_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes last_light_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes last_light_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes last_light_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-last-light"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 30%,rgba(160,120,80,0.10),transparent 40%),linear-gradient(180deg,rgba(139,104,64,0.04),transparent 50%);
  animation:last_light_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-last-light"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(160,120,80,0.04),transparent 30%);
  animation:last_light_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-last-light{background:linear-gradient(135deg,#0d0805,#a07850);}

/* ############################################################
   THEME: ext-photo-abandoned  (废弃之地 / Abandoned)
   ############################################################ */

[data-theme="ext-photo-abandoned"]{
  --bg:#0a0a0d;--bg-2:#101014;--bg-3:#161620;--bg-4:#1c1c28;
  --text:#a0a0a8;--text-dim:#4a4a58;--text-mid:#6a6a78;
  --accent:#5a5a6a;--accent-glow:rgba(90,90,106,0.4);--white:#a0a0a8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,10,13,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,10,13,0.3) 0%,rgba(10,10,13,0.75) 100%);
  --nav-scrolled-bg:#0a0a0dee;
  --font-display:'Barlow Condensed';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0a0d;color:#a0a0a8;
}
[data-theme="ext-photo-abandoned"][data-color="abandoned"]{--accent:#5a5a6a;--accent-glow:rgba(90,90,106,0.4);}
[data-theme="ext-photo-abandoned"][data-color="ruin"]{--accent:#4a4a5a;--accent-glow:rgba(74,74,90,0.4);}

[data-theme="ext-photo-abandoned"] body{background:#0a0a0d;color:#a0a0a8;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-abandoned"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-abandoned"] .nav-logo{font-family:'Barlow Condensed',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-abandoned"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-abandoned"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-abandoned"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-abandoned"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-abandoned"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-abandoned"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-abandoned"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-abandoned"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-abandoned"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-abandoned"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-abandoned"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-abandoned"] .hero > .hero-content,
[data-theme="ext-photo-abandoned"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-abandoned"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-abandoned"] .hero-title{font-family:'Barlow Condensed',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-abandoned"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-abandoned"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-abandoned"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:abandoned_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-abandoned"] .section-num{font-family:'Barlow Condensed',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-abandoned"] .section-title{font-family:'Barlow Condensed',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-abandoned"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-abandoned"] .section-head h2{font-family:'Barlow Condensed',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-abandoned"] .about-name{font-family:'Barlow Condensed',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-abandoned"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-abandoned"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-abandoned"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-abandoned"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-abandoned"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-abandoned"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-abandoned"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-abandoned"] .stat-num{font-family:'Barlow Condensed',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-abandoned"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-abandoned"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-abandoned"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-abandoned"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-abandoned"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-abandoned"] .album-info-title{font-family:'Barlow Condensed',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-abandoned"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-abandoned"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-abandoned"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-abandoned"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-abandoned"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-abandoned"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-abandoned"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-abandoned"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-abandoned"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-abandoned"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-abandoned"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-abandoned"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-abandoned"] .footer-logo{font-family:'Barlow Condensed',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-abandoned"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-abandoned"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-abandoned"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-abandoned"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-abandoned"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-abandoned"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes abandoned_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes abandoned_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes abandoned_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes abandoned_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-abandoned"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 40%,rgba(90,90,106,0.06),transparent 45%),radial-gradient(circle at 70% 60%,rgba(74,74,90,0.04),transparent 40%);
  animation:abandoned_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-abandoned"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(90,90,106,0.03),transparent 50%);
  animation:abandoned_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-abandoned{background:linear-gradient(135deg,#0a0a0d,#5a5a6a);}

/* ############################################################
   THEME: ext-photo-tear-stain  (泪痕洇染 / Tear Stain)
   ############################################################ */

[data-theme="ext-photo-tear-stain"]{
  --bg:#0d0a12;--bg-2:#120e1a;--bg-3:#1a1428;--bg-4:#221832;
  --text:#c0c0d8;--text-dim:#5a5068;--text-mid:#7a6e88;
  --accent:#5a6a8a;--accent-glow:rgba(90,106,138,0.4);--white:#c0c0d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,10,18,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,10,18,0.3) 0%,rgba(13,10,18,0.75) 100%);
  --nav-scrolled-bg:#0d0a12ee;
  --font-display:'Cormorant Garamond';--font-body:'Lora';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d0a12;color:#c0c0d8;
}
[data-theme="ext-photo-tear-stain"][data-color="tear"]{--accent:#5a6a8a;--accent-glow:rgba(90,106,138,0.4);}
[data-theme="ext-photo-tear-stain"][data-color="stain"]{--accent:#4a5a7a;--accent-glow:rgba(74,90,122,0.4);}

[data-theme="ext-photo-tear-stain"] body{background:#0d0a12;color:#c0c0d8;font-family:'Lora',sans-serif;}

/* Navbar */
[data-theme="ext-photo-tear-stain"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-tear-stain"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-tear-stain"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-tear-stain"] .nav-link{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-tear-stain"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-tear-stain"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-tear-stain"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-tear-stain"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-tear-stain"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-tear-stain"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-tear-stain"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-tear-stain"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-tear-stain"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-tear-stain"] .hero > .hero-content,
[data-theme="ext-photo-tear-stain"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-tear-stain"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-tear-stain"] .hero-title{font-family:'Cormorant Garamond',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-tear-stain"] .hero-tagline{font-family:'Lora',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-tear-stain"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-tear-stain"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:tear_stain_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-tear-stain"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-tear-stain"] .section-title{font-family:'Cormorant Garamond',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-tear-stain"] .section-head .kicker{font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-tear-stain"] .section-head h2{font-family:'Cormorant Garamond',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-tear-stain"] .about-name{font-family:'Cormorant Garamond',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-tear-stain"] .about-role{font-family:'Lora',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-tear-stain"] .about-bio{font-family:'Lora',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-tear-stain"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-tear-stain"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-tear-stain"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-tear-stain"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-tear-stain"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-tear-stain"] .stat-num{font-family:'Cormorant Garamond',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-tear-stain"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-tear-stain"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-tear-stain"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-tear-stain"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-tear-stain"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-tear-stain"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-tear-stain"] .album-info-meta{font-family:'Lora',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-tear-stain"] .album-info-desc{font-family:'Lora',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-tear-stain"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Lora',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-tear-stain"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-tear-stain"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Lora',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-tear-stain"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-tear-stain"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-tear-stain"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-tear-stain"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-tear-stain"] .card-label{font-family:'Lora',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-tear-stain"] .card-value{font-family:'Lora',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-tear-stain"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-tear-stain"] .footer-logo{font-family:'Cormorant Garamond',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-tear-stain"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-tear-stain"] .footer-links a{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-tear-stain"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-tear-stain"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-tear-stain"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-tear-stain"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes tear_stain_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes tear_stain_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes tear_stain_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes tear_stain_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-tear-stain"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 40% 30%,rgba(90,106,138,0.08),transparent 35%),radial-gradient(circle at 60% 70%,rgba(74,90,122,0.06),transparent 40%);
  animation:tear_stain_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-tear-stain"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(90,106,138,0.04),transparent 50%);
  animation:tear_stain_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-tear-stain{background:linear-gradient(135deg,#0d0a12,#5a6a8a);}

/* ############################################################
   THEME: ext-photo-rose-quartz  (蔷薇水晶 / Rose Quartz)
   ############################################################ */

[data-theme="ext-photo-rose-quartz"]{
  --bg:#1a0a12;--bg-2:#240c18;--bg-3:#2e1220;--bg-4:#3a1828;
  --text:#f5d8e0;--text-dim:#a07088;--text-mid:#c088a0;
  --accent:#f48fb1;--accent-glow:rgba(244,143,177,0.4);--white:#f5d8e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,18,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,18,0.2) 0%,rgba(26,10,18,0.7) 100%);
  --nav-scrolled-bg:#1a0a12ee;
  --font-display:'Cormorant Garamond';--font-body:'Quicksand';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a12;color:#f5d8e0;
}
[data-theme="ext-photo-rose-quartz"][data-color="rose"]{--accent:#f48fb1;--accent-glow:rgba(244,143,177,0.4);}
[data-theme="ext-photo-rose-quartz"][data-color="quartz"]{--accent:#ec407a;--accent-glow:rgba(236,64,122,0.4);}

[data-theme="ext-photo-rose-quartz"] body{background:#1a0a12;color:#f5d8e0;font-family:'Quicksand',sans-serif;}

/* Navbar */
[data-theme="ext-photo-rose-quartz"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-rose-quartz"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-rose-quartz"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-rose-quartz"] .nav-link{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-rose-quartz"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-rose-quartz"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-rose-quartz"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-rose-quartz"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-rose-quartz"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-rose-quartz"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-rose-quartz"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-rose-quartz"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-rose-quartz"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-rose-quartz"] .hero > .hero-content,
[data-theme="ext-photo-rose-quartz"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-rose-quartz"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-rose-quartz"] .hero-title{font-family:'Cormorant Garamond',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-rose-quartz"] .hero-tagline{font-family:'Quicksand',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-rose-quartz"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-rose-quartz"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:rose_quartz_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-rose-quartz"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-rose-quartz"] .section-title{font-family:'Cormorant Garamond',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-rose-quartz"] .section-head .kicker{font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-rose-quartz"] .section-head h2{font-family:'Cormorant Garamond',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-rose-quartz"] .about-name{font-family:'Cormorant Garamond',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-rose-quartz"] .about-role{font-family:'Quicksand',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-rose-quartz"] .about-bio{font-family:'Quicksand',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-rose-quartz"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-rose-quartz"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-rose-quartz"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-rose-quartz"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-rose-quartz"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-rose-quartz"] .stat-num{font-family:'Cormorant Garamond',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-rose-quartz"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-rose-quartz"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-rose-quartz"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-rose-quartz"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-rose-quartz"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-rose-quartz"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-rose-quartz"] .album-info-meta{font-family:'Quicksand',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-rose-quartz"] .album-info-desc{font-family:'Quicksand',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-rose-quartz"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Quicksand',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-rose-quartz"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-rose-quartz"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Quicksand',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-rose-quartz"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-rose-quartz"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-rose-quartz"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-rose-quartz"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-rose-quartz"] .card-label{font-family:'Quicksand',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-rose-quartz"] .card-value{font-family:'Quicksand',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-rose-quartz"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-rose-quartz"] .footer-logo{font-family:'Cormorant Garamond',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-rose-quartz"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-rose-quartz"] .footer-links a{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-rose-quartz"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-rose-quartz"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-rose-quartz"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-rose-quartz"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes rose_quartz_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes rose_quartz_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes rose_quartz_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes rose_quartz_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-rose-quartz"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(244,143,177,0.14),transparent 35%),radial-gradient(circle at 80% 70%,rgba(236,64,122,0.10),transparent 40%);
  animation:rose_quartz_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-rose-quartz"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(244,143,177,0.06),transparent 30%);
  animation:rose_quartz_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-rose-quartz{background:linear-gradient(135deg,#1a0a12,#f48fb1);}

/* ############################################################
   THEME: ext-photo-cotton-candy-sky  (棉花糖天空 / Cotton Candy Sky)
   ############################################################ */

[data-theme="ext-photo-cotton-candy-sky"]{
  --bg:#1a0a15;--bg-2:#240c20;--bg-3:#2e1228;--bg-4:#3a1830;
  --text:#f5d8e8;--text-dim:#a070a0;--text-mid:#c088b8;
  --accent:#ff80ab;--accent-glow:rgba(255,128,171,0.4);--white:#f5d8e8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,21,0.2) 0%,rgba(26,10,21,0.7) 100%);
  --nav-scrolled-bg:#1a0a15ee;
  --font-display:'Quicksand';--font-body:'Fredoka';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a15;color:#f5d8e8;
}
[data-theme="ext-photo-cotton-candy-sky"][data-color="candy"]{--accent:#ff80ab;--accent-glow:rgba(255,128,171,0.4);}
[data-theme="ext-photo-cotton-candy-sky"][data-color="sky"]{--accent:#ce93d8;--accent-glow:rgba(206,147,216,0.4);}

[data-theme="ext-photo-cotton-candy-sky"] body{background:#1a0a15;color:#f5d8e8;font-family:'Fredoka',sans-serif;}

/* Navbar */
[data-theme="ext-photo-cotton-candy-sky"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-cotton-candy-sky"] .nav-logo{font-family:'Quicksand',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-cotton-candy-sky"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-cotton-candy-sky"] .nav-link{color:var(--text-dim);font-family:'Fredoka',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-cotton-candy-sky"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-cotton-candy-sky"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-cotton-candy-sky"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-cotton-candy-sky"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-cotton-candy-sky"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-cotton-candy-sky"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-cotton-candy-sky"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-cotton-candy-sky"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-cotton-candy-sky"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-cotton-candy-sky"] .hero > .hero-content,
[data-theme="ext-photo-cotton-candy-sky"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-cotton-candy-sky"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Fredoka',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-cotton-candy-sky"] .hero-title{font-family:'Quicksand',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-cotton-candy-sky"] .hero-tagline{font-family:'Fredoka',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-cotton-candy-sky"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-cotton-candy-sky"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:cotton_candy_sky_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-cotton-candy-sky"] .section-num{font-family:'Quicksand',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-cotton-candy-sky"] .section-title{font-family:'Quicksand',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-cotton-candy-sky"] .section-head .kicker{font-family:'Fredoka',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-cotton-candy-sky"] .section-head h2{font-family:'Quicksand',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-cotton-candy-sky"] .about-name{font-family:'Quicksand',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-cotton-candy-sky"] .about-role{font-family:'Fredoka',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-cotton-candy-sky"] .about-bio{font-family:'Fredoka',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-cotton-candy-sky"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-cotton-candy-sky"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-cotton-candy-sky"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-cotton-candy-sky"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-cotton-candy-sky"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-cotton-candy-sky"] .stat-num{font-family:'Quicksand',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-cotton-candy-sky"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-cotton-candy-sky"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-cotton-candy-sky"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-cotton-candy-sky"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-cotton-candy-sky"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-cotton-candy-sky"] .album-info-title{font-family:'Quicksand',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-cotton-candy-sky"] .album-info-meta{font-family:'Fredoka',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-cotton-candy-sky"] .album-info-desc{font-family:'Fredoka',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-cotton-candy-sky"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Fredoka',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-cotton-candy-sky"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-cotton-candy-sky"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Fredoka',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-cotton-candy-sky"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-cotton-candy-sky"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-cotton-candy-sky"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-cotton-candy-sky"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-cotton-candy-sky"] .card-label{font-family:'Fredoka',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-cotton-candy-sky"] .card-value{font-family:'Fredoka',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-cotton-candy-sky"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-cotton-candy-sky"] .footer-logo{font-family:'Quicksand',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-cotton-candy-sky"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-cotton-candy-sky"] .footer-links a{color:var(--text-dim);font-family:'Fredoka',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-cotton-candy-sky"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-cotton-candy-sky"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-cotton-candy-sky"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-cotton-candy-sky"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes cotton_candy_sky_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes cotton_candy_sky_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes cotton_candy_sky_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes cotton_candy_sky_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-cotton-candy-sky"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,128,171,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(206,147,216,0.08),transparent 40%);
  animation:cotton_candy_sky_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-cotton-candy-sky"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,128,171,0.04),transparent 30%);
  animation:cotton_candy_sky_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-cotton-candy-sky{background:linear-gradient(135deg,#1a0a15,#ff80ab);}

/* ############################################################
   THEME: ext-photo-bubblegum-pop  (泡泡糖甜 / Bubblegum Pop)
   ############################################################ */

[data-theme="ext-photo-bubblegum-pop"]{
  --bg:#1a0a18;--bg-2:#240c20;--bg-3:#2e1228;--bg-4:#3a1830;
  --text:#f5d0f0;--text-dim:#a070a0;--text-mid:#c088b8;
  --accent:#e040fb;--accent-glow:rgba(224,64,251,0.4);--white:#f5d0f0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,24,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,24,0.2) 0%,rgba(26,10,24,0.7) 100%);
  --nav-scrolled-bg:#1a0a18ee;
  --font-display:'Fredoka';--font-body:'Quicksand';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a18;color:#f5d0f0;
}
[data-theme="ext-photo-bubblegum-pop"][data-color="bubble"]{--accent:#e040fb;--accent-glow:rgba(224,64,251,0.4);}
[data-theme="ext-photo-bubblegum-pop"][data-color="pop"]{--accent:#d500f9;--accent-glow:rgba(213,0,249,0.4);}

[data-theme="ext-photo-bubblegum-pop"] body{background:#1a0a18;color:#f5d0f0;font-family:'Quicksand',sans-serif;}

/* Navbar */
[data-theme="ext-photo-bubblegum-pop"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-bubblegum-pop"] .nav-logo{font-family:'Fredoka',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-bubblegum-pop"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-bubblegum-pop"] .nav-link{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-bubblegum-pop"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-bubblegum-pop"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-bubblegum-pop"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-bubblegum-pop"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-bubblegum-pop"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-bubblegum-pop"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-bubblegum-pop"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-bubblegum-pop"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-bubblegum-pop"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-bubblegum-pop"] .hero > .hero-content,
[data-theme="ext-photo-bubblegum-pop"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-bubblegum-pop"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-bubblegum-pop"] .hero-title{font-family:'Fredoka',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-bubblegum-pop"] .hero-tagline{font-family:'Quicksand',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-bubblegum-pop"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-bubblegum-pop"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:bubblegum_pop_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-bubblegum-pop"] .section-num{font-family:'Fredoka',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-bubblegum-pop"] .section-title{font-family:'Fredoka',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-bubblegum-pop"] .section-head .kicker{font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-bubblegum-pop"] .section-head h2{font-family:'Fredoka',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-bubblegum-pop"] .about-name{font-family:'Fredoka',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-bubblegum-pop"] .about-role{font-family:'Quicksand',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-bubblegum-pop"] .about-bio{font-family:'Quicksand',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-bubblegum-pop"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-bubblegum-pop"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-bubblegum-pop"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-bubblegum-pop"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-bubblegum-pop"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-bubblegum-pop"] .stat-num{font-family:'Fredoka',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-bubblegum-pop"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-bubblegum-pop"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-bubblegum-pop"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-bubblegum-pop"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-bubblegum-pop"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-bubblegum-pop"] .album-info-title{font-family:'Fredoka',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-bubblegum-pop"] .album-info-meta{font-family:'Quicksand',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-bubblegum-pop"] .album-info-desc{font-family:'Quicksand',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-bubblegum-pop"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Quicksand',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-bubblegum-pop"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-bubblegum-pop"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Quicksand',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-bubblegum-pop"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-bubblegum-pop"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-bubblegum-pop"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-bubblegum-pop"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-bubblegum-pop"] .card-label{font-family:'Quicksand',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-bubblegum-pop"] .card-value{font-family:'Quicksand',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-bubblegum-pop"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-bubblegum-pop"] .footer-logo{font-family:'Fredoka',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-bubblegum-pop"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-bubblegum-pop"] .footer-links a{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-bubblegum-pop"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-bubblegum-pop"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-bubblegum-pop"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-bubblegum-pop"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes bubblegum_pop_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes bubblegum_pop_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes bubblegum_pop_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes bubblegum_pop_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-bubblegum-pop"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(224,64,251,0.14),transparent 35%),radial-gradient(circle at 80% 70%,rgba(213,0,249,0.10),transparent 40%);
  animation:bubblegum_pop_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-bubblegum-pop"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(224,64,251,0.06),transparent 30%);
  animation:bubblegum_pop_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-bubblegum-pop{background:linear-gradient(135deg,#1a0a18,#e040fb);}

/* ############################################################
   THEME: ext-photo-strawberry-blond  (草莓金发 / Strawberry Blond)
   ############################################################ */

[data-theme="ext-photo-strawberry-blond"]{
  --bg:#1a0808;--bg-2:#240c0c;--bg-3:#2e1212;--bg-4:#3a1818;
  --text:#f5d0d0;--text-dim:#a07070;--text-mid:#c08888;
  --accent:#e91e63;--accent-glow:rgba(233,30,99,0.4);--white:#f5d0d0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,8,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,8,8,0.2) 0%,rgba(26,8,8,0.7) 100%);
  --nav-scrolled-bg:#1a0808ee;
  --font-display:'Lora';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0808;color:#f5d0d0;
}
[data-theme="ext-photo-strawberry-blond"][data-color="strawberry"]{--accent:#e91e63;--accent-glow:rgba(233,30,99,0.4);}
[data-theme="ext-photo-strawberry-blond"][data-color="blond"]{--accent:#f06292;--accent-glow:rgba(240,98,146,0.4);}

[data-theme="ext-photo-strawberry-blond"] body{background:#1a0808;color:#f5d0d0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-strawberry-blond"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-strawberry-blond"] .nav-logo{font-family:'Lora',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-strawberry-blond"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-strawberry-blond"] .nav-link{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-strawberry-blond"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-strawberry-blond"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-strawberry-blond"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-strawberry-blond"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-strawberry-blond"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-strawberry-blond"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-strawberry-blond"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-strawberry-blond"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-strawberry-blond"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-strawberry-blond"] .hero > .hero-content,
[data-theme="ext-photo-strawberry-blond"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-strawberry-blond"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-strawberry-blond"] .hero-title{font-family:'Lora',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-strawberry-blond"] .hero-tagline{font-family:'DM Sans',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-strawberry-blond"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-strawberry-blond"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:strawberry_blond_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-strawberry-blond"] .section-num{font-family:'Lora',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-strawberry-blond"] .section-title{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-strawberry-blond"] .section-head .kicker{font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-strawberry-blond"] .section-head h2{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-strawberry-blond"] .about-name{font-family:'Lora',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-strawberry-blond"] .about-role{font-family:'DM Sans',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-strawberry-blond"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-strawberry-blond"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-strawberry-blond"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-strawberry-blond"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-strawberry-blond"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-strawberry-blond"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-strawberry-blond"] .stat-num{font-family:'Lora',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-strawberry-blond"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-strawberry-blond"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-strawberry-blond"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-strawberry-blond"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-strawberry-blond"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-strawberry-blond"] .album-info-title{font-family:'Lora',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-strawberry-blond"] .album-info-meta{font-family:'DM Sans',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-strawberry-blond"] .album-info-desc{font-family:'DM Sans',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-strawberry-blond"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'DM Sans',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-strawberry-blond"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-strawberry-blond"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'DM Sans',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-strawberry-blond"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-strawberry-blond"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-strawberry-blond"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-strawberry-blond"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-strawberry-blond"] .card-label{font-family:'DM Sans',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-strawberry-blond"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-strawberry-blond"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-strawberry-blond"] .footer-logo{font-family:'Lora',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-strawberry-blond"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-strawberry-blond"] .footer-links a{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-strawberry-blond"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-strawberry-blond"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-strawberry-blond"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-strawberry-blond"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes strawberry_blond_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes strawberry_blond_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes strawberry_blond_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes strawberry_blond_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-strawberry-blond"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(233,30,99,0.12),transparent 35%),radial-gradient(circle at 80% 70%,rgba(240,98,146,0.08),transparent 40%);
  animation:strawberry_blond_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-strawberry-blond"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(233,30,99,0.04),transparent 30%);
  animation:strawberry_blond_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-strawberry-blond{background:linear-gradient(135deg,#1a0808,#e91e63);}

/* ############################################################
   THEME: ext-photo-caramel-macchiato  (焦糖玛奇朵 / Caramel Macchiato)
   ############################################################ */

[data-theme="ext-photo-caramel-macchiato"]{
  --bg:#180e05;--bg-2:#221208;--bg-3:#2c180c;--bg-4:#381e10;
  --text:#f0d8c0;--text-dim:#988068;--text-mid:#b89880;
  --accent:#c89665;--accent-glow:rgba(200,150,101,0.4);--white:#f0d8c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(24,14,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(24,14,5,0.2) 0%,rgba(24,14,5,0.7) 100%);
  --nav-scrolled-bg:#180e05ee;
  --font-display:'DM Sans';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#180e05;color:#f0d8c0;
}
[data-theme="ext-photo-caramel-macchiato"][data-color="caramel"]{--accent:#c89665;--accent-glow:rgba(200,150,101,0.4);}
[data-theme="ext-photo-caramel-macchiato"][data-color="latte"]{--accent:#b07845;--accent-glow:rgba(176,120,69,0.4);}

[data-theme="ext-photo-caramel-macchiato"] body{background:#180e05;color:#f0d8c0;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-caramel-macchiato"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-caramel-macchiato"] .nav-logo{font-family:'DM Sans',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-caramel-macchiato"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-caramel-macchiato"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-caramel-macchiato"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-caramel-macchiato"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-caramel-macchiato"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-caramel-macchiato"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-caramel-macchiato"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-caramel-macchiato"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-caramel-macchiato"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-caramel-macchiato"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-caramel-macchiato"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-caramel-macchiato"] .hero > .hero-content,
[data-theme="ext-photo-caramel-macchiato"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-caramel-macchiato"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-caramel-macchiato"] .hero-title{font-family:'DM Sans',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-caramel-macchiato"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-caramel-macchiato"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-caramel-macchiato"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:caramel_macchiato_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-caramel-macchiato"] .section-num{font-family:'DM Sans',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-caramel-macchiato"] .section-title{font-family:'DM Sans',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-caramel-macchiato"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-caramel-macchiato"] .section-head h2{font-family:'DM Sans',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-caramel-macchiato"] .about-name{font-family:'DM Sans',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-caramel-macchiato"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-caramel-macchiato"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-caramel-macchiato"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-caramel-macchiato"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-caramel-macchiato"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-caramel-macchiato"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-caramel-macchiato"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-caramel-macchiato"] .stat-num{font-family:'DM Sans',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-caramel-macchiato"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-caramel-macchiato"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-caramel-macchiato"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-caramel-macchiato"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-caramel-macchiato"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-caramel-macchiato"] .album-info-title{font-family:'DM Sans',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-caramel-macchiato"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-caramel-macchiato"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-caramel-macchiato"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-caramel-macchiato"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-caramel-macchiato"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-caramel-macchiato"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-caramel-macchiato"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-caramel-macchiato"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-caramel-macchiato"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-caramel-macchiato"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-caramel-macchiato"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-caramel-macchiato"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-caramel-macchiato"] .footer-logo{font-family:'DM Sans',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-caramel-macchiato"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-caramel-macchiato"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-caramel-macchiato"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-caramel-macchiato"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-caramel-macchiato"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-caramel-macchiato"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes caramel_macchiato_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes caramel_macchiato_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes caramel_macchiato_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes caramel_macchiato_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-caramel-macchiato"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(200,150,101,0.12),transparent 35%),radial-gradient(circle at 80% 70%,rgba(176,120,69,0.08),transparent 40%);
  animation:caramel_macchiato_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-caramel-macchiato"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(200,150,101,0.04),transparent 30%);
  animation:caramel_macchiato_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-caramel-macchiato{background:linear-gradient(135deg,#180e05,#c89665);}

/* ############################################################
   THEME: ext-photo-peach-blossom  (桃花烂漫 / Peach Blossom)
   ############################################################ */

[data-theme="ext-photo-peach-blossom"]{
  --bg:#1a0a0a;--bg-2:#240c0c;--bg-3:#2e1212;--bg-4:#3a1818;
  --text:#f5d8c8;--text-dim:#a07060;--text-mid:#c08878;
  --accent:#ff8a65;--accent-glow:rgba(255,138,101,0.4);--white:#f5d8c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,10,0.2) 0%,rgba(26,10,10,0.7) 100%);
  --nav-scrolled-bg:#1a0a0aee;
  --font-display:'Noto Serif';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a0a;color:#f5d8c8;
}
[data-theme="ext-photo-peach-blossom"][data-color="peach"]{--accent:#ff8a65;--accent-glow:rgba(255,138,101,0.4);}
[data-theme="ext-photo-peach-blossom"][data-color="blossom"]{--accent:#ffab91;--accent-glow:rgba(255,171,145,0.4);}

[data-theme="ext-photo-peach-blossom"] body{background:#1a0a0a;color:#f5d8c8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-peach-blossom"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-peach-blossom"] .nav-logo{font-family:'Noto Serif',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-peach-blossom"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-peach-blossom"] .nav-link{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-peach-blossom"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-peach-blossom"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-peach-blossom"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-peach-blossom"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-peach-blossom"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-peach-blossom"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-peach-blossom"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-peach-blossom"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-peach-blossom"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-peach-blossom"] .hero > .hero-content,
[data-theme="ext-photo-peach-blossom"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-peach-blossom"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-peach-blossom"] .hero-title{font-family:'Noto Serif',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-peach-blossom"] .hero-tagline{font-family:'DM Sans',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-peach-blossom"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-peach-blossom"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:peach_blossom_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-peach-blossom"] .section-num{font-family:'Noto Serif',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-peach-blossom"] .section-title{font-family:'Noto Serif',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-peach-blossom"] .section-head .kicker{font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-peach-blossom"] .section-head h2{font-family:'Noto Serif',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-peach-blossom"] .about-name{font-family:'Noto Serif',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-peach-blossom"] .about-role{font-family:'DM Sans',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-peach-blossom"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-peach-blossom"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-peach-blossom"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-peach-blossom"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-peach-blossom"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-peach-blossom"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-peach-blossom"] .stat-num{font-family:'Noto Serif',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-peach-blossom"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-peach-blossom"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-peach-blossom"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-peach-blossom"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-peach-blossom"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-peach-blossom"] .album-info-title{font-family:'Noto Serif',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-peach-blossom"] .album-info-meta{font-family:'DM Sans',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-peach-blossom"] .album-info-desc{font-family:'DM Sans',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-peach-blossom"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'DM Sans',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-peach-blossom"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-peach-blossom"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'DM Sans',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-peach-blossom"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-peach-blossom"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-peach-blossom"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-peach-blossom"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-peach-blossom"] .card-label{font-family:'DM Sans',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-peach-blossom"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-peach-blossom"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-peach-blossom"] .footer-logo{font-family:'Noto Serif',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-peach-blossom"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-peach-blossom"] .footer-links a{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-peach-blossom"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-peach-blossom"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-peach-blossom"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-peach-blossom"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes peach_blossom_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes peach_blossom_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes peach_blossom_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes peach_blossom_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-peach-blossom"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,138,101,0.14),transparent 35%),radial-gradient(circle at 80% 70%,rgba(255,171,145,0.08),transparent 40%);
  animation:peach_blossom_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-peach-blossom"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,138,101,0.06),transparent 30%);
  animation:peach_blossom_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-peach-blossom{background:linear-gradient(135deg,#1a0a0a,#ff8a65);}

/* ############################################################
   THEME: ext-photo-vanilla-bean  (香草荚甜 / Vanilla Bean)
   ############################################################ */

[data-theme="ext-photo-vanilla-bean"]{
  --bg:#1a150a;--bg-2:#241e0c;--bg-3:#2e2612;--bg-4:#3a2e18;
  --text:#f5e8c8;--text-dim:#988868;--text-mid:#b8a888;
  --accent:#f5deb3;--accent-glow:rgba(245,222,179,0.4);--white:#f5e8c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,21,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,21,10,0.2) 0%,rgba(26,21,10,0.7) 100%);
  --nav-scrolled-bg:#1a150aee;
  --font-display:'Marcellus';--font-body:'Quicksand';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a150a;color:#f5e8c8;
}
[data-theme="ext-photo-vanilla-bean"][data-color="vanilla"]{--accent:#f5deb3;--accent-glow:rgba(245,222,179,0.4);}
[data-theme="ext-photo-vanilla-bean"][data-color="bean"]{--accent:#e8d0a0;--accent-glow:rgba(232,208,160,0.4);}

[data-theme="ext-photo-vanilla-bean"] body{background:#1a150a;color:#f5e8c8;font-family:'Quicksand',sans-serif;}

/* Navbar */
[data-theme="ext-photo-vanilla-bean"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-vanilla-bean"] .nav-logo{font-family:'Marcellus',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-vanilla-bean"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-vanilla-bean"] .nav-link{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-vanilla-bean"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-vanilla-bean"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-vanilla-bean"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-vanilla-bean"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-vanilla-bean"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-vanilla-bean"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-vanilla-bean"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-vanilla-bean"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-vanilla-bean"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-vanilla-bean"] .hero > .hero-content,
[data-theme="ext-photo-vanilla-bean"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-vanilla-bean"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-vanilla-bean"] .hero-title{font-family:'Marcellus',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-vanilla-bean"] .hero-tagline{font-family:'Quicksand',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-vanilla-bean"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-vanilla-bean"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:vanilla_bean_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-vanilla-bean"] .section-num{font-family:'Marcellus',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-vanilla-bean"] .section-title{font-family:'Marcellus',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-vanilla-bean"] .section-head .kicker{font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-vanilla-bean"] .section-head h2{font-family:'Marcellus',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-vanilla-bean"] .about-name{font-family:'Marcellus',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-vanilla-bean"] .about-role{font-family:'Quicksand',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-vanilla-bean"] .about-bio{font-family:'Quicksand',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-vanilla-bean"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-vanilla-bean"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-vanilla-bean"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-vanilla-bean"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-vanilla-bean"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-vanilla-bean"] .stat-num{font-family:'Marcellus',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-vanilla-bean"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-vanilla-bean"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-vanilla-bean"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-vanilla-bean"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-vanilla-bean"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-vanilla-bean"] .album-info-title{font-family:'Marcellus',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-vanilla-bean"] .album-info-meta{font-family:'Quicksand',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-vanilla-bean"] .album-info-desc{font-family:'Quicksand',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-vanilla-bean"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Quicksand',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-vanilla-bean"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-vanilla-bean"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Quicksand',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-vanilla-bean"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-vanilla-bean"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-vanilla-bean"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-vanilla-bean"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-vanilla-bean"] .card-label{font-family:'Quicksand',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-vanilla-bean"] .card-value{font-family:'Quicksand',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-vanilla-bean"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-vanilla-bean"] .footer-logo{font-family:'Marcellus',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-vanilla-bean"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-vanilla-bean"] .footer-links a{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-vanilla-bean"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-vanilla-bean"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-vanilla-bean"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-vanilla-bean"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes vanilla_bean_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes vanilla_bean_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes vanilla_bean_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes vanilla_bean_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-vanilla-bean"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(245,222,179,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(232,208,160,0.08),transparent 40%);
  animation:vanilla_bean_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-vanilla-bean"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(245,222,179,0.04),transparent 30%);
  animation:vanilla_bean_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-vanilla-bean{background:linear-gradient(135deg,#1a150a,#f5deb3);}

/* ############################################################
   THEME: ext-photo-mauve-blush  (紫粉娇羞 / Mauve Blush)
   ############################################################ */

[data-theme="ext-photo-mauve-blush"]{
  --bg:#1a0a15;--bg-2:#240c20;--bg-3:#2e1228;--bg-4:#3a1830;
  --text:#f0d8e8;--text-dim:#a070a0;--text-mid:#c088b8;
  --accent:#c39bd3;--accent-glow:rgba(195,155,211,0.4);--white:#f0d8e8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,21,0.2) 0%,rgba(26,10,21,0.7) 100%);
  --nav-scrolled-bg:#1a0a15ee;
  --font-display:'Cormorant Garamond';--font-body:'Lora';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a15;color:#f0d8e8;
}
[data-theme="ext-photo-mauve-blush"][data-color="mauve"]{--accent:#c39bd3;--accent-glow:rgba(195,155,211,0.4);}
[data-theme="ext-photo-mauve-blush"][data-color="blush"]{--accent:#bb8fce;--accent-glow:rgba(187,143,206,0.4);}

[data-theme="ext-photo-mauve-blush"] body{background:#1a0a15;color:#f0d8e8;font-family:'Lora',sans-serif;}

/* Navbar */
[data-theme="ext-photo-mauve-blush"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-mauve-blush"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-mauve-blush"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-mauve-blush"] .nav-link{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-mauve-blush"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-mauve-blush"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-mauve-blush"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-mauve-blush"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-mauve-blush"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-mauve-blush"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-mauve-blush"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-mauve-blush"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-mauve-blush"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-mauve-blush"] .hero > .hero-content,
[data-theme="ext-photo-mauve-blush"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-mauve-blush"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-mauve-blush"] .hero-title{font-family:'Cormorant Garamond',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-mauve-blush"] .hero-tagline{font-family:'Lora',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-mauve-blush"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-mauve-blush"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:mauve_blush_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-mauve-blush"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-mauve-blush"] .section-title{font-family:'Cormorant Garamond',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-mauve-blush"] .section-head .kicker{font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-mauve-blush"] .section-head h2{font-family:'Cormorant Garamond',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-mauve-blush"] .about-name{font-family:'Cormorant Garamond',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-mauve-blush"] .about-role{font-family:'Lora',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-mauve-blush"] .about-bio{font-family:'Lora',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-mauve-blush"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-mauve-blush"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-mauve-blush"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-mauve-blush"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-mauve-blush"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-mauve-blush"] .stat-num{font-family:'Cormorant Garamond',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-mauve-blush"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-mauve-blush"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-mauve-blush"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-mauve-blush"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-mauve-blush"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-mauve-blush"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-mauve-blush"] .album-info-meta{font-family:'Lora',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-mauve-blush"] .album-info-desc{font-family:'Lora',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-mauve-blush"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Lora',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-mauve-blush"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-mauve-blush"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Lora',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-mauve-blush"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-mauve-blush"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-mauve-blush"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-mauve-blush"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-mauve-blush"] .card-label{font-family:'Lora',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-mauve-blush"] .card-value{font-family:'Lora',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-mauve-blush"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-mauve-blush"] .footer-logo{font-family:'Cormorant Garamond',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-mauve-blush"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-mauve-blush"] .footer-links a{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-mauve-blush"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-mauve-blush"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-mauve-blush"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-mauve-blush"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes mauve_blush_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes mauve_blush_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes mauve_blush_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes mauve_blush_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-mauve-blush"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(195,155,211,0.14),transparent 35%),radial-gradient(circle at 80% 70%,rgba(187,143,206,0.08),transparent 40%);
  animation:mauve_blush_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-mauve-blush"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(195,155,211,0.06),transparent 30%);
  animation:mauve_blush_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-mauve-blush{background:linear-gradient(135deg,#1a0a15,#c39bd3);}

/* ############################################################
   THEME: ext-photo-confetti-burst  (彩纸飞溅 / Confetti Burst)
   ############################################################ */

[data-theme="ext-photo-confetti-burst"]{
  --bg:#150a1a;--bg-2:#1e0c28;--bg-3:#281232;--bg-4:#32183c;
  --text:#f0e0f8;--text-dim:#9070a8;--text-mid:#b088c8;
  --accent:#ff4081;--accent-glow:rgba(255,64,129,0.4);--white:#f0e0f8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(21,10,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(21,10,26,0.2) 0%,rgba(21,10,26,0.7) 100%);
  --nav-scrolled-bg:#150a1aee;
  --font-display:'Poppins';--font-body:'Fredoka';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#150a1a;color:#f0e0f8;
}
[data-theme="ext-photo-confetti-burst"][data-color="confetti"]{--accent:#ff4081;--accent-glow:rgba(255,64,129,0.4);}
[data-theme="ext-photo-confetti-burst"][data-color="burst"]{--accent:#7c4dff;--accent-glow:rgba(124,77,255,0.4);}

[data-theme="ext-photo-confetti-burst"] body{background:#150a1a;color:#f0e0f8;font-family:'Fredoka',sans-serif;}

/* Navbar */
[data-theme="ext-photo-confetti-burst"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-confetti-burst"] .nav-logo{font-family:'Poppins',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-confetti-burst"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-confetti-burst"] .nav-link{color:var(--text-dim);font-family:'Fredoka',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-confetti-burst"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-confetti-burst"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-confetti-burst"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-confetti-burst"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-confetti-burst"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-confetti-burst"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-confetti-burst"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-confetti-burst"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-confetti-burst"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-confetti-burst"] .hero > .hero-content,
[data-theme="ext-photo-confetti-burst"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-confetti-burst"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Fredoka',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-confetti-burst"] .hero-title{font-family:'Poppins',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-confetti-burst"] .hero-tagline{font-family:'Fredoka',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-confetti-burst"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-confetti-burst"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:confetti_burst_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-confetti-burst"] .section-num{font-family:'Poppins',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-confetti-burst"] .section-title{font-family:'Poppins',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-confetti-burst"] .section-head .kicker{font-family:'Fredoka',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-confetti-burst"] .section-head h2{font-family:'Poppins',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-confetti-burst"] .about-name{font-family:'Poppins',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-confetti-burst"] .about-role{font-family:'Fredoka',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-confetti-burst"] .about-bio{font-family:'Fredoka',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-confetti-burst"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-confetti-burst"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-confetti-burst"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-confetti-burst"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-confetti-burst"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-confetti-burst"] .stat-num{font-family:'Poppins',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-confetti-burst"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-confetti-burst"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-confetti-burst"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-confetti-burst"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-confetti-burst"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-confetti-burst"] .album-info-title{font-family:'Poppins',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-confetti-burst"] .album-info-meta{font-family:'Fredoka',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-confetti-burst"] .album-info-desc{font-family:'Fredoka',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-confetti-burst"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Fredoka',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-confetti-burst"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-confetti-burst"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Fredoka',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-confetti-burst"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-confetti-burst"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-confetti-burst"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-confetti-burst"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-confetti-burst"] .card-label{font-family:'Fredoka',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-confetti-burst"] .card-value{font-family:'Fredoka',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-confetti-burst"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-confetti-burst"] .footer-logo{font-family:'Poppins',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-confetti-burst"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-confetti-burst"] .footer-links a{color:var(--text-dim);font-family:'Fredoka',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-confetti-burst"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-confetti-burst"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-confetti-burst"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-confetti-burst"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes confetti_burst_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes confetti_burst_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes confetti_burst_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes confetti_burst_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-confetti-burst"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 15% 25%,rgba(255,64,129,0.10),transparent 25%),radial-gradient(circle at 75% 15%,rgba(124,77,255,0.08),transparent 25%),radial-gradient(circle at 50% 80%,rgba(255,64,129,0.06),transparent 25%),radial-gradient(circle at 85% 65%,rgba(124,77,255,0.06),transparent 25%);
  animation:confetti_burst_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-confetti-burst"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 60%,rgba(255,64,129,0.06),transparent 20%),radial-gradient(circle at 65% 45%,rgba(124,77,255,0.04),transparent 20%);
  animation:confetti_burst_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-confetti-burst{background:linear-gradient(135deg,#150a1a,#ff4081);}

/* ############################################################
   THEME: ext-photo-candle-wish  (烛光心愿 / Candle Wish)
   ############################################################ */

[data-theme="ext-photo-candle-wish"]{
  --bg:#150a05;--bg-2:#1e0c06;--bg-3:#281208;--bg-4:#32160a;
  --text:#f5d8b0;--text-dim:#a07858;--text-mid:#c09078;
  --accent:#ffb74d;--accent-glow:rgba(255,183,77,0.4);--white:#f5d8b0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(21,10,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(21,10,5,0.2) 0%,rgba(21,10,5,0.7) 100%);
  --nav-scrolled-bg:#150a05ee;
  --font-display:'Lora';--font-body:'Quicksand';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#150a05;color:#f5d8b0;
}
[data-theme="ext-photo-candle-wish"][data-color="candle"]{--accent:#ffb74d;--accent-glow:rgba(255,183,77,0.4);}
[data-theme="ext-photo-candle-wish"][data-color="wish"]{--accent:#ff9800;--accent-glow:rgba(255,152,0,0.4);}

[data-theme="ext-photo-candle-wish"] body{background:#150a05;color:#f5d8b0;font-family:'Quicksand',sans-serif;}

/* Navbar */
[data-theme="ext-photo-candle-wish"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-candle-wish"] .nav-logo{font-family:'Lora',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-candle-wish"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-candle-wish"] .nav-link{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-candle-wish"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-candle-wish"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-candle-wish"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-candle-wish"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-candle-wish"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-candle-wish"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-candle-wish"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-candle-wish"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-candle-wish"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-candle-wish"] .hero > .hero-content,
[data-theme="ext-photo-candle-wish"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-candle-wish"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-candle-wish"] .hero-title{font-family:'Lora',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-candle-wish"] .hero-tagline{font-family:'Quicksand',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-candle-wish"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-candle-wish"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:candle_wish_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-candle-wish"] .section-num{font-family:'Lora',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-candle-wish"] .section-title{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-candle-wish"] .section-head .kicker{font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-candle-wish"] .section-head h2{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-candle-wish"] .about-name{font-family:'Lora',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-candle-wish"] .about-role{font-family:'Quicksand',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-candle-wish"] .about-bio{font-family:'Quicksand',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-candle-wish"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-candle-wish"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-candle-wish"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-candle-wish"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-candle-wish"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-candle-wish"] .stat-num{font-family:'Lora',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-candle-wish"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-candle-wish"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-candle-wish"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-candle-wish"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-candle-wish"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-candle-wish"] .album-info-title{font-family:'Lora',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-candle-wish"] .album-info-meta{font-family:'Quicksand',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-candle-wish"] .album-info-desc{font-family:'Quicksand',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-candle-wish"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Quicksand',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-candle-wish"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-candle-wish"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Quicksand',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-candle-wish"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-candle-wish"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-candle-wish"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-candle-wish"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-candle-wish"] .card-label{font-family:'Quicksand',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-candle-wish"] .card-value{font-family:'Quicksand',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-candle-wish"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-candle-wish"] .footer-logo{font-family:'Lora',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-candle-wish"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-candle-wish"] .footer-links a{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-candle-wish"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-candle-wish"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-candle-wish"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-candle-wish"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes candle_wish_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes candle_wish_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes candle_wish_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes candle_wish_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-candle-wish"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 70%,rgba(255,183,77,0.14),transparent 30%),radial-gradient(circle at 30% 50%,rgba(255,152,0,0.06),transparent 25%);
  animation:candle_wish_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-candle-wish"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 80%,rgba(255,183,77,0.08),transparent 20%);
  animation:candle_wish_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-candle-wish{background:linear-gradient(135deg,#150a05,#ffb74d);}

/* ############################################################
   THEME: ext-photo-balloons-rise  (气球升空 / Balloons Rise)
   ############################################################ */

[data-theme="ext-photo-balloons-rise"]{
  --bg:#0a0a1a;--bg-2:#0c0c28;--bg-3:#101032;--bg-4:#14143c;
  --text:#d0d0f8;--text-dim:#6060a8;--text-mid:#8080c8;
  --accent:#42a5f5;--accent-glow:rgba(66,165,245,0.4);--white:#d0d0f8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,10,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,10,26,0.2) 0%,rgba(10,10,26,0.7) 100%);
  --nav-scrolled-bg:#0a0a1aee;
  --font-display:'Fredoka';--font-body:'Quicksand';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0a1a;color:#d0d0f8;
}
[data-theme="ext-photo-balloons-rise"][data-color="balloon"]{--accent:#42a5f5;--accent-glow:rgba(66,165,245,0.4);}
[data-theme="ext-photo-balloons-rise"][data-color="rise"]{--accent:#26c6da;--accent-glow:rgba(38,198,218,0.4);}

[data-theme="ext-photo-balloons-rise"] body{background:#0a0a1a;color:#d0d0f8;font-family:'Quicksand',sans-serif;}

/* Navbar */
[data-theme="ext-photo-balloons-rise"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-balloons-rise"] .nav-logo{font-family:'Fredoka',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-balloons-rise"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-balloons-rise"] .nav-link{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-balloons-rise"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-balloons-rise"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-balloons-rise"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-balloons-rise"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-balloons-rise"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-balloons-rise"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-balloons-rise"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-balloons-rise"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-balloons-rise"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-balloons-rise"] .hero > .hero-content,
[data-theme="ext-photo-balloons-rise"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-balloons-rise"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-balloons-rise"] .hero-title{font-family:'Fredoka',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-balloons-rise"] .hero-tagline{font-family:'Quicksand',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-balloons-rise"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-balloons-rise"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:balloons_rise_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-balloons-rise"] .section-num{font-family:'Fredoka',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-balloons-rise"] .section-title{font-family:'Fredoka',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-balloons-rise"] .section-head .kicker{font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-balloons-rise"] .section-head h2{font-family:'Fredoka',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-balloons-rise"] .about-name{font-family:'Fredoka',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-balloons-rise"] .about-role{font-family:'Quicksand',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-balloons-rise"] .about-bio{font-family:'Quicksand',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-balloons-rise"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-balloons-rise"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-balloons-rise"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-balloons-rise"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-balloons-rise"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-balloons-rise"] .stat-num{font-family:'Fredoka',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-balloons-rise"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-balloons-rise"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-balloons-rise"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-balloons-rise"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-balloons-rise"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-balloons-rise"] .album-info-title{font-family:'Fredoka',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-balloons-rise"] .album-info-meta{font-family:'Quicksand',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-balloons-rise"] .album-info-desc{font-family:'Quicksand',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-balloons-rise"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Quicksand',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-balloons-rise"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-balloons-rise"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Quicksand',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-balloons-rise"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-balloons-rise"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-balloons-rise"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-balloons-rise"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-balloons-rise"] .card-label{font-family:'Quicksand',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-balloons-rise"] .card-value{font-family:'Quicksand',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-balloons-rise"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-balloons-rise"] .footer-logo{font-family:'Fredoka',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-balloons-rise"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-balloons-rise"] .footer-links a{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-balloons-rise"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-balloons-rise"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-balloons-rise"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-balloons-rise"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes balloons_rise_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes balloons_rise_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes balloons_rise_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes balloons_rise_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-balloons-rise"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 80%,rgba(66,165,245,0.10),transparent 25%),radial-gradient(circle at 70% 20%,rgba(38,198,218,0.08),transparent 25%),radial-gradient(circle at 50% 50%,rgba(66,165,245,0.04),transparent 30%);
  animation:balloons_rise_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-balloons-rise"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 40% 60%,rgba(66,165,245,0.06),transparent 20%),radial-gradient(circle at 80% 30%,rgba(38,198,218,0.04),transparent 20%);
  animation:balloons_rise_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-balloons-rise{background:linear-gradient(135deg,#0a0a1a,#42a5f5);}

/* ############################################################
   THEME: ext-photo-sparkler-night  (烟花棒夜 / Sparkler Night)
   ############################################################ */

[data-theme="ext-photo-sparkler-night"]{
  --bg:#0a0a15;--bg-2:#0c0c24;--bg-3:#101028;--bg-4:#141430;
  --text:#f0f0d0;--text-dim:#686850;--text-mid:#888870;
  --accent:#ffd54f;--accent-glow:rgba(255,213,79,0.4);--white:#f0f0d0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,10,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,10,21,0.2) 0%,rgba(10,10,21,0.7) 100%);
  --nav-scrolled-bg:#0a0a15ee;
  --font-display:'Outfit';--font-body:'Poppins';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0a15;color:#f0f0d0;
}
[data-theme="ext-photo-sparkler-night"][data-color="spark"]{--accent:#ffd54f;--accent-glow:rgba(255,213,79,0.4);}
[data-theme="ext-photo-sparkler-night"][data-color="night"]{--accent:#ffca28;--accent-glow:rgba(255,202,40,0.4);}

[data-theme="ext-photo-sparkler-night"] body{background:#0a0a15;color:#f0f0d0;font-family:'Poppins',sans-serif;}

/* Navbar */
[data-theme="ext-photo-sparkler-night"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-sparkler-night"] .nav-logo{font-family:'Outfit',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-sparkler-night"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-sparkler-night"] .nav-link{color:var(--text-dim);font-family:'Poppins',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-sparkler-night"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-sparkler-night"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-sparkler-night"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-sparkler-night"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-sparkler-night"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-sparkler-night"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-sparkler-night"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-sparkler-night"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-sparkler-night"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-sparkler-night"] .hero > .hero-content,
[data-theme="ext-photo-sparkler-night"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-sparkler-night"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Poppins',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-sparkler-night"] .hero-title{font-family:'Outfit',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-sparkler-night"] .hero-tagline{font-family:'Poppins',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-sparkler-night"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-sparkler-night"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:sparkler_night_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-sparkler-night"] .section-num{font-family:'Outfit',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-sparkler-night"] .section-title{font-family:'Outfit',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-sparkler-night"] .section-head .kicker{font-family:'Poppins',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-sparkler-night"] .section-head h2{font-family:'Outfit',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-sparkler-night"] .about-name{font-family:'Outfit',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-sparkler-night"] .about-role{font-family:'Poppins',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-sparkler-night"] .about-bio{font-family:'Poppins',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-sparkler-night"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-sparkler-night"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-sparkler-night"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-sparkler-night"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-sparkler-night"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-sparkler-night"] .stat-num{font-family:'Outfit',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-sparkler-night"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-sparkler-night"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-sparkler-night"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-sparkler-night"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-sparkler-night"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-sparkler-night"] .album-info-title{font-family:'Outfit',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-sparkler-night"] .album-info-meta{font-family:'Poppins',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-sparkler-night"] .album-info-desc{font-family:'Poppins',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-sparkler-night"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Poppins',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-sparkler-night"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-sparkler-night"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Poppins',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-sparkler-night"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-sparkler-night"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-sparkler-night"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-sparkler-night"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-sparkler-night"] .card-label{font-family:'Poppins',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-sparkler-night"] .card-value{font-family:'Poppins',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-sparkler-night"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-sparkler-night"] .footer-logo{font-family:'Outfit',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-sparkler-night"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-sparkler-night"] .footer-links a{color:var(--text-dim);font-family:'Poppins',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-sparkler-night"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-sparkler-night"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-sparkler-night"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-sparkler-night"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes sparkler_night_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes sparkler_night_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes sparkler_night_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes sparkler_night_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-sparkler-night"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,213,79,0.12),transparent 25%),radial-gradient(circle at 70% 60%,rgba(255,202,40,0.08),transparent 25%),radial-gradient(circle at 50% 50%,rgba(255,213,79,0.04),transparent 30%);
  animation:sparkler_night_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-sparkler-night"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 40% 40%,rgba(255,213,79,0.06),transparent 20%);
  animation:sparkler_night_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-sparkler-night{background:linear-gradient(135deg,#0a0a15,#ffd54f);}

/* ############################################################
   THEME: ext-photo-festive-lights  (节日灯火 / Festive Lights)
   ############################################################ */

[data-theme="ext-photo-festive-lights"]{
  --bg:#150a0a;--bg-2:#1e0c0c;--bg-3:#281212;--bg-4:#321818;
  --text:#f5d0c0;--text-dim:#a07060;--text-mid:#c08878;
  --accent:#ff5252;--accent-glow:rgba(255,82,82,0.4);--white:#f5d0c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(21,10,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(21,10,10,0.2) 0%,rgba(21,10,10,0.7) 100%);
  --nav-scrolled-bg:#150a0aee;
  --font-display:'DM Sans';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#150a0a;color:#f5d0c0;
}
[data-theme="ext-photo-festive-lights"][data-color="festive"]{--accent:#ff5252;--accent-glow:rgba(255,82,82,0.4);}
[data-theme="ext-photo-festive-lights"][data-color="lights"]{--accent:#ff6b35;--accent-glow:rgba(255,107,53,0.4);}

[data-theme="ext-photo-festive-lights"] body{background:#150a0a;color:#f5d0c0;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-festive-lights"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-festive-lights"] .nav-logo{font-family:'DM Sans',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-festive-lights"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-festive-lights"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-festive-lights"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-festive-lights"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-festive-lights"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-festive-lights"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-festive-lights"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-festive-lights"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-festive-lights"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-festive-lights"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-festive-lights"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-festive-lights"] .hero > .hero-content,
[data-theme="ext-photo-festive-lights"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-festive-lights"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-festive-lights"] .hero-title{font-family:'DM Sans',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-festive-lights"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-festive-lights"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-festive-lights"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:festive_lights_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-festive-lights"] .section-num{font-family:'DM Sans',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-festive-lights"] .section-title{font-family:'DM Sans',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-festive-lights"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-festive-lights"] .section-head h2{font-family:'DM Sans',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-festive-lights"] .about-name{font-family:'DM Sans',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-festive-lights"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-festive-lights"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-festive-lights"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-festive-lights"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-festive-lights"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-festive-lights"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-festive-lights"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-festive-lights"] .stat-num{font-family:'DM Sans',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-festive-lights"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-festive-lights"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-festive-lights"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-festive-lights"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-festive-lights"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-festive-lights"] .album-info-title{font-family:'DM Sans',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-festive-lights"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-festive-lights"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-festive-lights"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-festive-lights"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-festive-lights"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-festive-lights"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-festive-lights"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-festive-lights"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-festive-lights"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-festive-lights"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-festive-lights"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-festive-lights"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-festive-lights"] .footer-logo{font-family:'DM Sans',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-festive-lights"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-festive-lights"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-festive-lights"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-festive-lights"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-festive-lights"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-festive-lights"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes festive_lights_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes festive_lights_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes festive_lights_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes festive_lights_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-festive-lights"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 15% 20%,rgba(255,82,82,0.10),transparent 20%),radial-gradient(circle at 85% 30%,rgba(255,107,53,0.08),transparent 20%),radial-gradient(circle at 50% 70%,rgba(255,82,82,0.06),transparent 25%);
  animation:festive_lights_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-festive-lights"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 50%,rgba(255,82,82,0.04),transparent 20%);
  animation:festive_lights_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-festive-lights{background:linear-gradient(135deg,#150a0a,#ff5252);}

/* ############################################################
   THEME: ext-photo-cake-slice  (蛋糕切片 / Cake Slice)
   ############################################################ */

[data-theme="ext-photo-cake-slice"]{
  --bg:#1a0a12;--bg-2:#240c18;--bg-3:#2e1220;--bg-4:#3a1828;
  --text:#f5d8e0;--text-dim:#a07088;--text-mid:#c088a0;
  --accent:#f8bbd0;--accent-glow:rgba(248,187,208,0.4);--white:#f5d8e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,10,18,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,10,18,0.2) 0%,rgba(26,10,18,0.7) 100%);
  --nav-scrolled-bg:#1a0a12ee;
  --font-display:'Quicksand';--font-body:'Fredoka';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a12;color:#f5d8e0;
}
[data-theme="ext-photo-cake-slice"][data-color="cake"]{--accent:#f8bbd0;--accent-glow:rgba(248,187,208,0.4);}
[data-theme="ext-photo-cake-slice"][data-color="slice"]{--accent:#f48fb1;--accent-glow:rgba(244,143,177,0.4);}

[data-theme="ext-photo-cake-slice"] body{background:#1a0a12;color:#f5d8e0;font-family:'Fredoka',sans-serif;}

/* Navbar */
[data-theme="ext-photo-cake-slice"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-cake-slice"] .nav-logo{font-family:'Quicksand',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-cake-slice"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-cake-slice"] .nav-link{color:var(--text-dim);font-family:'Fredoka',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-cake-slice"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-cake-slice"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-cake-slice"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-cake-slice"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-cake-slice"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-cake-slice"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-cake-slice"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-cake-slice"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-cake-slice"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-cake-slice"] .hero > .hero-content,
[data-theme="ext-photo-cake-slice"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-cake-slice"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Fredoka',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-cake-slice"] .hero-title{font-family:'Quicksand',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-cake-slice"] .hero-tagline{font-family:'Fredoka',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-cake-slice"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-cake-slice"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:cake_slice_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-cake-slice"] .section-num{font-family:'Quicksand',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-cake-slice"] .section-title{font-family:'Quicksand',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-cake-slice"] .section-head .kicker{font-family:'Fredoka',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-cake-slice"] .section-head h2{font-family:'Quicksand',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-cake-slice"] .about-name{font-family:'Quicksand',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-cake-slice"] .about-role{font-family:'Fredoka',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-cake-slice"] .about-bio{font-family:'Fredoka',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-cake-slice"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-cake-slice"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-cake-slice"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-cake-slice"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-cake-slice"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-cake-slice"] .stat-num{font-family:'Quicksand',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-cake-slice"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-cake-slice"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-cake-slice"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-cake-slice"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-cake-slice"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-cake-slice"] .album-info-title{font-family:'Quicksand',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-cake-slice"] .album-info-meta{font-family:'Fredoka',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-cake-slice"] .album-info-desc{font-family:'Fredoka',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-cake-slice"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Fredoka',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-cake-slice"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-cake-slice"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Fredoka',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-cake-slice"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-cake-slice"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-cake-slice"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-cake-slice"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-cake-slice"] .card-label{font-family:'Fredoka',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-cake-slice"] .card-value{font-family:'Fredoka',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-cake-slice"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-cake-slice"] .footer-logo{font-family:'Quicksand',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-cake-slice"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-cake-slice"] .footer-links a{color:var(--text-dim);font-family:'Fredoka',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-cake-slice"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-cake-slice"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-cake-slice"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-cake-slice"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes cake_slice_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes cake_slice_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes cake_slice_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes cake_slice_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-cake-slice"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(248,187,208,0.14),transparent 35%),radial-gradient(circle at 80% 70%,rgba(244,143,177,0.08),transparent 40%);
  animation:cake_slice_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-cake-slice"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(248,187,208,0.06),transparent 30%);
  animation:cake_slice_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-cake-slice{background:linear-gradient(135deg,#1a0a12,#f8bbd0);}

/* ############################################################
   THEME: ext-photo-champagne-pop  (香槟开启 / Champagne Pop)
   ############################################################ */

[data-theme="ext-photo-champagne-pop"]{
  --bg:#150a08;--bg-2:#1e0c06;--bg-3:#281208;--bg-4:#32160a;
  --text:#f5e8c0;--text-dim:#a08860;--text-mid:#c0a880;
  --accent:#ffd700;--accent-glow:rgba(255,215,0,0.4);--white:#f5e8c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(21,10,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(21,10,8,0.2) 0%,rgba(21,10,8,0.7) 100%);
  --nav-scrolled-bg:#150a08ee;
  --font-display:'Cinzel';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#150a08;color:#f5e8c0;
}
[data-theme="ext-photo-champagne-pop"][data-color="champagne"]{--accent:#ffd700;--accent-glow:rgba(255,215,0,0.4);}
[data-theme="ext-photo-champagne-pop"][data-color="pop"]{--accent:#ffcc00;--accent-glow:rgba(255,204,0,0.4);}

[data-theme="ext-photo-champagne-pop"] body{background:#150a08;color:#f5e8c0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-champagne-pop"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-champagne-pop"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-champagne-pop"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-champagne-pop"] .nav-link{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-champagne-pop"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-champagne-pop"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-champagne-pop"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-champagne-pop"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-champagne-pop"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-champagne-pop"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-champagne-pop"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-champagne-pop"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-champagne-pop"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-champagne-pop"] .hero > .hero-content,
[data-theme="ext-photo-champagne-pop"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-champagne-pop"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-champagne-pop"] .hero-title{font-family:'Cinzel',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-champagne-pop"] .hero-tagline{font-family:'DM Sans',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-champagne-pop"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-champagne-pop"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:champagne_pop_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-champagne-pop"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-champagne-pop"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-champagne-pop"] .section-head .kicker{font-family:'DM Sans',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-champagne-pop"] .section-head h2{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-champagne-pop"] .about-name{font-family:'Cinzel',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-champagne-pop"] .about-role{font-family:'DM Sans',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-champagne-pop"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-champagne-pop"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-champagne-pop"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-champagne-pop"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-champagne-pop"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-champagne-pop"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-champagne-pop"] .stat-num{font-family:'Cinzel',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-champagne-pop"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-champagne-pop"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-champagne-pop"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-champagne-pop"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-champagne-pop"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-champagne-pop"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-champagne-pop"] .album-info-meta{font-family:'DM Sans',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-champagne-pop"] .album-info-desc{font-family:'DM Sans',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-champagne-pop"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'DM Sans',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-champagne-pop"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-champagne-pop"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'DM Sans',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-champagne-pop"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-champagne-pop"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-champagne-pop"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-champagne-pop"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-champagne-pop"] .card-label{font-family:'DM Sans',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-champagne-pop"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-champagne-pop"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-champagne-pop"] .footer-logo{font-family:'Cinzel',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-champagne-pop"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-champagne-pop"] .footer-links a{color:var(--text-dim);font-family:'DM Sans',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-champagne-pop"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-champagne-pop"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-champagne-pop"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-champagne-pop"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes champagne_pop_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes champagne_pop_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes champagne_pop_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes champagne_pop_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-champagne-pop"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,215,0,0.14),transparent 35%),radial-gradient(circle at 80% 70%,rgba(255,204,0,0.10),transparent 40%);
  animation:champagne_pop_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-champagne-pop"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,215,0,0.06),transparent 30%);
  animation:champagne_pop_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-champagne-pop{background:linear-gradient(135deg,#150a08,#ffd700);}

/* ############################################################
   THEME: ext-photo-birthday-cake  (生日蛋糕 / Birthday Cake)
   ############################################################ */

[data-theme="ext-photo-birthday-cake"]{
  --bg:#150a15;--bg-2:#1e0c1e;--bg-3:#281228;--bg-4:#321832;
  --text:#f5d8f0;--text-dim:#a070a0;--text-mid:#c088b8;
  --accent:#ff80ab;--accent-glow:rgba(255,128,171,0.4);--white:#f5d8f0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(21,10,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(21,10,21,0.2) 0%,rgba(21,10,21,0.7) 100%);
  --nav-scrolled-bg:#150a15ee;
  --font-display:'Pacifico';--font-body:'Quicksand';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#150a15;color:#f5d8f0;
}
[data-theme="ext-photo-birthday-cake"][data-color="bcake"]{--accent:#ff80ab;--accent-glow:rgba(255,128,171,0.4);}
[data-theme="ext-photo-birthday-cake"][data-color="candle"]{--accent:#7c4dff;--accent-glow:rgba(124,77,255,0.4);}

[data-theme="ext-photo-birthday-cake"] body{background:#150a15;color:#f5d8f0;font-family:'Quicksand',sans-serif;}

/* Navbar */
[data-theme="ext-photo-birthday-cake"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-birthday-cake"] .nav-logo{font-family:'Pacifico',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-birthday-cake"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-birthday-cake"] .nav-link{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-birthday-cake"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-birthday-cake"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-birthday-cake"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-birthday-cake"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-birthday-cake"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-birthday-cake"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-birthday-cake"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-birthday-cake"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-birthday-cake"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-birthday-cake"] .hero > .hero-content,
[data-theme="ext-photo-birthday-cake"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-birthday-cake"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-birthday-cake"] .hero-title{font-family:'Pacifico',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-birthday-cake"] .hero-tagline{font-family:'Quicksand',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-birthday-cake"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-birthday-cake"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:birthday_cake_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-birthday-cake"] .section-num{font-family:'Pacifico',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-birthday-cake"] .section-title{font-family:'Pacifico',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-birthday-cake"] .section-head .kicker{font-family:'Quicksand',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-birthday-cake"] .section-head h2{font-family:'Pacifico',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-birthday-cake"] .about-name{font-family:'Pacifico',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-birthday-cake"] .about-role{font-family:'Quicksand',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-birthday-cake"] .about-bio{font-family:'Quicksand',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-birthday-cake"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-birthday-cake"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-birthday-cake"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-birthday-cake"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-birthday-cake"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-birthday-cake"] .stat-num{font-family:'Pacifico',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-birthday-cake"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-birthday-cake"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-birthday-cake"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-birthday-cake"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-birthday-cake"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-birthday-cake"] .album-info-title{font-family:'Pacifico',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-birthday-cake"] .album-info-meta{font-family:'Quicksand',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-birthday-cake"] .album-info-desc{font-family:'Quicksand',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-birthday-cake"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Quicksand',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-birthday-cake"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-birthday-cake"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Quicksand',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-birthday-cake"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-birthday-cake"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-birthday-cake"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-birthday-cake"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-birthday-cake"] .card-label{font-family:'Quicksand',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-birthday-cake"] .card-value{font-family:'Quicksand',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-birthday-cake"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-birthday-cake"] .footer-logo{font-family:'Pacifico',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-birthday-cake"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-birthday-cake"] .footer-links a{color:var(--text-dim);font-family:'Quicksand',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-birthday-cake"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-birthday-cake"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-birthday-cake"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-birthday-cake"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes birthday_cake_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes birthday_cake_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes birthday_cake_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes birthday_cake_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-birthday-cake"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,128,171,0.12),transparent 30%),radial-gradient(circle at 80% 70%,rgba(124,77,255,0.08),transparent 30%),radial-gradient(circle at 50% 50%,rgba(255,128,171,0.04),transparent 30%);
  animation:birthday_cake_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-birthday-cake"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 40% 40%,rgba(255,128,171,0.06),transparent 20%);
  animation:birthday_cake_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-birthday-cake{background:linear-gradient(135deg,#150a15,#ff80ab);}

/* ############################################################
   THEME: ext-photo-chiaroscuro  (明暗交界 / Chiaroscuro)
   ############################################################ */

[data-theme="ext-photo-chiaroscuro"]{
  --bg:#080808;--bg-2:#0e0e0e;--bg-3:#161616;--bg-4:#1e1e1e;
  --text:#e0e0e0;--text-dim:#606060;--text-mid:#808080;
  --accent:#d4a017;--accent-glow:rgba(212,160,23,0.4);--white:#e0e0e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(8,8,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(8,8,8,0.3) 0%,rgba(8,8,8,0.75) 100%);
  --nav-scrolled-bg:#080808ee;
  --font-display:'Playfair Display';--font-body:'Lora';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#080808;color:#e0e0e0;
}
[data-theme="ext-photo-chiaroscuro"][data-color="light"]{--accent:#d4a017;--accent-glow:rgba(212,160,23,0.4);}
[data-theme="ext-photo-chiaroscuro"][data-color="dark"]{--accent:#8b6914;--accent-glow:rgba(139,105,20,0.4);}

[data-theme="ext-photo-chiaroscuro"] body{background:#080808;color:#e0e0e0;font-family:'Lora',sans-serif;}

/* Navbar */
[data-theme="ext-photo-chiaroscuro"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-chiaroscuro"] .nav-logo{font-family:'Playfair Display',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-chiaroscuro"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-chiaroscuro"] .nav-link{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-chiaroscuro"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-chiaroscuro"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-chiaroscuro"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-chiaroscuro"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-chiaroscuro"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-chiaroscuro"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-chiaroscuro"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-chiaroscuro"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-chiaroscuro"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-chiaroscuro"] .hero > .hero-content,
[data-theme="ext-photo-chiaroscuro"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-chiaroscuro"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-chiaroscuro"] .hero-title{font-family:'Playfair Display',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-chiaroscuro"] .hero-tagline{font-family:'Lora',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-chiaroscuro"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-chiaroscuro"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:chiaroscuro_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-chiaroscuro"] .section-num{font-family:'Playfair Display',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-chiaroscuro"] .section-title{font-family:'Playfair Display',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-chiaroscuro"] .section-head .kicker{font-family:'Lora',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-chiaroscuro"] .section-head h2{font-family:'Playfair Display',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-chiaroscuro"] .about-name{font-family:'Playfair Display',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-chiaroscuro"] .about-role{font-family:'Lora',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-chiaroscuro"] .about-bio{font-family:'Lora',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-chiaroscuro"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-chiaroscuro"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-chiaroscuro"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-chiaroscuro"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-chiaroscuro"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-chiaroscuro"] .stat-num{font-family:'Playfair Display',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-chiaroscuro"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-chiaroscuro"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-chiaroscuro"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-chiaroscuro"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-chiaroscuro"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-chiaroscuro"] .album-info-title{font-family:'Playfair Display',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-chiaroscuro"] .album-info-meta{font-family:'Lora',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-chiaroscuro"] .album-info-desc{font-family:'Lora',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-chiaroscuro"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Lora',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-chiaroscuro"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-chiaroscuro"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Lora',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-chiaroscuro"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-chiaroscuro"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-chiaroscuro"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-chiaroscuro"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-chiaroscuro"] .card-label{font-family:'Lora',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-chiaroscuro"] .card-value{font-family:'Lora',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-chiaroscuro"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-chiaroscuro"] .footer-logo{font-family:'Playfair Display',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-chiaroscuro"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-chiaroscuro"] .footer-links a{color:var(--text-dim);font-family:'Lora',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-chiaroscuro"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-chiaroscuro"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-chiaroscuro"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-chiaroscuro"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes chiaroscuro_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes chiaroscuro_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes chiaroscuro_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes chiaroscuro_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-chiaroscuro"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 30%,rgba(212,160,23,0.12),transparent 30%),radial-gradient(circle at 70% 70%,rgba(0,0,0,0.3),transparent 40%);
  animation:chiaroscuro_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-chiaroscuro"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(135deg,rgba(212,160,23,0.04),transparent 50%,rgba(0,0,0,0.06) 50%);
  animation:chiaroscuro_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-chiaroscuro{background:linear-gradient(135deg,#080808,#d4a017);}

/* ############################################################
   THEME: ext-photo-storm-chase  (风暴追逐 / Storm Chase)
   ############################################################ */

[data-theme="ext-photo-storm-chase"]{
  --bg:#080a10;--bg-2:#0e1018;--bg-3:#141820;--bg-4:#1a1e28;
  --text:#c8d0e0;--text-dim:#505868;--text-mid:#687888;
  --accent:#42a5f5;--accent-glow:rgba(66,165,245,0.4);--white:#c8d0e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(8,10,16,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(8,10,16,0.3) 0%,rgba(8,10,16,0.75) 100%);
  --nav-scrolled-bg:#080a10ee;
  --font-display:'Archivo Black';--font-body:'Barlow';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#080a10;color:#c8d0e0;
}
[data-theme="ext-photo-storm-chase"][data-color="storm"]{--accent:#42a5f5;--accent-glow:rgba(66,165,245,0.4);}
[data-theme="ext-photo-storm-chase"][data-color="chase"]{--accent:#1a237e;--accent-glow:rgba(26,35,126,0.4);}

[data-theme="ext-photo-storm-chase"] body{background:#080a10;color:#c8d0e0;font-family:'Barlow',sans-serif;}

/* Navbar */
[data-theme="ext-photo-storm-chase"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-storm-chase"] .nav-logo{font-family:'Archivo Black',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-storm-chase"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-storm-chase"] .nav-link{color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-storm-chase"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-storm-chase"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-storm-chase"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-storm-chase"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-storm-chase"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-storm-chase"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-storm-chase"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-storm-chase"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-storm-chase"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-storm-chase"] .hero > .hero-content,
[data-theme="ext-photo-storm-chase"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-storm-chase"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-storm-chase"] .hero-title{font-family:'Archivo Black',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-storm-chase"] .hero-tagline{font-family:'Barlow',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-storm-chase"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-storm-chase"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:storm_chase_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-storm-chase"] .section-num{font-family:'Archivo Black',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-storm-chase"] .section-title{font-family:'Archivo Black',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-storm-chase"] .section-head .kicker{font-family:'Barlow',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-storm-chase"] .section-head h2{font-family:'Archivo Black',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-storm-chase"] .about-name{font-family:'Archivo Black',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-storm-chase"] .about-role{font-family:'Barlow',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-storm-chase"] .about-bio{font-family:'Barlow',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-storm-chase"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-storm-chase"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-storm-chase"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-storm-chase"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-storm-chase"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-storm-chase"] .stat-num{font-family:'Archivo Black',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-storm-chase"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-storm-chase"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-storm-chase"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-storm-chase"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-storm-chase"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-storm-chase"] .album-info-title{font-family:'Archivo Black',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-storm-chase"] .album-info-meta{font-family:'Barlow',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-storm-chase"] .album-info-desc{font-family:'Barlow',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-storm-chase"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Barlow',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-storm-chase"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-storm-chase"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Barlow',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-storm-chase"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-storm-chase"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-storm-chase"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-storm-chase"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-storm-chase"] .card-label{font-family:'Barlow',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-storm-chase"] .card-value{font-family:'Barlow',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-storm-chase"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-storm-chase"] .footer-logo{font-family:'Archivo Black',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-storm-chase"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-storm-chase"] .footer-links a{color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-storm-chase"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-storm-chase"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-storm-chase"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-storm-chase"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes storm_chase_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes storm_chase_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes storm_chase_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes storm_chase_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-storm-chase"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(66,165,245,0.06),transparent 50%),radial-gradient(circle at 50% 0%,rgba(26,35,126,0.08),transparent 40%);
  animation:storm_chase_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-storm-chase"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 70%,rgba(66,165,245,0.06),transparent 30%);
  animation:storm_chase_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-storm-chase{background:linear-gradient(135deg,#080a10,#42a5f5);}

/* ############################################################
   THEME: ext-photo-volcanic-ash  (火山灰烬 / Volcanic Ash)
   ############################################################ */

[data-theme="ext-photo-volcanic-ash"]{
  --bg:#0a0805;--bg-2:#100c06;--bg-3:#181208;--bg-4:#1e160c;
  --text:#e0c8b8;--text-dim:#685040;--text-mid:#886858;
  --accent:#ff5722;--accent-glow:rgba(255,87,34,0.4);--white:#e0c8b8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,8,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,8,5,0.3) 0%,rgba(10,8,5,0.75) 100%);
  --nav-scrolled-bg:#0a0805ee;
  --font-display:'Oswald';--font-body:'Barlow';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0805;color:#e0c8b8;
}
[data-theme="ext-photo-volcanic-ash"][data-color="volcanic"]{--accent:#ff5722;--accent-glow:rgba(255,87,34,0.4);}
[data-theme="ext-photo-volcanic-ash"][data-color="ash"]{--accent:#b71c1c;--accent-glow:rgba(183,28,28,0.4);}

[data-theme="ext-photo-volcanic-ash"] body{background:#0a0805;color:#e0c8b8;font-family:'Barlow',sans-serif;}

/* Navbar */
[data-theme="ext-photo-volcanic-ash"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-volcanic-ash"] .nav-logo{font-family:'Oswald',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-volcanic-ash"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-volcanic-ash"] .nav-link{color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-volcanic-ash"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-volcanic-ash"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-volcanic-ash"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-volcanic-ash"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-volcanic-ash"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-volcanic-ash"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-volcanic-ash"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-volcanic-ash"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-volcanic-ash"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-volcanic-ash"] .hero > .hero-content,
[data-theme="ext-photo-volcanic-ash"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-volcanic-ash"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-volcanic-ash"] .hero-title{font-family:'Oswald',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-volcanic-ash"] .hero-tagline{font-family:'Barlow',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-volcanic-ash"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-volcanic-ash"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:volcanic_ash_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-volcanic-ash"] .section-num{font-family:'Oswald',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-volcanic-ash"] .section-title{font-family:'Oswald',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-volcanic-ash"] .section-head .kicker{font-family:'Barlow',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-volcanic-ash"] .section-head h2{font-family:'Oswald',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-volcanic-ash"] .about-name{font-family:'Oswald',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-volcanic-ash"] .about-role{font-family:'Barlow',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-volcanic-ash"] .about-bio{font-family:'Barlow',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-volcanic-ash"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-volcanic-ash"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-volcanic-ash"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-volcanic-ash"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-volcanic-ash"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-volcanic-ash"] .stat-num{font-family:'Oswald',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-volcanic-ash"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-volcanic-ash"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-volcanic-ash"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-volcanic-ash"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-volcanic-ash"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-volcanic-ash"] .album-info-title{font-family:'Oswald',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-volcanic-ash"] .album-info-meta{font-family:'Barlow',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-volcanic-ash"] .album-info-desc{font-family:'Barlow',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-volcanic-ash"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Barlow',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-volcanic-ash"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-volcanic-ash"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Barlow',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-volcanic-ash"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-volcanic-ash"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-volcanic-ash"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-volcanic-ash"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-volcanic-ash"] .card-label{font-family:'Barlow',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-volcanic-ash"] .card-value{font-family:'Barlow',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-volcanic-ash"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-volcanic-ash"] .footer-logo{font-family:'Oswald',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-volcanic-ash"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-volcanic-ash"] .footer-links a{color:var(--text-dim);font-family:'Barlow',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-volcanic-ash"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-volcanic-ash"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-volcanic-ash"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-volcanic-ash"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes volcanic_ash_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes volcanic_ash_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes volcanic_ash_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes volcanic_ash_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-volcanic-ash"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 80%,rgba(255,87,34,0.12),transparent 30%),radial-gradient(circle at 30% 50%,rgba(183,28,28,0.06),transparent 35%);
  animation:volcanic_ash_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-volcanic-ash"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(255,87,34,0.04),transparent 50%);
  animation:volcanic_ash_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-volcanic-ash{background:linear-gradient(135deg,#0a0805,#ff5722);}

/* ############################################################
   THEME: ext-photo-eclipse-shadow  (日食阴影 / Eclipse Shadow)
   ############################################################ */

[data-theme="ext-photo-eclipse-shadow"]{
  --bg:#050508;--bg-2:#080810;--bg-3:#0e0e18;--bg-4:#141420;
  --text:#c8c8e0;--text-dim:#505060;--text-mid:#686880;
  --accent:#ffd700;--accent-glow:rgba(255,215,0,0.4);--white:#c8c8e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(5,5,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(5,5,8,0.3) 0%,rgba(5,5,8,0.75) 100%);
  --nav-scrolled-bg:#050508ee;
  --font-display:'Cinzel';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#050508;color:#c8c8e0;
}
[data-theme="ext-photo-eclipse-shadow"][data-color="corona"]{--accent:#ffd700;--accent-glow:rgba(255,215,0,0.4);}
[data-theme="ext-photo-eclipse-shadow"][data-color="eclipse"]{--accent:#ff6f00;--accent-glow:rgba(255,111,0,0.4);}

[data-theme="ext-photo-eclipse-shadow"] body{background:#050508;color:#c8c8e0;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-eclipse-shadow"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-eclipse-shadow"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-eclipse-shadow"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-eclipse-shadow"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-eclipse-shadow"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-eclipse-shadow"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-eclipse-shadow"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-eclipse-shadow"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-eclipse-shadow"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-eclipse-shadow"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-eclipse-shadow"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-eclipse-shadow"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-eclipse-shadow"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-eclipse-shadow"] .hero > .hero-content,
[data-theme="ext-photo-eclipse-shadow"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-eclipse-shadow"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-eclipse-shadow"] .hero-title{font-family:'Cinzel',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-eclipse-shadow"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-eclipse-shadow"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-eclipse-shadow"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:eclipse_shadow_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-eclipse-shadow"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-eclipse-shadow"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-eclipse-shadow"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-eclipse-shadow"] .section-head h2{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-eclipse-shadow"] .about-name{font-family:'Cinzel',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-eclipse-shadow"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-eclipse-shadow"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-eclipse-shadow"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-eclipse-shadow"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-eclipse-shadow"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-eclipse-shadow"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-eclipse-shadow"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-eclipse-shadow"] .stat-num{font-family:'Cinzel',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-eclipse-shadow"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-eclipse-shadow"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-eclipse-shadow"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-eclipse-shadow"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-eclipse-shadow"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-eclipse-shadow"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-eclipse-shadow"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-eclipse-shadow"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-eclipse-shadow"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-eclipse-shadow"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-eclipse-shadow"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-eclipse-shadow"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-eclipse-shadow"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-eclipse-shadow"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-eclipse-shadow"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-eclipse-shadow"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-eclipse-shadow"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-eclipse-shadow"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-eclipse-shadow"] .footer-logo{font-family:'Cinzel',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-eclipse-shadow"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-eclipse-shadow"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-eclipse-shadow"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-eclipse-shadow"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-eclipse-shadow"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-eclipse-shadow"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes eclipse_shadow_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes eclipse_shadow_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes eclipse_shadow_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes eclipse_shadow_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-eclipse-shadow"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,215,0,0.08),transparent 20%),radial-gradient(circle at 50% 50%,transparent 15%,rgba(0,0,0,0.2) 20%,transparent 30%);
  animation:eclipse_shadow_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-eclipse-shadow"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(255,111,0,0.04),transparent 25%);
  animation:eclipse_shadow_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-eclipse-shadow{background:linear-gradient(135deg,#050508,#ffd700);}

/* ############################################################
   THEME: ext-photo-deep-shaft  (矿井深处 / Deep Shaft)
   ############################################################ */

[data-theme="ext-photo-deep-shaft"]{
  --bg:#050505;--bg-2:#0a0a0a;--bg-3:#101010;--bg-4:#161616;
  --text:#b0a090;--text-dim:#484030;--text-mid:#685848;
  --accent:#6a4a2a;--accent-glow:rgba(106,74,42,0.4);--white:#b0a090;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(5,5,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(5,5,5,0.3) 0%,rgba(5,5,5,0.75) 100%);
  --nav-scrolled-bg:#050505ee;
  --font-display:'IBM Plex Mono';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#050505;color:#b0a090;
}
[data-theme="ext-photo-deep-shaft"][data-color="shaft"]{--accent:#6a4a2a;--accent-glow:rgba(106,74,42,0.4);}
[data-theme="ext-photo-deep-shaft"][data-color="deep"]{--accent:#4a3a1a;--accent-glow:rgba(74,58,26,0.4);}

[data-theme="ext-photo-deep-shaft"] body{background:#050505;color:#b0a090;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-deep-shaft"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-deep-shaft"] .nav-logo{font-family:'IBM Plex Mono',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-deep-shaft"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-deep-shaft"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-deep-shaft"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-deep-shaft"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-deep-shaft"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-deep-shaft"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-deep-shaft"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-deep-shaft"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-deep-shaft"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-deep-shaft"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-deep-shaft"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-deep-shaft"] .hero > .hero-content,
[data-theme="ext-photo-deep-shaft"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-deep-shaft"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-deep-shaft"] .hero-title{font-family:'IBM Plex Mono',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-deep-shaft"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-deep-shaft"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-deep-shaft"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:deep_shaft_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-deep-shaft"] .section-num{font-family:'IBM Plex Mono',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-deep-shaft"] .section-title{font-family:'IBM Plex Mono',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-deep-shaft"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-deep-shaft"] .section-head h2{font-family:'IBM Plex Mono',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-deep-shaft"] .about-name{font-family:'IBM Plex Mono',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-deep-shaft"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-deep-shaft"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-deep-shaft"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-deep-shaft"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-deep-shaft"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-deep-shaft"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-deep-shaft"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-deep-shaft"] .stat-num{font-family:'IBM Plex Mono',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-deep-shaft"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-deep-shaft"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-deep-shaft"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-deep-shaft"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-deep-shaft"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-deep-shaft"] .album-info-title{font-family:'IBM Plex Mono',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-deep-shaft"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-deep-shaft"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-deep-shaft"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-deep-shaft"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-deep-shaft"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-deep-shaft"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-deep-shaft"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-deep-shaft"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-deep-shaft"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-deep-shaft"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-deep-shaft"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-deep-shaft"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-deep-shaft"] .footer-logo{font-family:'IBM Plex Mono',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-deep-shaft"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-deep-shaft"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-deep-shaft"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-deep-shaft"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-deep-shaft"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-deep-shaft"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes deep_shaft_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes deep_shaft_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes deep_shaft_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes deep_shaft_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-deep-shaft"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 60%,rgba(106,74,42,0.08),transparent 30%),radial-gradient(circle at 50% 40%,rgba(0,0,0,0.15),transparent 25%);
  animation:deep_shaft_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-deep-shaft"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(106,74,42,0.04),transparent 50%);
  animation:deep_shaft_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-deep-shaft{background:linear-gradient(135deg,#050505,#6a4a2a);}

/* ############################################################
   THEME: ext-photo-ink-bleed  (墨渍扩散 / Ink Bleed)
   ############################################################ */

[data-theme="ext-photo-ink-bleed"]{
  --bg:#0a0a0a;--bg-2:#101010;--bg-3:#161616;--bg-4:#1c1c1c;
  --text:#c0c0c0;--text-dim:#484848;--text-mid:#686868;
  --accent:#424242;--accent-glow:rgba(66,66,66,0.4);--white:#c0c0c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,10,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,10,10,0.3) 0%,rgba(10,10,10,0.75) 100%);
  --nav-scrolled-bg:#0a0a0aee;
  --font-display:'Noto Serif';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0a0a;color:#c0c0c0;
}
[data-theme="ext-photo-ink-bleed"][data-color="ink"]{--accent:#424242;--accent-glow:rgba(66,66,66,0.4);}
[data-theme="ext-photo-ink-bleed"][data-color="bleed"]{--accent:#616161;--accent-glow:rgba(97,97,97,0.4);}

[data-theme="ext-photo-ink-bleed"] body{background:#0a0a0a;color:#c0c0c0;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-ink-bleed"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-ink-bleed"] .nav-logo{font-family:'Noto Serif',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-ink-bleed"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-ink-bleed"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-ink-bleed"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-ink-bleed"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-ink-bleed"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-ink-bleed"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-ink-bleed"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-ink-bleed"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-ink-bleed"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-ink-bleed"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-ink-bleed"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-ink-bleed"] .hero > .hero-content,
[data-theme="ext-photo-ink-bleed"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-ink-bleed"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-ink-bleed"] .hero-title{font-family:'Noto Serif',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-ink-bleed"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-ink-bleed"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-ink-bleed"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:ink_bleed_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-ink-bleed"] .section-num{font-family:'Noto Serif',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-ink-bleed"] .section-title{font-family:'Noto Serif',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-ink-bleed"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-ink-bleed"] .section-head h2{font-family:'Noto Serif',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-ink-bleed"] .about-name{font-family:'Noto Serif',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-ink-bleed"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-ink-bleed"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-ink-bleed"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-ink-bleed"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-ink-bleed"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-ink-bleed"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-ink-bleed"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-ink-bleed"] .stat-num{font-family:'Noto Serif',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-ink-bleed"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-ink-bleed"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-ink-bleed"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-ink-bleed"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-ink-bleed"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-ink-bleed"] .album-info-title{font-family:'Noto Serif',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-ink-bleed"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-ink-bleed"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-ink-bleed"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-ink-bleed"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-ink-bleed"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-ink-bleed"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-ink-bleed"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-ink-bleed"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-ink-bleed"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-ink-bleed"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-ink-bleed"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-ink-bleed"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-ink-bleed"] .footer-logo{font-family:'Noto Serif',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-ink-bleed"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-ink-bleed"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-ink-bleed"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-ink-bleed"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-ink-bleed"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-ink-bleed"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes ink_bleed_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes ink_bleed_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes ink_bleed_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes ink_bleed_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-ink-bleed"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 40%,rgba(97,97,97,0.06),transparent 30%),radial-gradient(circle at 70% 60%,rgba(66,66,66,0.04),transparent 35%);
  animation:ink_bleed_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-ink-bleed"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(135deg,rgba(97,97,97,0.03),transparent 50%);
  animation:ink_bleed_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-ink-bleed{background:linear-gradient(135deg,#0a0a0a,#424242);}

/* ############################################################
   THEME: ext-photo-spring-first-light  (初春之光 / Spring First Light)
   ############################################################ */

[data-theme="ext-photo-spring-first-light"]{
  --bg:#0a150a;--bg-2:#0e1e10;--bg-3:#142818;--bg-4:#1a3220;
  --text:#c8e8c0;--text-dim:#608860;--text-mid:#80a880;
  --accent:#8bc34a;--accent-glow:rgba(139,195,74,0.4);--white:#c8e8c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,21,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,21,10,0.2) 0%,rgba(10,21,10,0.7) 100%);
  --nav-scrolled-bg:#0a150aee;
  --font-display:'Karla';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a150a;color:#c8e8c0;
}
[data-theme="ext-photo-spring-first-light"][data-color="spring"]{--accent:#8bc34a;--accent-glow:rgba(139,195,74,0.4);}
[data-theme="ext-photo-spring-first-light"][data-color="light"]{--accent:#aed581;--accent-glow:rgba(174,213,129,0.4);}

[data-theme="ext-photo-spring-first-light"] body{background:#0a150a;color:#c8e8c0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-spring-first-light"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-spring-first-light"] .nav-logo{font-family:'Karla',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-spring-first-light"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-spring-first-light"] .nav-link{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-spring-first-light"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-spring-first-light"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-spring-first-light"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-spring-first-light"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-spring-first-light"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-spring-first-light"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-spring-first-light"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-spring-first-light"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-spring-first-light"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-spring-first-light"] .hero > .hero-content,
[data-theme="ext-photo-spring-first-light"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-spring-first-light"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-spring-first-light"] .hero-title{font-family:'Karla',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-spring-first-light"] .hero-tagline{font-family:'Outfit',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-spring-first-light"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-spring-first-light"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:spring_first_light_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-spring-first-light"] .section-num{font-family:'Karla',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-spring-first-light"] .section-title{font-family:'Karla',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-spring-first-light"] .section-head .kicker{font-family:'Outfit',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-spring-first-light"] .section-head h2{font-family:'Karla',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-spring-first-light"] .about-name{font-family:'Karla',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-spring-first-light"] .about-role{font-family:'Outfit',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-spring-first-light"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-spring-first-light"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-spring-first-light"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-spring-first-light"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-spring-first-light"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-spring-first-light"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-spring-first-light"] .stat-num{font-family:'Karla',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-spring-first-light"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-spring-first-light"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-spring-first-light"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-spring-first-light"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-spring-first-light"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-spring-first-light"] .album-info-title{font-family:'Karla',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-spring-first-light"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-spring-first-light"] .album-info-desc{font-family:'Outfit',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-spring-first-light"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Outfit',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-spring-first-light"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-spring-first-light"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Outfit',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-spring-first-light"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-spring-first-light"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-spring-first-light"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-spring-first-light"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-spring-first-light"] .card-label{font-family:'Outfit',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-spring-first-light"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-spring-first-light"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-spring-first-light"] .footer-logo{font-family:'Karla',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-spring-first-light"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-spring-first-light"] .footer-links a{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-spring-first-light"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-spring-first-light"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-spring-first-light"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-spring-first-light"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes spring_first_light_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes spring_first_light_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes spring_first_light_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes spring_first_light_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-spring-first-light"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 20%,rgba(139,195,74,0.12),transparent 40%),radial-gradient(circle at 70% 80%,rgba(174,213,129,0.08),transparent 35%);
  animation:spring_first_light_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-spring-first-light"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(139,195,74,0.04),transparent 50%);
  animation:spring_first_light_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-spring-first-light{background:linear-gradient(135deg,#0a150a,#8bc34a);}

/* ############################################################
   THEME: ext-photo-mint-fresh  (薄荷清新 / Mint Fresh)
   ############################################################ */

[data-theme="ext-photo-mint-fresh"]{
  --bg:#05151a;--bg-2:#081e24;--bg-3:#0c2830;--bg-4:#103238;
  --text:#c0e8e0;--text-dim:#508880;--text-mid:#70a898;
  --accent:#26a69a;--accent-glow:rgba(38,166,154,0.4);--white:#c0e8e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(5,21,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(5,21,26,0.2) 0%,rgba(5,21,26,0.7) 100%);
  --nav-scrolled-bg:#05151aee;
  --font-display:'Quicksand';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#05151a;color:#c0e8e0;
}
[data-theme="ext-photo-mint-fresh"][data-color="mint"]{--accent:#26a69a;--accent-glow:rgba(38,166,154,0.4);}
[data-theme="ext-photo-mint-fresh"][data-color="fresh"]{--accent:#4db6ac;--accent-glow:rgba(77,182,172,0.4);}

[data-theme="ext-photo-mint-fresh"] body{background:#05151a;color:#c0e8e0;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-mint-fresh"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-mint-fresh"] .nav-logo{font-family:'Quicksand',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-mint-fresh"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-mint-fresh"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-mint-fresh"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-mint-fresh"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-mint-fresh"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-mint-fresh"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-mint-fresh"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-mint-fresh"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-mint-fresh"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-mint-fresh"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-mint-fresh"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-mint-fresh"] .hero > .hero-content,
[data-theme="ext-photo-mint-fresh"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-mint-fresh"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-mint-fresh"] .hero-title{font-family:'Quicksand',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-mint-fresh"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-mint-fresh"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-mint-fresh"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:mint_fresh_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-mint-fresh"] .section-num{font-family:'Quicksand',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-mint-fresh"] .section-title{font-family:'Quicksand',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-mint-fresh"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-mint-fresh"] .section-head h2{font-family:'Quicksand',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-mint-fresh"] .about-name{font-family:'Quicksand',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-mint-fresh"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-mint-fresh"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-mint-fresh"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-mint-fresh"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-mint-fresh"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-mint-fresh"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-mint-fresh"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-mint-fresh"] .stat-num{font-family:'Quicksand',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-mint-fresh"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-mint-fresh"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-mint-fresh"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-mint-fresh"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-mint-fresh"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-mint-fresh"] .album-info-title{font-family:'Quicksand',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-mint-fresh"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-mint-fresh"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-mint-fresh"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-mint-fresh"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-mint-fresh"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-mint-fresh"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-mint-fresh"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-mint-fresh"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-mint-fresh"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-mint-fresh"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-mint-fresh"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-mint-fresh"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-mint-fresh"] .footer-logo{font-family:'Quicksand',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-mint-fresh"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-mint-fresh"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-mint-fresh"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-mint-fresh"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-mint-fresh"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-mint-fresh"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes mint_fresh_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes mint_fresh_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes mint_fresh_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes mint_fresh_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-mint-fresh"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(38,166,154,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(77,182,172,0.08),transparent 35%);
  animation:mint_fresh_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-mint-fresh"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(38,166,154,0.04),transparent 50%);
  animation:mint_fresh_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-mint-fresh{background:linear-gradient(135deg,#05151a,#26a69a);}

/* ############################################################
   THEME: ext-photo-lime-zest  (青柠活力 / Lime Zest)
   ############################################################ */

[data-theme="ext-photo-lime-zest"]{
  --bg:#0d1505;--bg-2:#121e08;--bg-3:#18280c;--bg-4:#1e3210;
  --text:#d8e8b8;--text-dim:#688850;--text-mid:#88a870;
  --accent:#cddc39;--accent-glow:rgba(205,220,57,0.4);--white:#d8e8b8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,21,5,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,21,5,0.2) 0%,rgba(13,21,5,0.7) 100%);
  --nav-scrolled-bg:#0d1505ee;
  --font-display:'Outfit';--font-body:'Poppins';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d1505;color:#d8e8b8;
}
[data-theme="ext-photo-lime-zest"][data-color="lime"]{--accent:#cddc39;--accent-glow:rgba(205,220,57,0.4);}
[data-theme="ext-photo-lime-zest"][data-color="zest"]{--accent:#afb42b;--accent-glow:rgba(175,180,43,0.4);}

[data-theme="ext-photo-lime-zest"] body{background:#0d1505;color:#d8e8b8;font-family:'Poppins',sans-serif;}

/* Navbar */
[data-theme="ext-photo-lime-zest"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-lime-zest"] .nav-logo{font-family:'Outfit',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-lime-zest"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-lime-zest"] .nav-link{color:var(--text-dim);font-family:'Poppins',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-lime-zest"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-lime-zest"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-lime-zest"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-lime-zest"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-lime-zest"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-lime-zest"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-lime-zest"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-lime-zest"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-lime-zest"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-lime-zest"] .hero > .hero-content,
[data-theme="ext-photo-lime-zest"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-lime-zest"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Poppins',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-lime-zest"] .hero-title{font-family:'Outfit',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-lime-zest"] .hero-tagline{font-family:'Poppins',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-lime-zest"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-lime-zest"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:lime_zest_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-lime-zest"] .section-num{font-family:'Outfit',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-lime-zest"] .section-title{font-family:'Outfit',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-lime-zest"] .section-head .kicker{font-family:'Poppins',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-lime-zest"] .section-head h2{font-family:'Outfit',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-lime-zest"] .about-name{font-family:'Outfit',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-lime-zest"] .about-role{font-family:'Poppins',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-lime-zest"] .about-bio{font-family:'Poppins',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-lime-zest"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-lime-zest"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-lime-zest"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-lime-zest"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-lime-zest"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-lime-zest"] .stat-num{font-family:'Outfit',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-lime-zest"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-lime-zest"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-lime-zest"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-lime-zest"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-lime-zest"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-lime-zest"] .album-info-title{font-family:'Outfit',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-lime-zest"] .album-info-meta{font-family:'Poppins',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-lime-zest"] .album-info-desc{font-family:'Poppins',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-lime-zest"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Poppins',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-lime-zest"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-lime-zest"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Poppins',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-lime-zest"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-lime-zest"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-lime-zest"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-lime-zest"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-lime-zest"] .card-label{font-family:'Poppins',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-lime-zest"] .card-value{font-family:'Poppins',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-lime-zest"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-lime-zest"] .footer-logo{font-family:'Outfit',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-lime-zest"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-lime-zest"] .footer-links a{color:var(--text-dim);font-family:'Poppins',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-lime-zest"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-lime-zest"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-lime-zest"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-lime-zest"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes lime_zest_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes lime_zest_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes lime_zest_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes lime_zest_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-lime-zest"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(205,220,57,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(175,180,43,0.08),transparent 35%);
  animation:lime_zest_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-lime-zest"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(205,220,57,0.04),transparent 50%);
  animation:lime_zest_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-lime-zest{background:linear-gradient(135deg,#0d1505,#cddc39);}

/* ############################################################
   THEME: ext-photo-ocean-spray  (海浪飞沫 / Ocean Spray)
   ############################################################ */

[data-theme="ext-photo-ocean-spray"]{
  --bg:#050f15;--bg-2:#08161e;--bg-3:#0c1e28;--bg-4:#102632;
  --text:#c0e0e8;--text-dim:#508898;--text-mid:#70a8b8;
  --accent:#4dd0e1;--accent-glow:rgba(77,208,225,0.4);--white:#c0e0e8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(5,15,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(5,15,21,0.2) 0%,rgba(5,15,21,0.7) 100%);
  --nav-scrolled-bg:#050f15ee;
  --font-display:'Raleway';--font-body:'Inter';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#050f15;color:#c0e0e8;
}
[data-theme="ext-photo-ocean-spray"][data-color="spray"]{--accent:#4dd0e1;--accent-glow:rgba(77,208,225,0.4);}
[data-theme="ext-photo-ocean-spray"][data-color="wave"]{--accent:#26c6da;--accent-glow:rgba(38,198,218,0.4);}

[data-theme="ext-photo-ocean-spray"] body{background:#050f15;color:#c0e0e8;font-family:'Inter',sans-serif;}

/* Navbar */
[data-theme="ext-photo-ocean-spray"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-ocean-spray"] .nav-logo{font-family:'Raleway',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-ocean-spray"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-ocean-spray"] .nav-link{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-ocean-spray"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-ocean-spray"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-ocean-spray"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-ocean-spray"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-ocean-spray"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-ocean-spray"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-ocean-spray"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-ocean-spray"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-ocean-spray"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-ocean-spray"] .hero > .hero-content,
[data-theme="ext-photo-ocean-spray"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-ocean-spray"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-ocean-spray"] .hero-title{font-family:'Raleway',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-ocean-spray"] .hero-tagline{font-family:'Inter',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-ocean-spray"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-ocean-spray"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:ocean_spray_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-ocean-spray"] .section-num{font-family:'Raleway',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-ocean-spray"] .section-title{font-family:'Raleway',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-ocean-spray"] .section-head .kicker{font-family:'Inter',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-ocean-spray"] .section-head h2{font-family:'Raleway',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-ocean-spray"] .about-name{font-family:'Raleway',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-ocean-spray"] .about-role{font-family:'Inter',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-ocean-spray"] .about-bio{font-family:'Inter',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-ocean-spray"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-ocean-spray"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-ocean-spray"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-ocean-spray"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-ocean-spray"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-ocean-spray"] .stat-num{font-family:'Raleway',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-ocean-spray"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-ocean-spray"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-ocean-spray"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-ocean-spray"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-ocean-spray"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-ocean-spray"] .album-info-title{font-family:'Raleway',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-ocean-spray"] .album-info-meta{font-family:'Inter',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-ocean-spray"] .album-info-desc{font-family:'Inter',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-ocean-spray"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Inter',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-ocean-spray"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-ocean-spray"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Inter',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-ocean-spray"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-ocean-spray"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-ocean-spray"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-ocean-spray"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-ocean-spray"] .card-label{font-family:'Inter',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-ocean-spray"] .card-value{font-family:'Inter',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-ocean-spray"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-ocean-spray"] .footer-logo{font-family:'Raleway',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-ocean-spray"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-ocean-spray"] .footer-links a{color:var(--text-dim);font-family:'Inter',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-ocean-spray"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-ocean-spray"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-ocean-spray"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-ocean-spray"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes ocean_spray_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes ocean_spray_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes ocean_spray_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes ocean_spray_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-ocean-spray"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(77,208,225,0.08),transparent 50%),radial-gradient(circle at 50% 80%,rgba(38,198,218,0.06),transparent 40%);
  animation:ocean_spray_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-ocean-spray"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 30%,rgba(77,208,225,0.06),transparent 25%);
  animation:ocean_spray_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-ocean-spray{background:linear-gradient(135deg,#050f15,#4dd0e1);}

/* ############################################################
   THEME: ext-photo-dew-drop  (露珠晨光 / Dew Drop)
   ############################################################ */

[data-theme="ext-photo-dew-drop"]{
  --bg:#0a1008;--bg-2:#0e160e;--bg-3:#141c14;--bg-4:#1a2418;
  --text:#c8e8c0;--text-dim:#588860;--text-mid:#78a878;
  --accent:#66bb6a;--accent-glow:rgba(102,187,106,0.4);--white:#c8e8c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,16,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,16,8,0.2) 0%,rgba(10,16,8,0.7) 100%);
  --nav-scrolled-bg:#0a1008ee;
  --font-display:'Lora';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a1008;color:#c8e8c0;
}
[data-theme="ext-photo-dew-drop"][data-color="dew"]{--accent:#66bb6a;--accent-glow:rgba(102,187,106,0.4);}
[data-theme="ext-photo-dew-drop"][data-color="morning"]{--accent:#81c784;--accent-glow:rgba(129,199,132,0.4);}

[data-theme="ext-photo-dew-drop"] body{background:#0a1008;color:#c8e8c0;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-dew-drop"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-dew-drop"] .nav-logo{font-family:'Lora',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-dew-drop"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-dew-drop"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-dew-drop"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-dew-drop"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-dew-drop"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-dew-drop"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-dew-drop"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-dew-drop"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-dew-drop"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-dew-drop"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-dew-drop"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-dew-drop"] .hero > .hero-content,
[data-theme="ext-photo-dew-drop"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-dew-drop"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-dew-drop"] .hero-title{font-family:'Lora',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-dew-drop"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-dew-drop"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-dew-drop"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:dew_drop_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-dew-drop"] .section-num{font-family:'Lora',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-dew-drop"] .section-title{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-dew-drop"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-dew-drop"] .section-head h2{font-family:'Lora',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-dew-drop"] .about-name{font-family:'Lora',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-dew-drop"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-dew-drop"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-dew-drop"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-dew-drop"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-dew-drop"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-dew-drop"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-dew-drop"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-dew-drop"] .stat-num{font-family:'Lora',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-dew-drop"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-dew-drop"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-dew-drop"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-dew-drop"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-dew-drop"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-dew-drop"] .album-info-title{font-family:'Lora',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-dew-drop"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-dew-drop"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-dew-drop"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-dew-drop"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-dew-drop"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-dew-drop"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-dew-drop"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-dew-drop"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-dew-drop"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-dew-drop"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-dew-drop"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-dew-drop"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-dew-drop"] .footer-logo{font-family:'Lora',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-dew-drop"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-dew-drop"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-dew-drop"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-dew-drop"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-dew-drop"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-dew-drop"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes dew_drop_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes dew_drop_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes dew_drop_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes dew_drop_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-dew-drop"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(102,187,106,0.10),transparent 40%),radial-gradient(circle at 80% 70%,rgba(129,199,132,0.06),transparent 35%);
  animation:dew_drop_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-dew-drop"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(102,187,106,0.04),transparent 30%);
  animation:dew_drop_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-dew-drop{background:linear-gradient(135deg,#0a1008,#66bb6a);}

/* ############################################################
   THEME: ext-photo-alpine-lake  (高山湖泊 / Alpine Lake)
   ############################################################ */

[data-theme="ext-photo-alpine-lake"]{
  --bg:#050f12;--bg-2:#081418;--bg-3:#0c1c22;--bg-4:#10262c;
  --text:#c0dce8;--text-dim:#507888;--text-mid:#7098a8;
  --accent:#0097a7;--accent-glow:rgba(0,151,167,0.4);--white:#c0dce8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(5,15,18,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(5,15,18,0.2) 0%,rgba(5,15,18,0.7) 100%);
  --nav-scrolled-bg:#050f12ee;
  --font-display:'Spectral';--font-body:'Karla';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#050f12;color:#c0dce8;
}
[data-theme="ext-photo-alpine-lake"][data-color="alpine"]{--accent:#0097a7;--accent-glow:rgba(0,151,167,0.4);}
[data-theme="ext-photo-alpine-lake"][data-color="lake"]{--accent:#006064;--accent-glow:rgba(0,96,100,0.4);}

[data-theme="ext-photo-alpine-lake"] body{background:#050f12;color:#c0dce8;font-family:'Karla',sans-serif;}

/* Navbar */
[data-theme="ext-photo-alpine-lake"] .navbar{background:var(--nav-scrolled-bg);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transition:var(--transition);}
[data-theme="ext-photo-alpine-lake"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-alpine-lake"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-alpine-lake"] .nav-link{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.88rem;letter-spacing:0.06em;text-transform:uppercase;transition:var(--transition);position:relative;padding:0.4rem 0;}
[data-theme="ext-photo-alpine-lake"] .nav-link::after{content:"";position:absolute;left:0;bottom:-2px;width:0;height:2px;background:var(--accent);box-shadow:0 0 8px var(--accent-glow);transition:var(--transition);}
[data-theme="ext-photo-alpine-lake"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-alpine-lake"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-alpine-lake"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-alpine-lake"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-alpine-lake"] .hero{position:relative;display:flex;align-items:center;justify-content:center;min-height:100vh;text-align:center;overflow:hidden;padding:6rem 1.5rem;}
[data-theme="ext-photo-alpine-lake"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-alpine-lake"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-alpine-lake"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-alpine-lake"] .hero > .hero-content,
[data-theme="ext-photo-alpine-lake"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-alpine-lake"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.18em;text-transform:uppercase;background:rgba(255,255,255,0.03);backdrop-filter:blur(6px);}
[data-theme="ext-photo-alpine-lake"] .hero-title{font-family:'Spectral',serif;font-size:clamp(2.6rem,8vw,5.6rem);font-weight:700;line-height:1.05;color:var(--text);margin:1.4rem 0;}
[data-theme="ext-photo-alpine-lake"] .hero-tagline{font-family:'Karla',sans-serif;font-size:clamp(1rem,2.4vw,1.25rem);color:var(--text-mid);max-width:620px;margin:0 auto;line-height:1.7;}
[data-theme="ext-photo-alpine-lake"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-alpine-lake"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:alpine_lake_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-alpine-lake"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-alpine-lake"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-alpine-lake"] .section-head .kicker{font-family:'Karla',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-alpine-lake"] .section-head h2{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-alpine-lake"] .about-name{font-family:'Spectral',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-alpine-lake"] .about-role{font-family:'Karla',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-alpine-lake"] .about-bio{font-family:'Karla',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-alpine-lake"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-alpine-lake"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-alpine-lake"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-alpine-lake"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-alpine-lake"] .skill-bar-fill{background:linear-gradient(90deg,var(--accent),var(--accent-glow));border-radius:999px;box-shadow:0 0 12px var(--accent-glow);}
[data-theme="ext-photo-alpine-lake"] .stat-num{font-family:'Spectral',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-alpine-lake"] .album-item{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--border);background:var(--bg-2);transition:var(--transition);}
[data-theme="ext-photo-alpine-lake"] .album-item:hover{transform:translateY(-8px);box-shadow:0 24px 50px rgba(0,0,0,0.35),0 0 0 1px var(--accent);border-color:var(--accent);}
[data-theme="ext-photo-alpine-lake"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-alpine-lake"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-alpine-lake"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-alpine-lake"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-alpine-lake"] .album-info-meta{font-family:'Karla',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-alpine-lake"] .album-info-desc{font-family:'Karla',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-alpine-lake"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Karla',sans-serif;border:none;border-radius:999px;padding:0.85rem 2.2rem;font-weight:600;letter-spacing:0.04em;transition:var(--transition);box-shadow:0 0 24px var(--accent-glow);}
[data-theme="ext-photo-alpine-lake"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-alpine-lake"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Karla',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-alpine-lake"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-alpine-lake"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-alpine-lake"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-alpine-lake"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-alpine-lake"] .card-label{font-family:'Karla',sans-serif;font-size:0.75rem;letter-spacing:0.18em;text-transform:uppercase;color:var(--text-mid);}
[data-theme="ext-photo-alpine-lake"] .card-value{font-family:'Karla',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-alpine-lake"] footer{background:var(--bg-2);border-top:1px solid var(--border);padding:3.5rem 1.5rem 2rem;border-radius:0;}
[data-theme="ext-photo-alpine-lake"] .footer-logo{font-family:'Spectral',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-alpine-lake"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-alpine-lake"] .footer-links a{color:var(--text-dim);font-family:'Karla',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-alpine-lake"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-alpine-lake"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

/* Stats */
[data-theme="ext-photo-alpine-lake"] .stat-item{border-radius:16px;transition:var(--transition);}
[data-theme="ext-photo-alpine-lake"] .stat-item:hover{transform:translateY(-4px);box-shadow:0 16px 36px rgba(0,0,0,0.12);}

/* Animations */
@keyframes alpine_lake_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes alpine_lake_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes alpine_lake_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes alpine_lake_drift{0%{transform:translate(0,0) scale(1);}50%{transform:translate(15px,-15px) scale(1.05);}100%{transform:translate(0,0) scale(1);}}

/* Unique Effect */
[data-theme="ext-photo-alpine-lake"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(0,151,167,0.06),transparent 50%),radial-gradient(circle at 50% 70%,rgba(0,96,100,0.08),transparent 40%);
  animation:alpine_lake_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-alpine-lake"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 30%,rgba(0,151,167,0.04),transparent 25%);
  animation:alpine_lake_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-alpine-lake{background:linear-gradient(135deg,#050f12,#0097a7);}

