/* self-hosted, generated by tools/fonts.py */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/f-47c591e091b7.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/f-06863ab0cdf6.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/f-a71980257c20.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/f-f2edea8e9770.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/f-7146e4ffb434.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/f-3c951162543b.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/f-e2e017e1ca02.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Spectral';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/f-e4fff146a14c.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: 'Spectral';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/f-55fbf0af9b87.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Spectral';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/f-c42e70ffc282.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Spectral';
  font-style: italic;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/f-1dceaa93af8b.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Spectral';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/f-55cf5206a4c2.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: 'Spectral';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/f-75cb95256827.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Spectral';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/f-74fffa2ed698.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Spectral';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/f-cc148f7b2b0f.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/f-739b4c6f5e1d.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/f-609e7186c8e8.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/f-e05b1ec3388a.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(/assets/fonts/f-843c8034e312.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/f-15564d7eb23a.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/f-aef3b092824e.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/f-1b5044945672.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/f-c68b06f2e732.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/f-2f32fbc89cca.woff2) format('woff2');
  unicode-range: U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/f-37413e8581ee.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/f-260738f41ae7.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Spectral';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/f-c4e0a00d3084.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Noto Serif SC';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/fonts/cjk-3e77af1382bb.woff2) format('woff2');
  unicode-range: U+4e00, U+4e03, U+4e09, U+4e5d, U+4e8c, U+4e94, U+516b, U+516d, U+5341, U+56db;
}

/* GEYANORA — The Pinky Ring House. Design from prototype A (chosen 02.11.2026). Fonts: fonts.css is prepended at build. */

:root{
  --ease:cubic-bezier(.4,0,.2,1);--ease-out:cubic-bezier(.16,1,.3,1);
  --bg:#F5EED3;--fg:#16120F;--muted:#6a5a4e;--line:rgba(22,18,15,.16);--surface:#FBF7EC;
  --accent:#BB2000;--accent-fg:#F5EED3;--chart:#D5D300;
  --serif:"Spectral",Georgia,serif;--sans:"Plus Jakarta Sans",system-ui,sans-serif;--cjk:"Noto Serif SC","Songti SC","STSong",serif;
  --pad:clamp(16px,4vw,56px);--max:1280px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--fg);font:16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;overflow-x:hidden}
body.ge-lock{overflow:hidden}
img,video{display:block;max-width:100%;height:auto}
picture{display:contents}
picture>source{display:none}  /* with display:contents a <source> would take a grid cell */
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
.num,.cjk{font-family:var(--cjk);font-weight:500}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}

/* typography primitives */
.g-lbl{display:inline-block;font:600 11px/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--accent)}
.g-h1{font:300 clamp(40px,6vw,84px)/1.02 var(--serif);letter-spacing:-.015em;margin:14px 0 22px}
.g-h2{font:300 clamp(32px,4.4vw,58px)/1.06 var(--serif);letter-spacing:-.01em;margin:12px 0 22px}
.g-h3{font:400 clamp(22px,2.4vw,30px)/1.15 var(--serif);margin:8px 0 12px}
.g-lead{font:300 clamp(19px,1.8vw,24px)/1.45 var(--serif)}
.g-big{font:400 clamp(24px,2.6vw,36px)/1.2 var(--serif);color:var(--accent);margin-top:14px}
.g-small{font-size:13px;line-height:1.55;color:var(--muted)}
.g-link{font:500 12px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;background:linear-gradient(currentColor,currentColor) 0 100%/100% 1px no-repeat;padding-bottom:5px;cursor:pointer}
.g-link:hover{animation:ge-ul .9s var(--ease) both}
.g-row{display:flex;flex-wrap:wrap;gap:12px 18px;align-items:center;margin-top:28px}
.g-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:var(--accent);color:var(--accent-fg);font:500 12px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;text-decoration:none;padding:18px 26px;border:1px solid var(--accent);cursor:pointer;background-image:linear-gradient(var(--fill),var(--fill));background-repeat:no-repeat;background-size:0 100%;--fill:#8E1A00;transition:background-size .7s var(--ease-out),color .45s var(--ease),border-color .45s var(--ease)}
.g-btn:hover{background-size:100% 100%}
.g-btn.ghost{background-color:transparent;color:var(--fg);border-color:currentColor;--fill:var(--fg)}
.g-btn.ghost:hover{color:var(--bg);border-color:var(--fg)}
.g-btn[aria-disabled="true"]{opacity:.4;background-size:0 100%}

/* shared pages layout */
.g-page{max-width:var(--max);margin:0 auto;padding:clamp(48px,7vw,96px) var(--pad)}
.g-text{display:grid;gap:clamp(28px,5vw,72px);grid-template-columns:1fr}
.g-text.has-img{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:start}
.g-text-img{position:sticky;top:96px}
.g-text-img img{width:100%;aspect-ratio:4/5;object-fit:cover}
.g-text-body{max-width:720px}
.g-text-body p{margin:0 0 14px;font-size:17px}
.g-sign{font:italic 300 22px/1.3 var(--serif)!important;color:var(--muted);margin-top:28px!important}
@media(max-width:820px){.g-text.has-img{grid-template-columns:1fr}.g-text-img{position:static}}

