/* Teileter 9.1.0 排版修复：在 lamplight.css 之后加载，只做覆盖。
 * 针对：图片不在同一水平线、局部大片空白、内容偏左、标题被挤成多行。 */

/* 1. 产品页室内图：等宽并排，顶部底部对齐，方形铺满，去掉错位和大片空白。 */
body.teileter-studio .product-room-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:clamp(16px,2vw,28px)}
body.teileter-studio .product-room-grid.has-three{grid-template-columns:repeat(3,minmax(0,1fr))}
body.teileter-studio .product-room-grid figure:nth-child(n){margin-top:0;width:auto;grid-column:auto;justify-self:stretch}
body.teileter-studio .product-room-grid .image-zoom-trigger{display:block;width:100%}
body.teileter-studio .product-room-grid img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover}
body.teileter-studio .product-room-grid:has(.product-room-portrait) img{aspect-ratio:4/5}
@media (max-width:900px){body.teileter-studio .product-room-grid.has-three{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:600px){body.teileter-studio .product-room-grid,body.teileter-studio .product-room-grid.has-three{grid-template-columns:1fr}}

/* 2. 页尾邀请区：标题加宽，不再被挤成四行。 */
body.teileter-studio .contact-invitation .cta{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center}
body.teileter-studio .contact-invitation .cta h2{max-width:20ch}
@media (max-width:900px){body.teileter-studio .contact-invitation .cta{grid-template-columns:1fr}}

/* 3. 各页说明段：标题在左、正文在右，占满版心，不再只挤在左半边。 */
body.teileter-studio .seo-introduction{margin-block:clamp(56px,7vw,112px)}
@media (min-width:901px){
  body.teileter-studio .seo-introduction{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);column-gap:clamp(40px,6vw,112px);align-items:start;max-width:none;width:100%}
  body.teileter-studio .seo-introduction > h2{grid-column:1;grid-row:1 / span 20;margin-top:0;max-width:none}
  body.teileter-studio .seo-introduction > :not(h2){grid-column:2;max-width:62ch}
  body.teileter-studio .seo-introduction > p:first-of-type{margin-top:0}
}

/* 4. 工厂页图片组：左边大图与右边两张小图上下对齐；第二组首行两张同高。 */
body.teileter-studio .factory-evidence-grid{align-items:stretch}
body.teileter-studio .factory-evidence-grid .factory-evidence-primary{display:flex;flex-direction:column}
body.teileter-studio .factory-evidence-grid .factory-evidence-primary img{flex:1 1 0;min-height:0;height:auto;aspect-ratio:auto;object-fit:cover}
body.teileter-studio .factory-process-grid{align-items:stretch}
@media (min-width:901px){
  body.teileter-studio .factory-process-grid figure:nth-child(2){display:flex;flex-direction:column}
  body.teileter-studio .factory-process-grid figure:nth-child(2) img{flex:1 1 0;min-height:0;height:auto;aspect-ratio:auto;object-fit:cover}
}

/* 5. 首页各区标题居中，“Choose the form”的装饰图移到标题上方。 */
body.teileter-studio .collection-intro{flex-direction:column-reverse;align-items:center;justify-content:center;text-align:center;gap:clamp(12px,1.5vw,20px)}
body.teileter-studio .collection-intro .stacked-heading{max-width:44rem;margin-inline:auto}
body.teileter-studio .collection-intro .stacked-heading p{margin-inline:auto}
body.teileter-studio .collection-intro .collection-art{width:clamp(180px,18vw,260px);height:auto}
body.teileter-studio .he-heading{text-align:center;margin-inline:auto}
body.teileter-studio .he-heading h2,body.teileter-studio .he-heading p{margin-inline:auto}
body.teileter-studio .he-journal .he-heading{flex-direction:column;align-items:center;gap:12px}

