/* 10/3 L10 零件库（底层样式）：只放「每家都一样」的东西（重置、零件的基本行为）。
   版面、颜色、字体、开场每家都重新设计，写在各自的网页里。 */
*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{margin:0;-webkit-font-smoothing:antialiased;overflow-x:clip}
img,video{display:block;max-width:100%}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;padding:0}input,select,textarea{font:inherit}
[hidden]{display:none!important}p,h1,h2,h3,h4,figure,blockquote,ul{margin:0}ul{padding:0;list-style:none}
.k-rv{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.23,1,.32,1),transform .8s cubic-bezier(.23,1,.32,1)}.k-rv.in,.in>.k-rv,.k-rv.in{opacity:1;transform:none}
[data-carousel] .sl{opacity:0;transition:opacity 1s ease,transform 6s ease;transform:scale(1.06)}[data-carousel] .sl.on{opacity:1;transform:none}
[data-dots]{display:flex;gap:7px}[data-dots] button{width:8px;height:8px;border-radius:9px;background:currentColor;opacity:.35;transition:width .3s,opacity .3s}[data-dots] button.on{width:24px;opacity:1}
[data-rail]{display:flex;overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:none}[data-rail]::-webkit-scrollbar{display:none}[data-rail]>*{flex:none;scroll-snap-align:start}[data-rail].drag{cursor:grabbing;scroll-snap-type:none}
[data-marquee]{overflow:hidden;white-space:nowrap}[data-marquee]>*{display:inline-flex;animation:k-mq var(--mq,40s) linear infinite}@keyframes k-mq{to{transform:translateX(-50%)}}
[data-tab][aria-selected=true]{}[data-chip][aria-pressed=true]{}
.k-lb{position:fixed;inset:0;z-index:999;background:rgba(10,10,10,.94);display:none;place-items:center;padding:40px 60px}.k-lb.on{display:grid}.k-lb img{max-height:84vh;max-width:100%;border-radius:6px}.k-lb p{color:#ddd;font:14px system-ui;margin-top:12px;text-align:center}
.k-lb button{position:absolute;color:#fff;font:300 40px/1 system-ui;width:56px;height:56px}.k-lb .x{top:12px;right:12px}.k-lb .pv{left:6px;top:50%}.k-lb .nx{right:6px;top:50%}
[data-ba]{position:relative;overflow:hidden}[data-ba] img{width:100%;height:100%;object-fit:cover}[data-ba] .after{position:absolute;inset:0}[data-ba] input{position:absolute;inset:auto 0 14px;width:80%;margin:auto;z-index:3}
[data-toast]{position:fixed;left:18px;bottom:18px;z-index:80;transform:translateY(140%);transition:transform .5s cubic-bezier(.23,1,.32,1)}[data-toast].on{transform:none}
.k-wa{position:fixed;right:18px;bottom:18px;z-index:90;width:58px;height:58px;border-radius:50%;background:#25D366;color:#fff;display:grid;place-items:center;box-shadow:0 10px 26px rgba(0,0,0,.25)}.k-wa svg{width:30px;height:30px;fill:#fff}
em.today{font-style:normal;font-size:.62em;letter-spacing:.08em;text-transform:uppercase;margin-left:6px;padding:2px 6px;border-radius:6px;background:rgba(0,0,0,.12)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.k-rv{opacity:1;transform:none}}

/* —— 10/3 下午加的招牌零件（颜色 / 字体都用变数，每家自己设）—— */
.k-flow{position:relative;overflow:hidden;display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:0 12px;background:var(--k-wall,#5A3A26)}
.k-flow .col{overflow:hidden}.k-flow .col>div{display:flex;flex-direction:column;gap:12px;animation:k-up 60s linear infinite}.k-flow .col:nth-child(2)>div{animation-direction:reverse;animation-duration:70s}.k-flow .col:nth-child(3)>div{animation-duration:54s}
.k-flow img{width:100%;aspect-ratio:var(--k-ar,1);object-fit:cover;border-radius:4px}@keyframes k-up{to{transform:translateY(calc(-50% - 6px))}}
.k-ring{position:absolute;z-index:3;width:150px;height:150px;border-radius:50%;background:var(--k-b,#C2CC84);color:var(--k-ink,#222);display:grid;place-items:center;overflow:hidden;box-shadow:0 18px 40px rgba(0,0,0,.25)}
.k-ring svg{position:absolute;inset:0;width:100%;height:100%;animation:k-spin 22s linear infinite}.k-ring text{font:500 10.4px var(--k-disp,system-ui);letter-spacing:.2em;fill:currentColor}.k-ring b{font:400 34px/1 var(--k-ser,Georgia);font-style:italic}@keyframes k-spin{to{transform:rotate(360deg)}}
.k-rb{display:inline-block;font:600 13px/1 var(--k-disp,system-ui);letter-spacing:.18em;text-transform:uppercase;color:#fff;background:var(--k-a,#7E6468);padding:10px 26px 10px 22px;clip-path:polygon(0 0,100% 8%,94% 52%,100% 96%,0 100%,6% 50%);transform:rotate(-2deg)}.k-rb.b{background:var(--k-b,#C2CC84);color:var(--k-ink,#222);transform:rotate(1.5deg)}
[data-desk]{position:relative}.k-pr{position:absolute;left:var(--x);top:var(--y);width:clamp(136px,15vw,230px);background:#fff;padding:9px 9px 28px;border-radius:3px;box-shadow:0 18px 30px -10px rgba(0,0,0,.55);transform:rotate(var(--r));z-index:var(--z,1);cursor:grab;touch-action:none;transition:box-shadow .2s,transform .3s cubic-bezier(.23,1,.32,1)}
.k-pr img{width:100%;aspect-ratio:1;object-fit:cover;pointer-events:none}.k-pr.dr{cursor:grabbing;box-shadow:0 34px 50px -12px rgba(0,0,0,.6);transform:rotate(0) scale(1.06)}
.k-fill{background:var(--img) center/360px;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 6px 14px rgba(0,0,0,.35))}
[data-gk]{animation:k-pop .5s cubic-bezier(.23,1,.32,1) both}@keyframes k-pop{from{opacity:0;transform:translateY(16px) rotate(-1deg)}}
.k-sp{flex:none;position:relative;width:var(--w);height:var(--h);background:var(--c);border-radius:3px 3px 0 0;box-shadow:inset -6px 0 10px rgba(0,0,0,.12),inset 2px 0 0 rgba(255,255,255,.25);transition:transform .35s cubic-bezier(.23,1,.32,1)}
.k-sp span{position:absolute;inset:14px 0;writing-mode:vertical-rl;transform:rotate(180deg);font:500 12.5px/1 var(--k-disp,system-ui);letter-spacing:.06em;color:rgba(0,0,0,.72);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;align-items:center;justify-content:flex-end}.k-sp:hover{transform:translateY(-10px)}.k-sp.out{transform:translateY(-34px)}
.k-stamp{transform:rotate(var(--r,0deg));transition:transform .4s cubic-bezier(.23,1,.32,1);filter:drop-shadow(0 14px 18px rgba(60,30,20,.22))}.k-stamp:hover{transform:rotate(0) scale(1.03)}
.k-stamp>div{background:var(--c,#F2DFA7);padding:9px;-webkit-mask:linear-gradient(#000 0 0) content-box,radial-gradient(circle at 9px 9px,transparent 5.5px,#000 6px) 0 0/18px 18px;mask:linear-gradient(#000 0 0) content-box,radial-gradient(circle at 9px 9px,transparent 5.5px,#000 6px) 0 0/18px 18px}
.k-stamp .in{position:relative;padding:28px 22px 22px;min-height:260px;display:flex;flex-direction:column;justify-content:space-between;border:1.5px solid rgba(0,0,0,.16)}
.k-cover{position:relative;aspect-ratio:3/4;background:repeating-linear-gradient(0deg,rgba(255,255,255,.07) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,rgba(0,0,0,.05) 0 1px,transparent 1px 4px),var(--c);border-radius:2px 8px 8px 2px;padding:22px 20px;box-shadow:inset 10px 0 0 rgba(0,0,0,.12),0 20px 26px -14px rgba(0,0,0,.45);display:flex;align-items:flex-end}
.k-cover:before{content:"";position:absolute;inset:8px 8px 8px 16px;border:1px solid rgba(0,0,0,.14);border-radius:1px 5px 5px 1px}.k-cover span{position:relative;font:400 24px/1.05 var(--k-ser,Georgia);font-style:italic;color:rgba(0,0,0,.78)}
.k-post{background:repeating-linear-gradient(transparent 0 47px,rgba(0,0,0,.1) 47px 48px);background-position:0 26px}
[data-tilt]{transition:transform .5s cubic-bezier(.23,1,.32,1)}
@media (prefers-reduced-motion:reduce){.k-flow .col>div,.k-ring svg{animation:none}}