.g-form{display:flex;flex-direction:column;gap:14px}
.g-field{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted)}
.g-field span{letter-spacing:.06em}
.g-field input,.g-field select,.g-field textarea{border:0;border-bottom:1px solid var(--line);background:transparent;padding:10px 0;font-size:16px;color:var(--fg);outline:none;border-radius:0}
.g-field input:focus,.g-field select:focus,.g-field textarea:focus{border-bottom-color:var(--accent)}
.g-order{max-width:var(--max);margin:0 auto;padding:clamp(40px,6vw,88px) var(--pad);display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:start}
.g-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.g-chip{border:1px solid var(--line);border-radius:999px;padding:10px 16px;font-size:14px}
.g-chip.on{background:var(--fg);color:var(--bg);border-color:var(--fg)}
.g-sec{margin:34px 0 8px}
.g-fields{display:grid;grid-template-columns:1fr 1fr;gap:18px 28px}
.g-field.wide{grid-column:1/-1}
.g-fitlink a{font-size:14px;color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent);align-self:flex-start;margin-top:12px}
.g-order-side{position:sticky;top:96px;display:flex;flex-direction:column;gap:12px;padding:28px;background:var(--surface)}
.g-order-side img{width:100%;aspect-ratio:4/3;object-fit:cover}
@media(max-width:820px){.g-order{grid-template-columns:1fr}.g-fields{grid-template-columns:1fr}.g-order-side{position:static}}

.g-methods{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:28px 0}
.g-method{border:1px solid var(--line);padding:26px 16px;font:400 20px/1 var(--serif);text-align:center}
.g-method.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}
@media(max-width:600px){.g-methods{grid-template-columns:1fr}}

.g-fit{display:flex;flex-direction:column;gap:42px}
.g-types{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:16px}
.g-type{display:grid;grid-template-columns:64px 1fr;gap:16px;padding:20px;border:1px solid var(--line)}
.g-type b{font:400 20px/1.2 var(--serif)}
.g-type p,.g-ways p{font-size:14px;color:var(--muted);margin-top:6px}
.g-finger path{fill:none;stroke:currentColor;stroke-width:1.4}
.g-finger rect{fill:var(--accent)}
.g-ways{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:16px}
.g-ways div{border-top:1px solid var(--line);padding-top:14px}
.g-ways b{font:400 20px/1.2 var(--serif)}
@media(max-width:820px){.g-types,.g-ways{grid-template-columns:1fr}}