/* 6. 首页“Behind every light”：工厂卡片图片放大，与右侧两条对齐。 */
body.teileter-studio .he-resource-grid{align-items:stretch}
body.teileter-studio .he-resource-grid .he-factory{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:clamp(20px,2.5vw,36px)}
body.teileter-studio .he-resource-grid .he-factory img{width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
@media (max-width:700px){body.teileter-studio .he-resource-grid .he-factory{grid-template-columns:1fr}}

/* 7. 政策页正文版式。 */
body.teileter-studio .policy-body{max-width:46rem;margin-inline:auto;padding-bottom:clamp(3rem,6vw,5rem)}
body.teileter-studio .policy-body h2{margin:2.25rem 0 .75rem;font-size:clamp(1.25rem,2vw,1.5rem)}
body.teileter-studio .policy-body ul,body.teileter-studio .policy-body ol{padding-inline-start:1.25rem}
body.teileter-studio .policy-body li{margin-block:.4rem}
body.teileter-studio .policy-updated{color:var(--muted)}

/* 8. 联系页、材质页等“资料说明”区块：同样改成左标题右正文。 */
@media (min-width:901px){
  body.teileter-studio .lighting-resource{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);column-gap:clamp(40px,6vw,112px);align-items:start}
  body.teileter-studio .lighting-resource > header{grid-column:1;grid-row:1 / span 10}
  body.teileter-studio .lighting-resource > :not(header){grid-column:2;max-width:62ch}
  body.teileter-studio .lighting-resource > p:first-of-type{margin-top:0}
}

/* 9. 产品页“A few questions”问答：整块居中，不再偏左。 */
body.teileter-studio .product-faq .stacked-heading{text-align:center;margin-inline:auto}
body.teileter-studio .product-faq .stacked-heading p{margin-inline:auto}
body.teileter-studio .product-faq .faq-list{max-width:60rem;margin-inline:auto}

/* 10. 首页标题二次调整（2026-10-17）：
 * Choose the form、Good rooms 两处标题和说明各占一行、字号加大、上下留白缩短，整体居中；
 * A little planning、Behind every light 两处标题改为左对齐，与下方图片左边缘对齐。 */
body.teileter-studio .he-confidence .he-heading,
body.teileter-studio .he-resources .he-heading{text-align:left;margin-inline:0;max-width:none}
body.teileter-studio .he-confidence .he-heading :is(h2,p),
body.teileter-studio .he-resources .he-heading :is(h2,p){margin-inline:0}
body.home.teileter-studio .collection-section{padding-block:clamp(48px,4.5vw,68px)}
body.teileter-studio .collection-intro{gap:10px;margin-bottom:clamp(20px,2vw,28px)}
body.teileter-studio .collection-intro .collection-art{width:clamp(150px,12vw,190px)}
body.home.teileter-studio .home-editorial .he-section.he-journal{padding-block:clamp(56px,5vw,76px)}
body.teileter-studio .he-journal .he-heading{width:100%;max-width:none;justify-content:center;align-items:center;text-align:center;gap:8px;margin-bottom:clamp(24px,2.4vw,36px)}
body.teileter-studio .he-journal .he-heading > div{max-width:none;width:100%;text-align:center}
body.teileter-studio .he-journal .he-heading h2,
body.teileter-studio .he-journal .he-heading p,
body.home.teileter-studio .collection-section .collection-intro .stacked-heading h2{margin-inline:auto}
@media (min-width:1100px){
  body.home.teileter-studio .collection-section .collection-intro .stacked-heading,
  body.teileter-studio .he-journal .he-heading > div{max-width:none;width:auto}
  body.home.teileter-studio .collection-section .collection-intro .stacked-heading h2,
  body.teileter-studio .he-journal .he-heading h2{max-width:none;white-space:nowrap;font-size:clamp(52px,4.3vw,66px);line-height:1.1}
  body.home.teileter-studio .collection-section .collection-intro .stacked-heading p,
  body.teileter-studio .he-journal .he-heading p{max-width:none;white-space:nowrap;font-size:19px;margin-top:12px}
}

/* 11. 加载动画重做（2026-10-17）：图标和进度条保持不变，只改动态效果。
 * 进场：图标从模糊缩小状态弹入；等待中：图标呼吸放大 + 金色光晕 + 两圈向外扩散的光环 + 更亮更快的扫光；
 * 进度条：加粗、金色渐变流光、头部发光圆点；离场：图标放大淡出、进度条收起、整页淡出。 */
