/*!
 * 摄影深度探索 — aphoto.cc 扩展主题 v10.0
 * 60 套全新摄影风格：暗夜 · 胶片 · 建筑 · 人像 · 旅行 · 季节 · 黑白 · 抽象
 *
 * 主题分组：
 *   暗夜光影 8 · 胶片质感 8 · 建筑空间 8 · 人像情绪 8
 *   旅行纪实 8 · 季节光影 6 · 黑白意境 6 · 抽象艺术 8
 *
 * 设计原则：
 *   1. 背景效果 z-index:0，pointer-events:none，不遮挡任何内容
 *   2. 所有内容元素 z-index:1+，确保在背景之上
 *   3. 每套主题有独特的 body::before / body::after 背景效果
 *   4. 摄影为核心：每套主题围绕一种摄影主题和视觉氛围
 */

/* ############################################################
   THEME: ext-photo-night-city  (都市夜色 / Night City)
   ############################################################ */

[data-theme="ext-photo-night-city"]{
  --bg:#0a0e1a;--bg-2:#0f1424;--bg-3:#141a2e;--bg-4:#1a2240;
  --text:#c8d0e8;--text-dim:#5a6580;--text-mid:#7a85a0;
  --accent:#4a9eff;--accent-glow:rgba(74,158,255,0.4);--white:#c8d0e8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,14,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,14,26,0.2) 0%,rgba(10,14,26,0.7) 100%);
  --nav-scrolled-bg:#0a0e1aee;
  --font-display:'Cormorant Garamond';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0e1a;color:#c8d0e8;
}
[data-theme="ext-photo-night-city"][data-color="neon"]{--accent:#ff4a9e;--accent-glow:rgba(255,74,158,0.4);}
[data-theme="ext-photo-night-city"][data-color="amber"]{--accent:#ffa940;--accent-glow:rgba(255,169,64,0.4);}

[data-theme="ext-photo-night-city"] body{background:#0a0e1a;color:#c8d0e8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-night-city"] .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-night-city"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-night-city"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-night-city"] .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-night-city"] .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-night-city"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-night-city"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-night-city"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-night-city"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-night-city"] .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-night-city"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-night-city"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-night-city"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-night-city"] .hero > .hero-content,
[data-theme="ext-photo-night-city"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-night-city"] .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-night-city"] .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-night-city"] .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-night-city"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-night-city"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:night_city_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-night-city"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-night-city"] .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-night-city"] .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-night-city"] .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-night-city"] .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-night-city"] .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-night-city"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-night-city"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-night-city"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-night-city"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-night-city"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-night-city"] .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-night-city"] .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-night-city"] .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-night-city"] .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-night-city"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-night-city"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-night-city"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-night-city"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-night-city"] .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-night-city"] .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-night-city"] .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-night-city"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-night-city"] .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-night-city"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-night-city"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-night-city"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-night-city"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-night-city"] .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-night-city"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes night_city_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes night_city_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes night_city_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes night_city_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-night-city"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 30%,rgba(74,158,255,0.15),transparent 40%),radial-gradient(circle at 75% 60%,rgba(255,74,158,0.10),transparent 35%),radial-gradient(circle at 50% 80%,rgba(255,169,64,0.08),transparent 30%);
  animation:night_city_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-night-city"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 20%,rgba(74,158,255,0.20),transparent 25%),radial-gradient(circle at 30% 70%,rgba(255,74,158,0.12),transparent 30%);
  animation:night_city_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-night-city{background:linear-gradient(135deg,#0a0e1a,#4a9eff);}

/* ############################################################
   THEME: ext-photo-starry-veil  (星纱夜空 / Starry Veil)
   ############################################################ */

[data-theme="ext-photo-starry-veil"]{
  --bg:#0a0820;--bg-2:#0f0c2e;--bg-3:#140f3a;--bg-4:#1a1448;
  --text:#d0c8f0;--text-dim:#5a5080;--text-mid:#7a70a0;
  --accent:#9d6eff;--accent-glow:rgba(157,110,255,0.4);--white:#d0c8f0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,8,32,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,8,32,0.2) 0%,rgba(10,8,32,0.7) 100%);
  --nav-scrolled-bg:#0a0820ee;
  --font-display:'Cinzel';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0820;color:#d0c8f0;
}
[data-theme="ext-photo-starry-veil"][data-color="star"]{--accent:#a8b8ff;--accent-glow:rgba(168,184,255,0.4);}
[data-theme="ext-photo-starry-veil"][data-color="cosmos"]{--accent:#9d6eff;--accent-glow:rgba(157,110,255,0.4);}

[data-theme="ext-photo-starry-veil"] body{background:#0a0820;color:#d0c8f0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-starry-veil"] .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-starry-veil"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-starry-veil"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-starry-veil"] .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-starry-veil"] .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-starry-veil"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-starry-veil"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-starry-veil"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-starry-veil"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-starry-veil"] .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-starry-veil"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-starry-veil"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-starry-veil"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-starry-veil"] .hero > .hero-content,
[data-theme="ext-photo-starry-veil"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-starry-veil"] .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-starry-veil"] .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-starry-veil"] .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-starry-veil"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-starry-veil"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:starry_veil_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-starry-veil"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-starry-veil"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-starry-veil"] .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-starry-veil"] .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-starry-veil"] .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-starry-veil"] .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-starry-veil"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-starry-veil"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-starry-veil"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-starry-veil"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-starry-veil"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-starry-veil"] .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-starry-veil"] .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-starry-veil"] .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-starry-veil"] .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-starry-veil"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-starry-veil"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-starry-veil"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-starry-veil"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-starry-veil"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-starry-veil"] .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-starry-veil"] .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-starry-veil"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-starry-veil"] .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-starry-veil"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-starry-veil"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-starry-veil"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-starry-veil"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-starry-veil"] .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-starry-veil"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes starry_veil_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes starry_veil_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes starry_veil_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes starry_veil_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-starry-veil"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(157,110,255,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(168,184,255,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(157,110,255,0.06),transparent 30%);
  animation:starry_veil_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-starry-veil"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(168,184,255,0.15),transparent 25%),radial-gradient(circle at 30% 80%,rgba(157,110,255,0.10),transparent 30%);
  animation:starry_veil_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-starry-veil{background:linear-gradient(135deg,#0a0820,#9d6eff);}

/* ############################################################
   THEME: ext-photo-moonlit-shore  (月光海岸 / Moonlit Shore)
   ############################################################ */

[data-theme="ext-photo-moonlit-shore"]{
  --bg:#0d1820;--bg-2:#112030;--bg-3:#152838;--bg-4:#1a3040;
  --text:#c0d8e8;--text-dim:#506878;--text-mid:#7088a0;
  --accent:#8ec4e8;--accent-glow:rgba(142,196,232,0.4);--white:#c0d8e8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(13,24,32,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(13,24,32,0.2) 0%,rgba(13,24,32,0.7) 100%);
  --nav-scrolled-bg:#0d1820ee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0d1820;color:#c0d8e8;
}
[data-theme="ext-photo-moonlit-shore"][data-color="moon"]{--accent:#d0e8f8;--accent-glow:rgba(208,232,248,0.4);}
[data-theme="ext-photo-moonlit-shore"][data-color="tide"]{--accent:#8ec4e8;--accent-glow:rgba(142,196,232,0.4);}

[data-theme="ext-photo-moonlit-shore"] body{background:#0d1820;color:#c0d8e8;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-moonlit-shore"] .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-moonlit-shore"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-moonlit-shore"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-moonlit-shore"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-moonlit-shore"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-moonlit-shore"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-moonlit-shore"] .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-moonlit-shore"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-moonlit-shore"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-moonlit-shore"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-moonlit-shore"] .hero > .hero-content,
[data-theme="ext-photo-moonlit-shore"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-moonlit-shore"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:moonlit_shore_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-moonlit-shore"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-moonlit-shore"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-moonlit-shore"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-moonlit-shore"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-moonlit-shore"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-moonlit-shore"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-moonlit-shore"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-moonlit-shore"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-moonlit-shore"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-moonlit-shore"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-moonlit-shore"] .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-moonlit-shore"] .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-moonlit-shore"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-moonlit-shore"] .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-moonlit-shore"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-moonlit-shore"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-moonlit-shore"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-moonlit-shore"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-moonlit-shore"] .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-moonlit-shore"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes moonlit_shore_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes moonlit_shore_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes moonlit_shore_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes moonlit_shore_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-moonlit-shore"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 15%,rgba(208,232,248,0.20),transparent 30%),radial-gradient(circle at 30% 70%,rgba(142,196,232,0.10),transparent 40%),radial-gradient(circle at 70% 50%,rgba(142,196,232,0.06),transparent 30%);
  animation:moonlit_shore_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-moonlit-shore"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 10%,rgba(208,232,248,0.15),transparent 20%),radial-gradient(circle at 80% 80%,rgba(142,196,232,0.08),transparent 30%);
  animation:moonlit_shore_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-moonlit-shore{background:linear-gradient(135deg,#0d1820,#8ec4e8);}

/* ############################################################
   THEME: ext-photo-neon-alley  (霓虹巷弄 / Neon Alley)
   ############################################################ */

[data-theme="ext-photo-neon-alley"]{
  --bg:#100a1a;--bg-2:#140f24;--bg-3:#1a142e;--bg-4:#201a38;
  --text:#d8c8f0;--text-dim:#6050a0;--text-mid:#8070b0;
  --accent:#ff44aa;--accent-glow:rgba(255,68,170,0.4);--white:#d8c8f0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(16,10,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(16,10,26,0.2) 0%,rgba(16,10,26,0.7) 100%);
  --nav-scrolled-bg:#100a1aee;
  --font-display:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#100a1a;color:#d8c8f0;
}
[data-theme="ext-photo-neon-alley"][data-color="pink"]{--accent:#ff44aa;--accent-glow:rgba(255,68,170,0.4);}
[data-theme="ext-photo-neon-alley"][data-color="cyan"]{--accent:#44ddff;--accent-glow:rgba(68,221,255,0.4);}

[data-theme="ext-photo-neon-alley"] body{background:#100a1a;color:#d8c8f0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-neon-alley"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .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-neon-alley"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-neon-alley"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-neon-alley"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-neon-alley"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-neon-alley"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-neon-alley"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-neon-alley"] .hero > .hero-content,
[data-theme="ext-photo-neon-alley"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .hero-title{font-family:'Bebas Neue',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-neon-alley"] .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-neon-alley"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-neon-alley"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:neon_alley_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-neon-alley"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-neon-alley"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-neon-alley"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-neon-alley"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-neon-alley"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-neon-alley"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-neon-alley"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .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-neon-alley"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-neon-alley"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-neon-alley"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-neon-alley"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .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-neon-alley"] .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-neon-alley"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-neon-alley"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-neon-alley"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-neon-alley"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-neon-alley"] .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-neon-alley"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes neon_alley_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes neon_alley_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes neon_alley_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes neon_alley_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-neon-alley"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 40%,rgba(255,68,170,0.18),transparent 35%),radial-gradient(circle at 80% 30%,rgba(68,221,255,0.12),transparent 35%),radial-gradient(circle at 50% 80%,rgba(255,68,170,0.06),transparent 30%);
  animation:neon_alley_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-neon-alley"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 20%,rgba(255,68,170,0.15),transparent 25%),radial-gradient(circle at 30% 70%,rgba(68,221,255,0.10),transparent 30%);
  animation:neon_alley_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-neon-alley{background:linear-gradient(135deg,#100a1a,#ff44aa);}

/* ############################################################
   THEME: ext-photo-midnight-tide  (午夜潮汐 / Midnight Tide)
   ############################################################ */

[data-theme="ext-photo-midnight-tide"]{
  --bg:#08101a;--bg-2:#0c1824;--bg-3:#10202e;--bg-4:#142838;
  --text:#b8d0e8;--text-dim:#4a6080;--text-mid:#6a80a0;
  --accent:#3a9ad8;--accent-glow:rgba(58,154,216,0.4);--white:#b8d0e8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(8,16,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(8,16,26,0.2) 0%,rgba(8,16,26,0.7) 100%);
  --nav-scrolled-bg:#08101aee;
  --font-display:'Cormorant Garamond';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#08101a;color:#b8d0e8;
}
[data-theme="ext-photo-midnight-tide"][data-color="wave"]{--accent:#3a9ad8;--accent-glow:rgba(58,154,216,0.4);}
[data-theme="ext-photo-midnight-tide"][data-color="deep"]{--accent:#2a6ab0;--accent-glow:rgba(42,106,176,0.4);}

[data-theme="ext-photo-midnight-tide"] body{background:#08101a;color:#b8d0e8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-midnight-tide"] .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-tide"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-midnight-tide"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-midnight-tide"] .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-midnight-tide"] .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-tide"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-midnight-tide"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-midnight-tide"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-midnight-tide"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-midnight-tide"] .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-tide"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-midnight-tide"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-midnight-tide"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-midnight-tide"] .hero > .hero-content,
[data-theme="ext-photo-midnight-tide"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-midnight-tide"] .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-midnight-tide"] .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-midnight-tide"] .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-midnight-tide"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-midnight-tide"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:midnight_tide_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-midnight-tide"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-midnight-tide"] .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-midnight-tide"] .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-midnight-tide"] .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-midnight-tide"] .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-midnight-tide"] .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-midnight-tide"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-midnight-tide"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-midnight-tide"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-midnight-tide"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-midnight-tide"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-midnight-tide"] .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-tide"] .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-midnight-tide"] .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-tide"] .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-tide"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-midnight-tide"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-midnight-tide"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-midnight-tide"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-midnight-tide"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-midnight-tide"] .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-midnight-tide"] .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-midnight-tide"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-midnight-tide"] .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-midnight-tide"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-midnight-tide"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-midnight-tide"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-midnight-tide"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-midnight-tide"] .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-midnight-tide"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-midnight-tide"] 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-tide"] .footer-logo{font-family:'Cormorant Garamond',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-midnight-tide"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-midnight-tide"] .footer-links a{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-midnight-tide"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-midnight-tide"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

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

/* Animations */
@keyframes midnight_tide_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes midnight_tide_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes midnight_tide_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes midnight_tide_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-tide"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 30% 60%,rgba(58,154,216,0.12),transparent 40%),radial-gradient(circle at 70% 40%,rgba(42,106,176,0.08),transparent 35%),radial-gradient(circle at 50% 90%,rgba(58,154,216,0.06),transparent 30%);
  animation:midnight_tide_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-midnight-tide"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 50% 50%,rgba(58,154,216,0.10),transparent 25%),radial-gradient(circle at 80% 20%,rgba(42,106,176,0.06),transparent 30%);
  animation:midnight_tide_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-midnight-tide{background:linear-gradient(135deg,#08101a,#3a9ad8);}

/* ############################################################
   THEME: ext-photo-aurora-night  (极光之夜 / Aurora Night)
   ############################################################ */

[data-theme="ext-photo-aurora-night"]{
  --bg:#050a18;--bg-2:#0a1024;--bg-3:#0e1530;--bg-4:#121840;
  --text:#b8c8e8;--text-dim:#4a5080;--text-mid:#6a70a0;
  --accent:#3effa0;--accent-glow:rgba(62,255,160,0.4);--white:#b8c8e8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(5,10,24,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(5,10,24,0.2) 0%,rgba(5,10,24,0.7) 100%);
  --nav-scrolled-bg:#050a18ee;
  --font-display:'Cinzel';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#050a18;color:#b8c8e8;
}
[data-theme="ext-photo-aurora-night"][data-color="green"]{--accent:#3effa0;--accent-glow:rgba(62,255,160,0.4);}
[data-theme="ext-photo-aurora-night"][data-color="violet"]{--accent:#9d4eff;--accent-glow:rgba(157,78,255,0.4);}

[data-theme="ext-photo-aurora-night"] body{background:#050a18;color:#b8c8e8;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-aurora-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-aurora-night"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-aurora-night"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-aurora-night"] .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-aurora-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-aurora-night"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-aurora-night"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-aurora-night"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-aurora-night"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-aurora-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-aurora-night"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-aurora-night"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-aurora-night"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-aurora-night"] .hero > .hero-content,
[data-theme="ext-photo-aurora-night"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-aurora-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:'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-aurora-night"] .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-aurora-night"] .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-aurora-night"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-aurora-night"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:aurora_night_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-aurora-night"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-aurora-night"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-aurora-night"] .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-aurora-night"] .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-aurora-night"] .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-aurora-night"] .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-aurora-night"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-aurora-night"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-aurora-night"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-aurora-night"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-aurora-night"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-aurora-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-aurora-night"] .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-aurora-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-aurora-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-aurora-night"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-aurora-night"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-aurora-night"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-aurora-night"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-aurora-night"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-aurora-night"] .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-aurora-night"] .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-aurora-night"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-aurora-night"] .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-aurora-night"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-aurora-night"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-aurora-night"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-aurora-night"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-aurora-night"] .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-aurora-night"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-aurora-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-aurora-night"] .footer-logo{font-family:'Cinzel',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-aurora-night"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-aurora-night"] .footer-links a{color:var(--text-dim);font-family:'Manrope',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-aurora-night"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-aurora-night"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

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

/* Animations */
@keyframes aurora_night_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes aurora_night_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes aurora_night_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes aurora_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-aurora-night"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 20%,rgba(62,255,160,0.15),transparent 40%),radial-gradient(circle at 80% 30%,rgba(157,78,255,0.10),transparent 35%),radial-gradient(circle at 50% 70%,rgba(62,255,160,0.06),transparent 30%);
  animation:aurora_night_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-aurora-night"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 15%,rgba(62,255,160,0.12),transparent 25%),radial-gradient(circle at 30% 60%,rgba(157,78,255,0.08),transparent 30%);
  animation:aurora_night_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-aurora-night{background:linear-gradient(135deg,#050a18,#3effa0);}

/* ############################################################
   THEME: ext-photo-twilight-city  (暮光城影 / Twilight City)
   ############################################################ */

[data-theme="ext-photo-twilight-city"]{
  --bg:#1a0e1a;--bg-2:#241024;--bg-3:#2e142e;--bg-4:#381838;
  --text:#e0c8d8;--text-dim:#70506a;--text-mid:#907088;
  --accent:#e07840;--accent-glow:rgba(224,120,64,0.4);--white:#e0c8d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,14,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,14,26,0.2) 0%,rgba(26,14,26,0.7) 100%);
  --nav-scrolled-bg:#1a0e1aee;
  --font-display:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0e1a;color:#e0c8d8;
}
[data-theme="ext-photo-twilight-city"][data-color="orange"]{--accent:#e07840;--accent-glow:rgba(224,120,64,0.4);}
[data-theme="ext-photo-twilight-city"][data-color="purple"]{--accent:#9040e0;--accent-glow:rgba(144,64,224,0.4);}

[data-theme="ext-photo-twilight-city"] body{background:#1a0e1a;color:#e0c8d8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-twilight-city"] .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-twilight-city"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-twilight-city"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-twilight-city"] .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-twilight-city"] .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-twilight-city"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-twilight-city"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-twilight-city"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-twilight-city"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-twilight-city"] .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-twilight-city"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-twilight-city"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-twilight-city"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-twilight-city"] .hero > .hero-content,
[data-theme="ext-photo-twilight-city"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-twilight-city"] .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-twilight-city"] .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-twilight-city"] .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-twilight-city"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-twilight-city"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:twilight_city_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-twilight-city"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-twilight-city"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-twilight-city"] .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-twilight-city"] .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-twilight-city"] .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-twilight-city"] .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-twilight-city"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-twilight-city"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-twilight-city"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-twilight-city"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-twilight-city"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-twilight-city"] .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-twilight-city"] .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-twilight-city"] .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-twilight-city"] .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-twilight-city"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-twilight-city"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-twilight-city"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-twilight-city"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-twilight-city"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-twilight-city"] .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-twilight-city"] .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-twilight-city"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-twilight-city"] .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-twilight-city"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-twilight-city"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-twilight-city"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-twilight-city"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-twilight-city"] .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-twilight-city"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes twilight_city_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes twilight_city_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes twilight_city_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes twilight_city_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-twilight-city"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 30%,rgba(224,120,64,0.15),transparent 40%),radial-gradient(circle at 75% 60%,rgba(144,64,224,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(224,120,64,0.06),transparent 30%);
  animation:twilight_city_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-twilight-city"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(224,120,64,0.12),transparent 25%),radial-gradient(circle at 30% 80%,rgba(144,64,224,0.08),transparent 30%);
  animation:twilight_city_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-twilight-city{background:linear-gradient(135deg,#1a0e1a,#e07840);}

/* ############################################################
   THEME: ext-photo-dark-forest  (暗夜密林 / Dark Forest)
   ############################################################ */

[data-theme="ext-photo-dark-forest"]{
  --bg:#080f0a;--bg-2:#0c180e;--bg-3:#102014;--bg-4:#14281a;
  --text:#b8d8c0;--text-dim:#406a48;--text-mid:#608a68;
  --accent:#3a9a4a;--accent-glow:rgba(58,154,74,0.4);--white:#b8d8c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(8,15,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(8,15,10,0.2) 0%,rgba(8,15,10,0.7) 100%);
  --nav-scrolled-bg:#080f0aee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#080f0a;color:#b8d8c0;
}
[data-theme="ext-photo-dark-forest"][data-color="green"]{--accent:#3a9a4a;--accent-glow:rgba(58,154,74,0.4);}
[data-theme="ext-photo-dark-forest"][data-color="shadow"]{--accent:#1a4a28;--accent-glow:rgba(26,74,40,0.4);}

[data-theme="ext-photo-dark-forest"] body{background:#080f0a;color:#b8d8c0;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-dark-forest"] .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-dark-forest"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-dark-forest"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-dark-forest"] .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-dark-forest"] .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-dark-forest"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-dark-forest"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-dark-forest"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-dark-forest"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-dark-forest"] .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-dark-forest"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-dark-forest"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-dark-forest"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-dark-forest"] .hero > .hero-content,
[data-theme="ext-photo-dark-forest"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-dark-forest"] .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-dark-forest"] .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-dark-forest"] .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-dark-forest"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-dark-forest"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:dark_forest_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-dark-forest"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-dark-forest"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-dark-forest"] .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-dark-forest"] .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-dark-forest"] .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-dark-forest"] .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-dark-forest"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-dark-forest"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-dark-forest"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-dark-forest"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-dark-forest"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-dark-forest"] .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-dark-forest"] .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-dark-forest"] .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-dark-forest"] .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-dark-forest"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-dark-forest"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-dark-forest"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-dark-forest"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-dark-forest"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-dark-forest"] .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-dark-forest"] .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-dark-forest"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-dark-forest"] .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-dark-forest"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-dark-forest"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-dark-forest"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-dark-forest"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-dark-forest"] .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-dark-forest"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes dark_forest_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes dark_forest_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes dark_forest_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes dark_forest_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-dark-forest"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(58,154,74,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(26,74,40,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(58,154,74,0.06),transparent 30%);
  animation:dark_forest_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-dark-forest"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 20%,rgba(58,154,74,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(26,74,40,0.06),transparent 30%);
  animation:dark_forest_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-dark-forest{background:linear-gradient(135deg,#080f0a,#3a9a4a);}

/* ############################################################
   THEME: ext-photo-kodachrome  (柯达克罗姆 / Kodachrome)
   ############################################################ */

[data-theme="ext-photo-kodachrome"]{
  --bg:#1a1208;--bg-2:#24180c;--bg-3:#2e200f;--bg-4:#3a2814;
  --text:#f0e0c0;--text-dim:#9a7848;--text-mid:#baa878;
  --accent:#e08820;--accent-glow:rgba(224,136,32,0.4);--white:#f0e0c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,18,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,18,8,0.2) 0%,rgba(26,18,8,0.7) 100%);
  --nav-scrolled-bg:#1a1208ee;
  --font-display:'Fraunces';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1208;color:#f0e0c0;
}
[data-theme="ext-photo-kodachrome"][data-color="classic"]{--accent:#e08820;--accent-glow:rgba(224,136,32,0.4);}
[data-theme="ext-photo-kodachrome"][data-color="warm"]{--accent:#c46a18;--accent-glow:rgba(196,106,24,0.4);}

[data-theme="ext-photo-kodachrome"] body{background:#1a1208;color:#f0e0c0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-kodachrome"] .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-kodachrome"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-kodachrome"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-kodachrome"] .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-kodachrome"] .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-kodachrome"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-kodachrome"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-kodachrome"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-kodachrome"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-kodachrome"] .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-kodachrome"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-kodachrome"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-kodachrome"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-kodachrome"] .hero > .hero-content,
[data-theme="ext-photo-kodachrome"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-kodachrome"] .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-kodachrome"] .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-kodachrome"] .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-kodachrome"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-kodachrome"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:kodachrome_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-kodachrome"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-kodachrome"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-kodachrome"] .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-kodachrome"] .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-kodachrome"] .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-kodachrome"] .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-kodachrome"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-kodachrome"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-kodachrome"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-kodachrome"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-kodachrome"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-kodachrome"] .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-kodachrome"] .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-kodachrome"] .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-kodachrome"] .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-kodachrome"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-kodachrome"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-kodachrome"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-kodachrome"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-kodachrome"] .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-kodachrome"] .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-kodachrome"] .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-kodachrome"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-kodachrome"] .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-kodachrome"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-kodachrome"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-kodachrome"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-kodachrome"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-kodachrome"] .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-kodachrome"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes kodachrome_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes kodachrome_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes kodachrome_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes kodachrome_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-kodachrome"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(224,136,32,0.18),transparent 40%),radial-gradient(circle at 80% 70%,rgba(196,106,24,0.12),transparent 35%),radial-gradient(circle at 50% 50%,rgba(224,136,32,0.06),transparent 30%);
  animation:kodachrome_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-kodachrome"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(224,136,32,0.12),transparent 25%),radial-gradient(circle at 30% 80%,rgba(196,106,24,0.08),transparent 30%);
  animation:kodachrome_glow 8s ease-in-out infinite alternate;
}

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

/* ############################################################
   THEME: ext-photo-silver-gelatin  (银盐印相 / Silver Gelatin)
   ############################################################ */

[data-theme="ext-photo-silver-gelatin"]{
  --bg:#101010;--bg-2:#181818;--bg-3:#202020;--bg-4:#282828;
  --text:#d8d8d8;--text-dim:#5a5a5a;--text-mid:#7a7a7a;
  --accent:#b0b0b0;--accent-glow:rgba(176,176,176,0.3);--white:#d8d8d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(16,16,16,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(16,16,16,0.2) 0%,rgba(16,16,16,0.7) 100%);
  --nav-scrolled-bg:#101010ee;
  --font-display:'Cormorant Garamond';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#101010;color:#d8d8d8;
}
[data-theme="ext-photo-silver-gelatin"][data-color="silver"]{--accent:#b0b0b0;--accent-glow:rgba(176,176,176,0.3);}
[data-theme="ext-photo-silver-gelatin"][data-color="platinum"]{--accent:#c8c8c8;--accent-glow:rgba(200,200,200,0.3);}

[data-theme="ext-photo-silver-gelatin"] body{background:#101010;color:#d8d8d8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-silver-gelatin"] .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-silver-gelatin"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-silver-gelatin"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-silver-gelatin"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-silver-gelatin"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-silver-gelatin"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-silver-gelatin"] .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-silver-gelatin"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-silver-gelatin"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-silver-gelatin"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-silver-gelatin"] .hero > .hero-content,
[data-theme="ext-photo-silver-gelatin"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-silver-gelatin"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:silver_gelatin_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-silver-gelatin"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-silver-gelatin"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-silver-gelatin"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-silver-gelatin"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-silver-gelatin"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-silver-gelatin"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-silver-gelatin"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-silver-gelatin"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-silver-gelatin"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-silver-gelatin"] .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-silver-gelatin"] .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-silver-gelatin"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-silver-gelatin"] .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-silver-gelatin"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-silver-gelatin"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-silver-gelatin"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-silver-gelatin"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-silver-gelatin"] .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-silver-gelatin"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes silver_gelatin_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes silver_gelatin_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes silver_gelatin_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes silver_gelatin_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-silver-gelatin"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(176,176,176,0.10),transparent 40%),radial-gradient(circle at 80% 70%,rgba(200,200,200,0.06),transparent 35%),radial-gradient(circle at 50% 50%,rgba(176,176,176,0.04),transparent 30%);
  animation:silver_gelatin_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-silver-gelatin"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(200,200,200,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(176,176,176,0.04),transparent 30%);
  animation:silver_gelatin_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-silver-gelatin{background:linear-gradient(135deg,#101010,#b0b0b0);}

/* ############################################################
   THEME: ext-photo-expired-film  (过期胶片 / Expired Film)
   ############################################################ */

[data-theme="ext-photo-expired-film"]{
  --bg:#1a1008;--bg-2:#24180c;--bg-3:#2e200f;--bg-4:#3a2814;
  --text:#e8d0a8;--text-dim:#8a6840;--text-mid:#aa8858;
  --accent:#c07840;--accent-glow:rgba(192,120,64,0.4);--white:#e8d0a8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,16,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,16,8,0.2) 0%,rgba(26,16,8,0.7) 100%);
  --nav-scrolled-bg:#1a1008ee;
  --font-display:'Spectral';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1008;color:#e8d0a8;
}
[data-theme="ext-photo-expired-film"][data-color="shift"]{--accent:#c07840;--accent-glow:rgba(192,120,64,0.4);}
[data-theme="ext-photo-expired-film"][data-color="cyan"]{--accent:#4098a0;--accent-glow:rgba(64,152,160,0.4);}

[data-theme="ext-photo-expired-film"] body{background:#1a1008;color:#e8d0a8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-expired-film"] .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-expired-film"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-expired-film"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-expired-film"] .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-expired-film"] .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-expired-film"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-expired-film"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-expired-film"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-expired-film"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-expired-film"] .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-expired-film"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-expired-film"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-expired-film"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-expired-film"] .hero > .hero-content,
[data-theme="ext-photo-expired-film"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-expired-film"] .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-expired-film"] .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-expired-film"] .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-expired-film"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-expired-film"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:expired_film_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-expired-film"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-expired-film"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-expired-film"] .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-expired-film"] .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-expired-film"] .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-expired-film"] .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-expired-film"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-expired-film"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-expired-film"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-expired-film"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-expired-film"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-expired-film"] .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-expired-film"] .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-expired-film"] .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-expired-film"] .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-expired-film"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-expired-film"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-expired-film"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-expired-film"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-expired-film"] .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-expired-film"] .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-expired-film"] .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-expired-film"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-expired-film"] .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-expired-film"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-expired-film"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-expired-film"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-expired-film"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-expired-film"] .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-expired-film"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes expired_film_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes expired_film_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes expired_film_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes expired_film_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-expired-film"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 30%,rgba(192,120,64,0.15),transparent 40%),radial-gradient(circle at 75% 60%,rgba(64,152,160,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(192,120,64,0.06),transparent 30%);
  animation:expired_film_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-expired-film"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 20%,rgba(64,152,160,0.08),transparent 25%),radial-gradient(circle at 30% 70%,rgba(192,120,64,0.06),transparent 30%);
  animation:expired_film_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-expired-film{background:linear-gradient(135deg,#1a1008,#c07840);}

/* ############################################################
   THEME: ext-photo-push-process  (迫冲显影 / Push Process)
   ############################################################ */

[data-theme="ext-photo-push-process"]{
  --bg:#0a0a0a;--bg-2:#121212;--bg-3:#1a1a1a;--bg-4:#222222;
  --text:#c8c8c8;--text-dim:#505050;--text-mid:#707070;
  --accent:#e84030;--accent-glow:rgba(232,64,48,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:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0a0a;color:#c8c8c8;
}
[data-theme="ext-photo-push-process"][data-color="red"]{--accent:#e84030;--accent-glow:rgba(232,64,48,0.4);}
[data-theme="ext-photo-push-process"][data-color="amber"]{--accent:#e8a020;--accent-glow:rgba(232,160,32,0.4);}

[data-theme="ext-photo-push-process"] body{background:#0a0a0a;color:#c8c8c8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-push-process"] .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-push-process"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-push-process"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-push-process"] .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-push-process"] .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-push-process"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-push-process"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-push-process"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-push-process"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-push-process"] .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-push-process"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-push-process"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-push-process"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-push-process"] .hero > .hero-content,
[data-theme="ext-photo-push-process"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-push-process"] .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-push-process"] .hero-title{font-family:'Bebas Neue',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-push-process"] .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-push-process"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-push-process"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:push_process_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-push-process"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-push-process"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-push-process"] .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-push-process"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-push-process"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-push-process"] .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-push-process"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-push-process"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-push-process"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-push-process"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-push-process"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-push-process"] .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-push-process"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-push-process"] .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-push-process"] .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-push-process"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-push-process"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-push-process"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-push-process"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-push-process"] .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-push-process"] .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-push-process"] .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-push-process"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-push-process"] .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-push-process"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-push-process"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-push-process"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-push-process"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-push-process"] .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-push-process"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes push_process_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes push_process_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes push_process_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes push_process_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-push-process"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(232,64,48,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(232,160,32,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(232,64,48,0.04),transparent 30%);
  animation:push_process_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-push-process"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(232,64,48,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(232,160,32,0.06),transparent 30%);
  animation:push_process_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-push-process{background:linear-gradient(135deg,#0a0a0a,#e84030);}

/* ############################################################
   THEME: ext-photo-cross-process  (交叉冲印 / Cross Process)
   ############################################################ */

[data-theme="ext-photo-cross-process"]{
  --bg:#08120a;--bg-2:#0c180e;--bg-3:#102014;--bg-4:#14281a;
  --text:#c8e0b0;--text-dim:#4a7048;--text-mid:#6a9068;
  --accent:#40c030;--accent-glow:rgba(64,192,48,0.4);--white:#c8e0b0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(8,18,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(8,18,10,0.2) 0%,rgba(8,18,10,0.7) 100%);
  --nav-scrolled-bg:#08120aee;
  --font-display:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#08120a;color:#c8e0b0;
}
[data-theme="ext-photo-cross-process"][data-color="green"]{--accent:#40c030;--accent-glow:rgba(64,192,48,0.4);}
[data-theme="ext-photo-cross-process"][data-color="yellow"]{--accent:#c8d020;--accent-glow:rgba(200,208,32,0.4);}

[data-theme="ext-photo-cross-process"] body{background:#08120a;color:#c8e0b0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-cross-process"] .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-cross-process"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-cross-process"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-cross-process"] .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-cross-process"] .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-cross-process"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-cross-process"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-cross-process"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-cross-process"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-cross-process"] .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-cross-process"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-cross-process"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-cross-process"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-cross-process"] .hero > .hero-content,
[data-theme="ext-photo-cross-process"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-cross-process"] .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-cross-process"] .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-cross-process"] .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-cross-process"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-cross-process"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:cross_process_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-cross-process"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-cross-process"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-cross-process"] .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-cross-process"] .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-cross-process"] .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-cross-process"] .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-cross-process"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-cross-process"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-cross-process"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-cross-process"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-cross-process"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-cross-process"] .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-cross-process"] .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-cross-process"] .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-cross-process"] .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-cross-process"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-cross-process"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-cross-process"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-cross-process"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-cross-process"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-cross-process"] .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-cross-process"] .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-cross-process"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-cross-process"] .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-cross-process"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-cross-process"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-cross-process"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-cross-process"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-cross-process"] .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-cross-process"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes cross_process_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes cross_process_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes cross_process_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes cross_process_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-cross-process"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 30%,rgba(64,192,48,0.15),transparent 40%),radial-gradient(circle at 75% 60%,rgba(200,208,32,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(64,192,48,0.06),transparent 30%);
  animation:cross_process_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-cross-process"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 20%,rgba(200,208,32,0.08),transparent 25%),radial-gradient(circle at 30% 70%,rgba(64,192,48,0.06),transparent 30%);
  animation:cross_process_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-cross-process{background:linear-gradient(135deg,#08120a,#40c030);}

/* ############################################################
   THEME: ext-photo-infrared-film  (红外胶片 / Infrared Film)
   ############################################################ */

[data-theme="ext-photo-infrared-film"]{
  --bg:#1a0a1a;--bg-2:#241024;--bg-3:#2e142e;--bg-4:#381838;
  --text:#e8c8e8;--text-dim:#7a4a7a;--text-mid:#9a6a9a;
  --accent:#ff40c0;--accent-glow:rgba(255,64,192,0.4);--white:#e8c8e8;--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:'Cinzel';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0a1a;color:#e8c8e8;
}
[data-theme="ext-photo-infrared-film"][data-color="pink"]{--accent:#ff40c0;--accent-glow:rgba(255,64,192,0.4);}
[data-theme="ext-photo-infrared-film"][data-color="magenta"]{--accent:#c040ff;--accent-glow:rgba(192,64,255,0.4);}

[data-theme="ext-photo-infrared-film"] body{background:#1a0a1a;color:#e8c8e8;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-infrared-film"] .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-infrared-film"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-infrared-film"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-infrared-film"] .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-infrared-film"] .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-infrared-film"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-infrared-film"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-infrared-film"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-infrared-film"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-infrared-film"] .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-infrared-film"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-infrared-film"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-infrared-film"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-infrared-film"] .hero > .hero-content,
[data-theme="ext-photo-infrared-film"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-infrared-film"] .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-infrared-film"] .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-infrared-film"] .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-infrared-film"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-infrared-film"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:infrared_film_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-infrared-film"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-infrared-film"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-infrared-film"] .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-infrared-film"] .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-infrared-film"] .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-infrared-film"] .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-infrared-film"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-infrared-film"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-infrared-film"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-infrared-film"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-infrared-film"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-infrared-film"] .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-infrared-film"] .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-infrared-film"] .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-infrared-film"] .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-infrared-film"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-infrared-film"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-infrared-film"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-infrared-film"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-infrared-film"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-infrared-film"] .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-infrared-film"] .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-infrared-film"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-infrared-film"] .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-infrared-film"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-infrared-film"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-infrared-film"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-infrared-film"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-infrared-film"] .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-infrared-film"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes infrared_film_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes infrared_film_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes infrared_film_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes infrared_film_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-infrared-film"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,64,192,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(192,64,255,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(255,64,192,0.06),transparent 30%);
  animation:infrared_film_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-infrared-film"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(255,64,192,0.10),transparent 25%),radial-gradient(circle at 30% 80%,rgba(192,64,255,0.06),transparent 30%);
  animation:infrared_film_glow 8s ease-in-out infinite alternate;
}

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

/* ############################################################
   THEME: ext-photo-instant-vintage  (即影即有 / Instant Vintage)
   ############################################################ */

[data-theme="ext-photo-instant-vintage"]{
  --bg:#1a1408;--bg-2:#241c0c;--bg-3:#2e2410;--bg-4:#3a2c14;
  --text:#e8d8b8;--text-dim:#8a7448;--text-mid:#aa9468;
  --accent:#d0a040;--accent-glow:rgba(208,160,64,0.4);--white:#e8d8b8;--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:'Spectral';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1408;color:#e8d8b8;
}
[data-theme="ext-photo-instant-vintage"][data-color="cream"]{--accent:#d0a040;--accent-glow:rgba(208,160,64,0.4);}
[data-theme="ext-photo-instant-vintage"][data-color="sepia"]{--accent:#b08820;--accent-glow:rgba(176,136,32,0.4);}

[data-theme="ext-photo-instant-vintage"] body{background:#1a1408;color:#e8d8b8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-instant-vintage"] .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-instant-vintage"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-instant-vintage"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-instant-vintage"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-instant-vintage"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-instant-vintage"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-instant-vintage"] .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-instant-vintage"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-instant-vintage"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-instant-vintage"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-instant-vintage"] .hero > .hero-content,
[data-theme="ext-photo-instant-vintage"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-instant-vintage"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:instant_vintage_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-instant-vintage"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-instant-vintage"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-instant-vintage"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-instant-vintage"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-instant-vintage"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-instant-vintage"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-instant-vintage"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-instant-vintage"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-instant-vintage"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .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-instant-vintage"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-instant-vintage"] .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-instant-vintage"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-instant-vintage"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-instant-vintage"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-instant-vintage"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-instant-vintage"] .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-instant-vintage"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes instant_vintage_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes instant_vintage_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes instant_vintage_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes instant_vintage_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-instant-vintage"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(208,160,64,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(176,136,32,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(208,160,64,0.06),transparent 30%);
  animation:instant_vintage_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-instant-vintage"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(208,160,64,0.10),transparent 25%),radial-gradient(circle at 30% 80%,rgba(176,136,32,0.06),transparent 30%);
  animation:instant_vintage_glow 8s ease-in-out infinite alternate;
}

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

/* ############################################################
   THEME: ext-photo-negative-art  (底片艺术 / Negative Art)
   ############################################################ */

[data-theme="ext-photo-negative-art"]{
  --bg:#0a1218;--bg-2:#0e1a22;--bg-3:#14222c;--bg-4:#1a2a34;
  --text:#d0e0e8;--text-dim:#4a6a78;--text-mid:#6a8a98;
  --accent:#ff8030;--accent-glow:rgba(255,128,48,0.4);--white:#d0e0e8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,18,24,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,18,24,0.2) 0%,rgba(10,18,24,0.7) 100%);
  --nav-scrolled-bg:#0a1218ee;
  --font-display:'Bebas Neue';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a1218;color:#d0e0e8;
}
[data-theme="ext-photo-negative-art"][data-color="orange"]{--accent:#ff8030;--accent-glow:rgba(255,128,48,0.4);}
[data-theme="ext-photo-negative-art"][data-color="cyan"]{--accent:#3080ff;--accent-glow:rgba(48,128,255,0.4);}

[data-theme="ext-photo-negative-art"] body{background:#0a1218;color:#d0e0e8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-negative-art"] .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-negative-art"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-negative-art"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-negative-art"] .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-negative-art"] .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-negative-art"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-negative-art"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-negative-art"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-negative-art"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-negative-art"] .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-negative-art"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-negative-art"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-negative-art"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-negative-art"] .hero > .hero-content,
[data-theme="ext-photo-negative-art"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-negative-art"] .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-negative-art"] .hero-title{font-family:'Bebas Neue',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-negative-art"] .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-negative-art"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-negative-art"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:negative_art_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-negative-art"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-negative-art"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-negative-art"] .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-negative-art"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-negative-art"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-negative-art"] .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-negative-art"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-negative-art"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-negative-art"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-negative-art"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-negative-art"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-negative-art"] .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-negative-art"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-negative-art"] .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-negative-art"] .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-negative-art"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-negative-art"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-negative-art"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-negative-art"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-negative-art"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-negative-art"] .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-negative-art"] .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-negative-art"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-negative-art"] .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-negative-art"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-negative-art"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-negative-art"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-negative-art"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-negative-art"] .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-negative-art"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes negative_art_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes negative_art_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes negative_art_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes negative_art_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-negative-art"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 30%,rgba(255,128,48,0.12),transparent 40%),radial-gradient(circle at 75% 60%,rgba(48,128,255,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(255,128,48,0.06),transparent 30%);
  animation:negative_art_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-negative-art"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 20%,rgba(48,128,255,0.08),transparent 25%),radial-gradient(circle at 30% 70%,rgba(255,128,48,0.06),transparent 30%);
  animation:negative_art_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-negative-art{background:linear-gradient(135deg,#0a1218,#ff8030);}

/* ############################################################
   THEME: ext-photo-brutalist  (粗野主义 / Brutalist)
   ############################################################ */

[data-theme="ext-photo-brutalist"]{
  --bg:#151515;--bg-2:#1c1c1c;--bg-3:#242424;--bg-4:#2c2c2c;
  --text:#c8c8c8;--text-dim:#5a5a5a;--text-mid:#7a7a7a;
  --accent:#888888;--accent-glow:rgba(136,136,136,0.3);--white:#c8c8c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(21,21,21,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(21,21,21,0.2) 0%,rgba(21,21,21,0.7) 100%);
  --nav-scrolled-bg:#151515ee;
  --font-display:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#151515;color:#c8c8c8;
}
[data-theme="ext-photo-brutalist"][data-color="concrete"]{--accent:#888888;--accent-glow:rgba(136,136,136,0.3);}
[data-theme="ext-photo-brutalist"][data-color="steel"]{--accent:#a0a0a0;--accent-glow:rgba(160,160,160,0.3);}

[data-theme="ext-photo-brutalist"] body{background:#151515;color:#c8c8c8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-brutalist"] .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-brutalist"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-brutalist"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-brutalist"] .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-brutalist"] .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-brutalist"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-brutalist"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-brutalist"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-brutalist"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-brutalist"] .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-brutalist"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-brutalist"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-brutalist"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-brutalist"] .hero > .hero-content,
[data-theme="ext-photo-brutalist"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-brutalist"] .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-brutalist"] .hero-title{font-family:'Bebas Neue',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-brutalist"] .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-brutalist"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-brutalist"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:brutalist_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-brutalist"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-brutalist"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-brutalist"] .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-brutalist"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-brutalist"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-brutalist"] .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-brutalist"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-brutalist"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-brutalist"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-brutalist"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-brutalist"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-brutalist"] .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-brutalist"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-brutalist"] .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-brutalist"] .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-brutalist"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-brutalist"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-brutalist"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-brutalist"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-brutalist"] .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-brutalist"] .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-brutalist"] .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-brutalist"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-brutalist"] .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-brutalist"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-brutalist"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-brutalist"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-brutalist"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-brutalist"] .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-brutalist"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes brutalist_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes brutalist_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes brutalist_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes brutalist_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-brutalist"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(136,136,136,0.08),transparent 40%),radial-gradient(circle at 80% 70%,rgba(160,160,160,0.06),transparent 35%),radial-gradient(circle at 50% 50%,rgba(136,136,136,0.04),transparent 30%);
  animation:brutalist_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-brutalist"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(160,160,160,0.05),transparent 25%),radial-gradient(circle at 30% 80%,rgba(136,136,136,0.03),transparent 30%);
  animation:brutalist_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-brutalist{background:linear-gradient(135deg,#151515,#888888);}

/* ############################################################
   THEME: ext-photo-gothic-stone  (哥特石韵 / Gothic Stone)
   ############################################################ */

[data-theme="ext-photo-gothic-stone"]{
  --bg:#181012;--bg-2:#221818;--bg-3:#2c1e1e;--bg-4:#362424;
  --text:#d8c8c0;--text-dim:#6a5048;--text-mid:#8a7068;
  --accent:#a06840;--accent-glow:rgba(160,104,64,0.4);--white:#d8c8c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(24,16,18,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(24,16,18,0.2) 0%,rgba(24,16,18,0.7) 100%);
  --nav-scrolled-bg:#181012ee;
  --font-display:'Cinzel';--font-body:'Cormorant Garamond';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#181012;color:#d8c8c0;
}
[data-theme="ext-photo-gothic-stone"][data-color="bronze"]{--accent:#a06840;--accent-glow:rgba(160,104,64,0.4);}
[data-theme="ext-photo-gothic-stone"][data-color="candle"]{--accent:#c08040;--accent-glow:rgba(192,128,64,0.4);}

[data-theme="ext-photo-gothic-stone"] body{background:#181012;color:#d8c8c0;font-family:'Cormorant Garamond',sans-serif;}

/* Navbar */
[data-theme="ext-photo-gothic-stone"] .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-gothic-stone"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-gothic-stone"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-gothic-stone"] .nav-link{color:var(--text-dim);font-family:'Cormorant Garamond',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-gothic-stone"] .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-gothic-stone"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-gothic-stone"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-gothic-stone"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-gothic-stone"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-gothic-stone"] .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-gothic-stone"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-gothic-stone"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-gothic-stone"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-gothic-stone"] .hero > .hero-content,
[data-theme="ext-photo-gothic-stone"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-gothic-stone"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Cormorant Garamond',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-gothic-stone"] .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-gothic-stone"] .hero-tagline{font-family:'Cormorant Garamond',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-gothic-stone"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-gothic-stone"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:gothic_stone_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-gothic-stone"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-gothic-stone"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-gothic-stone"] .section-head .kicker{font-family:'Cormorant Garamond',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-gothic-stone"] .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-gothic-stone"] .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-gothic-stone"] .about-role{font-family:'Cormorant Garamond',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-gothic-stone"] .about-bio{font-family:'Cormorant Garamond',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-gothic-stone"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-gothic-stone"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-gothic-stone"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-gothic-stone"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-gothic-stone"] .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-gothic-stone"] .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-gothic-stone"] .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-gothic-stone"] .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-gothic-stone"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-gothic-stone"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-gothic-stone"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-gothic-stone"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-gothic-stone"] .album-info-meta{font-family:'Cormorant Garamond',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-gothic-stone"] .album-info-desc{font-family:'Cormorant Garamond',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-gothic-stone"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Cormorant Garamond',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-gothic-stone"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-gothic-stone"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Cormorant Garamond',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-gothic-stone"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

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

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

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

/* Animations */
@keyframes gothic_stone_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes gothic_stone_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes gothic_stone_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes gothic_stone_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-gothic-stone"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 30%,rgba(160,104,64,0.12),transparent 40%),radial-gradient(circle at 75% 60%,rgba(192,128,64,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(160,104,64,0.04),transparent 30%);
  animation:gothic_stone_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-gothic-stone"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 20%,rgba(192,128,64,0.06),transparent 25%),radial-gradient(circle at 30% 70%,rgba(160,104,64,0.04),transparent 30%);
  animation:gothic_stone_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-gothic-stone{background:linear-gradient(135deg,#181012,#a06840);}

/* ############################################################
   THEME: ext-photo-minimal-modern  (极简现代 / Minimal Modern)
   ############################################################ */

[data-theme="ext-photo-minimal-modern"]{
  --bg:#0e0e0e;--bg-2:#161616;--bg-3:#1e1e1e;--bg-4:#262626;
  --text:#e0e0e0;--text-dim:#606060;--text-mid:#808080;
  --accent:#40a0c0;--accent-glow:rgba(64,160,192,0.3);--white:#e0e0e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(14,14,14,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(14,14,14,0.2) 0%,rgba(14,14,14,0.7) 100%);
  --nav-scrolled-bg:#0e0e0eee;
  --font-display:'Inter';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0e0e0e;color:#e0e0e0;
}
[data-theme="ext-photo-minimal-modern"][data-color="cool"]{--accent:#40a0c0;--accent-glow:rgba(64,160,192,0.3);}
[data-theme="ext-photo-minimal-modern"][data-color="warm"]{--accent:#c0a070;--accent-glow:rgba(192,160,112,0.3);}

[data-theme="ext-photo-minimal-modern"] body{background:#0e0e0e;color:#e0e0e0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-minimal-modern"] .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-minimal-modern"] .nav-logo{font-family:'Inter',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-minimal-modern"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-minimal-modern"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-minimal-modern"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-minimal-modern"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-minimal-modern"] .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-minimal-modern"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-minimal-modern"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-minimal-modern"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-minimal-modern"] .hero > .hero-content,
[data-theme="ext-photo-minimal-modern"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-minimal-modern"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:minimal_modern_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-minimal-modern"] .section-num{font-family:'Inter',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-minimal-modern"] .section-title{font-family:'Inter',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-minimal-modern"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-minimal-modern"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-minimal-modern"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-minimal-modern"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-minimal-modern"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-minimal-modern"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-minimal-modern"] .album-info-title{font-family:'Inter',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .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-minimal-modern"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-minimal-modern"] .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-minimal-modern"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-minimal-modern"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-minimal-modern"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-minimal-modern"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-minimal-modern"] .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-minimal-modern"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes minimal_modern_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes minimal_modern_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes minimal_modern_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes minimal_modern_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-minimal-modern"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(64,160,192,0.08),transparent 40%),radial-gradient(circle at 80% 70%,rgba(192,160,112,0.06),transparent 35%),radial-gradient(circle at 50% 50%,rgba(64,160,192,0.04),transparent 30%);
  animation:minimal_modern_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-minimal-modern"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(192,160,112,0.04),transparent 25%),radial-gradient(circle at 30% 80%,rgba(64,160,192,0.03),transparent 30%);
  animation:minimal_modern_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-minimal-modern{background:linear-gradient(135deg,#0e0e0e,#40a0c0);}

/* ############################################################
   THEME: ext-photo-art-deco  (装饰艺术 / Art Deco)
   ############################################################ */

[data-theme="ext-photo-art-deco"]{
  --bg:#120e08;--bg-2:#1c1610;--bg-3:#262014;--bg-4:#302818;
  --text:#e8dcb0;--text-dim:#8a7440;--text-mid:#aa9460;
  --accent:#d4a820;--accent-glow:rgba(212,168,32,0.4);--white:#e8dcb0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(18,14,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(18,14,8,0.2) 0%,rgba(18,14,8,0.7) 100%);
  --nav-scrolled-bg:#120e08ee;
  --font-display:'Cinzel';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#120e08;color:#e8dcb0;
}
[data-theme="ext-photo-art-deco"][data-color="gold"]{--accent:#d4a820;--accent-glow:rgba(212,168,32,0.4);}
[data-theme="ext-photo-art-deco"][data-color="bronze"]{--accent:#a07018;--accent-glow:rgba(160,112,24,0.4);}

[data-theme="ext-photo-art-deco"] body{background:#120e08;color:#e8dcb0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-art-deco"] .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-art-deco"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-art-deco"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-art-deco"] .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-art-deco"] .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-art-deco"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-art-deco"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-art-deco"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-art-deco"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-art-deco"] .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-art-deco"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-art-deco"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-art-deco"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-art-deco"] .hero > .hero-content,
[data-theme="ext-photo-art-deco"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-art-deco"] .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-art-deco"] .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-art-deco"] .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-art-deco"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-art-deco"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:art_deco_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-art-deco"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-art-deco"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-art-deco"] .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-art-deco"] .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-art-deco"] .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-art-deco"] .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-art-deco"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-art-deco"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-art-deco"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-art-deco"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-art-deco"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-art-deco"] .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-art-deco"] .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-art-deco"] .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-art-deco"] .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-art-deco"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-art-deco"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-art-deco"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-art-deco"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-art-deco"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-art-deco"] .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-art-deco"] .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-art-deco"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-art-deco"] .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-art-deco"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-art-deco"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-art-deco"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-art-deco"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-art-deco"] .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-art-deco"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes art_deco_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes art_deco_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes art_deco_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes art_deco_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-art-deco"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(212,168,32,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(160,112,24,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(212,168,32,0.06),transparent 30%);
  animation:art_deco_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-art-deco"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(212,168,32,0.10),transparent 25%),radial-gradient(circle at 30% 80%,rgba(160,112,24,0.06),transparent 30%);
  animation:art_deco_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-art-deco{background:linear-gradient(135deg,#120e08,#d4a820);}

/* ############################################################
   THEME: ext-photo-industrial-steel  (工业钢架 / Industrial Steel)
   ############################################################ */

[data-theme="ext-photo-industrial-steel"]{
  --bg:#101216;--bg-2:#161a1e;--bg-3:#1c2024;--bg-4:#22262a;
  --text:#c8cdd0;--text-dim:#5a6066;--text-mid:#7a8088;
  --accent:#6890a0;--accent-glow:rgba(104,144,160,0.3);--white:#c8cdd0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(16,18,22,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(16,18,22,0.2) 0%,rgba(16,18,22,0.7) 100%);
  --nav-scrolled-bg:#101216ee;
  --font-display:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#101216;color:#c8cdd0;
}
[data-theme="ext-photo-industrial-steel"][data-color="steel"]{--accent:#6890a0;--accent-glow:rgba(104,144,160,0.3);}
[data-theme="ext-photo-industrial-steel"][data-color="rust"]{--accent:#a06840;--accent-glow:rgba(160,104,64,0.4);}

[data-theme="ext-photo-industrial-steel"] body{background:#101216;color:#c8cdd0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-industrial-steel"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .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-industrial-steel"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-industrial-steel"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-industrial-steel"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-industrial-steel"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-industrial-steel"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-industrial-steel"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-industrial-steel"] .hero > .hero-content,
[data-theme="ext-photo-industrial-steel"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .hero-title{font-family:'Bebas Neue',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-industrial-steel"] .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-industrial-steel"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-industrial-steel"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:industrial_steel_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-industrial-steel"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-industrial-steel"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-industrial-steel"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-industrial-steel"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-industrial-steel"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-industrial-steel"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-industrial-steel"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .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-industrial-steel"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-industrial-steel"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-industrial-steel"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-industrial-steel"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .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-industrial-steel"] .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-industrial-steel"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-industrial-steel"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-industrial-steel"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-industrial-steel"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-industrial-steel"] .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-industrial-steel"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes industrial_steel_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes industrial_steel_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes industrial_steel_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes industrial_steel_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-industrial-steel"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(104,144,160,0.10),transparent 40%),radial-gradient(circle at 80% 70%,rgba(160,104,64,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(104,144,160,0.04),transparent 30%);
  animation:industrial_steel_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-industrial-steel"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(160,104,64,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(104,144,160,0.03),transparent 30%);
  animation:industrial_steel_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-industrial-steel{background:linear-gradient(135deg,#101216,#6890a0);}

/* ############################################################
   THEME: ext-photo-glass-tower  (玻璃塔楼 / Glass Tower)
   ############################################################ */

[data-theme="ext-photo-glass-tower"]{
  --bg:#0a1216;--bg-2:#0e1a1e;--bg-3:#142226;--bg-4:#1a2a2e;
  --text:#b8d0d8;--text-dim:#486870;--text-mid:#688890;
  --accent:#48b0c8;--accent-glow:rgba(72,176,200,0.4);--white:#b8d0d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,18,22,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,18,22,0.2) 0%,rgba(10,18,22,0.7) 100%);
  --nav-scrolled-bg:#0a1216ee;
  --font-display:'Inter';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a1216;color:#b8d0d8;
}
[data-theme="ext-photo-glass-tower"][data-color="glass"]{--accent:#48b0c8;--accent-glow:rgba(72,176,200,0.4);}
[data-theme="ext-photo-glass-tower"][data-color="reflect"]{--accent:#70c0a0;--accent-glow:rgba(112,192,160,0.4);}

[data-theme="ext-photo-glass-tower"] body{background:#0a1216;color:#b8d0d8;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-glass-tower"] .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-glass-tower"] .nav-logo{font-family:'Inter',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-glass-tower"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-glass-tower"] .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-glass-tower"] .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-glass-tower"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-glass-tower"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-glass-tower"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-glass-tower"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-glass-tower"] .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-glass-tower"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-glass-tower"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-glass-tower"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-glass-tower"] .hero > .hero-content,
[data-theme="ext-photo-glass-tower"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-glass-tower"] .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-glass-tower"] .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-glass-tower"] .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-glass-tower"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-glass-tower"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:glass_tower_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-glass-tower"] .section-num{font-family:'Inter',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-glass-tower"] .section-title{font-family:'Inter',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-glass-tower"] .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-glass-tower"] .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-glass-tower"] .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-glass-tower"] .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-glass-tower"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-glass-tower"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-glass-tower"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-glass-tower"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-glass-tower"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-glass-tower"] .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-glass-tower"] .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-glass-tower"] .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-glass-tower"] .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-glass-tower"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-glass-tower"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-glass-tower"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-glass-tower"] .album-info-title{font-family:'Inter',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-glass-tower"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-glass-tower"] .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-glass-tower"] .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-glass-tower"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-glass-tower"] .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-glass-tower"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-glass-tower"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-glass-tower"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-glass-tower"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-glass-tower"] .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-glass-tower"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes glass_tower_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes glass_tower_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes glass_tower_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes glass_tower_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-glass-tower"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 30%,rgba(72,176,200,0.12),transparent 40%),radial-gradient(circle at 75% 60%,rgba(112,192,160,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(72,176,200,0.06),transparent 30%);
  animation:glass_tower_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-glass-tower"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 20%,rgba(112,192,160,0.08),transparent 25%),radial-gradient(circle at 30% 70%,rgba(72,176,200,0.06),transparent 30%);
  animation:glass_tower_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-glass-tower{background:linear-gradient(135deg,#0a1216,#48b0c8);}

/* ############################################################
   THEME: ext-photo-ancient-ruin  (古迹残垣 / Ancient Ruin)
   ############################################################ */

[data-theme="ext-photo-ancient-ruin"]{
  --bg:#1a1408;--bg-2:#241c0c;--bg-3:#2e2410;--bg-4:#3a2c14;
  --text:#e0d0a8;--text-dim:#8a7048;--text-mid:#aa9068;
  --accent:#c08840;--accent-glow:rgba(192,136,64,0.4);--white:#e0d0a8;--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:'Spectral';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1408;color:#e0d0a8;
}
[data-theme="ext-photo-ancient-ruin"][data-color="sand"]{--accent:#c08840;--accent-glow:rgba(192,136,64,0.4);}
[data-theme="ext-photo-ancient-ruin"][data-color="stone"]{--accent:#a07028;--accent-glow:rgba(160,112,40,0.4);}

[data-theme="ext-photo-ancient-ruin"] body{background:#1a1408;color:#e0d0a8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-ancient-ruin"] .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-ancient-ruin"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-ancient-ruin"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-ancient-ruin"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-ancient-ruin"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-ancient-ruin"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-ancient-ruin"] .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-ancient-ruin"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-ancient-ruin"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-ancient-ruin"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-ancient-ruin"] .hero > .hero-content,
[data-theme="ext-photo-ancient-ruin"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-ancient-ruin"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:ancient_ruin_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-ancient-ruin"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-ancient-ruin"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-ancient-ruin"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-ancient-ruin"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-ancient-ruin"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-ancient-ruin"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-ancient-ruin"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-ancient-ruin"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-ancient-ruin"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-ancient-ruin"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-ancient-ruin"] .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-ancient-ruin"] .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-ancient-ruin"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-ancient-ruin"] .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-ancient-ruin"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-ancient-ruin"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-ancient-ruin"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-ancient-ruin"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-ancient-ruin"] .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-ancient-ruin"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes ancient_ruin_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes ancient_ruin_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes ancient_ruin_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes ancient_ruin_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-ancient-ruin"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(192,136,64,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(160,112,40,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(192,136,64,0.06),transparent 30%);
  animation:ancient_ruin_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-ancient-ruin"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(160,112,40,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(192,136,64,0.06),transparent 30%);
  animation:ancient_ruin_glow 8s ease-in-out infinite alternate;
}

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

/* ############################################################
   THEME: ext-photo-parametric  (参数设计 / Parametric)
   ############################################################ */

[data-theme="ext-photo-parametric"]{
  --bg:#0a0e14;--bg-2:#0e1420;--bg-3:#141a28;--bg-4:#1a2030;
  --text:#c0d0e0;--text-dim:#485868;--text-mid:#687888;
  --accent:#5090e0;--accent-glow:rgba(80,144,224,0.4);--white:#c0d0e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,14,20,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,14,20,0.2) 0%,rgba(10,14,20,0.7) 100%);
  --nav-scrolled-bg:#0a0e14ee;
  --font-display:'Inter';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0e14;color:#c0d0e0;
}
[data-theme="ext-photo-parametric"][data-color="flow"]{--accent:#5090e0;--accent-glow:rgba(80,144,224,0.4);}
[data-theme="ext-photo-parametric"][data-color="curve"]{--accent:#a050e0;--accent-glow:rgba(160,80,224,0.4);}

[data-theme="ext-photo-parametric"] body{background:#0a0e14;color:#c0d0e0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-parametric"] .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-parametric"] .nav-logo{font-family:'Inter',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-parametric"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-parametric"] .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-parametric"] .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-parametric"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-parametric"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-parametric"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-parametric"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-parametric"] .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-parametric"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-parametric"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-parametric"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-parametric"] .hero > .hero-content,
[data-theme="ext-photo-parametric"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-parametric"] .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-parametric"] .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-parametric"] .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-parametric"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-parametric"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:parametric_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-parametric"] .section-num{font-family:'Inter',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-parametric"] .section-title{font-family:'Inter',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-parametric"] .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-parametric"] .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-parametric"] .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-parametric"] .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-parametric"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-parametric"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-parametric"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-parametric"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-parametric"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-parametric"] .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-parametric"] .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-parametric"] .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-parametric"] .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-parametric"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-parametric"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-parametric"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-parametric"] .album-info-title{font-family:'Inter',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-parametric"] .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-parametric"] .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-parametric"] .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-parametric"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-parametric"] .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-parametric"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-parametric"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-parametric"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-parametric"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-parametric"] .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-parametric"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes parametric_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes parametric_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes parametric_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes parametric_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-parametric"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 25% 30%,rgba(80,144,224,0.12),transparent 40%),radial-gradient(circle at 75% 60%,rgba(160,80,224,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(80,144,224,0.06),transparent 30%);
  animation:parametric_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-parametric"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 60% 20%,rgba(160,80,224,0.08),transparent 25%),radial-gradient(circle at 30% 70%,rgba(80,144,224,0.06),transparent 30%);
  animation:parametric_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-parametric{background:linear-gradient(135deg,#0a0e14,#5090e0);}

/* ############################################################
   THEME: ext-photo-contemplative  (沉思凝望 / Contemplative)
   ############################################################ */

[data-theme="ext-photo-contemplative"]{
  --bg:#151018;--bg-2:#1c1620;--bg-3:#242028;--bg-4:#2c2630;
  --text:#d0c8d0;--text-dim:#5a5460;--text-mid:#7a7480;
  --accent:#a090b8;--accent-glow:rgba(160,144,184,0.4);--white:#d0c8d0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(21,16,24,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(21,16,24,0.2) 0%,rgba(21,16,24,0.7) 100%);
  --nav-scrolled-bg:#151018ee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#151018;color:#d0c8d0;
}
[data-theme="ext-photo-contemplative"][data-color="lavender"]{--accent:#a090b8;--accent-glow:rgba(160,144,184,0.4);}
[data-theme="ext-photo-contemplative"][data-color="dusk"]{--accent:#8878a0;--accent-glow:rgba(136,120,160,0.4);}

[data-theme="ext-photo-contemplative"] body{background:#151018;color:#d0c8d0;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-contemplative"] .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-contemplative"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-contemplative"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-contemplative"] .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-contemplative"] .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-contemplative"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-contemplative"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-contemplative"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-contemplative"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-contemplative"] .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-contemplative"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-contemplative"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-contemplative"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-contemplative"] .hero > .hero-content,
[data-theme="ext-photo-contemplative"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-contemplative"] .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-contemplative"] .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-contemplative"] .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-contemplative"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-contemplative"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:contemplative_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-contemplative"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-contemplative"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-contemplative"] .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-contemplative"] .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-contemplative"] .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-contemplative"] .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-contemplative"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-contemplative"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-contemplative"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-contemplative"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-contemplative"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-contemplative"] .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-contemplative"] .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-contemplative"] .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-contemplative"] .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-contemplative"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-contemplative"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-contemplative"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-contemplative"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-contemplative"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-contemplative"] .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-contemplative"] .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-contemplative"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-contemplative"] .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-contemplative"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-contemplative"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-contemplative"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-contemplative"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-contemplative"] .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-contemplative"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes contemplative_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes contemplative_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes contemplative_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes contemplative_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-contemplative"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(160,144,184,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(136,120,160,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(160,144,184,0.04),transparent 30%);
  animation:contemplative_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-contemplative"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(136,120,160,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(160,144,184,0.04),transparent 30%);
  animation:contemplative_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-contemplative{background:linear-gradient(135deg,#151018,#a090b8);}

/* ############################################################
   THEME: ext-photo-joyful-portrait  (欢颜人像 / Joyful Portrait)
   ############################################################ */

[data-theme="ext-photo-joyful-portrait"]{
  --bg:#1a1208;--bg-2:#24180c;--bg-3:#2e200f;--bg-4:#3a2814;
  --text:#f0e0c0;--text-dim:#9a7848;--text-mid:#baa878;
  --accent:#e8a020;--accent-glow:rgba(232,160,32,0.4);--white:#f0e0c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,18,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,18,8,0.2) 0%,rgba(26,18,8,0.7) 100%);
  --nav-scrolled-bg:#1a1208ee;
  --font-display:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1208;color:#f0e0c0;
}
[data-theme="ext-photo-joyful-portrait"][data-color="sunny"]{--accent:#e8a020;--accent-glow:rgba(232,160,32,0.4);}
[data-theme="ext-photo-joyful-portrait"][data-color="coral"]{--accent:#e87860;--accent-glow:rgba(232,120,96,0.4);}

[data-theme="ext-photo-joyful-portrait"] body{background:#1a1208;color:#f0e0c0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-joyful-portrait"] .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-joyful-portrait"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-joyful-portrait"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-joyful-portrait"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-joyful-portrait"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-joyful-portrait"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-joyful-portrait"] .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-joyful-portrait"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-joyful-portrait"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-joyful-portrait"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-joyful-portrait"] .hero > .hero-content,
[data-theme="ext-photo-joyful-portrait"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-joyful-portrait"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:joyful_portrait_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-joyful-portrait"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-joyful-portrait"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-joyful-portrait"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-joyful-portrait"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-joyful-portrait"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-joyful-portrait"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-joyful-portrait"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-joyful-portrait"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-joyful-portrait"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-joyful-portrait"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-joyful-portrait"] .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-joyful-portrait"] .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-joyful-portrait"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-joyful-portrait"] .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-joyful-portrait"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-joyful-portrait"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-joyful-portrait"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-joyful-portrait"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-joyful-portrait"] .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-joyful-portrait"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes joyful_portrait_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes joyful_portrait_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes joyful_portrait_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes joyful_portrait_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-joyful-portrait"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(232,160,32,0.18),transparent 40%),radial-gradient(circle at 80% 70%,rgba(232,120,96,0.12),transparent 35%),radial-gradient(circle at 50% 50%,rgba(232,160,32,0.06),transparent 30%);
  animation:joyful_portrait_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-joyful-portrait"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(232,120,96,0.10),transparent 25%),radial-gradient(circle at 30% 80%,rgba(232,160,32,0.06),transparent 30%);
  animation:joyful_portrait_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-joyful-portrait{background:linear-gradient(135deg,#1a1208,#e8a020);}

/* ############################################################
   THEME: ext-photo-melancholic  (忧郁侧脸 / Melancholic)
   ############################################################ */

[data-theme="ext-photo-melancholic"]{
  --bg:#0e0e14;--bg-2:#141420;--bg-3:#1a1a28;--bg-4:#20202e;
  --text:#b8b8c8;--text-dim:#4a4a58;--text-mid:#6a6a78;
  --accent:#6080a0;--accent-glow:rgba(96,128,160,0.4);--white:#b8b8c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(14,14,20,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(14,14,20,0.2) 0%,rgba(14,14,20,0.7) 100%);
  --nav-scrolled-bg:#0e0e14ee;
  --font-display:'Cormorant Garamond';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0e0e14;color:#b8b8c8;
}
[data-theme="ext-photo-melancholic"][data-color="blue"]{--accent:#6080a0;--accent-glow:rgba(96,128,160,0.4);}
[data-theme="ext-photo-melancholic"][data-color="gray"]{--accent:#808090;--accent-glow:rgba(128,128,144,0.3);}

[data-theme="ext-photo-melancholic"] body{background:#0e0e14;color:#b8b8c8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-melancholic"] .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-melancholic"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-melancholic"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-melancholic"] .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-melancholic"] .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-melancholic"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-melancholic"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-melancholic"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-melancholic"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-melancholic"] .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-melancholic"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-melancholic"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-melancholic"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-melancholic"] .hero > .hero-content,
[data-theme="ext-photo-melancholic"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-melancholic"] .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-melancholic"] .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-melancholic"] .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-melancholic"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-melancholic"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:melancholic_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-melancholic"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-melancholic"] .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-melancholic"] .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-melancholic"] .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-melancholic"] .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-melancholic"] .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-melancholic"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-melancholic"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-melancholic"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-melancholic"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-melancholic"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-melancholic"] .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-melancholic"] .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-melancholic"] .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-melancholic"] .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-melancholic"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-melancholic"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-melancholic"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-melancholic"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-melancholic"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-melancholic"] .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-melancholic"] .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-melancholic"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-melancholic"] .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-melancholic"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-melancholic"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-melancholic"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-melancholic"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-melancholic"] .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-melancholic"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes melancholic_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes melancholic_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes melancholic_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes melancholic_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-melancholic"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(96,128,160,0.10),transparent 40%),radial-gradient(circle at 80% 70%,rgba(128,128,144,0.06),transparent 35%),radial-gradient(circle at 50% 50%,rgba(96,128,160,0.04),transparent 30%);
  animation:melancholic_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-melancholic"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(128,128,144,0.04),transparent 25%),radial-gradient(circle at 30% 80%,rgba(96,128,160,0.03),transparent 30%);
  animation:melancholic_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-melancholic{background:linear-gradient(135deg,#0e0e14,#6080a0);}

/* ############################################################
   THEME: ext-photo-intense-gaze  (凝视强度 / Intense Gaze)
   ############################################################ */

[data-theme="ext-photo-intense-gaze"]{
  --bg:#180808;--bg-2:#20100e;--bg-3:#281614;--bg-4:#301c18;
  --text:#e0c8c0;--text-dim:#7a4848;--text-mid:#9a6868;
  --accent:#d04030;--accent-glow:rgba(208,64,48,0.4);--white:#e0c8c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(24,8,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(24,8,8,0.2) 0%,rgba(24,8,8,0.7) 100%);
  --nav-scrolled-bg:#180808ee;
  --font-display:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#180808;color:#e0c8c0;
}
[data-theme="ext-photo-intense-gaze"][data-color="red"]{--accent:#d04030;--accent-glow:rgba(208,64,48,0.4);}
[data-theme="ext-photo-intense-gaze"][data-color="amber"]{--accent:#d08020;--accent-glow:rgba(208,128,32,0.4);}

[data-theme="ext-photo-intense-gaze"] body{background:#180808;color:#e0c8c0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-intense-gaze"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .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-intense-gaze"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-intense-gaze"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-intense-gaze"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-intense-gaze"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-intense-gaze"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-intense-gaze"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-intense-gaze"] .hero > .hero-content,
[data-theme="ext-photo-intense-gaze"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .hero-title{font-family:'Bebas Neue',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-intense-gaze"] .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-intense-gaze"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-intense-gaze"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:intense_gaze_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-intense-gaze"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-intense-gaze"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-intense-gaze"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-intense-gaze"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-intense-gaze"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-intense-gaze"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-intense-gaze"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .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-intense-gaze"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-intense-gaze"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-intense-gaze"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-intense-gaze"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .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-intense-gaze"] .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-intense-gaze"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-intense-gaze"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-intense-gaze"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-intense-gaze"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-intense-gaze"] .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-intense-gaze"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes intense_gaze_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes intense_gaze_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes intense_gaze_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes intense_gaze_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-intense-gaze"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(208,64,48,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(208,128,32,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(208,64,48,0.06),transparent 30%);
  animation:intense_gaze_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-intense-gaze"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(208,128,32,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(208,64,48,0.06),transparent 30%);
  animation:intense_gaze_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-intense-gaze{background:linear-gradient(135deg,#180808,#d04030);}

/* ############################################################
   THEME: ext-photo-serene-face  (宁静面容 / Serene Face)
   ############################################################ */

[data-theme="ext-photo-serene-face"]{
  --bg:#0a1010;--bg-2:#0e1818;--bg-3:#142020;--bg-4:#1a2828;
  --text:#b8d0d0;--text-dim:#486868;--text-mid:#688888;
  --accent:#50b8a0;--accent-glow:rgba(80,184,160,0.4);--white:#b8d0d0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,16,16,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,16,16,0.2) 0%,rgba(10,16,16,0.7) 100%);
  --nav-scrolled-bg:#0a1010ee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a1010;color:#b8d0d0;
}
[data-theme="ext-photo-serene-face"][data-color="teal"]{--accent:#50b8a0;--accent-glow:rgba(80,184,160,0.4);}
[data-theme="ext-photo-serene-face"][data-color="jade"]{--accent:#40a890;--accent-glow:rgba(64,168,144,0.4);}

[data-theme="ext-photo-serene-face"] body{background:#0a1010;color:#b8d0d0;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-serene-face"] .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-serene-face"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-serene-face"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-serene-face"] .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-serene-face"] .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-serene-face"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-serene-face"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-serene-face"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-serene-face"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-serene-face"] .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-serene-face"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-serene-face"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-serene-face"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-serene-face"] .hero > .hero-content,
[data-theme="ext-photo-serene-face"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-serene-face"] .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-serene-face"] .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-serene-face"] .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-serene-face"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-serene-face"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:serene_face_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-serene-face"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-serene-face"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-serene-face"] .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-serene-face"] .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-serene-face"] .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-serene-face"] .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-serene-face"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-serene-face"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-serene-face"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-serene-face"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-serene-face"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-serene-face"] .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-serene-face"] .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-serene-face"] .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-serene-face"] .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-serene-face"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-serene-face"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-serene-face"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-serene-face"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-serene-face"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-serene-face"] .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-serene-face"] .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-serene-face"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-serene-face"] .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-serene-face"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-serene-face"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-serene-face"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-serene-face"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-serene-face"] .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-serene-face"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes serene_face_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes serene_face_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes serene_face_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes serene_face_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-serene-face"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(80,184,160,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(64,168,144,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(80,184,160,0.04),transparent 30%);
  animation:serene_face_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-serene-face"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(64,168,144,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(80,184,160,0.04),transparent 30%);
  animation:serene_face_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-serene-face{background:linear-gradient(135deg,#0a1010,#50b8a0);}

/* ############################################################
   THEME: ext-photo-vulnerable  (脆弱瞬间 / Vulnerable)
   ############################################################ */

[data-theme="ext-photo-vulnerable"]{
  --bg:#141010;--bg-2:#1c1818;--bg-3:#242020;--bg-4:#2c2828;
  --text:#d8c8c8;--text-dim:#6a5858;--text-mid:#8a7878;
  --accent:#c08080;--accent-glow:rgba(192,128,128,0.4);--white:#d8c8c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(20,16,16,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(20,16,16,0.2) 0%,rgba(20,16,16,0.7) 100%);
  --nav-scrolled-bg:#141010ee;
  --font-display:'Cormorant Garamond';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#141010;color:#d8c8c8;
}
[data-theme="ext-photo-vulnerable"][data-color="rose"]{--accent:#c08080;--accent-glow:rgba(192,128,128,0.4);}
[data-theme="ext-photo-vulnerable"][data-color="blush"]{--accent:#d09898;--accent-glow:rgba(208,152,152,0.4);}

[data-theme="ext-photo-vulnerable"] body{background:#141010;color:#d8c8c8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-vulnerable"] .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-vulnerable"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-vulnerable"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-vulnerable"] .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-vulnerable"] .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-vulnerable"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-vulnerable"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-vulnerable"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-vulnerable"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-vulnerable"] .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-vulnerable"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-vulnerable"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-vulnerable"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-vulnerable"] .hero > .hero-content,
[data-theme="ext-photo-vulnerable"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-vulnerable"] .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-vulnerable"] .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-vulnerable"] .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-vulnerable"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-vulnerable"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:vulnerable_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-vulnerable"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-vulnerable"] .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-vulnerable"] .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-vulnerable"] .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-vulnerable"] .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-vulnerable"] .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-vulnerable"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-vulnerable"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-vulnerable"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-vulnerable"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-vulnerable"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-vulnerable"] .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-vulnerable"] .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-vulnerable"] .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-vulnerable"] .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-vulnerable"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-vulnerable"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-vulnerable"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-vulnerable"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-vulnerable"] .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-vulnerable"] .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-vulnerable"] .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-vulnerable"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-vulnerable"] .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-vulnerable"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-vulnerable"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-vulnerable"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-vulnerable"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-vulnerable"] .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-vulnerable"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes vulnerable_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes vulnerable_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes vulnerable_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes vulnerable_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-vulnerable"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(192,128,128,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(208,152,152,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(192,128,128,0.04),transparent 30%);
  animation:vulnerable_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-vulnerable"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(208,152,152,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(192,128,128,0.04),transparent 30%);
  animation:vulnerable_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-vulnerable{background:linear-gradient(135deg,#141010,#c08080);}

/* ############################################################
   THEME: ext-photo-confident  (自信风骨 / Confident)
   ############################################################ */

[data-theme="ext-photo-confident"]{
  --bg:#1a120a;--bg-2:#241810;--bg-3:#2e200f;--bg-4:#3a2814;
  --text:#e8d8b8;--text-dim:#8a7048;--text-mid:#aa9068;
  --accent:#d0a040;--accent-glow:rgba(208,160,64,0.4);--white:#e8d8b8;--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:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a120a;color:#e8d8b8;
}
[data-theme="ext-photo-confident"][data-color="gold"]{--accent:#d0a040;--accent-glow:rgba(208,160,64,0.4);}
[data-theme="ext-photo-confident"][data-color="bronze"]{--accent:#b08030;--accent-glow:rgba(176,128,48,0.4);}

[data-theme="ext-photo-confident"] body{background:#1a120a;color:#e8d8b8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-confident"] .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-confident"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-confident"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-confident"] .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-confident"] .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-confident"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-confident"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-confident"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-confident"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-confident"] .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-confident"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-confident"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-confident"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-confident"] .hero > .hero-content,
[data-theme="ext-photo-confident"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-confident"] .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-confident"] .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-confident"] .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-confident"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-confident"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:confident_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-confident"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-confident"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-confident"] .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-confident"] .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-confident"] .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-confident"] .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-confident"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-confident"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-confident"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-confident"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-confident"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-confident"] .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-confident"] .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-confident"] .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-confident"] .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-confident"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-confident"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-confident"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-confident"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-confident"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-confident"] .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-confident"] .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-confident"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-confident"] .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-confident"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-confident"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-confident"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-confident"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-confident"] .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-confident"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes confident_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes confident_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes confident_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes confident_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-confident"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(208,160,64,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(176,128,48,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(208,160,64,0.06),transparent 30%);
  animation:confident_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-confident"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(176,128,48,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(208,160,64,0.06),transparent 30%);
  animation:confident_glow 8s ease-in-out infinite alternate;
}

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

/* ############################################################
   THEME: ext-photo-mysterious  (神秘幽影 / Mysterious)
   ############################################################ */

[data-theme="ext-photo-mysterious"]{
  --bg:#100814;--bg-2:#140c1e;--bg-3:#181028;--bg-4:#1c1432;
  --text:#c8b8d8;--text-dim:#5a4a70;--text-mid:#7a6a90;
  --accent:#8040c0;--accent-glow:rgba(128,64,192,0.4);--white:#c8b8d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(16,8,20,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(16,8,20,0.2) 0%,rgba(16,8,20,0.7) 100%);
  --nav-scrolled-bg:#100814ee;
  --font-display:'Cinzel';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#100814;color:#c8b8d8;
}
[data-theme="ext-photo-mysterious"][data-color="violet"]{--accent:#8040c0;--accent-glow:rgba(128,64,192,0.4);}
[data-theme="ext-photo-mysterious"][data-color="indigo"]{--accent:#5030a0;--accent-glow:rgba(80,48,160,0.4);}

[data-theme="ext-photo-mysterious"] body{background:#100814;color:#c8b8d8;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-mysterious"] .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-mysterious"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-mysterious"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-mysterious"] .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-mysterious"] .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-mysterious"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-mysterious"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-mysterious"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-mysterious"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-mysterious"] .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-mysterious"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-mysterious"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-mysterious"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-mysterious"] .hero > .hero-content,
[data-theme="ext-photo-mysterious"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-mysterious"] .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-mysterious"] .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-mysterious"] .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-mysterious"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-mysterious"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:mysterious_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-mysterious"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-mysterious"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-mysterious"] .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-mysterious"] .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-mysterious"] .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-mysterious"] .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-mysterious"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-mysterious"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-mysterious"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-mysterious"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-mysterious"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-mysterious"] .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-mysterious"] .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-mysterious"] .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-mysterious"] .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-mysterious"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-mysterious"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-mysterious"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-mysterious"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-mysterious"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-mysterious"] .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-mysterious"] .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-mysterious"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-mysterious"] .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-mysterious"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-mysterious"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-mysterious"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-mysterious"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-mysterious"] .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-mysterious"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes mysterious_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes mysterious_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes mysterious_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes mysterious_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-mysterious"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(128,64,192,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(80,48,160,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(128,64,192,0.04),transparent 30%);
  animation:mysterious_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-mysterious"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(80,48,160,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(128,64,192,0.04),transparent 30%);
  animation:mysterious_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-mysterious{background:linear-gradient(135deg,#100814,#8040c0);}

/* ############################################################
   THEME: ext-photo-desert-crossing  (沙漠穿越 / Desert Crossing)
   ############################################################ */

[data-theme="ext-photo-desert-crossing"]{
  --bg:#1a1408;--bg-2:#241c0c;--bg-3:#2e2410;--bg-4:#3a2c14;
  --text:#e8d4a0;--text-dim:#8a7038;--text-mid:#aa9060;
  --accent:#d4a020;--accent-glow:rgba(212,160,32,0.4);--white:#e8d4a0;--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:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1408;color:#e8d4a0;
}
[data-theme="ext-photo-desert-crossing"][data-color="sand"]{--accent:#d4a020;--accent-glow:rgba(212,160,32,0.4);}
[data-theme="ext-photo-desert-crossing"][data-color="dune"]{--accent:#c08818;--accent-glow:rgba(192,136,24,0.4);}

[data-theme="ext-photo-desert-crossing"] body{background:#1a1408;color:#e8d4a0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-desert-crossing"] .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-desert-crossing"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-desert-crossing"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-desert-crossing"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-desert-crossing"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-desert-crossing"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-desert-crossing"] .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-desert-crossing"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-desert-crossing"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-desert-crossing"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-desert-crossing"] .hero > .hero-content,
[data-theme="ext-photo-desert-crossing"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-desert-crossing"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:desert_crossing_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-desert-crossing"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-desert-crossing"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-desert-crossing"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-desert-crossing"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-desert-crossing"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-desert-crossing"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-desert-crossing"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-desert-crossing"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-desert-crossing"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-desert-crossing"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-desert-crossing"] .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-desert-crossing"] .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-desert-crossing"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-desert-crossing"] .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-desert-crossing"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-desert-crossing"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-desert-crossing"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-desert-crossing"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-desert-crossing"] .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-desert-crossing"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes desert_crossing_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes desert_crossing_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes desert_crossing_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes desert_crossing_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-desert-crossing"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(212,160,32,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(192,136,24,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(212,160,32,0.06),transparent 30%);
  animation:desert_crossing_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-desert-crossing"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(192,136,24,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(212,160,32,0.06),transparent 30%);
  animation:desert_crossing_glow 8s ease-in-out infinite alternate;
}

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

/* ############################################################
   THEME: ext-photo-mountain-trek  (山峦跋涉 / Mountain Trek)
   ############################################################ */

[data-theme="ext-photo-mountain-trek"]{
  --bg:#0e1410;--bg-2:#141c18;--bg-3:#1a2420;--bg-4:#202e28;
  --text:#c0d0c8;--text-dim:#4a6050;--text-mid:#6a8070;
  --accent:#509068;--accent-glow:rgba(80,144,104,0.4);--white:#c0d0c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(14,20,16,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(14,20,16,0.2) 0%,rgba(14,20,16,0.7) 100%);
  --nav-scrolled-bg:#0e1410ee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0e1410;color:#c0d0c8;
}
[data-theme="ext-photo-mountain-trek"][data-color="pine"]{--accent:#509068;--accent-glow:rgba(80,144,104,0.4);}
[data-theme="ext-photo-mountain-trek"][data-color="mist"]{--accent:#70a888;--accent-glow:rgba(112,168,136,0.4);}

[data-theme="ext-photo-mountain-trek"] body{background:#0e1410;color:#c0d0c8;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-mountain-trek"] .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-mountain-trek"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-mountain-trek"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-mountain-trek"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-mountain-trek"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-mountain-trek"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-mountain-trek"] .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-mountain-trek"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-mountain-trek"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-mountain-trek"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-mountain-trek"] .hero > .hero-content,
[data-theme="ext-photo-mountain-trek"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-mountain-trek"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:mountain_trek_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-mountain-trek"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-mountain-trek"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-mountain-trek"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-mountain-trek"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-mountain-trek"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-mountain-trek"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-mountain-trek"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-mountain-trek"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-mountain-trek"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-mountain-trek"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-mountain-trek"] .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-mountain-trek"] .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-mountain-trek"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-mountain-trek"] .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-mountain-trek"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-mountain-trek"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-mountain-trek"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-mountain-trek"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-mountain-trek"] .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-mountain-trek"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes mountain_trek_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes mountain_trek_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes mountain_trek_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes mountain_trek_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-mountain-trek"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(80,144,104,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(112,168,136,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(80,144,104,0.04),transparent 30%);
  animation:mountain_trek_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-mountain-trek"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(112,168,136,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(80,144,104,0.04),transparent 30%);
  animation:mountain_trek_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-mountain-trek{background:linear-gradient(135deg,#0e1410,#509068);}

/* ############################################################
   THEME: ext-photo-coastal-journey  (海岸旅途 / Coastal Journey)
   ############################################################ */

[data-theme="ext-photo-coastal-journey"]{
  --bg:#0a141a;--bg-2:#0e1c24;--bg-3:#141e28;--bg-4:#1a242e;
  --text:#b8d0e0;--text-dim:#486878;--text-mid:#688898;
  --accent:#40a0c8;--accent-glow:rgba(64,160,200,0.4);--white:#b8d0e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,20,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,20,26,0.2) 0%,rgba(10,20,26,0.7) 100%);
  --nav-scrolled-bg:#0a141aee;
  --font-display:'Cormorant Garamond';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a141a;color:#b8d0e0;
}
[data-theme="ext-photo-coastal-journey"][data-color="sea"]{--accent:#40a0c8;--accent-glow:rgba(64,160,200,0.4);}
[data-theme="ext-photo-coastal-journey"][data-color="sky"]{--accent:#80c0e0;--accent-glow:rgba(128,192,224,0.4);}

[data-theme="ext-photo-coastal-journey"] body{background:#0a141a;color:#b8d0e0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-coastal-journey"] .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-coastal-journey"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-coastal-journey"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-coastal-journey"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-coastal-journey"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-coastal-journey"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-coastal-journey"] .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-coastal-journey"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-coastal-journey"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-coastal-journey"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-coastal-journey"] .hero > .hero-content,
[data-theme="ext-photo-coastal-journey"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-coastal-journey"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:coastal_journey_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-coastal-journey"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-coastal-journey"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-coastal-journey"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-coastal-journey"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-coastal-journey"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-coastal-journey"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-coastal-journey"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-coastal-journey"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-coastal-journey"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-coastal-journey"] .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-coastal-journey"] .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-coastal-journey"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-coastal-journey"] .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-coastal-journey"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-coastal-journey"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-coastal-journey"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-coastal-journey"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-coastal-journey"] .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-coastal-journey"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes coastal_journey_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes coastal_journey_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes coastal_journey_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes coastal_journey_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-coastal-journey"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(64,160,200,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(128,192,224,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(64,160,200,0.04),transparent 30%);
  animation:coastal_journey_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-coastal-journey"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(128,192,224,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(64,160,200,0.04),transparent 30%);
  animation:coastal_journey_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-coastal-journey{background:linear-gradient(135deg,#0a141a,#40a0c8);}

/* ############################################################
   THEME: ext-photo-urban-explore  (城市探索 / Urban Explore)
   ############################################################ */

[data-theme="ext-photo-urban-explore"]{
  --bg:#121214;--bg-2:#181a1c;--bg-3:#1e2024;--bg-4:#242628;
  --text:#c0c4c8;--text-dim:#525560;--text-mid:#72757a;
  --accent:#6090a0;--accent-glow:rgba(96,144,160,0.3);--white:#c0c4c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(18,18,20,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(18,18,20,0.2) 0%,rgba(18,18,20,0.7) 100%);
  --nav-scrolled-bg:#121214ee;
  --font-display:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#121214;color:#c0c4c8;
}
[data-theme="ext-photo-urban-explore"][data-color="concrete"]{--accent:#6090a0;--accent-glow:rgba(96,144,160,0.3);}
[data-theme="ext-photo-urban-explore"][data-color="asphalt"]{--accent:#486878;--accent-glow:rgba(72,104,120,0.3);}

[data-theme="ext-photo-urban-explore"] body{background:#121214;color:#c0c4c8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-urban-explore"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .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-urban-explore"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-urban-explore"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-urban-explore"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-urban-explore"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-urban-explore"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-urban-explore"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-urban-explore"] .hero > .hero-content,
[data-theme="ext-photo-urban-explore"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .hero-title{font-family:'Bebas Neue',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-urban-explore"] .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-urban-explore"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-urban-explore"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:urban_explore_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-urban-explore"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-urban-explore"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-urban-explore"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-urban-explore"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-urban-explore"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-urban-explore"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-urban-explore"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .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-urban-explore"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-urban-explore"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-urban-explore"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-urban-explore"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .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-urban-explore"] .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-urban-explore"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-urban-explore"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-urban-explore"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-urban-explore"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-urban-explore"] .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-urban-explore"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes urban_explore_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes urban_explore_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes urban_explore_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes urban_explore_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-urban-explore"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(96,144,160,0.08),transparent 40%),radial-gradient(circle at 80% 70%,rgba(72,104,120,0.06),transparent 35%),radial-gradient(circle at 50% 50%,rgba(96,144,160,0.04),transparent 30%);
  animation:urban_explore_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-urban-explore"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(72,104,120,0.04),transparent 25%),radial-gradient(circle at 30% 80%,rgba(96,144,160,0.03),transparent 30%);
  animation:urban_explore_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-urban-explore{background:linear-gradient(135deg,#121214,#6090a0);}

/* ############################################################
   THEME: ext-photo-rail-journey  (铁路旅行 / Rail Journey)
   ############################################################ */

[data-theme="ext-photo-rail-journey"]{
  --bg:#181410;--bg-2:#201a14;--bg-3:#28201c;--bg-4:#302824;
  --text:#d0c0b0;--text-dim:#6a5a48;--text-mid:#8a7a68;
  --accent:#a07840;--accent-glow:rgba(160,120,64,0.4);--white:#d0c0b0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(24,20,16,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(24,20,16,0.2) 0%,rgba(24,20,16,0.7) 100%);
  --nav-scrolled-bg:#181410ee;
  --font-display:'Spectral';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#181410;color:#d0c0b0;
}
[data-theme="ext-photo-rail-journey"][data-color="rust"]{--accent:#a07840;--accent-glow:rgba(160,120,64,0.4);}
[data-theme="ext-photo-rail-journey"][data-color="copper"]{--accent:#b8884a;--accent-glow:rgba(184,136,74,0.4);}

[data-theme="ext-photo-rail-journey"] body{background:#181410;color:#d0c0b0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-rail-journey"] .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-rail-journey"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-rail-journey"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-rail-journey"] .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-rail-journey"] .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-rail-journey"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-rail-journey"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-rail-journey"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-rail-journey"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-rail-journey"] .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-rail-journey"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-rail-journey"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-rail-journey"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-rail-journey"] .hero > .hero-content,
[data-theme="ext-photo-rail-journey"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-rail-journey"] .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-rail-journey"] .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-rail-journey"] .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-rail-journey"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-rail-journey"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:rail_journey_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-rail-journey"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-rail-journey"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-rail-journey"] .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-rail-journey"] .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-rail-journey"] .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-rail-journey"] .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-rail-journey"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-rail-journey"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-rail-journey"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-rail-journey"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-rail-journey"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-rail-journey"] .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-rail-journey"] .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-rail-journey"] .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-rail-journey"] .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-rail-journey"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-rail-journey"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-rail-journey"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-rail-journey"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-rail-journey"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-rail-journey"] .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-rail-journey"] .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-rail-journey"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-rail-journey"] .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-rail-journey"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-rail-journey"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-rail-journey"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-rail-journey"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-rail-journey"] .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-rail-journey"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes rail_journey_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes rail_journey_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes rail_journey_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes rail_journey_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-rail-journey"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(160,120,64,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(184,136,74,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(160,120,64,0.04),transparent 30%);
  animation:rail_journey_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-rail-journey"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(184,136,74,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(160,120,64,0.04),transparent 30%);
  animation:rail_journey_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-rail-journey{background:linear-gradient(135deg,#181410,#a07840);}

/* ############################################################
   THEME: ext-photo-market-scene  (市集烟火 / Market Scene)
   ############################################################ */

[data-theme="ext-photo-market-scene"]{
  --bg:#1a1008;--bg-2:#24180c;--bg-3:#2e200f;--bg-4:#3a2814;
  --text:#e8d0a8;--text-dim:#8a6840;--text-mid:#aa8860;
  --accent:#e07820;--accent-glow:rgba(224,120,32,0.4);--white:#e8d0a8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,16,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,16,8,0.2) 0%,rgba(26,16,8,0.7) 100%);
  --nav-scrolled-bg:#1a1008ee;
  --font-display:'Fraunces';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1008;color:#e8d0a8;
}
[data-theme="ext-photo-market-scene"][data-color="amber"]{--accent:#e07820;--accent-glow:rgba(224,120,32,0.4);}
[data-theme="ext-photo-market-scene"][data-color="spice"]{--accent:#c86820;--accent-glow:rgba(200,104,32,0.4);}

[data-theme="ext-photo-market-scene"] body{background:#1a1008;color:#e8d0a8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-market-scene"] .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-market-scene"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-market-scene"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-market-scene"] .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-market-scene"] .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-market-scene"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-market-scene"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-market-scene"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-market-scene"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-market-scene"] .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-market-scene"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-market-scene"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-market-scene"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-market-scene"] .hero > .hero-content,
[data-theme="ext-photo-market-scene"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-market-scene"] .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-market-scene"] .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-market-scene"] .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-market-scene"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-market-scene"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:market_scene_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-market-scene"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-market-scene"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-market-scene"] .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-market-scene"] .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-market-scene"] .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-market-scene"] .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-market-scene"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-market-scene"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-market-scene"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-market-scene"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-market-scene"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-market-scene"] .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-market-scene"] .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-market-scene"] .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-market-scene"] .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-market-scene"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-market-scene"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-market-scene"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-market-scene"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-market-scene"] .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-market-scene"] .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-market-scene"] .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-market-scene"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-market-scene"] .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-market-scene"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-market-scene"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-market-scene"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-market-scene"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-market-scene"] .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-market-scene"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes market_scene_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes market_scene_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes market_scene_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes market_scene_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-market-scene"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(224,120,32,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(200,104,32,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(224,120,32,0.06),transparent 30%);
  animation:market_scene_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-market-scene"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(200,104,32,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(224,120,32,0.06),transparent 30%);
  animation:market_scene_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-market-scene{background:linear-gradient(135deg,#1a1008,#e07820);}

/* ############################################################
   THEME: ext-photo-temple-visit  (古刹寻访 / Temple Visit)
   ############################################################ */

[data-theme="ext-photo-temple-visit"]{
  --bg:#18100c;--bg-2:#20140e;--bg-3:#281810;--bg-4:#302014;
  --text:#d8c8a8;--text-dim:#7a5838;--text-mid:#9a7858;
  --accent:#b07030;--accent-glow:rgba(176,112,48,0.4);--white:#d8c8a8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(24,16,12,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(24,16,12,0.2) 0%,rgba(24,16,12,0.7) 100%);
  --nav-scrolled-bg:#18100cee;
  --font-display:'Cinzel';--font-body:'Cormorant Garamond';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#18100c;color:#d8c8a8;
}
[data-theme="ext-photo-temple-visit"][data-color="incense"]{--accent:#b07030;--accent-glow:rgba(176,112,48,0.4);}
[data-theme="ext-photo-temple-visit"][data-color="vermillion"]{--accent:#c04020;--accent-glow:rgba(192,64,32,0.4);}

[data-theme="ext-photo-temple-visit"] body{background:#18100c;color:#d8c8a8;font-family:'Cormorant Garamond',sans-serif;}

/* Navbar */
[data-theme="ext-photo-temple-visit"] .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-temple-visit"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-temple-visit"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-temple-visit"] .nav-link{color:var(--text-dim);font-family:'Cormorant Garamond',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-temple-visit"] .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-temple-visit"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-temple-visit"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-temple-visit"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-temple-visit"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-temple-visit"] .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-temple-visit"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-temple-visit"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-temple-visit"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-temple-visit"] .hero > .hero-content,
[data-theme="ext-photo-temple-visit"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-temple-visit"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Cormorant Garamond',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-temple-visit"] .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-temple-visit"] .hero-tagline{font-family:'Cormorant Garamond',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-temple-visit"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-temple-visit"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:temple_visit_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-temple-visit"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-temple-visit"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-temple-visit"] .section-head .kicker{font-family:'Cormorant Garamond',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-temple-visit"] .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-temple-visit"] .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-temple-visit"] .about-role{font-family:'Cormorant Garamond',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-temple-visit"] .about-bio{font-family:'Cormorant Garamond',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-temple-visit"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-temple-visit"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-temple-visit"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-temple-visit"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-temple-visit"] .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-temple-visit"] .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-temple-visit"] .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-temple-visit"] .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-temple-visit"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-temple-visit"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-temple-visit"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-temple-visit"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-temple-visit"] .album-info-meta{font-family:'Cormorant Garamond',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-temple-visit"] .album-info-desc{font-family:'Cormorant Garamond',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-temple-visit"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Cormorant Garamond',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-temple-visit"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-temple-visit"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Cormorant Garamond',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-temple-visit"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

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

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

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

/* Animations */
@keyframes temple_visit_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes temple_visit_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes temple_visit_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes temple_visit_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-temple-visit"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(176,112,48,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(192,64,32,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(176,112,48,0.04),transparent 30%);
  animation:temple_visit_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-temple-visit"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(192,64,32,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(176,112,48,0.04),transparent 30%);
  animation:temple_visit_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-temple-visit{background:linear-gradient(135deg,#18100c,#b07030);}

/* ############################################################
   THEME: ext-photo-roadside  (路边即景 / Roadside)
   ############################################################ */

[data-theme="ext-photo-roadside"]{
  --bg:#0e1410;--bg-2:#141c18;--bg-3:#1a2420;--bg-4:#202e28;
  --text:#b0c0a8;--text-dim:#4a5a48;--text-mid:#6a7a68;
  --accent:#709060;--accent-glow:rgba(112,144,96,0.3);--white:#b0c0a8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(14,20,16,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(14,20,16,0.2) 0%,rgba(14,20,16,0.7) 100%);
  --nav-scrolled-bg:#0e1410ee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0e1410;color:#b0c0a8;
}
[data-theme="ext-photo-roadside"][data-color="sage"]{--accent:#709060;--accent-glow:rgba(112,144,96,0.3);}
[data-theme="ext-photo-roadside"][data-color="dust"]{--accent:#90a878;--accent-glow:rgba(144,168,120,0.3);}

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

/* Navbar */
[data-theme="ext-photo-roadside"] .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-roadside"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-roadside"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-roadside"] .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-roadside"] .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-roadside"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-roadside"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-roadside"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-roadside"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-roadside"] .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-roadside"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-roadside"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-roadside"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-roadside"] .hero > .hero-content,
[data-theme="ext-photo-roadside"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-roadside"] .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-roadside"] .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-roadside"] .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-roadside"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-roadside"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:roadside_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-roadside"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-roadside"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-roadside"] .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-roadside"] .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-roadside"] .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-roadside"] .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-roadside"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-roadside"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-roadside"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-roadside"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-roadside"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-roadside"] .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-roadside"] .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-roadside"] .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-roadside"] .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-roadside"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-roadside"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-roadside"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-roadside"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-roadside"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-roadside"] .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-roadside"] .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-roadside"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-roadside"] .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-roadside"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-roadside"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-roadside"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-roadside"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-roadside"] .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-roadside"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes roadside_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes roadside_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes roadside_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes roadside_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-roadside"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(112,144,96,0.10),transparent 40%),radial-gradient(circle at 80% 70%,rgba(144,168,120,0.06),transparent 35%),radial-gradient(circle at 50% 50%,rgba(112,144,96,0.04),transparent 30%);
  animation:roadside_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-roadside"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(144,168,120,0.04),transparent 25%),radial-gradient(circle at 30% 80%,rgba(112,144,96,0.03),transparent 30%);
  animation:roadside_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-roadside{background:linear-gradient(135deg,#0e1410,#709060);}

/* ############################################################
   THEME: ext-photo-spring-blossom  (春花烂漫 / Spring Blossom)
   ############################################################ */

[data-theme="ext-photo-spring-blossom"]{
  --bg:#1a0e12;--bg-2:#241218;--bg-3:#2e181c;--bg-4:#3a1e22;
  --text:#f0d0d8;--text-dim:#8a6068;--text-mid:#aa8088;
  --accent:#e070a0;--accent-glow:rgba(224,112,160,0.4);--white:#f0d0d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,14,18,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,14,18,0.2) 0%,rgba(26,14,18,0.7) 100%);
  --nav-scrolled-bg:#1a0e12ee;
  --font-display:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a0e12;color:#f0d0d8;
}
[data-theme="ext-photo-spring-blossom"][data-color="pink"]{--accent:#e070a0;--accent-glow:rgba(224,112,160,0.4);}
[data-theme="ext-photo-spring-blossom"][data-color="green"]{--accent:#80c070;--accent-glow:rgba(128,192,112,0.4);}

[data-theme="ext-photo-spring-blossom"] body{background:#1a0e12;color:#f0d0d8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-spring-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-spring-blossom"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-spring-blossom"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-spring-blossom"] .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-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-spring-blossom"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-spring-blossom"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-spring-blossom"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-spring-blossom"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-spring-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-spring-blossom"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-spring-blossom"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-spring-blossom"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-spring-blossom"] .hero > .hero-content,
[data-theme="ext-photo-spring-blossom"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-spring-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:'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-blossom"] .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-spring-blossom"] .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-blossom"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-spring-blossom"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:spring_blossom_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-spring-blossom"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-spring-blossom"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-spring-blossom"] .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-blossom"] .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-spring-blossom"] .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-spring-blossom"] .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-blossom"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-spring-blossom"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-spring-blossom"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-spring-blossom"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-spring-blossom"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-spring-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-spring-blossom"] .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-spring-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-spring-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-spring-blossom"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-spring-blossom"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-spring-blossom"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-spring-blossom"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-spring-blossom"] .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-blossom"] .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-blossom"] .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-blossom"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-spring-blossom"] .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-blossom"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-spring-blossom"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-spring-blossom"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-spring-blossom"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-spring-blossom"] .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-blossom"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-spring-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-spring-blossom"] .footer-logo{font-family:'Fraunces',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-spring-blossom"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-spring-blossom"] .footer-links a{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-spring-blossom"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-spring-blossom"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

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

/* Animations */
@keyframes spring_blossom_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes spring_blossom_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes spring_blossom_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes spring_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-spring-blossom"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(224,112,160,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(128,192,112,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(224,112,160,0.06),transparent 30%);
  animation:spring_blossom_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-spring-blossom"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(128,192,112,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(224,112,160,0.06),transparent 30%);
  animation:spring_blossom_glow 8s ease-in-out infinite alternate;
}

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

/* ############################################################
   THEME: ext-photo-summer-haze  (夏日薄雾 / Summer Haze)
   ############################################################ */

[data-theme="ext-photo-summer-haze"]{
  --bg:#0e1a1c;--bg-2:#142024;--bg-3:#1a282c;--bg-4:#202e32;
  --text:#b0d0d8;--text-dim:#486878;--text-mid:#688898;
  --accent:#60c0d0;--accent-glow:rgba(96,192,208,0.4);--white:#b0d0d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(14,26,28,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(14,26,28,0.2) 0%,rgba(14,26,28,0.7) 100%);
  --nav-scrolled-bg:#0e1a1cee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0e1a1c;color:#b0d0d8;
}
[data-theme="ext-photo-summer-haze"][data-color="cyan"]{--accent:#60c0d0;--accent-glow:rgba(96,192,208,0.4);}
[data-theme="ext-photo-summer-haze"][data-color="sky"]{--accent:#90d0e0;--accent-glow:rgba(144,208,224,0.4);}

[data-theme="ext-photo-summer-haze"] body{background:#0e1a1c;color:#b0d0d8;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-summer-haze"] .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-summer-haze"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-summer-haze"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-summer-haze"] .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-summer-haze"] .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-summer-haze"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-summer-haze"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-summer-haze"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-summer-haze"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-summer-haze"] .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-summer-haze"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-summer-haze"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-summer-haze"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-summer-haze"] .hero > .hero-content,
[data-theme="ext-photo-summer-haze"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-summer-haze"] .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-summer-haze"] .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-summer-haze"] .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-summer-haze"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-summer-haze"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:summer_haze_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-summer-haze"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-summer-haze"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-summer-haze"] .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-summer-haze"] .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-summer-haze"] .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-summer-haze"] .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-summer-haze"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-summer-haze"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-summer-haze"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-summer-haze"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-summer-haze"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-summer-haze"] .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-summer-haze"] .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-summer-haze"] .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-summer-haze"] .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-summer-haze"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-summer-haze"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-summer-haze"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-summer-haze"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-summer-haze"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-summer-haze"] .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-summer-haze"] .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-summer-haze"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-summer-haze"] .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-summer-haze"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-summer-haze"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-summer-haze"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-summer-haze"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-summer-haze"] .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-summer-haze"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes summer_haze_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes summer_haze_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes summer_haze_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes summer_haze_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-summer-haze"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(96,192,208,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(144,208,224,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(96,192,208,0.04),transparent 30%);
  animation:summer_haze_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-summer-haze"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(144,208,224,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(96,192,208,0.04),transparent 30%);
  animation:summer_haze_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-summer-haze{background:linear-gradient(135deg,#0e1a1c,#60c0d0);}

/* ############################################################
   THEME: ext-photo-autumn-depth  (秋意深沉 / Autumn Depth)
   ############################################################ */

[data-theme="ext-photo-autumn-depth"]{
  --bg:#1a1008;--bg-2:#24180c;--bg-3:#2e200f;--bg-4:#3a2814;
  --text:#e0c898;--text-dim:#8a6840;--text-mid:#aa8860;
  --accent:#c06020;--accent-glow:rgba(192,96,32,0.4);--white:#e0c898;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,16,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,16,8,0.2) 0%,rgba(26,16,8,0.7) 100%);
  --nav-scrolled-bg:#1a1008ee;
  --font-display:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1008;color:#e0c898;
}
[data-theme="ext-photo-autumn-depth"][data-color="rust"]{--accent:#c06020;--accent-glow:rgba(192,96,32,0.4);}
[data-theme="ext-photo-autumn-depth"][data-color="amber"]{--accent:#d08020;--accent-glow:rgba(208,128,32,0.4);}

[data-theme="ext-photo-autumn-depth"] body{background:#1a1008;color:#e0c898;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-autumn-depth"] .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-autumn-depth"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-autumn-depth"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-autumn-depth"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-autumn-depth"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-autumn-depth"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-autumn-depth"] .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-autumn-depth"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-autumn-depth"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-autumn-depth"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-autumn-depth"] .hero > .hero-content,
[data-theme="ext-photo-autumn-depth"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-autumn-depth"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:autumn_depth_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-autumn-depth"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-autumn-depth"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-autumn-depth"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-autumn-depth"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-autumn-depth"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-autumn-depth"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-autumn-depth"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-autumn-depth"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-autumn-depth"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-autumn-depth"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-autumn-depth"] .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-autumn-depth"] .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-autumn-depth"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-autumn-depth"] .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-autumn-depth"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-autumn-depth"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-autumn-depth"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-autumn-depth"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-autumn-depth"] .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-autumn-depth"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes autumn_depth_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes autumn_depth_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes autumn_depth_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes autumn_depth_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-autumn-depth"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(192,96,32,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(208,128,32,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(192,96,32,0.06),transparent 30%);
  animation:autumn_depth_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-autumn-depth"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(208,128,32,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(192,96,32,0.06),transparent 30%);
  animation:autumn_depth_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-autumn-depth{background:linear-gradient(135deg,#1a1008,#c06020);}

/* ############################################################
   THEME: ext-photo-winter-silence  (冬日寂静 / Winter Silence)
   ############################################################ */

[data-theme="ext-photo-winter-silence"]{
  --bg:#0a0e14;--bg-2:#0e1218;--bg-3:#141820;--bg-4:#1a1e26;
  --text:#c8d0d8;--text-dim:#485868;--text-mid:#687888;
  --accent:#90b0c8;--accent-glow:rgba(144,176,200,0.3);--white:#c8d0d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,14,20,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,14,20,0.2) 0%,rgba(10,14,20,0.7) 100%);
  --nav-scrolled-bg:#0a0e14ee;
  --font-display:'Cormorant Garamond';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0e14;color:#c8d0d8;
}
[data-theme="ext-photo-winter-silence"][data-color="ice"]{--accent:#90b0c8;--accent-glow:rgba(144,176,200,0.3);}
[data-theme="ext-photo-winter-silence"][data-color="frost"]{--accent:#b0c8d8;--accent-glow:rgba(176,200,216,0.3);}

[data-theme="ext-photo-winter-silence"] body{background:#0a0e14;color:#c8d0d8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-winter-silence"] .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-winter-silence"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-winter-silence"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-winter-silence"] .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-winter-silence"] .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-winter-silence"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-winter-silence"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-winter-silence"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-winter-silence"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-winter-silence"] .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-winter-silence"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-winter-silence"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-winter-silence"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-winter-silence"] .hero > .hero-content,
[data-theme="ext-photo-winter-silence"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-winter-silence"] .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-winter-silence"] .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-winter-silence"] .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-winter-silence"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-winter-silence"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:winter_silence_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-winter-silence"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-winter-silence"] .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-winter-silence"] .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-winter-silence"] .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-winter-silence"] .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-winter-silence"] .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-winter-silence"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-winter-silence"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-winter-silence"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-winter-silence"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-winter-silence"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-winter-silence"] .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-winter-silence"] .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-winter-silence"] .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-winter-silence"] .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-winter-silence"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-winter-silence"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-winter-silence"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-winter-silence"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-winter-silence"] .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-winter-silence"] .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-winter-silence"] .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-winter-silence"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-winter-silence"] .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-winter-silence"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-winter-silence"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-winter-silence"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-winter-silence"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-winter-silence"] .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-winter-silence"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes winter_silence_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes winter_silence_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes winter_silence_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes winter_silence_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-winter-silence"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(144,176,200,0.08),transparent 40%),radial-gradient(circle at 80% 70%,rgba(176,200,216,0.06),transparent 35%),radial-gradient(circle at 50% 50%,rgba(144,176,200,0.04),transparent 30%);
  animation:winter_silence_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-winter-silence"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(176,200,216,0.04),transparent 25%),radial-gradient(circle at 30% 80%,rgba(144,176,200,0.03),transparent 30%);
  animation:winter_silence_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-winter-silence{background:linear-gradient(135deg,#0a0e14,#90b0c8);}

/* ############################################################
   THEME: ext-photo-monsoon-rain  (雨季来临 / Monsoon Rain)
   ############################################################ */

[data-theme="ext-photo-monsoon-rain"]{
  --bg:#0a1014;--bg-2:#0e1418;--bg-3:#141a1e;--bg-4:#1a2024;
  --text:#a8c0c8;--text-dim:#405868;--text-mid:#607880;
  --accent:#5090a0;--accent-glow:rgba(80,144,160,0.4);--white:#a8c0c8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,16,20,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,16,20,0.2) 0%,rgba(10,16,20,0.7) 100%);
  --nav-scrolled-bg:#0a1014ee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a1014;color:#a8c0c8;
}
[data-theme="ext-photo-monsoon-rain"][data-color="rain"]{--accent:#5090a0;--accent-glow:rgba(80,144,160,0.4);}
[data-theme="ext-photo-monsoon-rain"][data-color="storm"]{--accent:#407080;--accent-glow:rgba(64,112,128,0.4);}

[data-theme="ext-photo-monsoon-rain"] body{background:#0a1014;color:#a8c0c8;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-monsoon-rain"] .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-monsoon-rain"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-monsoon-rain"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-monsoon-rain"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-monsoon-rain"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-monsoon-rain"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-monsoon-rain"] .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-monsoon-rain"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-monsoon-rain"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-monsoon-rain"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-monsoon-rain"] .hero > .hero-content,
[data-theme="ext-photo-monsoon-rain"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-monsoon-rain"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:monsoon_rain_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-monsoon-rain"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-monsoon-rain"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-monsoon-rain"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-monsoon-rain"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-monsoon-rain"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-monsoon-rain"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-monsoon-rain"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-monsoon-rain"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-monsoon-rain"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-monsoon-rain"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-monsoon-rain"] .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-monsoon-rain"] .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-monsoon-rain"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-monsoon-rain"] .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-monsoon-rain"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-monsoon-rain"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-monsoon-rain"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-monsoon-rain"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-monsoon-rain"] .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-monsoon-rain"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes monsoon_rain_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes monsoon_rain_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes monsoon_rain_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes monsoon_rain_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-monsoon-rain"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(80,144,160,0.10),transparent 40%),radial-gradient(circle at 80% 70%,rgba(64,112,128,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(80,144,160,0.04),transparent 30%);
  animation:monsoon_rain_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-monsoon-rain"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(64,112,128,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(80,144,160,0.04),transparent 30%);
  animation:monsoon_rain_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-monsoon-rain{background:linear-gradient(135deg,#0a1014,#5090a0);}

/* ############################################################
   THEME: ext-photo-golden-autumn  (金秋璀璨 / Golden Autumn)
   ############################################################ */

[data-theme="ext-photo-golden-autumn"]{
  --bg:#1a1408;--bg-2:#241c0c;--bg-3:#2e2410;--bg-4:#3a2c14;
  --text:#f0dca0;--text-dim:#8a7838;--text-mid:#aa9860;
  --accent:#d4a820;--accent-glow:rgba(212,168,32,0.4);--white:#f0dca0;--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:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1408;color:#f0dca0;
}
[data-theme="ext-photo-golden-autumn"][data-color="gold"]{--accent:#d4a820;--accent-glow:rgba(212,168,32,0.4);}
[data-theme="ext-photo-golden-autumn"][data-color="maple"]{--accent:#c06018;--accent-glow:rgba(192,96,24,0.4);}

[data-theme="ext-photo-golden-autumn"] body{background:#1a1408;color:#f0dca0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-golden-autumn"] .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-autumn"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-golden-autumn"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-golden-autumn"] .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-golden-autumn"] .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-autumn"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-golden-autumn"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-golden-autumn"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-golden-autumn"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-golden-autumn"] .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-autumn"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-golden-autumn"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-golden-autumn"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-golden-autumn"] .hero > .hero-content,
[data-theme="ext-photo-golden-autumn"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-golden-autumn"] .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-golden-autumn"] .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-golden-autumn"] .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-golden-autumn"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-golden-autumn"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:golden_autumn_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-golden-autumn"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-golden-autumn"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-golden-autumn"] .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-golden-autumn"] .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-golden-autumn"] .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-golden-autumn"] .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-golden-autumn"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-golden-autumn"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-golden-autumn"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-golden-autumn"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-golden-autumn"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-golden-autumn"] .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-autumn"] .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-golden-autumn"] .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-autumn"] .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-autumn"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-golden-autumn"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-golden-autumn"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-golden-autumn"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-golden-autumn"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-golden-autumn"] .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-golden-autumn"] .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-golden-autumn"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-golden-autumn"] .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-golden-autumn"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-golden-autumn"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-golden-autumn"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-golden-autumn"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-golden-autumn"] .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-golden-autumn"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

/* Footer */
[data-theme="ext-photo-golden-autumn"] 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-autumn"] .footer-logo{font-family:'Fraunces',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-golden-autumn"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-golden-autumn"] .footer-links a{color:var(--text-dim);font-family:'Outfit',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-golden-autumn"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-golden-autumn"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

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

/* Animations */
@keyframes golden_autumn_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes golden_autumn_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes golden_autumn_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes golden_autumn_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-autumn"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(212,168,32,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(192,96,24,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(212,168,32,0.06),transparent 30%);
  animation:golden_autumn_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-golden-autumn"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(192,96,24,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(212,168,32,0.06),transparent 30%);
  animation:golden_autumn_glow 8s ease-in-out infinite alternate;
}

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

/* ############################################################
   THEME: ext-photo-high-contrast  (高反差黑白 / High Contrast)
   ############################################################ */

[data-theme="ext-photo-high-contrast"]{
  --bg:#080808;--bg-2:#0e0e0e;--bg-3:#141414;--bg-4:#1a1a1a;
  --text:#e8e8e8;--text-dim:#404040;--text-mid:#606060;
  --accent:#c0c0c0;--accent-glow:rgba(192,192,192,0.3);--white:#e8e8e8;--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.2) 0%,rgba(8,8,8,0.7) 100%);
  --nav-scrolled-bg:#080808ee;
  --font-display:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#080808;color:#e8e8e8;
}
[data-theme="ext-photo-high-contrast"][data-color="white"]{--accent:#c0c0c0;--accent-glow:rgba(192,192,192,0.3);}
[data-theme="ext-photo-high-contrast"][data-color="silver"]{--accent:#d0d0d0;--accent-glow:rgba(208,208,208,0.3);}

[data-theme="ext-photo-high-contrast"] body{background:#080808;color:#e8e8e8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-high-contrast"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .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-high-contrast"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-high-contrast"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-high-contrast"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-high-contrast"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-high-contrast"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-high-contrast"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-high-contrast"] .hero > .hero-content,
[data-theme="ext-photo-high-contrast"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .hero-title{font-family:'Bebas Neue',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-high-contrast"] .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-high-contrast"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-high-contrast"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:high_contrast_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-high-contrast"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-high-contrast"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-high-contrast"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-high-contrast"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-high-contrast"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-high-contrast"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-high-contrast"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .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-high-contrast"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-high-contrast"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-high-contrast"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-high-contrast"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .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-high-contrast"] .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-high-contrast"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-high-contrast"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-high-contrast"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-high-contrast"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-high-contrast"] .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-high-contrast"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes high_contrast_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes high_contrast_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes high_contrast_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes high_contrast_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-high-contrast"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(192,192,192,0.08),transparent 40%),radial-gradient(circle at 80% 70%,rgba(208,208,208,0.06),transparent 35%),radial-gradient(circle at 50% 50%,rgba(192,192,192,0.04),transparent 30%);
  animation:high_contrast_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-high-contrast"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(208,208,208,0.04),transparent 25%),radial-gradient(circle at 30% 80%,rgba(192,192,192,0.03),transparent 30%);
  animation:high_contrast_glow 8s ease-in-out infinite alternate;
}

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

/* ############################################################
   THEME: ext-photo-soft-gray  (柔灰调子 / Soft Gray)
   ############################################################ */

[data-theme="ext-photo-soft-gray"]{
  --bg:#121214;--bg-2:#18181a;--bg-3:#1e1e20;--bg-4:#242426;
  --text:#c8c8ca;--text-dim:#585860;--text-mid:#78787a;
  --accent:#a0a0a4;--accent-glow:rgba(160,160,164,0.3);--white:#c8c8ca;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(18,18,20,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(18,18,20,0.2) 0%,rgba(18,18,20,0.7) 100%);
  --nav-scrolled-bg:#121214ee;
  --font-display:'Spectral';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#121214;color:#c8c8ca;
}
[data-theme="ext-photo-soft-gray"][data-color="gray"]{--accent:#a0a0a4;--accent-glow:rgba(160,160,164,0.3);}
[data-theme="ext-photo-soft-gray"][data-color="silver"]{--accent:#b8b8bc;--accent-glow:rgba(184,184,188,0.3);}

[data-theme="ext-photo-soft-gray"] body{background:#121214;color:#c8c8ca;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-soft-gray"] .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-soft-gray"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-soft-gray"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-soft-gray"] .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-soft-gray"] .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-soft-gray"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-soft-gray"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-soft-gray"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-soft-gray"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-soft-gray"] .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-soft-gray"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-soft-gray"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-soft-gray"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-soft-gray"] .hero > .hero-content,
[data-theme="ext-photo-soft-gray"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-soft-gray"] .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-soft-gray"] .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-soft-gray"] .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-soft-gray"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-soft-gray"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:soft_gray_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-soft-gray"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-soft-gray"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-soft-gray"] .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-soft-gray"] .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-soft-gray"] .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-soft-gray"] .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-soft-gray"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-soft-gray"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-soft-gray"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-soft-gray"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-soft-gray"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-soft-gray"] .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-soft-gray"] .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-soft-gray"] .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-soft-gray"] .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-soft-gray"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-soft-gray"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-soft-gray"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-soft-gray"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-soft-gray"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-soft-gray"] .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-soft-gray"] .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-soft-gray"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-soft-gray"] .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-soft-gray"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-soft-gray"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-soft-gray"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-soft-gray"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-soft-gray"] .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-soft-gray"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes soft_gray_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes soft_gray_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes soft_gray_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes soft_gray_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-soft-gray"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(160,160,164,0.06),transparent 40%),radial-gradient(circle at 80% 70%,rgba(184,184,188,0.04),transparent 35%),radial-gradient(circle at 50% 50%,rgba(160,160,164,0.03),transparent 30%);
  animation:soft_gray_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-soft-gray"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(184,184,188,0.03),transparent 25%),radial-gradient(circle at 30% 80%,rgba(160,160,164,0.02),transparent 30%);
  animation:soft_gray_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-soft-gray{background:linear-gradient(135deg,#121214,#a0a0a4);}

/* ############################################################
   THEME: ext-photo-charcoal-sketch  (炭笔速写 / Charcoal Sketch)
   ############################################################ */

[data-theme="ext-photo-charcoal-sketch"]{
  --bg:#0e0c0a;--bg-2:#141210;--bg-3:#1a1816;--bg-4:#201e1c;
  --text:#c0b8a8;--text-dim:#4a4038;--text-mid:#6a6058;
  --accent:#807060;--accent-glow:rgba(128,112,96,0.3);--white:#c0b8a8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(14,12,10,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(14,12,10,0.2) 0%,rgba(14,12,10,0.7) 100%);
  --nav-scrolled-bg:#0e0c0aee;
  --font-display:'Cormorant Garamond';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0e0c0a;color:#c0b8a8;
}
[data-theme="ext-photo-charcoal-sketch"][data-color="charcoal"]{--accent:#807060;--accent-glow:rgba(128,112,96,0.3);}
[data-theme="ext-photo-charcoal-sketch"][data-color="umber"]{--accent:#6a5848;--accent-glow:rgba(106,88,72,0.3);}

[data-theme="ext-photo-charcoal-sketch"] body{background:#0e0c0a;color:#c0b8a8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-charcoal-sketch"] .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-charcoal-sketch"] .nav-logo{font-family:'Cormorant Garamond',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-charcoal-sketch"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-charcoal-sketch"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-charcoal-sketch"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-charcoal-sketch"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-charcoal-sketch"] .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-charcoal-sketch"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-charcoal-sketch"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-charcoal-sketch"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-charcoal-sketch"] .hero > .hero-content,
[data-theme="ext-photo-charcoal-sketch"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-charcoal-sketch"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:charcoal_sketch_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-charcoal-sketch"] .section-num{font-family:'Cormorant Garamond',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-charcoal-sketch"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-charcoal-sketch"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-charcoal-sketch"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-charcoal-sketch"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-charcoal-sketch"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-charcoal-sketch"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-charcoal-sketch"] .album-info-title{font-family:'Cormorant Garamond',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-charcoal-sketch"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-charcoal-sketch"] .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-charcoal-sketch"] .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-charcoal-sketch"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-charcoal-sketch"] .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-charcoal-sketch"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-charcoal-sketch"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-charcoal-sketch"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-charcoal-sketch"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-charcoal-sketch"] .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-charcoal-sketch"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes charcoal_sketch_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes charcoal_sketch_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes charcoal_sketch_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes charcoal_sketch_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-charcoal-sketch"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(128,112,96,0.08),transparent 40%),radial-gradient(circle at 80% 70%,rgba(106,88,72,0.06),transparent 35%),radial-gradient(circle at 50% 50%,rgba(128,112,96,0.04),transparent 30%);
  animation:charcoal_sketch_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-charcoal-sketch"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(106,88,72,0.04),transparent 25%),radial-gradient(circle at 30% 80%,rgba(128,112,96,0.03),transparent 30%);
  animation:charcoal_sketch_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-charcoal-sketch{background:linear-gradient(135deg,#0e0c0a,#807060);}

/* ############################################################
   THEME: ext-photo-silver-print  (银盐印象 / Silver Print)
   ############################################################ */

[data-theme="ext-photo-silver-print"]{
  --bg:#0a0a0c;--bg-2:#0e0e10;--bg-3:#141416;--bg-4:#1a1a1c;
  --text:#b8b8c0;--text-dim:#484850;--text-mid:#686870;
  --accent:#9898a0;--accent-glow:rgba(152,152,160,0.3);--white:#b8b8c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,10,12,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,10,12,0.2) 0%,rgba(10,10,12,0.7) 100%);
  --nav-scrolled-bg:#0a0a0cee;
  --font-display:'Spectral';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0a0c;color:#b8b8c0;
}
[data-theme="ext-photo-silver-print"][data-color="silver"]{--accent:#9898a0;--accent-glow:rgba(152,152,160,0.3);}
[data-theme="ext-photo-silver-print"][data-color="platinum"]{--accent:#a8a8b0;--accent-glow:rgba(168,168,176,0.3);}

[data-theme="ext-photo-silver-print"] body{background:#0a0a0c;color:#b8b8c0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-silver-print"] .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-silver-print"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-silver-print"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-silver-print"] .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-silver-print"] .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-silver-print"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-silver-print"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-silver-print"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-silver-print"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-silver-print"] .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-silver-print"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-silver-print"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-silver-print"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-silver-print"] .hero > .hero-content,
[data-theme="ext-photo-silver-print"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-silver-print"] .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-silver-print"] .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-silver-print"] .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-silver-print"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-silver-print"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:silver_print_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-silver-print"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-silver-print"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-silver-print"] .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-silver-print"] .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-silver-print"] .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-silver-print"] .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-silver-print"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-silver-print"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-silver-print"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-silver-print"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-silver-print"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-silver-print"] .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-silver-print"] .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-silver-print"] .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-silver-print"] .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-silver-print"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-silver-print"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-silver-print"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-silver-print"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-silver-print"] .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-silver-print"] .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-silver-print"] .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-silver-print"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-silver-print"] .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-silver-print"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-silver-print"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-silver-print"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-silver-print"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-silver-print"] .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-silver-print"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes silver_print_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes silver_print_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes silver_print_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes silver_print_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-silver-print"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(152,152,160,0.06),transparent 40%),radial-gradient(circle at 80% 70%,rgba(168,168,176,0.04),transparent 35%),radial-gradient(circle at 50% 50%,rgba(152,152,160,0.03),transparent 30%);
  animation:silver_print_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-silver-print"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(168,168,176,0.03),transparent 25%),radial-gradient(circle at 30% 80%,rgba(152,152,160,0.02),transparent 30%);
  animation:silver_print_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-silver-print{background:linear-gradient(135deg,#0a0a0c,#9898a0);}

/* ############################################################
   THEME: ext-photo-ink-wash  (水墨写意 / Ink Wash)
   ############################################################ */

[data-theme="ext-photo-ink-wash"]{
  --bg:#0c0a08;--bg-2:#100e0c;--bg-3:#141210;--bg-4:#181614;
  --text:#c0b8a8;--text-dim:#403830;--text-mid:#605850;
  --accent:#807868;--accent-glow:rgba(128,120,104,0.3);--white:#c0b8a8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(12,10,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(12,10,8,0.2) 0%,rgba(12,10,8,0.7) 100%);
  --nav-scrolled-bg:#0c0a08ee;
  --font-display:'Cinzel';--font-body:'Cormorant Garamond';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0c0a08;color:#c0b8a8;
}
[data-theme="ext-photo-ink-wash"][data-color="ink"]{--accent:#807868;--accent-glow:rgba(128,120,104,0.3);}
[data-theme="ext-photo-ink-wash"][data-color="rice"]{--accent:#a09888;--accent-glow:rgba(160,152,136,0.3);}

[data-theme="ext-photo-ink-wash"] body{background:#0c0a08;color:#c0b8a8;font-family:'Cormorant Garamond',sans-serif;}

/* Navbar */
[data-theme="ext-photo-ink-wash"] .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-wash"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-ink-wash"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-ink-wash"] .nav-link{color:var(--text-dim);font-family:'Cormorant Garamond',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-wash"] .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-wash"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-ink-wash"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-ink-wash"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-ink-wash"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-ink-wash"] .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-wash"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-ink-wash"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-ink-wash"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-ink-wash"] .hero > .hero-content,
[data-theme="ext-photo-ink-wash"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-ink-wash"] .hero-tag{display:inline-block;padding:0.4rem 1.1rem;border:1px solid var(--border);border-radius:999px;color:var(--text-dim);font-family:'Cormorant Garamond',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-wash"] .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-ink-wash"] .hero-tagline{font-family:'Cormorant Garamond',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-wash"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-ink-wash"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:ink_wash_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-ink-wash"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-ink-wash"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-ink-wash"] .section-head .kicker{font-family:'Cormorant Garamond',sans-serif;font-size:0.78rem;letter-spacing:0.24em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-ink-wash"] .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-ink-wash"] .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-ink-wash"] .about-role{font-family:'Cormorant Garamond',sans-serif;font-size:0.85rem;letter-spacing:0.22em;text-transform:uppercase;color:var(--accent);}
[data-theme="ext-photo-ink-wash"] .about-bio{font-family:'Cormorant Garamond',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-ink-wash"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-ink-wash"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-ink-wash"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-ink-wash"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-ink-wash"] .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-wash"] .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-ink-wash"] .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-wash"] .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-wash"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-ink-wash"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-ink-wash"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-ink-wash"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-ink-wash"] .album-info-meta{font-family:'Cormorant Garamond',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-ink-wash"] .album-info-desc{font-family:'Cormorant Garamond',sans-serif;font-size:0.9rem;color:var(--text-mid);line-height:1.7;}

/* Buttons */
[data-theme="ext-photo-ink-wash"] .btn.primary{background:var(--accent);color:var(--bg);font-family:'Cormorant Garamond',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-wash"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-ink-wash"] .btn.ghost{background:transparent;color:var(--text);border:1px solid var(--border);border-radius:999px;padding:0.85rem 2.2rem;font-family:'Cormorant Garamond',sans-serif;transition:var(--transition);}
[data-theme="ext-photo-ink-wash"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

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

/* Footer */
[data-theme="ext-photo-ink-wash"] 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-wash"] .footer-logo{font-family:'Cinzel',serif;font-size:1.4rem;color:var(--text);}
[data-theme="ext-photo-ink-wash"] .footer-logo span{color:var(--accent);}
[data-theme="ext-photo-ink-wash"] .footer-links a{color:var(--text-dim);font-family:'Cormorant Garamond',sans-serif;font-size:0.85rem;transition:var(--transition);}
[data-theme="ext-photo-ink-wash"] .footer-links a:hover{color:var(--accent);}
[data-theme="ext-photo-ink-wash"] .progress-bar{background:var(--accent);box-shadow:0 0 8px var(--accent-glow);}

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

/* Animations */
@keyframes ink_wash_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes ink_wash_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes ink_wash_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes ink_wash_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-wash"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(128,120,104,0.06),transparent 40%),radial-gradient(circle at 80% 70%,rgba(160,152,136,0.04),transparent 35%),radial-gradient(circle at 50% 50%,rgba(128,120,104,0.03),transparent 30%);
  animation:ink_wash_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-ink-wash"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(160,152,136,0.03),transparent 25%),radial-gradient(circle at 30% 80%,rgba(128,120,104,0.02),transparent 30%);
  animation:ink_wash_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-ink-wash{background:linear-gradient(135deg,#0c0a08,#807868);}

/* ############################################################
   THEME: ext-photo-carbon-print  (碳素印相 / Carbon Print)
   ############################################################ */

[data-theme="ext-photo-carbon-print"]{
  --bg:#060606;--bg-2:#0a0a0a;--bg-3:#0e0e0e;--bg-4:#141414;
  --text:#c0c0c0;--text-dim:#383838;--text-mid:#585858;
  --accent:#888888;--accent-glow:rgba(136,136,136,0.3);--white:#c0c0c0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(6,6,6,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(6,6,6,0.2) 0%,rgba(6,6,6,0.7) 100%);
  --nav-scrolled-bg:#060606ee;
  --font-display:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#060606;color:#c0c0c0;
}
[data-theme="ext-photo-carbon-print"][data-color="carbon"]{--accent:#888888;--accent-glow:rgba(136,136,136,0.3);}
[data-theme="ext-photo-carbon-print"][data-color="graphite"]{--accent:#707070;--accent-glow:rgba(112,112,112,0.3);}

[data-theme="ext-photo-carbon-print"] body{background:#060606;color:#c0c0c0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-carbon-print"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .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-carbon-print"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-carbon-print"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-carbon-print"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-carbon-print"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-carbon-print"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-carbon-print"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-carbon-print"] .hero > .hero-content,
[data-theme="ext-photo-carbon-print"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .hero-title{font-family:'Bebas Neue',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-carbon-print"] .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-carbon-print"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-carbon-print"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:carbon_print_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-carbon-print"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-carbon-print"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-carbon-print"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-carbon-print"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-carbon-print"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-carbon-print"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-carbon-print"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .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-carbon-print"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-carbon-print"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-carbon-print"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-carbon-print"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .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-carbon-print"] .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-carbon-print"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-carbon-print"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-carbon-print"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-carbon-print"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-carbon-print"] .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-carbon-print"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes carbon_print_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes carbon_print_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes carbon_print_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes carbon_print_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-carbon-print"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(136,136,136,0.06),transparent 40%),radial-gradient(circle at 80% 70%,rgba(112,112,112,0.04),transparent 35%),radial-gradient(circle at 50% 50%,rgba(136,136,136,0.03),transparent 30%);
  animation:carbon_print_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-carbon-print"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(112,112,112,0.03),transparent 25%),radial-gradient(circle at 30% 80%,rgba(136,136,136,0.02),transparent 30%);
  animation:carbon_print_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-carbon-print{background:linear-gradient(135deg,#060606,#888888);}

/* ############################################################
   THEME: ext-photo-motion-blur  (动感模糊 / Motion Blur)
   ############################################################ */

[data-theme="ext-photo-motion-blur"]{
  --bg:#0a0a14;--bg-2:#0e0e1e;--bg-3:#141428;--bg-4:#1a1a32;
  --text:#c8c8e8;--text-dim:#505080;--text-mid:#7070a0;
  --accent:#4080ff;--accent-glow:rgba(64,128,255,0.4);--white:#c8c8e8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,10,20,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,10,20,0.2) 0%,rgba(10,10,20,0.7) 100%);
  --nav-scrolled-bg:#0a0a14ee;
  --font-display:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0a14;color:#c8c8e8;
}
[data-theme="ext-photo-motion-blur"][data-color="speed"]{--accent:#4080ff;--accent-glow:rgba(64,128,255,0.4);}
[data-theme="ext-photo-motion-blur"][data-color="streak"]{--accent:#ff4080;--accent-glow:rgba(255,64,128,0.4);}

[data-theme="ext-photo-motion-blur"] body{background:#0a0a14;color:#c8c8e8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-motion-blur"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .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-motion-blur"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-motion-blur"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-motion-blur"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-motion-blur"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-motion-blur"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-motion-blur"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-motion-blur"] .hero > .hero-content,
[data-theme="ext-photo-motion-blur"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .hero-title{font-family:'Bebas Neue',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-motion-blur"] .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-motion-blur"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-motion-blur"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:motion_blur_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-motion-blur"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-motion-blur"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-motion-blur"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-motion-blur"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-motion-blur"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-motion-blur"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-motion-blur"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .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-motion-blur"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-motion-blur"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-motion-blur"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-motion-blur"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .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-motion-blur"] .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-motion-blur"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-motion-blur"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-motion-blur"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-motion-blur"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-motion-blur"] .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-motion-blur"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes motion_blur_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes motion_blur_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes motion_blur_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes motion_blur_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-motion-blur"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(64,128,255,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(255,64,128,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(64,128,255,0.06),transparent 30%);
  animation:motion_blur_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-motion-blur"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(255,64,128,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(64,128,255,0.06),transparent 30%);
  animation:motion_blur_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-motion-blur{background:linear-gradient(135deg,#0a0a14,#4080ff);}

/* ############################################################
   THEME: ext-photo-light-painting  (光绘涂鸦 / Light Painting)
   ############################################################ */

[data-theme="ext-photo-light-painting"]{
  --bg:#080812;--bg-2:#0c0c1a;--bg-3:#101022;--bg-4:#14142e;
  --text:#c0c8e0;--text-dim:#484878;--text-mid:#686898;
  --accent:#40c0ff;--accent-glow:rgba(64,192,255,0.4);--white:#c0c8e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(8,8,18,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(8,8,18,0.2) 0%,rgba(8,8,18,0.7) 100%);
  --nav-scrolled-bg:#080812ee;
  --font-display:'Cinzel';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#080812;color:#c0c8e0;
}
[data-theme="ext-photo-light-painting"][data-color="cyan"]{--accent:#40c0ff;--accent-glow:rgba(64,192,255,0.4);}
[data-theme="ext-photo-light-painting"][data-color="magenta"]{--accent:#ff40c0;--accent-glow:rgba(255,64,192,0.4);}

[data-theme="ext-photo-light-painting"] body{background:#080812;color:#c0c8e0;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-light-painting"] .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-light-painting"] .nav-logo{font-family:'Cinzel',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-light-painting"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-light-painting"] .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-light-painting"] .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-light-painting"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-light-painting"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-light-painting"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-light-painting"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-light-painting"] .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-light-painting"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-light-painting"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-light-painting"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-light-painting"] .hero > .hero-content,
[data-theme="ext-photo-light-painting"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-light-painting"] .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-light-painting"] .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-light-painting"] .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-light-painting"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-light-painting"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:light_painting_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-light-painting"] .section-num{font-family:'Cinzel',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-light-painting"] .section-title{font-family:'Cinzel',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-light-painting"] .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-light-painting"] .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-light-painting"] .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-light-painting"] .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-light-painting"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-light-painting"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-light-painting"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-light-painting"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-light-painting"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-light-painting"] .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-light-painting"] .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-light-painting"] .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-light-painting"] .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-light-painting"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-light-painting"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-light-painting"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-light-painting"] .album-info-title{font-family:'Cinzel',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-light-painting"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-light-painting"] .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-light-painting"] .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-light-painting"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-light-painting"] .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-light-painting"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-light-painting"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-light-painting"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-light-painting"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-light-painting"] .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-light-painting"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes light_painting_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes light_painting_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes light_painting_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes light_painting_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-light-painting"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(64,192,255,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(255,64,192,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(64,192,255,0.06),transparent 30%);
  animation:light_painting_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-light-painting"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(255,64,192,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(64,192,255,0.06),transparent 30%);
  animation:light_painting_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-light-painting{background:linear-gradient(135deg,#080812,#40c0ff);}

/* ############################################################
   THEME: ext-photo-double-exposure  (双重曝光 / Double Exposure)
   ############################################################ */

[data-theme="ext-photo-double-exposure"]{
  --bg:#121018;--bg-2:#181420;--bg-3:#1e1c28;--bg-4:#242230;
  --text:#d0c8d8;--text-dim:#585468;--text-mid:#787488;
  --accent:#a080c0;--accent-glow:rgba(160,128,192,0.4);--white:#d0c8d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(18,16,24,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(18,16,24,0.2) 0%,rgba(18,16,24,0.7) 100%);
  --nav-scrolled-bg:#121018ee;
  --font-display:'Fraunces';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#121018;color:#d0c8d8;
}
[data-theme="ext-photo-double-exposure"][data-color="violet"]{--accent:#a080c0;--accent-glow:rgba(160,128,192,0.4);}
[data-theme="ext-photo-double-exposure"][data-color="teal"]{--accent:#40a090;--accent-glow:rgba(64,160,144,0.4);}

[data-theme="ext-photo-double-exposure"] body{background:#121018;color:#d0c8d8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-double-exposure"] .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-double-exposure"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-double-exposure"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-double-exposure"] .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-double-exposure"] .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-double-exposure"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-double-exposure"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-double-exposure"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-double-exposure"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-double-exposure"] .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-double-exposure"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-double-exposure"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-double-exposure"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-double-exposure"] .hero > .hero-content,
[data-theme="ext-photo-double-exposure"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-double-exposure"] .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-double-exposure"] .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-double-exposure"] .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-double-exposure"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-double-exposure"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:double_exposure_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-double-exposure"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-double-exposure"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-double-exposure"] .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-double-exposure"] .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-double-exposure"] .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-double-exposure"] .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-double-exposure"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-double-exposure"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-double-exposure"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-double-exposure"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-double-exposure"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-double-exposure"] .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-double-exposure"] .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-double-exposure"] .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-double-exposure"] .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-double-exposure"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-double-exposure"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-double-exposure"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-double-exposure"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-double-exposure"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-double-exposure"] .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-double-exposure"] .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-double-exposure"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-double-exposure"] .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-double-exposure"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-double-exposure"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-double-exposure"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-double-exposure"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-double-exposure"] .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-double-exposure"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes double_exposure_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes double_exposure_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes double_exposure_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes double_exposure_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-double-exposure"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(160,128,192,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(64,160,144,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(160,128,192,0.06),transparent 30%);
  animation:double_exposure_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-double-exposure"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(64,160,144,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(160,128,192,0.06),transparent 30%);
  animation:double_exposure_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-double-exposure{background:linear-gradient(135deg,#121018,#a080c0);}

/* ############################################################
   THEME: ext-photo-kaleidoscope-lens  (万花筒镜 / Kaleidoscope Lens)
   ############################################################ */

[data-theme="ext-photo-kaleidoscope-lens"]{
  --bg:#100818;--bg-2:#140c20;--bg-3:#181028;--bg-4:#1c1430;
  --text:#d0b8e0;--text-dim:#584878;--text-mid:#786898;
  --accent:#c040e0;--accent-glow:rgba(192,64,224,0.4);--white:#d0b8e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(16,8,24,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(16,8,24,0.2) 0%,rgba(16,8,24,0.7) 100%);
  --nav-scrolled-bg:#100818ee;
  --font-display:'Bebas Neue';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#100818;color:#d0b8e0;
}
[data-theme="ext-photo-kaleidoscope-lens"][data-color="magenta"]{--accent:#c040e0;--accent-glow:rgba(192,64,224,0.4);}
[data-theme="ext-photo-kaleidoscope-lens"][data-color="cyan"]{--accent:#40e0c0;--accent-glow:rgba(64,224,192,0.4);}

[data-theme="ext-photo-kaleidoscope-lens"] body{background:#100818;color:#d0b8e0;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-kaleidoscope-lens"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .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-kaleidoscope-lens"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-kaleidoscope-lens"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-kaleidoscope-lens"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-kaleidoscope-lens"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-kaleidoscope-lens"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-kaleidoscope-lens"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-kaleidoscope-lens"] .hero > .hero-content,
[data-theme="ext-photo-kaleidoscope-lens"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .hero-title{font-family:'Bebas Neue',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-kaleidoscope-lens"] .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-kaleidoscope-lens"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-kaleidoscope-lens"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:kaleidoscope_lens_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-kaleidoscope-lens"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-kaleidoscope-lens"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-kaleidoscope-lens"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-kaleidoscope-lens"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-kaleidoscope-lens"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-kaleidoscope-lens"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-kaleidoscope-lens"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .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-kaleidoscope-lens"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-kaleidoscope-lens"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-kaleidoscope-lens"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-kaleidoscope-lens"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .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-kaleidoscope-lens"] .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-kaleidoscope-lens"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-kaleidoscope-lens"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-kaleidoscope-lens"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-kaleidoscope-lens"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-kaleidoscope-lens"] .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-kaleidoscope-lens"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes kaleidoscope_lens_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes kaleidoscope_lens_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes kaleidoscope_lens_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes kaleidoscope_lens_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-kaleidoscope-lens"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(192,64,224,0.15),transparent 40%),radial-gradient(circle at 80% 70%,rgba(64,224,192,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(192,64,224,0.06),transparent 30%);
  animation:kaleidoscope_lens_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-kaleidoscope-lens"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(64,224,192,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(192,64,224,0.06),transparent 30%);
  animation:kaleidoscope_lens_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-kaleidoscope-lens{background:linear-gradient(135deg,#100818,#c040e0);}

/* ############################################################
   THEME: ext-photo-prism-refract  (棱镜折射 / Prism Refract)
   ############################################################ */

[data-theme="ext-photo-prism-refract"]{
  --bg:#0a0e18;--bg-2:#0e1220;--bg-3:#141828;--bg-4:#1a1e30;
  --text:#c0c8e0;--text-dim:#484870;--text-mid:#686890;
  --accent:#ff4040;--accent-glow:rgba(255,64,64,0.4);--white:#c0c8e0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(10,14,24,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(10,14,24,0.2) 0%,rgba(10,14,24,0.7) 100%);
  --nav-scrolled-bg:#0a0e18ee;
  --font-display:'Inter';--font-body:'Manrope';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#0a0e18;color:#c0c8e0;
}
[data-theme="ext-photo-prism-refract"][data-color="red"]{--accent:#ff4040;--accent-glow:rgba(255,64,64,0.4);}
[data-theme="ext-photo-prism-refract"][data-color="violet"]{--accent:#6040ff;--accent-glow:rgba(96,64,255,0.4);}

[data-theme="ext-photo-prism-refract"] body{background:#0a0e18;color:#c0c8e0;font-family:'Manrope',sans-serif;}

/* Navbar */
[data-theme="ext-photo-prism-refract"] .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-prism-refract"] .nav-logo{font-family:'Inter',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-prism-refract"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-prism-refract"] .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-prism-refract"] .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-prism-refract"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-prism-refract"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-prism-refract"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-prism-refract"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-prism-refract"] .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-prism-refract"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-prism-refract"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-prism-refract"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-prism-refract"] .hero > .hero-content,
[data-theme="ext-photo-prism-refract"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-prism-refract"] .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-prism-refract"] .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-prism-refract"] .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-prism-refract"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-prism-refract"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:prism_refract_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-prism-refract"] .section-num{font-family:'Inter',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-prism-refract"] .section-title{font-family:'Inter',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-prism-refract"] .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-prism-refract"] .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-prism-refract"] .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-prism-refract"] .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-prism-refract"] .about-bio{font-family:'Manrope',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-prism-refract"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-prism-refract"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-prism-refract"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-prism-refract"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-prism-refract"] .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-prism-refract"] .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-prism-refract"] .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-prism-refract"] .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-prism-refract"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-prism-refract"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-prism-refract"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-prism-refract"] .album-info-title{font-family:'Inter',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-prism-refract"] .album-info-meta{font-family:'Manrope',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-prism-refract"] .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-prism-refract"] .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-prism-refract"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-prism-refract"] .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-prism-refract"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-prism-refract"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-prism-refract"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-prism-refract"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-prism-refract"] .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-prism-refract"] .card-value{font-family:'Manrope',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes prism_refract_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes prism_refract_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes prism_refract_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes prism_refract_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-prism-refract"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,64,64,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(96,64,255,0.10),transparent 35%),radial-gradient(circle at 50% 50%,rgba(255,64,64,0.06),transparent 30%);
  animation:prism_refract_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-prism-refract"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(96,64,255,0.08),transparent 25%),radial-gradient(circle at 30% 80%,rgba(255,64,64,0.06),transparent 30%);
  animation:prism_refract_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-prism-refract{background:linear-gradient(135deg,#0a0e18,#ff4040);}

/* ############################################################
   THEME: ext-photo-bokeh-dream  (散景梦境 / Bokeh Dream)
   ############################################################ */

[data-theme="ext-photo-bokeh-dream"]{
  --bg:#100a14;--bg-2:#140c1e;--bg-3:#181028;--bg-4:#1c1432;
  --text:#d0c0d8;--text-dim:#584868;--text-mid:#786888;
  --accent:#d0a0c0;--accent-glow:rgba(208,160,192,0.4);--white:#d0c0d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(16,10,20,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(16,10,20,0.2) 0%,rgba(16,10,20,0.7) 100%);
  --nav-scrolled-bg:#100a14ee;
  --font-display:'Spectral';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#100a14;color:#d0c0d8;
}
[data-theme="ext-photo-bokeh-dream"][data-color="dream"]{--accent:#d0a0c0;--accent-glow:rgba(208,160,192,0.4);}
[data-theme="ext-photo-bokeh-dream"][data-color="gold"]{--accent:#e0c060;--accent-glow:rgba(224,192,96,0.4);}

[data-theme="ext-photo-bokeh-dream"] body{background:#100a14;color:#d0c0d8;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-bokeh-dream"] .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-bokeh-dream"] .nav-logo{font-family:'Spectral',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-bokeh-dream"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-bokeh-dream"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-bokeh-dream"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-bokeh-dream"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-bokeh-dream"] .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-bokeh-dream"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-bokeh-dream"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-bokeh-dream"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-bokeh-dream"] .hero > .hero-content,
[data-theme="ext-photo-bokeh-dream"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-bokeh-dream"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:bokeh_dream_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-bokeh-dream"] .section-num{font-family:'Spectral',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-bokeh-dream"] .section-title{font-family:'Spectral',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-bokeh-dream"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-bokeh-dream"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-bokeh-dream"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-bokeh-dream"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-bokeh-dream"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-bokeh-dream"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-bokeh-dream"] .album-info-title{font-family:'Spectral',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-bokeh-dream"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-bokeh-dream"] .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-bokeh-dream"] .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-bokeh-dream"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-bokeh-dream"] .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-bokeh-dream"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-bokeh-dream"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-bokeh-dream"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-bokeh-dream"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-bokeh-dream"] .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-bokeh-dream"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes bokeh_dream_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes bokeh_dream_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes bokeh_dream_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes bokeh_dream_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-bokeh-dream"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(208,160,192,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(224,192,96,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(208,160,192,0.04),transparent 30%);
  animation:bokeh_dream_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-bokeh-dream"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(224,192,96,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(208,160,192,0.04),transparent 30%);
  animation:bokeh_dream_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-bokeh-dream{background:linear-gradient(135deg,#100a14,#d0a0c0);}

/* ############################################################
   THEME: ext-photo-long-exposure  (长曝光迹 / Long Exposure)
   ############################################################ */

[data-theme="ext-photo-long-exposure"]{
  --bg:#08101a;--bg-2:#0c1824;--bg-3:#101e2c;--bg-4:#142030;
  --text:#b8c8d8;--text-dim:#485870;--text-mid:#687890;
  --accent:#40a0d0;--accent-glow:rgba(64,160,208,0.4);--white:#b8c8d8;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(8,16,26,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(8,16,26,0.2) 0%,rgba(8,16,26,0.7) 100%);
  --nav-scrolled-bg:#08101aee;
  --font-display:'Fraunces';--font-body:'DM Sans';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#08101a;color:#b8c8d8;
}
[data-theme="ext-photo-long-exposure"][data-color="trail"]{--accent:#40a0d0;--accent-glow:rgba(64,160,208,0.4);}
[data-theme="ext-photo-long-exposure"][data-color="star"]{--accent:#80c0e0;--accent-glow:rgba(128,192,224,0.4);}

[data-theme="ext-photo-long-exposure"] body{background:#08101a;color:#b8c8d8;font-family:'DM Sans',sans-serif;}

/* Navbar */
[data-theme="ext-photo-long-exposure"] .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-long-exposure"] .nav-logo{font-family:'Fraunces',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-long-exposure"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-long-exposure"] .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-long-exposure"] .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-long-exposure"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-long-exposure"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-long-exposure"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-long-exposure"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-long-exposure"] .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-long-exposure"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-long-exposure"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-long-exposure"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-long-exposure"] .hero > .hero-content,
[data-theme="ext-photo-long-exposure"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-long-exposure"] .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-long-exposure"] .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-long-exposure"] .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-long-exposure"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-long-exposure"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:long_exposure_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-long-exposure"] .section-num{font-family:'Fraunces',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-long-exposure"] .section-title{font-family:'Fraunces',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-long-exposure"] .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-long-exposure"] .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-long-exposure"] .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-long-exposure"] .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-long-exposure"] .about-bio{font-family:'DM Sans',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-long-exposure"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-long-exposure"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-long-exposure"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-long-exposure"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-long-exposure"] .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-long-exposure"] .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-long-exposure"] .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-long-exposure"] .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-long-exposure"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-long-exposure"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-long-exposure"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-long-exposure"] .album-info-title{font-family:'Fraunces',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-long-exposure"] .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-long-exposure"] .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-long-exposure"] .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-long-exposure"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-long-exposure"] .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-long-exposure"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-long-exposure"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-long-exposure"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-long-exposure"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-long-exposure"] .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-long-exposure"] .card-value{font-family:'DM Sans',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes long_exposure_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes long_exposure_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes long_exposure_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes long_exposure_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-long-exposure"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(64,160,208,0.12),transparent 40%),radial-gradient(circle at 80% 70%,rgba(128,192,224,0.08),transparent 35%),radial-gradient(circle at 50% 50%,rgba(64,160,208,0.04),transparent 30%);
  animation:long_exposure_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-long-exposure"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(128,192,224,0.06),transparent 25%),radial-gradient(circle at 30% 80%,rgba(64,160,208,0.04),transparent 30%);
  animation:long_exposure_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-long-exposure{background:linear-gradient(135deg,#08101a,#40a0d0);}

/* ############################################################
   THEME: ext-photo-solar-flare  (太阳耀斑 / Solar Flare)
   ############################################################ */

[data-theme="ext-photo-solar-flare"]{
  --bg:#1a1008;--bg-2:#24180c;--bg-3:#2e200f;--bg-4:#3a2814;
  --text:#f0d8a0;--text-dim:#8a7038;--text-mid:#aa9060;
  --accent:#ffb020;--accent-glow:rgba(255,176,32,0.4);--white:#f0d8a0;--border:rgba(255,255,255,0.08);
  --hero-overlay-color:rgba(26,16,8,0.5);--hero-overlay-gradient:linear-gradient(180deg,rgba(26,16,8,0.2) 0%,rgba(26,16,8,0.7) 100%);
  --nav-scrolled-bg:#1a1008ee;
  --font-display:'Bebas Neue';--font-body:'Outfit';
  --transition:0.35s cubic-bezier(0.25,0.46,0.45,0.94);
  background:#1a1008;color:#f0d8a0;
}
[data-theme="ext-photo-solar-flare"][data-color="flare"]{--accent:#ffb020;--accent-glow:rgba(255,176,32,0.4);}
[data-theme="ext-photo-solar-flare"][data-color="corona"]{--accent:#ff8040;--accent-glow:rgba(255,128,64,0.4);}

[data-theme="ext-photo-solar-flare"] body{background:#1a1008;color:#f0d8a0;font-family:'Outfit',sans-serif;}

/* Navbar */
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .nav-logo{font-family:'Bebas Neue',serif;font-size:1.5rem;font-weight:600;color:var(--text);}
[data-theme="ext-photo-solar-flare"] .nav-logo span{color:var(--accent);}
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .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-solar-flare"] .nav-link:hover{color:var(--accent);}
[data-theme="ext-photo-solar-flare"] .nav-link:hover::after{width:100%;}
[data-theme="ext-photo-solar-flare"] .nav-link.active{color:var(--accent);}
[data-theme="ext-photo-solar-flare"] .nav-link.active::after{width:100%;}

/* Hero */
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .hero::before{content:"";position:absolute;inset:0;background:var(--hero-overlay-gradient);z-index:1;}
[data-theme="ext-photo-solar-flare"] .hero-bg{position:absolute;inset:0;z-index:0;}
[data-theme="ext-photo-solar-flare"] .hero-overlay{position:absolute;inset:0;z-index:1;}
[data-theme="ext-photo-solar-flare"] .hero > .hero-content,
[data-theme="ext-photo-solar-flare"] .hero > .hero-scroll{position:relative;z-index:2;}
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .hero-title{font-family:'Bebas Neue',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-solar-flare"] .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-solar-flare"] .scroll-line{width:1px;height:46px;background:linear-gradient(to bottom,transparent,var(--accent),transparent);position:relative;overflow:hidden;}
[data-theme="ext-photo-solar-flare"] .scroll-line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;background:var(--accent);animation:solar_flare_scroll 2.2s ease-in-out infinite;}

/* Sections */
[data-theme="ext-photo-solar-flare"] .section-num{font-family:'Bebas Neue',serif;font-size:0.85rem;color:var(--accent);letter-spacing:0.3em;}
[data-theme="ext-photo-solar-flare"] .section-title{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .section-head h2{font-family:'Bebas Neue',serif;font-size:clamp(1.8rem,4.5vw,3rem);font-weight:700;color:var(--text);}

/* About */
[data-theme="ext-photo-solar-flare"] .about-name{font-family:'Bebas Neue',serif;font-size:clamp(2rem,5vw,3.4rem);font-weight:700;color:var(--text);line-height:1.1;}
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .about-bio{font-family:'Outfit',sans-serif;font-size:1.02rem;line-height:1.8;color:var(--text-mid);}
[data-theme="ext-photo-solar-flare"] .about-img-wrapper{border-radius:16px;overflow:hidden;transition:border-radius 0.6s var(--transition);}
[data-theme="ext-photo-solar-flare"] .about-img-wrapper:hover{border-radius:20px;}
[data-theme="ext-photo-solar-flare"] .about-img-wrapper img{transition:transform 0.8s var(--transition);}
[data-theme="ext-photo-solar-flare"] .about-img-wrapper:hover img{transform:scale(1.05);}
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .stat-num{font-family:'Bebas Neue',serif;font-size:clamp(2.2rem,5vw,3.4rem);font-weight:700;color:var(--accent);line-height:1;}

/* Albums */
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .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-solar-flare"] .album-cover{border-radius:0;overflow:hidden;}
[data-theme="ext-photo-solar-flare"] .album-item:hover .album-cover img{transform:scale(1.06);}
[data-theme="ext-photo-solar-flare"] .album-info{padding:1.4rem;}
[data-theme="ext-photo-solar-flare"] .album-info-title{font-family:'Bebas Neue',serif;font-size:1.1rem;color:var(--text);}
[data-theme="ext-photo-solar-flare"] .album-info-meta{font-family:'Outfit',sans-serif;font-size:0.8rem;color:var(--text-mid);letter-spacing:0.05em;}
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .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-solar-flare"] .btn.primary:hover{transform:translateY(-2px);box-shadow:0 0 40px var(--accent-glow);}
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:rgba(255,255,255,0.03);}

/* Contact */
[data-theme="ext-photo-solar-flare"] .contact-card{background:var(--bg-2);border:1px solid var(--border);border-radius:16px;padding:2rem;transition:var(--transition);}
[data-theme="ext-photo-solar-flare"] .contact-card:hover{transform:translateY(-6px);border-color:var(--accent);box-shadow:0 18px 44px var(--accent-glow);}
[data-theme="ext-photo-solar-flare"] .card-icon{color:var(--accent);font-size:1.5rem;}
[data-theme="ext-photo-solar-flare"] .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-solar-flare"] .card-value{font-family:'Outfit',sans-serif;font-size:1rem;color:var(--text);}

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

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

/* Animations */
@keyframes solar_flare_scroll{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
@keyframes solar_flare_float{0%{transform:translateY(0);}50%{transform:translateY(-20px);}100%{transform:translateY(0);}}
@keyframes solar_flare_glow{0%{opacity:0.4;}100%{opacity:1;}}
@keyframes solar_flare_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-solar-flare"] body::before{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 20% 30%,rgba(255,176,32,0.18),transparent 40%),radial-gradient(circle at 80% 70%,rgba(255,128,64,0.12),transparent 35%),radial-gradient(circle at 50% 50%,rgba(255,176,32,0.06),transparent 30%);
  animation:solar_flare_drift 12s ease-in-out infinite;
}
[data-theme="ext-photo-solar-flare"] body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  background:radial-gradient(circle at 70% 20%,rgba(255,128,64,0.10),transparent 25%),radial-gradient(circle at 30% 80%,rgba(255,176,32,0.06),transparent 30%);
  animation:solar_flare_glow 8s ease-in-out infinite alternate;
}

/* Swatch */
.ts-swatch.ts-ap-ext-photo-solar-flare{background:linear-gradient(135deg,#1a1008,#ffb020);}