.g-quiz{max-width:960px;text-align:center}
.g-opts{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:32px}
.g-opts:not(.two){grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.g-opt{border:1px solid var(--line);padding:28px 22px;text-align:left;display:flex;flex-direction:column;gap:8px;transition:border-color .2s}
.g-opt:hover{border-color:var(--fg)}
.g-opt b{font:400 22px/1.2 var(--serif)}
.g-opt span{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.g-prog{display:flex;justify-content:center;gap:8px;margin-top:40px}
.g-prog i{position:relative;overflow:hidden;width:48px;height:3px;background:var(--line)}
.g-prog i::after{content:"";position:absolute;inset:0;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .8s var(--ease-out)}
.g-prog i.on::after{transform:none}
.g-result{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:40px;text-align:left;align-items:center;margin-top:24px}
.g-result img{width:100%;aspect-ratio:3/4;object-fit:cover}
.g-result .g-link{margin-top:22px;display:inline-block}
@media(max-width:700px){.g-opts,.g-result{grid-template-columns:1fr}}

.g-faq{display:grid;grid-template-columns:minmax(0,.6fr) minmax(0,1.6fr);gap:clamp(28px,5vw,72px);align-items:start}
.g-faq-side{position:sticky;top:96px}
.g-faq-side ul{list-style:none;font-size:14px;line-height:2.1}
.g-faq-side a{text-decoration:none;color:var(--muted)}
.g-faq-side a:hover{color:var(--accent)}
.g-faq-main .g-h3{margin:40px 0 8px;scroll-margin-top:96px}
.g-faq-main .g-h3:first-child{margin-top:0}
.ge-qa{border-bottom:1px solid var(--line)}
.g-q{list-style:none;cursor:pointer;width:100%;display:flex;justify-content:space-between;gap:20px;text-align:left;padding:18px 0;font:400 20px/1.3 var(--serif)}
.g-q i{font-style:normal;color:var(--muted);transition:transform .2s}
.g-q::-webkit-details-marker{display:none}
.ge-qa[open] .g-q i{transform:rotate(45deg)}
.g-a{padding:0 0 20px;font-size:15px;color:var(--muted);max-width:680px}
@media(max-width:820px){.g-faq{grid-template-columns:1fr}.g-faq-side{position:static}}

.g-why{display:grid;grid-template-columns:minmax(0,.7fr) minmax(0,1.3fr);gap:clamp(28px,5vw,72px);align-items:start}
.g-why-nav{position:sticky;top:96px}
.g-why-nav ol{list-style:none;margin-top:14px;font-size:14px;line-height:2}
.g-why-nav a{text-decoration:none;color:var(--muted)}
.g-why-nav li.on a{color:var(--fg);font-weight:600}
.g-why-text p{font-size:18px;margin-bottom:14px;max-width:680px}
.g-why-text .g-row{justify-content:space-between;border-top:1px solid var(--line);padding-top:20px;margin-top:40px}
@media(max-width:820px){.g-why{grid-template-columns:1fr}.g-why-nav{position:static}.g-why-nav ol{columns:2}}

.g-wl{display:flex;max-width:420px}
.g-wl input{flex:1;min-width:0;border:1px solid currentColor;border-right:0;background:transparent;padding:14px 16px;font-size:15px;outline:none}
.g-wl .g-btn{padding:14px 20px}

/* modal + toast */
#ge-modal{position:fixed;inset:0;z-index:100;display:none}
#ge-modal.on{display:block}
.ge-modal-bg{position:absolute;inset:0;background:rgba(10,8,6,.55)}
.ge-modal{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(560px,calc(100vw - 32px));max-height:calc(100vh - 48px);overflow:auto;background:var(--bg);color:var(--fg);padding:clamp(24px,4vw,44px)}
.ge-modal-fit{width:min(1040px,calc(100vw - 32px))}
.ge-x{position:absolute;top:10px;right:14px;font-size:30px;line-height:1;color:var(--muted)}
.g-lang{text-align:center;display:flex;flex-direction:column;align-items:center;gap:18px;padding:18px 0}
.g-lang-logo{font:400 88px/1 var(--serif);color:var(--accent)}
.g-lang-b{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
#ge-toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--fg);color:var(--bg);padding:14px 20px;font-size:14px;max-width:calc(100vw - 32px);opacity:0;pointer-events:none;transition:.3s;z-index:200}
#ge-toast.on{opacity:1;transform:translate(-50%,0)}
[data-lang].on{text-decoration:underline;text-underline-offset:4px}

/* "Dear me," letter (shared) */
.letter{background:var(--surface);color:var(--fg);padding:clamp(28px,4vw,52px);box-shadow:0 24px 50px -32px rgba(60,30,10,.4);text-align:left}
.letter .dear{font:italic 300 clamp(34px,3.6vw,46px)/1 var(--serif);color:var(--accent)}
.letter ol{list-style:none;margin:24px 0 18px}
.letter li{font:italic 300 clamp(19px,1.9vw,25px)/1.35 var(--serif);padding:14px 0;border-bottom:1px solid var(--line)}
.letter .me{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;font:italic 300 20px/1 var(--serif);color:var(--muted)}
.letter .me small{font:600 10px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;font-style:normal}

/* Philosophy page (shared layout; concepts recolor sections through .red / .ch / .ink / .soft) */
.ph-sec{padding:clamp(56px,8vw,112px) 0;border-top:1px solid var(--line)}
.ph-sec:first-child{border-top:0}
.ph-sec.red{background:var(--accent);color:#F5EED3;--fg:#F5EED3;--muted:rgba(245,238,211,.8);--line:rgba(245,238,211,.3);border:0}
.ph-sec.red .g-lbl,.ph-sec.ink .g-lbl{color:var(--chart)}
.ph-sec.ink{background:#16120F;color:#F5EED3;--fg:#F5EED3;--muted:rgba(245,238,211,.75);--line:rgba(245,238,211,.22);border:0}
.ph-sec.ch{background:var(--chart);color:#16120F;--fg:#16120F;--muted:rgba(22,18,15,.7);--line:rgba(22,18,15,.25);border:0}
.ph-sec.ch .g-lbl{color:var(--accent)}
.ph-sec.soft{background:var(--surface);border:0}
.ph-hero .g-h1{max-width:1080px}
.ph-hero .g-h1 em{font-style:normal;color:var(--accent)}
.ph-sec.red .g-h1 em{color:var(--chart)}
.ph-hero .g-lead{max-width:720px}
.ph-two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:clamp(28px,5vw,80px);align-items:center}
.ph-two.rev{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}
.ph-two p{font-size:18px;line-height:1.6;margin-top:14px;max-width:620px;color:var(--muted)}
.ph-img{margin:0;overflow:hidden}
.ph-img img{width:100%;aspect-ratio:4/5;object-fit:cover}
.ph-trophy{font:italic 300 clamp(22px,2.4vw,32px)/1.25 var(--serif)!important;color:var(--accent)!important;margin-top:26px!important}
.ph-sec.red .ph-trophy{color:var(--chart)!important}
.ph-pillars{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:20px}
.ph-pillars div{padding:26px 18px;border-right:1px solid var(--line)}
.ph-pillars div:last-child{border-right:0}
.ph-pillars dt{font:600 11px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:12px}
.ph-pillars dd{font:400 clamp(22px,2.4vw,30px)/1.1 var(--serif)}
.ph-values{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:32px;border-top:1px solid var(--line)}
.ph-values li{padding:28px 24px 28px 0;border-bottom:1px solid var(--line)}
.ph-values .ph-n,.ph-values .num{display:block;font:500 13px/1 var(--sans);letter-spacing:.14em;color:var(--accent);margin-bottom:14px}
.ph-values .num{font-size:22px;font-family:var(--cjk)}
.ph-values h3{font:400 clamp(24px,2.4vw,32px)/1.1 var(--serif);margin-bottom:10px}
.ph-values p{font-size:16px;color:var(--muted);max-width:320px}
.ph-mv{display:grid;grid-template-columns:1fr 1fr;gap:clamp(28px,5vw,80px)}
.ph-mv p{font:300 clamp(24px,2.8vw,38px)/1.2 var(--serif);margin-top:14px}
.ph-end .g-h2{margin-top:12px}
@media(max-width:900px){.ph-values{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.ph-two,.ph-two.rev,.ph-mv{grid-template-columns:1fr}.ph-pillars{grid-template-columns:repeat(2,1fr)}.ph-pillars div:nth-child(2){border-right:0}.ph-pillars div:nth-child(-n+2){border-bottom:1px solid var(--line)}}
@media(max-width:520px){.ph-values{grid-template-columns:1fr}}

/* The Pinky Ring House: calm jewelry house, "a pinky promise with yourself". */
:root{--bg:#F5EED3;--fg:#16120F;--muted:#6a5a4e;--line:rgba(22,18,15,.16);--surface:#FBF7EC;--accent:#BB2000;--accent-fg:#F5EED3}

/* header */
.hd{position:sticky;top:0;z-index:50;background:rgba(245,238,211,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line);view-transition-name:hd;transition:transform .55s var(--ease)}
.hd.up{transform:translateY(-101%)}
.hd .wrap{display:flex;align-items:center;justify-content:space-between;height:68px;gap:24px}
.hd .logo{font:400 30px/1 var(--serif);color:var(--accent);text-decoration:none}
.hd nav{display:flex;gap:26px;font:500 11px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase}
.hd nav a,.hd .r a{text-decoration:none}
.hd nav a{background:linear-gradient(currentColor,currentColor) 0 100%/0 1px no-repeat;padding-bottom:5px;transition:background-size .6s var(--ease-out)}
.hd nav a:hover{background-size:100% 1px}
.hd nav a.on{color:var(--accent);border-bottom:1px solid var(--accent);padding-bottom:5px}
.hd .r{display:flex;gap:18px;align-items:center;font:500 11px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase}
.hd .lsw a,.hd .lsw button{text-decoration:none;letter-spacing:.16em;text-transform:uppercase;font-size:11px;font-weight:500}
.hd .burger{display:none;font-size:22px}
@media(max-width:960px){
  .hd nav{display:none;position:absolute;top:68px;left:0;right:0;flex-direction:column;gap:0;background:var(--bg);border-bottom:1px solid var(--line)}
  .hd nav a{padding:18px var(--pad);border-top:1px solid var(--line)}
  .hd.open nav{display:flex}
  .hd .burger{display:block}
  .hd .r .fitl{display:none}
}

/* hero */
.hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(28px,5vw,80px);align-items:center;padding-top:clamp(40px,6vw,88px);padding-bottom:clamp(40px,6vw,88px)}
.kick{display:block;font:italic 300 clamp(18px,1.8vw,24px)/1.2 var(--serif);color:var(--accent);margin-bottom:12px}
.hero h1{font:300 clamp(48px,7.4vw,108px)/.98 var(--serif);letter-spacing:-.02em;margin:18px 0 22px}
.hero h1 b{font-weight:400;color:var(--accent)}
.hero .sub{font:300 clamp(20px,2vw,28px)/1.35 var(--serif);max-width:520px}
.hero .motto{font:italic 300 15px/1.4 var(--serif);color:var(--muted);max-width:200px}
.hero .hfr{overflow:hidden}
.hero figure img{width:100%;aspect-ratio:4/5;object-fit:cover;animation:ge-kb 2.8s var(--ease-out) both}
.hero figcaption{display:flex;justify-content:space-between;gap:12px;margin-top:12px;font:500 11px/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.strip .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding-top:16px;padding-bottom:16px;font:500 11px/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
@media(max-width:820px){.hero{grid-template-columns:1fr}.hero figure{order:-1}}

/* sections */
.sec{padding:clamp(56px,8vw,120px) 0}
.sec.red{background:var(--accent);color:var(--bg)}
.sec.red .g-lbl{color:var(--chart)}
.sec.blk{background:var(--fg);color:var(--bg)}
.sec.blk .g-lbl{color:var(--chart)}
.sec h2{font:300 clamp(34px,5vw,68px)/1.04 var(--serif);letter-spacing:-.015em;margin:12px 0 0}
.sec h2 b{font-weight:400;color:var(--accent)}
.sec.red h2 b{color:var(--bg)}
.shead{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:clamp(28px,4vw,48px)}

.mark{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.mcard{border:1px solid color-mix(in srgb,currentColor 35%,transparent);padding:22px;display:flex;flex-direction:column;gap:14px;text-decoration:none;transition:background .25s,color .25s}
.mcard:hover{background:var(--bg);color:var(--fg)}
.mcard:hover .n{color:var(--accent)}
.mcard .n{font-size:40px;line-height:1;color:var(--chart)}
.mcard .im{width:64%;aspect-ratio:1;border-radius:50%;overflow:hidden;align-self:center;background:#F2F0EB}
.mcard .im img{width:100%;height:100%;object-fit:cover}
.mcard b{font:400 24px/1.15 var(--serif)}
.mcard small{font:600 10px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;opacity:.75}
.markbot{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;border-top:1px solid color-mix(in srgb,currentColor 30%,transparent);margin-top:28px;padding-top:20px;font-size:15px}
.markbot a{color:var(--chart);text-decoration:none}
@media(max-width:900px){.mark{grid-template-columns:repeat(2,1fr)}}

.ev{display:grid;grid-template-columns:repeat(4,1fr);gap:28px}
.ev .dot{display:block;width:18px;height:24px;border-radius:50% 50% 50% 50%/62% 62% 38% 38%;margin-bottom:16px;border:1px solid var(--line)}
.ev h3{font:400 24px/1.15 var(--serif);margin-bottom:10px}
.ev h3 .num{color:var(--accent);margin-right:8px}
.ev p{font-size:15px;color:var(--muted)}
.stl{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:40px;padding-top:20px;border-top:1px solid var(--line);font-size:15px}
.stl b{font:400 22px/1 var(--serif)}
.stl a{color:var(--accent);text-decoration:none;margin-left:16px}
@media(max-width:900px){.ev{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.ev,.mark{grid-template-columns:1fr}}

.whyp{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:clamp(28px,5vw,80px);align-items:center}
.whyp p{font:300 clamp(18px,1.8vw,23px)/1.5 var(--serif);margin-top:18px;max-width:640px}
.whyp .q{font:400 clamp(24px,3vw,40px)/1.15 var(--serif);color:var(--chart);margin-top:28px}
.whyp .g-link{display:inline-block;margin-top:30px;color:var(--bg)}
@media(max-width:820px){.whyp{grid-template-columns:1fr}.whyp>img{max-width:260px}}

.vows{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(28px,5vw,80px);align-items:center}
.vows figure>a{display:block;overflow:hidden}
.vows figure img{width:100%;aspect-ratio:4/4.4;object-fit:cover;transition:transform 1.6s var(--ease-out)}
.vows figure>a:hover img{transform:scale(1.03)}
.vows figcaption{margin-top:12px;font:italic 300 16px/1.4 var(--serif);color:var(--muted)}
@media(max-width:820px){.vows{grid-template-columns:1fr}}

.rit{display:grid;grid-template-columns:repeat(4,1fr);gap:20px}
.rit figure>a{display:block}
.rit figure>a{overflow:hidden;margin-bottom:14px}
.rit img{width:100%;aspect-ratio:4/5;object-fit:cover;transition:transform 1.6s var(--ease-out)}
.rit figure>a:hover img{transform:scale(1.03)}
.rit b{display:block;font:400 22px/1.15 var(--serif)}
.rit b .num{color:var(--accent);margin-right:8px}
.rit span{font-size:14px;color:var(--muted)}
.unbox{display:flex;justify-content:space-between;gap:40px;align-items:flex-end;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:40px;padding-top:28px}
.unbox q{quotes:none;font:italic 300 clamp(22px,2.6vw,34px)/1.25 var(--serif);color:var(--accent);max-width:720px}
.unbox span{font-size:14px;color:var(--muted);max-width:340px}
@media(max-width:900px){.rit{grid-template-columns:repeat(2,1fr)}}

.self{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:clamp(28px,5vw,80px)}
.self h2{color:var(--chart)}
.self p{color:rgba(245,238,211,.8);margin-top:22px;max-width:520px}
.facts{display:grid;grid-template-columns:1fr 1fr;gap:20px 28px;align-content:center}
.facts div{border-top:1px solid rgba(245,238,211,.25);padding-top:14px}
.facts dt{display:block;font:600 10px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--chart);margin-bottom:8px}
@media(max-width:820px){.self{grid-template-columns:1fr}}

.fd{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);gap:clamp(28px,5vw,80px);align-items:center}
.fd .fdi{overflow:hidden}
.fd img{width:100%;aspect-ratio:4/4.6;object-fit:cover}
.fd blockquote{font:300 clamp(26px,3.2vw,44px)/1.2 var(--serif);margin-top:16px}
.fd blockquote b{font-weight:400;color:var(--accent)}
.fd p{color:var(--muted);margin-top:20px;max-width:560px}
@media(max-width:820px){.fd{grid-template-columns:1fr}}

/* collections */
.shop-top{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap;margin-bottom:clamp(28px,4vw,48px)}
.shop-top .sh1{font:300 clamp(44px,6vw,84px)/1 var(--serif)}
.shop-top .kept{font:italic 300 20px/1.3 var(--serif);color:var(--accent);margin-top:10px}
.flt{display:flex;gap:24px;font:500 11px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase}
.flt a{text-decoration:none;color:var(--muted);padding-bottom:6px}
.flt a.on{color:var(--fg);border-bottom:1px solid var(--fg)}
.cintro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);gap:40px;align-items:baseline;border-top:1px solid var(--line);padding-top:20px;margin:40px 0 24px}
.cintro .cn{font:400 32px/1 var(--serif)}
.cintro p{font:300 19px/1.5 var(--serif)}
.cgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:28px 20px}
.pc{display:flex;flex-direction:column;gap:8px;text-decoration:none}
.pc .ph{position:relative;aspect-ratio:3/4;background:#F2F0EB;overflow:hidden}
.pc .ph img{width:100%;height:100%;object-fit:cover;transition:opacity .6s var(--ease),transform 1.6s var(--ease-out)}
.pc:hover .ph img{transform:scale(1.03)}
.pc .ph .alt{position:absolute;inset:0;opacity:0}
.pc:hover .ph .alt{opacity:1}
.pc .nm{display:flex;justify-content:space-between;align-items:baseline;font:400 21px/1 var(--serif);margin-top:6px}
.pc .nm span{font:400 14px/1 var(--sans)}
.pc .ds{font:italic 300 16px/1.3 var(--serif)}
.pc .mt{font-size:12px;color:var(--muted)}
.pc.ed .ds{font:400 14px/1.5 var(--sans);font-style:normal}
.note{margin-top:48px;text-align:center;font:italic 300 19px/1.4 var(--serif);color:var(--muted);border-top:1px solid var(--line);padding-top:24px}
@media(max-width:900px){.cgrid{grid-template-columns:repeat(2,1fr)}.cintro{grid-template-columns:1fr;gap:10px}}

/* ring page */
.ring{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(28px,5vw,72px);align-items:start}
.gal{display:grid;grid-template-columns:1fr 84px;gap:12px;position:sticky;top:88px}
.gal .main{background:#F2F0EB;aspect-ratio:4/5;overflow:hidden}
.gal.one{grid-template-columns:1fr}
.gal .main{position:relative}
.gal .main .slide{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .8s var(--ease)}
.gal .main .slide.on{opacity:1;pointer-events:auto}
.gal .main img{width:100%;height:100%;object-fit:cover}
.gal .th{display:flex;flex-direction:column;gap:12px}
.gal .th button{width:84px;height:84px;padding:0;opacity:.75;outline:1px solid var(--line)}
.gal .th button.on{opacity:1;outline:2px solid var(--accent)}
.gal .th img{width:100%;height:100%;object-fit:cover}
.rinfo h1{font:300 clamp(44px,5.4vw,76px)/1 var(--serif);margin:16px 0 22px}
.rinfo .story p{font:300 19px/1.5 var(--serif);margin-bottom:6px}
.rinfo .noteL{font:italic 300 18px/1.4 var(--serif);color:var(--muted);margin-top:16px}
.spec{margin-top:28px;border-top:1px solid var(--line);padding-top:18px;font-size:15px;line-height:1.9}
.spec b{font-weight:600}
.rinfo .fine{margin-top:18px;font-size:14px;color:var(--muted)}
.rinfo .fine a{color:var(--accent)}
.others{margin-top:clamp(56px,8vw,110px)}
.others .cgrid{grid-template-columns:repeat(3,1fr)}
@media(max-width:820px){.ring{grid-template-columns:1fr}.gal{position:static;grid-template-columns:1fr}.gal .th{flex-direction:row;flex-wrap:wrap;gap:10px}.gal .th button{width:64px;height:64px}.others .cgrid{grid-template-columns:repeat(2,1fr)}}

/* thank you */
.ty{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);min-height:calc(100vh - 68px)}
.ty-img{overflow:hidden}
.ty-img img{width:100%;height:100%;object-fit:cover;animation:ge-kb 3s var(--ease-out) both}
.ty .tx{background:var(--accent);color:var(--bg);padding:clamp(40px,6vw,96px) var(--pad);display:flex;flex-direction:column;justify-content:center}
.ty .tx .g-lbl{color:var(--chart)}
.ty .kept{font:italic 300 22px/1 var(--serif);color:var(--chart);margin-bottom:10px}
.ty p{font-size:17px;margin:4px 0}
.ty .g-last{font:italic 300 clamp(20px,2vw,26px)/1.35 var(--serif);margin-top:18px}
.ty .dearme{margin-top:32px;background:var(--surface);color:var(--fg);padding:22px 26px;font:italic 300 20px/1.4 var(--serif)}
.ty .dearme b{color:var(--accent);font-weight:300;display:inline-block;animation:ge-write 1.8s 1.4s var(--ease) both}
.ty .dearme:not([hidden]){animation:ge-rise 1s .7s var(--ease-out) both}
.ty .dearme .g-lbl{display:block;font-style:normal;margin-bottom:10px;color:var(--accent)}
.ty .g-row a{color:var(--bg)}
@media(max-width:820px){.ty{grid-template-columns:1fr}.ty-img img{aspect-ratio:4/3;height:auto}}

/* founder facts */
.four{display:grid;grid-template-columns:repeat(4,1fr);margin:48px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.four div{padding:22px 12px;border-right:1px solid var(--line)}
.four div:last-child{border-right:0}
.four small{display:block;font:600 10px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.four span{font:400 24px/1.1 var(--serif)}
@media(max-width:700px){.four{grid-template-columns:repeat(2,1fr)}.four div:nth-child(2){border-right:0}}


/* footer */
.ft{background:var(--accent);color:var(--bg);padding:clamp(56px,7vw,96px) 0 28px}
.ft .g-lbl{color:var(--chart)}
.ft .cols{display:grid;grid-template-columns:1fr 1.15fr 1fr;gap:clamp(28px,4vw,56px)}
.ft .fh{font:400 26px/1.1 var(--serif);margin-bottom:16px}
.ft .press{display:block;border:1px solid rgba(245,238,211,.4);padding:18px;text-decoration:none}
.ft .press b{display:block;font:500 20px/1.2 var(--serif);margin-bottom:6px}
.ft .ig{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.ft .ig a{display:block;overflow:hidden}
.ft .ig img{transition:transform 1.4s var(--ease-out)}
.ft .ig a:hover img{transform:scale(1.04)}
.ft .fh a{text-decoration:none}
.ft .ig img{width:100%;aspect-ratio:1;object-fit:cover}
.ft ul{list-style:none;margin-top:20px;font-size:14px;line-height:2}
.ft a{text-decoration:none}
.ft .g-wl input{border-color:rgba(245,238,211,.7)}
.ft .g-wl input::placeholder{color:rgba(245,238,211,.7)}
.ft .g-wl .g-btn{background-color:var(--chart);color:var(--fg);border-color:var(--chart);--fill:#F5EED3}
.ft .legal{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:48px;padding-top:18px;border-top:1px solid rgba(245,238,211,.3);font:500 11px/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;opacity:.85}
@media(max-width:820px){.ft .cols{grid-template-columns:1fr}}
.ty p.g-lbl{font-size:12px;margin:6px 0 14px}

/* philosophy */
.ph-sec.red .ph-pillars dt{color:var(--chart)}

/* site additions (prototype → site) */
[hidden]{display:none!important}
.skip{position:absolute;left:-9999px;top:8px;z-index:300;background:var(--fg);color:var(--bg);padding:10px 14px}
.skip:focus{left:8px}
.crumbs{font:500 11px/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:-24px 0 28px}
.crumbs a{text-decoration:none}
.crumbs a:hover{color:var(--accent)}
.rit figure{margin:0}
.facts dd{margin:0}
.ty-img{min-height:100%}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}@view-transition{navigation:none}}

/* ---------- motion: calm, one easing family, 0.6–1.2 s; all of it off under prefers-reduced-motion ---------- */
@keyframes ge-rise{from{opacity:0;transform:translateY(18px)}}
@keyframes ge-fade{from{opacity:0}}
@keyframes ge-kb{from{transform:scale(1.07)}}
@keyframes ge-write{from{clip-path:inset(-25% 100% -25% 0)}to{clip-path:inset(-25% 0 -25% 0)}}
@keyframes ge-ul{0%{background-size:100% 1px;background-position:100% 100%}45%{background-size:0 1px;background-position:100% 100%}55%{background-size:0 1px;background-position:0 100%}100%{background-size:100% 1px;background-position:0 100%}}

/* page transitions between pages (cross-document View Transitions); the ring photo morphs from card to ring page */
@view-transition{navigation:auto}
::view-transition-old(root){animation:.45s var(--ease) both ge-vt-out}
::view-transition-new(root){animation:.6s var(--ease) both ge-fade}
@keyframes ge-vt-out{to{opacity:0}}
::view-transition-group(*){animation-duration:.75s;animation-timing-function:var(--ease-out)}
::view-transition-old(*),::view-transition-new(*){height:100%;object-fit:cover}

/* first screen of a page */
.hero>div>*,.rinfo>*,.shop-top>*,.ph-hero .wrap>*,.g-faq-side>*,.g-why-text>.g-lbl,.g-why-text>.g-h2,.g-text-body>.g-lbl,.g-text-body>.g-h1,.ty .tx>*,.g-quiz>.g-lbl,.g-page>.g-lbl,.g-page>.g-h1,.g-order-main>.g-lbl,.g-order-main>.g-h2{animation:ge-rise 1s var(--ease-out) both}
.hero>div>:nth-child(2),.rinfo>:nth-child(2),.shop-top>:nth-child(2),.ph-hero .wrap>:nth-child(2),.g-faq-side>:nth-child(2),.ty .tx>:nth-child(2),.g-why-text>.g-h2,.g-text-body>.g-h1,.g-page>.g-h1,.g-order-main>.g-h2{animation-delay:.08s}
.hero>div>:nth-child(3),.rinfo>:nth-child(3),.ph-hero .wrap>:nth-child(3),.g-faq-side>:nth-child(3),.ty .tx>:nth-child(3){animation-delay:.16s}
.hero>div>:nth-child(4),.rinfo>:nth-child(4),.ty .tx>:nth-child(4){animation-delay:.26s}
.hero>div>:nth-child(5),.rinfo>:nth-child(5),.ty .tx>:nth-child(5){animation-delay:.36s}
.rinfo>:nth-child(n+6),.ty .tx>:nth-child(n+6){animation-delay:.46s}
.hero figcaption{animation:ge-fade 1.2s .5s var(--ease) both}

/* scroll reveals (site.js adds .rv / .rv-img only to elements below the first screen, so nothing visible is ever hidden) */
.rv{transition:opacity .9s var(--ease-out) var(--d,0s),transform 1.1s var(--ease-out) var(--d,0s)}
.rv:not(.in){opacity:0;transform:translateY(18px)}
.rv-img{transition:clip-path 1.2s var(--ease-out) var(--d,0s)}
.rv-img:not(.in){clip-path:inset(100% 0 0 0)}
.rv-img img{transition:transform 1.8s var(--ease-out) var(--d,0s)!important}
.rv-img:not(.in) img{transform:scale(1.08)}

/* "Dear me," — written by hand, letter by letter: site.js wraps each character in .ch with its own delay (--t);
   the ruled line under each promise is drawn as that line begins; the full text stays in .sr for screen readers */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.letter .w{white-space:nowrap}
.letter.rv-letter .ch,.hw .ch{transition:opacity .5s var(--ease) var(--t),filter .7s var(--ease) var(--t)}
.letter.rv-letter:not(.in) .ch{opacity:0;filter:blur(3px)}
/* the home title: written letter by letter (site.js); until the script runs it is held back by its late rise */
.hero h1.hw{animation:none}
.hw:not(.in) .ch{opacity:0;filter:blur(5px)}
.hero h1{animation-delay:.35s!important}
.hero h1.hw{animation-delay:0s!important}
.letter.rv-letter li{position:relative;border-bottom-color:transparent}
.letter.rv-letter li::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--line);transform-origin:left;transition:transform 1.4s var(--ease-out) var(--t)}
.letter.rv-letter:not(.in) li::after{transform:scaleX(0)}
.letter.rv-letter.in .me small{transition:opacity 1s var(--ease) var(--t)}   /* only on the way in: it is already on screen when the letter is prepared */
.letter.rv-letter:not(.in) .me small{opacity:0}

/* quiz steps and dialogs */
.g-quiz [data-step]:not([hidden]){animation:ge-rise .7s var(--ease-out) both}
#ge-modal.on .ge-modal-bg{animation:ge-fade .45s var(--ease) both}
#ge-modal.on .ge-modal{animation:ge-pop .6s var(--ease-out) both}
#ge-modal.out .ge-modal-bg{animation:ge-fade .3s var(--ease) reverse both}
#ge-modal.out .ge-modal{animation:ge-pop .3s var(--ease) reverse both}
@keyframes ge-pop{from{opacity:0;transform:translate(-50%,-47%) scale(.985)}}

/* "What are you marking?": the red block opens to full width as it scrolls in, the rings come closer (scroll-driven, CSS only;
   browsers without animation-timeline simply show it open) — and it takes the colour of the stone you point at (site.js) */
@media(prefers-reduced-motion:no-preference){
  @supports(animation-timeline:view()){
    .xpand{animation:ge-xpand linear both;animation-timeline:view();animation-range:entry 0% cover 42%}
    .xpand .mcard .im img{animation:ge-near linear both;animation-timeline:view();animation-range:entry 10% cover 50%}
  }
}
@keyframes ge-xpand{from{clip-path:inset(4vh 4vw)}to{clip-path:inset(0 0)}}
@keyframes ge-near{from{transform:scale(.84)}to{transform:none}}
.xpand{transition:background-color 1s var(--ease),color .7s var(--ease)}
.xpand .g-lbl,.xpand .mcard .n,.xpand .markbot a{transition:color .7s var(--ease)}
.xpand.tinted{background-color:var(--tint);color:#16120F}
.xpand.tinted .g-lbl,.xpand.tinted .mcard .n,.xpand.tinted .markbot a{color:#16120F}
.xpand.tinted .mcard:hover{background:rgba(245,238,211,.55)}

/* geyanora.ru: Spectral has Cyrillic, Plus Jakarta Sans does not, so the Russian site sets its sans text in Manrope */
html[lang="ru"]{--sans:"Manrope",system-ui,sans-serif}
/* Russian words are longer: the home title, page titles and the ring hooks are set a step smaller */
html[lang="ru"] .hero h1{font-size:clamp(40px,5.4vw,84px)}
html[lang="ru"] .g-h1{font-size:clamp(34px,5vw,72px)}
html[lang="ru"] .rinfo h1{font-size:clamp(36px,4.4vw,62px)}
html[lang="ru"] .sec h2{font-size:clamp(30px,4.2vw,58px)}
