:root{
  --ink:#1b2a48; --ink2:#3d5480; --mist:#dfe7f2; --paper:#fbfcfe; --pink:#eeb6c3; --blue:#8fb0d8;
  --serif:"Noto Serif SC","Noto Serif CJK SC","Songti SC",serif;
  --latin:"Cormorant Garamond",Georgia,serif;
  --script:"Pinyon Script","Snell Roundhand",cursive;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  --ease:cubic-bezier(.22,.9,.24,1);
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden;background:#cdd9ea}
body{font-family:var(--serif);color:var(--ink);-webkit-font-smoothing:antialiased}
#viewport{position:fixed;inset:0;overflow:hidden;background:linear-gradient(180deg,#c9d7ea,#e9eef6)}
#stage{position:absolute;inset:0;width:100vw;height:100vh;overflow:hidden;
  --padX:clamp(18px,2.4vw,56px); --gap:clamp(14px,2.6vw,64px); --rail:clamp(64px,5.2vw,92px);
  display:grid;grid-template-columns:minmax(0,28fr) minmax(0,42fr) minmax(0,30fr);grid-template-rows:minmax(0,1fr) auto;
  column-gap:var(--gap);padding:0 var(--padX) 0 calc(var(--padX) + var(--rail));
  background:
    radial-gradient(60vw 58vh at 50% 40%,rgba(255,255,255,.75),transparent 70%),
    radial-gradient(48vw 56vh at 90% 90%,rgba(238,182,195,.18),transparent 70%),
    linear-gradient(170deg,#c4d4ea 0%,#d9e3f1 35%,#edf1f7 70%,#e4eaf3 100%)}
kbd{font-family:var(--mono);font-size:11px;background:var(--ink);color:#fff;padding:2px 7px;border-radius:2px;letter-spacing:.5px}

/* atmosphere */
.sky{position:absolute;inset:0;pointer-events:none}
.cloud{position:absolute;border-radius:50%;background:radial-gradient(closest-side,rgba(255,255,255,.95),rgba(255,255,255,0));filter:blur(8px);animation:drift 60s linear infinite alternate}
.c1{width:43vw;height:27vh;left:-8vw;top:58vh}
.c2{width:36vw;height:22vh;left:62vw;top:-4vh;animation-duration:80s}
.c3{width:48vw;height:29vh;left:35vw;top:78vh;animation-duration:90s}
.c4{width:29vw;height:20vh;left:76vw;top:66vh;animation-duration:70s}
@keyframes drift{to{transform:translateX(80px)}}
.contour-bg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.grain{position:absolute;inset:0;pointer-events:none;opacity:.32;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .55  0 0 0 0 .6  0 0 0 0 .7  0 0 0 .35 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>")}

/* left tags */
.tags{position:absolute;left:calc(var(--padX) * .8);top:0;bottom:56px;width:56px;display:flex;flex-direction:column;align-items:center;justify-content:space-evenly;padding:2vh 0 0;z-index:20}
.tags::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:linear-gradient(var(--ink2),rgba(61,84,128,.2))}
.tag{position:relative;width:46px;height:62px;display:grid;place-items:center;cursor:pointer;
  background:rgba(255,255,255,.82);backdrop-filter:blur(6px);border:1px solid rgba(27,42,72,.55);
  clip-path:polygon(50% 0,100% 18%,100% 100%,0 100%,0 18%);border-radius:0 0 8px 8px;
  box-shadow:0 2px 0 rgba(255,255,255,.8) inset;transition:transform .5s var(--ease),background .3s}
.tag::after{content:"";position:absolute;top:7px;left:50%;width:6px;height:6px;margin-left:-3px;border-radius:50%;border:1px solid var(--ink2);background:#e9eef6}
.tag svg{width:22px;height:22px;margin-top:10px;fill:none;stroke:var(--ink);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.tag:hover{transform:rotate(-6deg) translateY(2px)}
.tag.on{background:var(--ink)}
.tag.on svg{stroke:#fff}
.tag-tassel{width:2px;height:60px;background:repeating-linear-gradient(var(--ink2) 0 3px,transparent 3px 6px);margin-top:-20px}

/* title */
.col{position:relative;min-width:0;min-height:0;grid-row:1}
.col-left{grid-column:1;display:flex;flex-direction:column;padding-top:clamp(14px,2.6vh,30px)}
.title-block{position:relative;z-index:6;height:clamp(118px,17vh,150px);flex:none}
.ghost-num{position:absolute;left:0;top:-34px;font-family:var(--latin);font-style:italic;font-weight:300;font-size:clamp(110px,15vh,150px);line-height:1;
  color:transparent;-webkit-text-stroke:1.2px var(--ink);letter-spacing:-6px;opacity:.85;transition:opacity .4s}
.label-chip{position:relative;left:clamp(120px,9.5vw,156px);top:6px;display:inline-block;background:var(--ink);color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:2px;padding:4px 10px}
.title-block h1{position:relative;left:clamp(120px,9.5vw,156px);top:6px;font-weight:900;font-size:clamp(46px,6.6vh,64px);letter-spacing:6px;line-height:1.1}
.title-block h1 span{color:transparent;-webkit-text-stroke:1.3px var(--ink);font-weight:600}
.title-block .sub{position:relative;left:clamp(120px,9.5vw,156px);top:8px;font-family:var(--mono);font-size:10px;letter-spacing:1.2px;color:var(--ink2)}
.title-block .by{position:relative;left:clamp(120px,9.5vw,156px);top:12px;font-family:var(--latin);font-style:italic;font-size:15px;color:var(--ink2)}

/* collage */
.collage{position:relative;flex:1;min-height:0;container-type:size;z-index:4;pointer-events:none;margin-bottom:8px}
.collage>*{position:absolute;pointer-events:auto;transition:transform .8s var(--ease)}
.card-photo{left:10%;top:3%;width:min(62cqw,46cqh);padding:10px 10px 30px;background:#fff;transform:rotate(-5deg);
  box-shadow:0 18px 30px -18px rgba(27,42,72,.45),0 1px 2px rgba(27,42,72,.2)}
.card-photo svg{display:block;width:100%}
.card-photo figcaption{position:absolute;bottom:4px;right:14px;font-family:var(--script);font-size:20px;color:var(--ink2)}
.card-map{left:48%;top:40%;width:min(50cqw,36cqh);padding:7px;background:#fff;transform:rotate(6deg);box-shadow:0 14px 26px -16px rgba(27,42,72,.5)}
.card-map svg{display:block;width:100%}
.tape{position:absolute;width:74px;height:20px;background:rgba(238,182,195,.55);backdrop-filter:blur(1px);
  -webkit-mask:linear-gradient(90deg,transparent 0 3px,#000 3px calc(100% - 3px),transparent 0)}
.tape.t1{top:-9px;left:62px;transform:rotate(-8deg)}
.tape.t2{top:-10px;right:24px;transform:rotate(6deg);background:rgba(143,176,216,.55)}
.sticker{filter:drop-shadow(0 0 0 #fff) drop-shadow(0 6px 10px rgba(27,42,72,.25))}
.sticker svg{display:block;width:100%}
.lattice{left:0;top:43%;width:min(28cqw,19cqh);transform:rotate(-8deg)}
.lattice span{position:absolute;bottom:-18px;left:12px;font-size:11px;letter-spacing:2px;color:var(--ink2);font-family:var(--serif)}
.lattice svg{background:#fff;border-radius:50%;padding:4px}
.ginkgo{left:min(66%,calc(10% + 44cqh));top:0;width:min(21cqw,14cqh);transform:rotate(18deg)}
.ginkgo svg{background:#fff;border-radius:46% 54% 40% 60%;padding:6px}
.postmark{right:2%;bottom:13%;width:min(25cqw,16cqh);transform:rotate(-12deg);opacity:.9}
.grass{left:-2%;bottom:6%;width:min(30cqw,22cqh);opacity:.9}
.quote{left:8%;bottom:1%;width:min(76cqw,300px);padding:clamp(10px,1.6vh,16px) 18px clamp(9px,1.4vh,14px);background:rgba(255,255,255,.88);transform:rotate(-2deg);
  font-size:13px;line-height:1.7;letter-spacing:1px;box-shadow:0 12px 24px -16px rgba(27,42,72,.5)}
.quote .fr{font-family:var(--latin);font-style:italic;font-size:15px;line-height:1.35;margin-top:6px;color:var(--ink2)}

/* center */
.center{grid-column:2;display:flex;flex-direction:column;align-items:center;z-index:8;padding-top:clamp(10px,2.4vh,34px);padding-bottom:10px}
.center>*{pointer-events:auto}
.gate-ring{position:absolute;left:-100px;top:-100px;width:600px;height:600px;border-radius:50%;pointer-events:none;z-index:-1;
  border:30px solid rgba(255,255,255,.62);backdrop-filter:blur(3px);
  box-shadow:0 0 0 1px rgba(27,42,72,.18),inset 0 0 0 1px rgba(27,42,72,.18),0 30px 60px -30px rgba(27,42,72,.35),inset 0 20px 40px -20px rgba(27,42,72,.15)}
.script-head{position:relative;z-index:3;flex:none;text-align:center;font-family:var(--script);font-size:clamp(34px,5.2vh,50px);line-height:1.15;color:var(--ink);
  text-shadow:0 2px 0 #fff;transition:opacity .4s, transform .6s var(--ease)}
.searchbar{position:relative;z-index:3;flex:none;margin-top:clamp(6px,1.6vh,18px);width:min(100%,460px);height:clamp(40px,5.4vh,50px);display:flex;align-items:center;gap:8px;padding:0 10px 0 16px;
  background:rgba(255,255,255,.9);border:1px solid rgba(27,42,72,.35);border-radius:6px;box-shadow:0 10px 24px -14px rgba(27,42,72,.5),0 0 0 4px rgba(255,255,255,.5)}
.searchbar .script{font-family:var(--script);font-size:21px;white-space:nowrap}
.searchbar input{flex:1;min-width:0;border:0;background:none;outline:none;font:13px var(--serif);color:var(--ink);letter-spacing:1px}
.searchbar input::placeholder{color:#7d8aa3}
.pill{font-family:var(--serif);font-size:11px;background:var(--ink);color:#fff;padding:3px 8px;white-space:nowrap}
.searchbar kbd{background:#fff;color:var(--ink);border:1px solid var(--ink)}
.tabs{position:relative;z-index:3;flex:none;margin-top:clamp(6px,1.2vh,14px);display:flex;justify-content:center;gap:clamp(4px,.8vw,14px)}
.tabs button{font:12px var(--serif);color:var(--ink);background:none;border:0;padding:4px 10px;cursor:pointer;letter-spacing:1px;transition:background .3s,color .3s}
.tabs button i{font-style:normal;font-family:var(--mono);font-size:10px;margin-right:3px;opacity:.7}
.tabs button.on{background:var(--ink);color:#fff}
.tabs button.on::after{content:" ■";font-size:8px}

.compass-slot{position:relative;flex:1;min-height:0;width:100%;z-index:1}
.compass{position:absolute;left:50%;top:50%;width:400px;height:400px;margin:-200px 0 0 -200px;transform:scale(var(--k,1));transform-origin:center}
.ring{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
#ringRot{transform-origin:220px 220px;transition:transform 1.1s var(--ease)}
#sectorLabels text{cursor:pointer;transition:fill .3s}
#sectorLabels text.on{font-weight:500}
.diamond{position:absolute;left:50%;top:50%;width:170px;height:170px;margin:-85px 0 0 -85px;transform:rotate(45deg);
  border:1px solid rgba(27,42,72,.7);outline:1px solid rgba(27,42,72,.35);outline-offset:6px;
  background:linear-gradient(135deg,rgba(255,255,255,.95),rgba(214,226,242,.85));box-shadow:0 20px 40px -20px rgba(27,42,72,.6);overflow:hidden;transition:transform 1.1s var(--ease)}
.diamond-in{position:absolute;inset:-30%;transform:rotate(-45deg)}
.dia-contour{position:absolute;inset:0;width:100%;height:100%}
.dia-word{position:absolute;left:0;right:0;top:174px;text-align:center;font-family:var(--script);font-size:38px;color:var(--ink);text-shadow:0 1px 0 #fff;transition:opacity .35s,transform .5s var(--ease)}
.dia-chip{position:absolute;left:50%;top:128px;transform:translateX(-50%);font-family:var(--mono);font-size:9.5px;letter-spacing:1px;padding:2px 7px;background:#fff;border:1px solid var(--ink);white-space:nowrap}
.recent{position:absolute;left:112px;top:252px;width:178px;background:#fff;border:1px solid var(--ink);box-shadow:3px 3px 0 rgba(27,42,72,.15);transition:opacity .35s,transform .5s var(--ease)}
.recent b,.recent span{font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:1px}
.recent b{display:inline-block;background:var(--ink);color:#fff;padding:2px 6px}
.recent span{float:right;padding:2px 6px}
.recent p{font-size:11.5px;padding:5px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.big-num{position:absolute;left:-30px;top:250px;font-family:var(--latin);font-style:italic;font-weight:300;font-size:130px;line-height:1;color:transparent;-webkit-text-stroke:1.2px var(--ink);transition:opacity .35s,transform .6s var(--ease)}
.pager{position:absolute;right:-34px;top:236px;font-family:var(--mono);font-size:11px;letter-spacing:1px}
.side-label{display:none;font-family:var(--mono);font-size:10px;letter-spacing:2px;color:var(--ink2)}
.rot-btn{position:absolute;top:184px;width:30px;height:30px;border-radius:50%;border:1px solid var(--ink);background:rgba(255,255,255,.85);color:var(--ink);font:18px/1 var(--latin);cursor:pointer;transition:background .3s,color .3s}
.rot-btn:hover{background:var(--ink);color:#fff}
.rot-btn.prev{left:-56px}.rot-btn.next{right:-56px}

.detail{position:relative;z-index:3;flex:none;width:min(100%,540px);background:rgba(255,255,255,.94);border:1px solid rgba(27,42,72,.5);box-shadow:0 18px 30px -20px rgba(27,42,72,.6)}
.detail header{background:var(--ink);color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:2px;padding:6px 10px}
.detail header b{display:inline-block;background:var(--pink);color:var(--ink);padding:0 5px;margin-right:6px}
.detail header span{float:right}
.d-meta{display:flex;align-items:center;gap:8px;padding:10px 14px 0;font-family:var(--mono);font-size:10.5px;color:var(--ink2)}
.chip{font-family:var(--serif);font-size:11px;padding:2px 7px;border:1px solid var(--ink)}
.chip.dark{background:var(--ink);color:#fff}
.d-meta .enter{margin-left:auto;font-family:var(--serif);color:var(--ink)}
.detail h3{font-size:17px;font-weight:600;padding:8px 14px 4px;letter-spacing:1px}
.detail p{font-size:12.5px;line-height:1.75;padding:0 14px 14px;color:#33415e;letter-spacing:.5px}
.detail.swap h3,.detail.swap p{animation:fadeUp .5s var(--ease)}

/* right */
.right{grid-column:3;z-index:9;display:flex;flex-direction:column;padding-top:clamp(14px,2.4vh,30px);padding-bottom:10px}
.pavilion-bg{position:absolute;left:0;top:7vh;width:min(60%,300px);pointer-events:none}
.right-head{position:relative;flex:none;align-self:flex-end;text-align:right}
.date-row{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.big-date{font-family:var(--latin);font-weight:500;font-size:clamp(36px,3.2vw,60px);letter-spacing:1px;line-height:1}
.dow{font-family:var(--mono);font-size:11px;background:var(--ink);color:#fff;padding:3px 6px}
.date-sub{margin-top:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:2px;color:var(--ink2)}
.clock{border:1px solid var(--ink);padding:1px 6px;margin-left:8px;color:var(--ink)}
.char-row{position:relative;flex:none;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-top:-1vh}
.huge-char{font-size:clamp(110px,19vh,230px);font-weight:900;line-height:1;color:var(--ink);
  text-shadow:6px 6px 0 rgba(255,255,255,.7);transition:opacity .35s,transform .6s var(--ease),filter .35s}
.huge-char.out{opacity:0;transform:translateY(-14px);filter:blur(6px)}
.char-note{text-align:right;padding-bottom:1.4vh;font-family:var(--latin);font-size:16px;line-height:1.3;font-weight:500}
.char-note i{font-size:18px}
.results{position:relative;margin-top:clamp(10px,2.2vh,28px);width:100%;max-height:100%;min-height:0;background:rgba(255,255,255,.9);border:1px solid rgba(27,42,72,.45);
  box-shadow:0 20px 40px -24px rgba(27,42,72,.6);outline:1px solid rgba(27,42,72,.2);outline-offset:5px}
.results header{background:var(--ink);color:#fff;font-family:var(--mono);font-size:12px;letter-spacing:2px;padding:7px 10px}
.results header b{display:inline-block;background:var(--pink);color:var(--ink);padding:0 5px;margin-right:6px}
.results header span{font-family:var(--serif)}
.res-sub{font-family:var(--mono);font-size:10.5px;letter-spacing:1px;color:var(--ink2);padding:10px 14px 6px;border-bottom:1px dashed rgba(27,42,72,.3)}
.res-sub span:first-child{font-family:var(--latin);font-size:22px;color:var(--ink)}
.res-sub .hint{float:right;margin-top:8px}
#list{list-style:none;padding:4px 0}
#list li{position:relative;display:grid;grid-template-columns:34px 1fr auto;gap:12px;align-items:center;padding:clamp(7px,1.45vh,16px) 16px;cursor:pointer;border-bottom:1px solid rgba(27,42,72,.08);
  transition:background .3s;animation:slideIn .55s var(--ease) both}
#list li .n{font-family:var(--mono);font-size:10.5px;border:1px solid var(--ink);text-align:center;padding:2px 0}
#list li h4{font-size:14px;font-weight:600;letter-spacing:.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#list li small{display:block;font-family:var(--mono);font-size:9.5px;color:#7a88a3;letter-spacing:.5px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#list li time{font-family:var(--mono);font-size:10.5px;text-align:right;line-height:1.3}
#list li time em{display:block;font-style:normal;color:#7a88a3;font-size:9.5px}
#list li.on{background:linear-gradient(90deg,rgba(143,176,216,.25),rgba(255,255,255,0))}
#list li.on::before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;background:var(--ink)}
#list li.on .n{background:var(--ink);color:#fff}
#list li.on::after{content:"";position:absolute;right:-6px;top:50%;width:9px;height:9px;margin-top:-5px;transform:rotate(45deg);background:var(--pink);border:1px solid var(--ink)}
#list li:hover{background:rgba(143,176,216,.14)}
.empty{padding:20px 14px;font-size:13px;color:var(--ink2)}

/* keybar */
.keybar{grid-column:1 / -1;grid-row:2;position:relative;display:flex;align-items:center;gap:clamp(12px,1.6vw,28px);font-size:12px;letter-spacing:1px;z-index:12;
  border-top:1px solid rgba(27,42,72,.35);padding:10px 0 16px;white-space:nowrap}
.keybar kbd{margin-right:5px}
.right-meta{margin-left:auto;font-family:var(--mono);font-size:10.5px;letter-spacing:2px;color:var(--ink2)}
.barcode{width:90px;height:20px;background:repeating-linear-gradient(90deg,var(--ink) 0 1px,transparent 1px 3px,var(--ink) 3px 5px,transparent 5px 6px,var(--ink) 6px 7px,transparent 7px 10px)}

/* petals */
.petals{position:absolute;inset:0;pointer-events:none;z-index:15}
.petal{position:absolute;top:-30px;width:12px;height:9px;background:var(--pink);border-radius:80% 0 80% 0;opacity:.75;animation:fall linear infinite}
.petal.b{background:#c6d8ef}
@keyframes fall{0%{transform:translate(0,0) rotate(0)}100%{transform:translate(-160px,110vh) rotate(540deg)}}

.toast{position:absolute;left:50%;top:22px;transform:translate(-50%,-80px);background:var(--ink);color:#fff;font-size:13px;letter-spacing:1px;padding:10px 18px;z-index:30;transition:transform .5s var(--ease)}
.toast.show{transform:translate(-50%,0)}

/* swap animations */
.fade{opacity:0!important;transform:translateY(8px)!important}
@keyframes slideIn{from{opacity:0;transform:translateX(24px)}to{opacity:1;transform:none}}
@keyframes fadeUp{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* intro */
body.intro .collage>*{opacity:0;translate:0 -30px}
.collage>*{transition:transform .8s var(--ease),opacity .9s var(--ease),translate .9s var(--ease)}
body.intro .gate-ring{opacity:0;scale:.92}
.gate-ring{transition:opacity 1.2s var(--ease),scale 1.4s var(--ease)}

/* v3 fluid — narrow windows */
@media (max-width:1100px){
  #stage{grid-template-columns:minmax(0,26fr) minmax(0,44fr) minmax(0,30fr);--gap:14px}
  .keybar span:nth-child(3),.barcode{display:none}
  .char-note{font-size:13px}
}
@media (max-height:640px){
  .quote .fr,.grass{display:none}
  .title-block .by{display:none}
}
#list li>div{min-width:0}
.title-block .sub{white-space:nowrap}
@media (max-width:1240px){
  .title-block .sub{font-size:8.5px;letter-spacing:.6px}
  .title-block .by{font-size:13px}
  .quote{font-size:12px}
  .quote .fr{font-size:13px}
}

/* ================= v3 · hiver ================= */
:root{--frost:rgba(255,255,255,.92);--frostline:rgba(176,198,226,.9);--cold:#b9c9de}
#viewport{background:linear-gradient(180deg,#c3d0e2,#eef2f7)}
#stage{background:
  radial-gradient(60vw 58vh at 50% 40%,rgba(255,255,255,.82),transparent 70%),
  radial-gradient(46vw 50vh at 88% 92%,rgba(214,228,246,.55),transparent 70%),
  radial-gradient(40vw 40vh at 8% 96%,rgba(255,255,255,.7),transparent 70%),
  linear-gradient(170deg,#bccbe0 0%,#d3deec 34%,#eef2f8 70%,#e2e9f2 100%)}
/* snow drift along the bottom */
#stage::after{content:"";position:absolute;left:0;right:0;bottom:0;height:9vh;pointer-events:none;z-index:2;
  background:radial-gradient(60% 100% at 20% 100%,rgba(255,255,255,.85),transparent 70%),radial-gradient(50% 90% at 78% 100%,rgba(255,255,255,.75),transparent 70%)}
.cloud{background:radial-gradient(closest-side,rgba(255,255,255,.98),rgba(240,246,252,0))}
/* frosted cards */
.card-photo,.card-map,.quote,.detail,.results,.searchbar,.recent{
  box-shadow:0 0 0 1px var(--frost) inset,0 0 0 3px rgba(255,255,255,.55),0 18px 34px -20px rgba(70,100,150,.55)!important}
.detail,.results{background:rgba(250,252,255,.9)}
.results{outline-color:var(--frostline)}
.card-photo::before,.quote::before,.detail::before{content:"";position:absolute;left:6%;right:6%;top:-4px;height:7px;border-radius:6px;
  background:linear-gradient(#fff,rgba(255,255,255,.6));box-shadow:0 1px 2px rgba(120,150,190,.35);pointer-events:none;z-index:2}
.detail{position:relative}
.tag{background:rgba(248,251,255,.86);border-color:rgba(27,42,72,.5)}
.tag:not(.on)::before{content:"";position:absolute;left:0;right:0;top:0;height:12px;background:linear-gradient(rgba(255,255,255,.95),transparent);pointer-events:none}
.gate-ring{border-color:rgba(255,255,255,.72)}
.diamond{background:linear-gradient(135deg,#fff,rgba(220,232,246,.9))}
.hiver-tag{font-family:var(--mono);font-size:10.5px;letter-spacing:2px;padding:3px 6px;border:1px solid var(--ink);background:rgba(255,255,255,.85);color:var(--ink)}
.pine svg{background:#fff;border-radius:44% 56% 46% 54%;padding:6px}
.huge-char{text-shadow:6px 6px 0 rgba(255,255,255,.85),0 0 24px rgba(255,255,255,.6)}
/* snowfall */
.snow{position:absolute;inset:0;pointer-events:none;z-index:16;overflow:hidden}
.flake{position:absolute;top:-12px;border-radius:50%;background:#fff;box-shadow:0 0 5px rgba(255,255,255,.95),0 0 0 .6px rgba(110,140,185,.55),0 1px 3px rgba(80,110,160,.35);
  animation:snowfall linear infinite,sway ease-in-out infinite alternate}
.flake.frost{border-radius:1px;transform:rotate(45deg);background:rgba(255,255,255,.9)}
@keyframes snowfall{to{top:104vh}}
@keyframes sway{from{translate:-14px 0}to{translate:14px 0}}
@media (prefers-reduced-motion: reduce){.snow,.petals{display:none}}