body.teileter-studio .site-loader{transition:opacity .5s cubic-bezier(.4,0,.2,1),visibility .5s}
body.teileter-studio .site-loader-mark{contain:none;overflow:visible}
body.teileter-studio .site-loader-mark svg{overflow:visible}
body.teileter-studio .site-loader-progress{position:relative;width:min(210px,60vw);height:4px;margin-top:36px;overflow:visible;background:rgba(184,147,76,.18)}
body.teileter-studio .site-loader-progress span{background:linear-gradient(90deg,#e6d3a3 0%,#b8934c 45%,#f3e4bd 55%,#b8934c 65%,#8f6c31 100%);background-size:220% 100%;box-shadow:0 0 12px rgba(184,147,76,.55)}
body.teileter-studio .site-loader-progress::after{content:"";position:absolute;top:50%;left:0;translate:var(--loader-head-x, 0px) 0;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;background:#fff6dc;box-shadow:0 0 0 3px rgba(184,147,76,.35),0 0 16px 4px rgba(184,147,76,.7);transition:translate .42s linear,opacity .3s}
@media (prefers-reduced-motion:no-preference){
  body.teileter-studio .site-loader.is-active .site-loader-mark svg{transform-origin:50% 50%;animation:tl-mark-in .75s cubic-bezier(.2,.9,.25,1.25) both,tl-mark-breathe 1.6s ease-in-out .75s infinite}
  body.teileter-studio .site-loader-mark::before,
  body.teileter-studio .site-loader-mark::after{content:"";position:absolute;inset:-22%;z-index:-1;border-radius:50%;border:2px solid rgba(184,147,76,.6);background:radial-gradient(circle,rgba(232,206,150,.28) 0%,rgba(232,206,150,0) 62%);opacity:0;pointer-events:none}
  body.teileter-studio .site-loader.is-active:not(.is-complete) .site-loader-mark::before{animation:tl-ring 1.6s cubic-bezier(.2,.6,.3,1) .35s infinite}
  body.teileter-studio .site-loader.is-active:not(.is-complete) .site-loader-mark::after{animation:tl-ring 1.6s cubic-bezier(.2,.6,.3,1) 1.15s infinite}
  body.teileter-studio .site-loader.is-active:not(.is-complete) .site-loader-flow{animation:site-loader-flow 1.05s var(--ease) .3s infinite}
  body.teileter-studio .site-loader.is-active .site-loader-progress{animation:tl-bar-in .5s cubic-bezier(.2,.8,.2,1) .15s both}
  body.teileter-studio .site-loader.is-active .site-loader-progress span{animation:tl-bar-flow 1.2s linear infinite}
  body.teileter-studio .site-loader.is-active .site-loader-progress::after{animation:tl-head .9s ease-in-out infinite}
  body.teileter-studio .site-loader.is-complete .site-loader-mark{transform:scale(1.2);opacity:0;transition:transform .5s cubic-bezier(.4,0,.2,1),opacity .45s ease}
  body.teileter-studio .site-loader.is-complete .site-loader-mark svg{animation:none;filter:drop-shadow(0 0 26px rgba(184,147,76,.75))}
  body.teileter-studio .site-loader.is-complete .site-loader-progress{opacity:0;transform:scaleX(1.25);transition:opacity .4s ease .1s,transform .5s cubic-bezier(.4,0,.2,1)}
}
@keyframes tl-mark-in{0%{opacity:0;transform:scale(.5) rotate(-12deg);filter:blur(12px)}55%{opacity:1;filter:blur(0)}100%{opacity:1;transform:scale(1) rotate(0);filter:blur(0)}}
@keyframes tl-mark-breathe{0%,100%{transform:scale(1);filter:drop-shadow(0 0 0 rgba(184,147,76,0))}50%{transform:scale(1.08);filter:drop-shadow(0 10px 24px rgba(184,147,76,.6))}}
@keyframes tl-ring{0%{opacity:.75;transform:scale(.55)}100%{opacity:0;transform:scale(1.55)}}
@keyframes tl-bar-in{from{opacity:0;transform:scaleX(.2)}to{opacity:1;transform:scaleX(1)}}
@keyframes tl-bar-flow{from{background-position:120% 0}to{background-position:-100% 0}}
@keyframes tl-head{0%,100%{transform:scale(1)}50%{transform:scale(1.45);box-shadow:0 0 0 6px rgba(184,147,76,.15),0 0 24px 8px rgba(184,147,76,.85)}}
