/* =========================================================================
   KIN · คิน — site styles
   ========================================================================= */

/* ---------- Fonts (bundled, work offline) ---------- */
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/cormorant-garamond-latin-300-normal.woff2) format("woff2")}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/cormorant-garamond-latin-400-normal.woff2) format("woff2")}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/cormorant-garamond-latin-500-normal.woff2) format("woff2")}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/cormorant-garamond-latin-600-normal.woff2) format("woff2")}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:300;font-display:swap;src:url(../fonts/cormorant-garamond-latin-300-italic.woff2) format("woff2")}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/cormorant-garamond-latin-400-italic.woff2) format("woff2")}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:500;font-display:swap;src:url(../fonts/cormorant-garamond-latin-500-italic.woff2) format("woff2")}

@font-face{font-family:"Trirong";font-style:normal;font-weight:200;font-display:swap;src:url(../fonts/trirong-thai-200-normal.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:"Trirong";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/trirong-thai-300-normal.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:"Trirong";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/trirong-thai-400-normal.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:"Trirong";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/trirong-thai-500-normal.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:"Trirong";font-style:normal;font-weight:200;font-display:swap;src:url(../fonts/trirong-latin-200-normal.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:"Trirong";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/trirong-latin-300-normal.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:"Trirong";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/trirong-latin-400-normal.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:"Trirong";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/trirong-latin-500-normal.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:"Sarabun";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/sarabun-thai-300-normal.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:"Sarabun";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/sarabun-thai-400-normal.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:"Sarabun";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/sarabun-thai-500-normal.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:"Sarabun";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/sarabun-thai-600-normal.woff2) format("woff2");unicode-range:U+02D7,U+0303,U+0331,U+0E01-0E5B,U+200C-200D,U+25CC}
@font-face{font-family:"Sarabun";font-style:normal;font-weight:300;font-display:swap;src:url(../fonts/sarabun-latin-300-normal.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:"Sarabun";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/sarabun-latin-400-normal.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:"Sarabun";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/sarabun-latin-500-normal.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:"Sarabun";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/sarabun-latin-600-normal.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:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/inter-latin-wght-normal.woff2) format("woff2-variations"),url(../fonts/inter-latin-wght-normal.woff2) format("woff2")}



/* Turkish letters (latin-ext subsets of Cormorant Garamond and Inter) */
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:400;font-display:swap;src:url(../fonts/cormorant-garamond-latin-ext-400-normal.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:500;font-display:swap;src:url(../fonts/cormorant-garamond-latin-ext-500-normal.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cormorant Garamond";font-style:normal;font-weight:600;font-display:swap;src:url(../fonts/cormorant-garamond-latin-ext-600-normal.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:300;font-display:swap;src:url(../fonts/cormorant-garamond-latin-ext-300-italic.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:400;font-display:swap;src:url(../fonts/cormorant-garamond-latin-ext-400-italic.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Cormorant Garamond";font-style:italic;font-weight:500;font-display:swap;src:url(../fonts/cormorant-garamond-latin-ext-500-italic.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(../fonts/inter-latin-ext-wght-normal.woff2) format("woff2-variations"),url(../fonts/inter-latin-ext-wght-normal.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-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

/* ---------- Animatable custom properties ---------- */
@property --w1{syntax:"<color>";inherits:true;initial-value:#fff6e6}
@property --w2{syntax:"<color>";inherits:true;initial-value:#f2e8d5}
@property --w3{syntax:"<color>";inherits:true;initial-value:#a88c6c}
@property --flame{syntax:"<color>";inherits:true;initial-value:#ffd4a1}

/* =========================================================================
   Tokens
   Every proportion steps by 5:4. Type: × 1.25 per step. Space: × 1.5625
   (two steps of 5:4). Two-column layouts split 5 : 4. Frames are 5:4.
   Colour: teak, the wood of the house, and cotton paper to read on.
   Three lights: the oil lamp, saffron, and the red of "kin".
   Type sizes in use: small, body, lead, statement, heading, display.
   ========================================================================= */
:root{
  --t-2:.64rem; --t-1:.8rem; --t0:1rem; --t1:1.25rem; --t2:1.5625rem; --t3:1.953rem;
  --t4:2.441rem; --t5:3.052rem; --t6:3.815rem; --t7:4.768rem; --t8:5.96rem; --t9:7.451rem; --t10:9.313rem; --t11:11.64rem;
  --s1:.3125rem; --s2:.5rem; --s3:.78rem; --s4:1.22rem; --s5:1.9rem; --s6:2.98rem; --s7:4.66rem; --s8:7.28rem; --s9:11.37rem;
  --sm:.9375rem; --body:1.0625rem; --lead:var(--t1); --stmt:clamp(1.5rem,2.4vw,var(--t3));

  --teak-9:#1f160e; --teak-8:#261b11; --teak-7:#2c2015; --teak-6:#3a2a1c; --teak-5:#4a3726; --teak-4:#6e563f; --teak-3:#8c6f52; --teak-2:#b39a7c;
  --paper-2:#ddcfb4; --paper:#ece1cb; --sheet:#f6eedf; --cream:#f2e8d5; --cream-2:#fff6e6;
  --ink-teak:#2b1d12;
  --saffron:#b35a1a; --saffron-2:#e08a3c;
  --lamp:#ffd4a1; --lamp-2:#f0b070;
  --kin:#c43d2a; --kin-2:#ec6a4f;
  --ghost:#cfe6da;

  --f-dis-en:"Cormorant Garamond","Trirong",Georgia,"Times New Roman",serif;
  --f-dis-th:"Trirong","Cormorant Garamond",Georgia,serif;
  --f-txt-en:"Inter","Sarabun",system-ui,-apple-system,"Segoe UI",Arial,sans-serif;
  --f-txt-th:"Sarabun","Inter",system-ui,"Leelawadee UI",Tahoma,sans-serif;
  --f-dis:var(--f-dis-en); --f-txt:var(--f-txt-en);

  --wrap:76rem; --pad:clamp(1.22rem,5vw,2.98rem);
  --head-h:4.66rem;
  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --spring:cubic-bezier(.5,1.6,.4,1);
  --t-press:140ms; --t-hover:180ms;
}
html[data-lang="th"]{--f-dis:var(--f-dis-th);--f-txt:var(--f-txt-th);--sm:1rem;--body:1.125rem}

.tone-dark{--bg:var(--teak-7);--bg-2:var(--teak-6);--ink:var(--cream);--ink-2:rgba(242,232,213,.76);--ink-3:rgba(242,232,213,.58);
  --line:rgba(242,232,213,.14);--line-2:rgba(242,232,213,.3);--accent:var(--saffron-2);--focus:var(--lamp);--fill:var(--cream);--fill-ink:var(--teak-7);--fill-hover:var(--cream-2)}
.tone-light{--bg:var(--paper);--bg-2:var(--sheet);--ink:var(--ink-teak);--ink-2:rgba(43,29,18,.78);--ink-3:rgba(43,29,18,.6);
  --line:rgba(43,29,18,.16);--line-2:rgba(43,29,18,.38);--accent:var(--saffron);--focus:var(--saffron);--fill:var(--ink-teak);--fill-ink:var(--sheet);--fill-hover:var(--teak-5)}
section.tone-dark,section.tone-light,div.tone-dark,div.tone-light,footer.tone-dark,article.tone-dark{background-color:var(--bg);color:var(--ink)}
[data-bg]{background:transparent !important}
/* paper objects on the dark stage: a sheet, a letter, a form */
.paper{background:var(--sheet);color:var(--ink-teak);--bg:var(--sheet);--ink:var(--ink-teak);--ink-2:rgba(43,29,18,.78);--ink-3:rgba(43,29,18,.6);
  --line:rgba(43,29,18,.16);--line-2:rgba(43,29,18,.34);--accent:#8a4414;--focus:#8a4414;--fill:var(--ink-teak);--fill-ink:var(--sheet);--fill-hover:var(--teak-5)}

/* ---------- Language visibility ---------- */
html:not([data-lang="en"]) [data-l="en"],html:not([data-lang="th"]) [data-l="th"],html:not([data-lang="tr"]) [data-l="tr"]{display:none !important}

/* ---------- Base ---------- */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none !important}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--head-h) + .75rem);background:#2c2015}
html.rm{scroll-behavior:auto}
body{margin:0;min-height:100vh;background:var(--page-bg,var(--bg));color:var(--ink);font-family:var(--f-txt);transition:background-color 1.2s var(--ease);
  font-size:var(--body);line-height:1.6;font-weight:400;font-optical-sizing:auto;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
html[data-lang="th"] body{line-height:1.8}
img,svg,canvas{display:block;max-width:100%}
/* light and shadows may spill past their boxes, never past the page */
main{overflow-x:clip}
svg .ol{fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
svg .solid{fill:currentColor}
a{color:inherit;text-decoration:none}
p{margin:0 0 1em}
h1,h2,h3,h4{margin:0;font-weight:400;font-family:var(--f-dis);line-height:1.1;text-wrap:balance}
html[data-lang="th"] :is(h1,h2,h3,h4){font-weight:300;line-height:1.38}
p,li,dd{text-wrap:pretty}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
::selection{background:rgba(255,212,161,.5);color:var(--ink-teak)}
:focus-visible{outline:2px solid var(--focus,var(--lamp));outline-offset:4px;border-radius:2px}
.sr{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:fixed;left:var(--s4);top:-6rem;z-index:200;background:var(--sheet);color:var(--ink-teak);padding:var(--s2) var(--s4);border-radius:3px;transition:top .2s}
.skip:focus{top:var(--s4)}
.nw{white-space:nowrap}

.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--pad)}
.split{display:grid;grid-template-columns:5fr 4fr;gap:var(--s6);align-items:center}
.split > *{min-width:0}

/* paper grain over everything, very faint */
body::after{content:"";position:fixed;inset:-50%;z-index:90;pointer-events:none;opacity:.05;mix-blend-mode:soft-light;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1.4 0'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E")}
main,.site-footer{position:relative;z-index:1}

/* the ground under everything: the land at night (the boards of the house on About), lit by the lamp the visitor carries */
.ground{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.ground canvas.gl{position:absolute;inset:0;width:100%;height:100%}
.ground-still{display:none;position:absolute;inset:0;color:var(--teak-4);opacity:.5}
.ground-still > .topo{width:100%;height:100%}
.ground-still.wall{display:none;grid-auto-flow:column;grid-auto-columns:17rem;opacity:.3;background:#2c2015}
.wall-board{width:17rem;height:100%;fill:none;stroke:var(--teak-3);stroke-width:1;box-shadow:inset 1px 0 0 rgba(0,0,0,.35)}
.ground-lamp{display:none;position:absolute;left:0;top:0;width:64rem;height:64rem;margin:-32rem 0 0 -32rem;border-radius:50%;
  background:radial-gradient(circle,rgba(255,212,161,.14),rgba(255,212,161,0) 62%);mix-blend-mode:screen}
/* the objects of the story: real things in the dark */
.obj3d{position:relative}
.obj-box{position:relative;width:100%;max-width:30rem;aspect-ratio:5/4;margin:0 auto}
.obj-box canvas.gl{position:absolute;inset:-8% -12%;width:124%;height:116%;max-width:none}
.obj-box .gl-fallback{display:none;position:absolute;inset:0}
.obj3d.no-gl .obj-box .gl-fallback{display:block;opacity:.6}
.obj3d.no-gl .obj-box canvas{display:none}
.au-staff .obj-box{max-width:26rem}
/* the house on the horizon: it comes nearer as you walk down the home page */
.ground-house{position:absolute;left:74%;bottom:7%;width:min(34rem,70vw);transform-origin:50% 100%;will-change:transform;
  transform:translate(-50%,0) translate(var(--hx,0px),0);opacity:var(--hop,0);color:#0d0905}
.ground-house .house{width:100%;height:auto;overflow:visible}
.h-cut path,.h-cut rect,.h-cut circle{fill:currentColor}
.h-cut .h-frond{fill:currentColor}
.h-cut .h-band{fill:none;stroke:currentColor;stroke-width:8;stroke-linecap:round}
.h-cut .h-curl{fill:none;stroke:currentColor;stroke-width:5;stroke-linecap:round}
.h-cut .h-rail{fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round}
.h-cut .h-sill{fill:none;stroke:currentColor;stroke-width:5}
.h-cut .h-win{fill:var(--lamp);opacity:calc(var(--lit,0) * .92);filter:drop-shadow(0 0 6px rgba(255,212,161,.7));animation:winflick 5.2s ease-in-out infinite;transition:opacity .9s var(--ease)}
.h-cut .h-win:nth-of-type(2){animation-delay:-2.1s}
@keyframes winflick{0%,100%{filter:brightness(1)}40%{filter:brightness(.86)}70%{filter:brightness(1.06)}}
.ground.no-gl canvas.gl{display:none}
.ground.no-gl .ground-still{display:block}
.ground.no-gl .ground-still.wall{display:grid}
.ground.no-gl .ground-lamp{display:block}
/* the big words are lit by the lamp */
.lamp-text{background-image:radial-gradient(circle at var(--wx,62%) var(--wy,30%),var(--w1) 0%,var(--w2) 32%,var(--w3) 82%);
  -webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent}
.lamp-text.is-svg{background:none;color:var(--w2);-webkit-text-fill-color:initial}
/* text in the dark: a dim copy, and a lit copy that only shows inside the pool of light */
.dark{position:relative}
.dk-base{opacity:.52;transition:opacity .4s}
.dk-lit{position:absolute;inset:0;pointer-events:none;color:var(--lit-ink,#fff3df);
  -webkit-mask-image:radial-gradient(circle at var(--mx,-9999px) var(--my,-9999px),#000 0,#000 6rem,transparent 19rem);
  mask-image:radial-gradient(circle at var(--mx,-9999px) var(--my,-9999px),#000 0,#000 6rem,transparent 19rem)}
.paper .dk-base{opacity:.55}
body[data-page="opportunities"] .dk-base{opacity:.56}
body[data-page="opportunities"] .dk-lit{-webkit-mask-image:radial-gradient(circle at var(--mx,-9999px) var(--my,-9999px),#000 0,#000 10rem,transparent 26rem);
  mask-image:radial-gradient(circle at var(--mx,-9999px) var(--my,-9999px),#000 0,#000 10rem,transparent 26rem)}
.paper .dk-lit{--lit-ink:var(--ink-teak)}
.dark .term{border-bottom-color:currentColor}
/* only inside the light */
.lamp-only{-webkit-mask-image:radial-gradient(circle at var(--mx,-9999px) var(--my,-9999px),#000 0,#000 5rem,transparent 17rem);
  mask-image:radial-gradient(circle at var(--mx,-9999px) var(--my,-9999px),#000 0,#000 5rem,transparent 17rem)}
.ghost-num{position:absolute;right:calc(var(--pad) * .5);top:50%;z-index:0;transform:translateY(-50%);pointer-events:none;
  font-family:"Trirong",serif;font-weight:200;font-size:clamp(14rem,36vw,32rem);line-height:1;color:var(--accent);opacity:.55}
.ghost-num[data-light="cold"]{color:var(--ghost)}
.chapter.flip .ghost-num{right:auto;left:calc(var(--pad) * .5)}
/* statements lit word by word as they are read */
.scroll-lit .w{color:rgba(242,232,213,.26);transition:color .5s var(--ease)}
.scroll-lit .w.lit{color:var(--ink)}

/* WebGL canvases and their still fallbacks */
canvas.gl{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .9s var(--ease)}
canvas.gl.is-live{opacity:1}
.gl-fallback{display:none;position:absolute;inset:0;pointer-events:none}
.no-gl canvas.gl{display:none}
.no-gl .gl-fallback{display:block}
.topo path{fill:none;stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke;opacity:.5}
.topo path.mj{opacity:.9}

/* ---------- Page entrance: a curtain, and a thread drawn across it ---------- */
.curtain{display:none}
.js .curtain{display:block;position:fixed;inset:0;z-index:150;background:var(--teak-7);opacity:1;pointer-events:none;transition:opacity .55s var(--ease) .04s}
.js .curtain span{position:absolute;left:50%;top:50%;width:min(80vw,38rem);height:1px;background:var(--teak-2);
  transform:translate(-50%,-50%) scaleX(.0001);transition:transform .5s var(--ease-out)}
.js.is-ready .curtain{opacity:0;visibility:hidden;transition:opacity .55s var(--ease) .04s,visibility 0s .7s}
.js.is-leaving .curtain{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .34s var(--ease),visibility 0s}
.js.is-leaving .curtain span{transform:translate(-50%,-50%) scaleX(1);transition:transform .42s var(--ease-out)}
html.is-switching main,html.is-switching .site-footer{opacity:0;transition:opacity .16s ease}
main,.site-footer{transition:opacity .22s ease}

/* ---------- Section entrances: the parts arrive in reading order, once ---------- */
.js [data-enter] [data-e]{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease-out),transform .9s var(--ease-out);transition-delay:calc(var(--i,0) * 85ms)}
.js [data-enter].is-in [data-e]{opacity:1;transform:none}

/* ---------- Type ---------- */
.page-head{padding-top:calc(var(--head-h) + var(--s8));padding-bottom:var(--s7)}
.page-title{font-size:clamp(3.052rem,8.6vw,var(--t9));line-height:.98;font-weight:400;letter-spacing:-.01em}
html[data-lang="th"] .page-title{font-weight:300;line-height:1.22;letter-spacing:0;font-size:clamp(2.6rem,7vw,var(--t8))}
.page-lead{margin-top:var(--s5);font-family:var(--f-dis);font-weight:400;font-size:var(--stmt);line-height:1.32;color:var(--ink-2);max-width:25em}
html[data-lang="th"] .page-lead{font-weight:300;line-height:1.6}
.h2{font-size:clamp(1.953rem,3.9vw,var(--t5));margin-bottom:var(--s5)}
.lead{font-size:var(--lead);line-height:1.55;color:var(--ink);max-width:31em}
html[data-lang="th"] .lead{font-size:1.25rem;line-height:1.85}
.lead.second{color:var(--ink-2)}
.intro{max-width:34em;color:var(--ink-2)}
.pull{margin:0;font-family:var(--f-dis);font-weight:400;font-size:var(--stmt);line-height:1.3;color:var(--ink)}
html[data-lang="th"] .pull{font-weight:300;font-size:clamp(1.35rem,2.2vw,1.85rem);line-height:1.62}
.textlink{color:var(--ink);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em;text-decoration-color:currentColor;transition:text-decoration-color .35s}
.textlink:hover{text-decoration-color:transparent}
.actions{display:flex;flex-wrap:wrap;gap:var(--s3) var(--s5);margin-top:var(--s5);align-items:center}
.actions.center{justify-content:center}

/* =========================================================================
   Header: a plain bar
   ========================================================================= */
.site-header{position:fixed;top:0;left:0;right:0;z-index:60;color:var(--h-ink);transition:background-color .45s,color .45s}
html[data-head="dark"] .site-header{--h-ink:var(--cream);--h-ink-2:rgba(242,232,213,.74);--h-ink-3:rgba(242,232,213,.56);--h-bg:color-mix(in srgb,var(--page-bg,#2c2015) 62%,transparent);--h-line-2:rgba(242,232,213,.34)}
html[data-head="light"] .site-header{--h-ink:var(--ink-teak);--h-ink-2:rgba(43,29,18,.76);--h-ink-3:rgba(43,29,18,.56);--h-bg:rgba(236,225,203,.94);--h-line-2:rgba(43,29,18,.32)}
.site-header.is-scrolled{background:var(--h-bg);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.bar{height:var(--head-h);display:flex;align-items:center;gap:var(--s5)}
.logo{display:flex;align-items:center;gap:var(--s3);margin-right:auto;min-height:44px;color:var(--h-ink)}
.logo .kin-mark{font-size:1.85rem;line-height:1;padding-top:.12em}
.logo-en{font-family:"Cormorant Garamond",serif;font-weight:500;font-size:.95rem;letter-spacing:.18em;color:var(--h-ink-2);line-height:1;padding-left:var(--s3);border-left:1px solid var(--h-line-2)}
.nav{position:relative}
.nav ul{list-style:none;margin:0;padding:0;display:flex;gap:var(--s5)}
.nav a{position:relative;display:inline-block;padding:var(--s2) 0;color:var(--h-ink-2);font-size:.95rem;transition:color .25s}
html[data-lang="th"] .nav a{font-size:1.02rem}
.nav a:hover,.nav a[aria-current="page"]{color:var(--h-ink)}
.nav-thread{position:absolute;left:0;top:calc(100% - 6px);width:100%;height:14px;overflow:visible;pointer-events:none}
.nav-thread .nt-base{fill:none;stroke:var(--h-line-2);stroke-width:1;opacity:0;transition:opacity .5s}
.nav:hover .nav-thread .nt-base{opacity:.6}
.nav-thread .nt-tie{fill:none;stroke:var(--h-ink);stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round}
.nav-thread .nt-knot{display:none}

/* language: four flags on one thread; the name of the language you are reading sits beside them */
.lang-switch{display:inline-flex;align-items:center;gap:.7rem}
.lang-now{min-width:2.6rem;text-align:right;font-size:var(--sm);font-weight:500;line-height:1;color:var(--h-ink,var(--ink))}
.lang-now [data-l="th"]{font-family:"Sarabun",sans-serif;font-size:.95rem}
.lang-flags{position:relative;display:inline-flex;align-items:center;gap:.5rem}
.lang-flags::before{content:"";position:absolute;left:6px;right:6px;top:50%;height:1px;background:var(--h-line-2,var(--line-2))}
.lang-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border-radius:50%;line-height:1;transition:transform .5s var(--spring)}
.flag{width:17px;height:17px;border-radius:50%;flex:none;overflow:hidden;clip-path:circle(50%);filter:saturate(.35) brightness(.7);
  box-shadow:0 0 0 1px rgba(0,0,0,.25);transition:filter .35s,transform .5s var(--spring)}
.lang-btn::after{content:"";position:absolute;inset:1px;border-radius:50%;border:1.2px solid var(--h-ink,var(--ink));opacity:0;transform:scale(.7);transition:opacity .35s,transform .5s var(--spring)}
.lang-btn:hover .flag{filter:saturate(.85) brightness(.95)}
.lang-btn[aria-pressed="true"] .flag{filter:none;transform:scale(1.06)}
.lang-btn[aria-pressed="true"]::after{opacity:.85;transform:none}

.menu-btn{display:none;width:44px;height:44px;margin-right:-10px;position:relative;color:var(--h-ink)}
.menu-btn i{position:absolute;left:11px;right:11px;height:1px;background:currentColor;transition:transform .4s var(--ease-out),top .4s var(--ease-out)}
.menu-btn i:nth-child(1){top:18px}.menu-btn i:nth-child(2){top:25px}
.menu-open .menu-btn i:nth-child(1){top:21.5px;transform:rotate(45deg)}
.menu-open .menu-btn i:nth-child(2){top:21.5px;transform:rotate(-45deg)}
.menu-open .site-header{--h-ink:var(--cream);--h-ink-2:rgba(242,232,213,.74);--h-ink-3:rgba(242,232,213,.56);--h-line-2:rgba(242,232,213,.34);background:transparent}
.mobile-menu{position:fixed;inset:0;z-index:55;background:var(--teak-7);color:var(--cream);display:flex;flex-direction:column;justify-content:center;padding:var(--s8) var(--pad) var(--s6);
  --ink:var(--cream);--ink-3:rgba(242,232,213,.56);--line-2:rgba(242,232,213,.34);
  opacity:0;transform:translateY(-8px);transition:opacity .35s var(--ease),transform .45s var(--ease-out)}
.mobile-menu.is-open{opacity:1;transform:none}
.mobile-menu ol{list-style:none;margin:0 0 var(--s6);padding:0}
.mobile-menu a{display:block;padding:var(--s3) 0;font-family:var(--f-dis);font-size:var(--t4);line-height:1.15;opacity:0;transform:translateY(10px);transition:opacity .5s var(--ease),transform .6s var(--ease-out)}
.mobile-menu.is-open a{opacity:1;transform:none}
.mobile-menu li:nth-child(2) a{transition-delay:.05s}.mobile-menu li:nth-child(3) a{transition-delay:.1s}
.mobile-menu li:nth-child(4) a{transition-delay:.15s}.mobile-menu li:nth-child(5) a{transition-delay:.2s}
.mobile-menu a[aria-current="page"]{color:var(--lamp)}
.mobile-menu .lang-switch{align-self:flex-start;margin-top:var(--s4)}

/* =========================================================================
   Buttons: one filled button, and a text button with a thread under it
   ========================================================================= */
.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;min-height:2.98rem;padding:.72rem 1.3rem;
  font-family:var(--f-txt);font-size:.95rem;font-weight:500;line-height:1.2;color:var(--fill-ink);background:var(--fill);
  border-radius:3px;isolation:isolate;cursor:pointer;transition:color .3s,background-color var(--t-hover) ease,transform var(--t-press) var(--ease-out)}
html[data-lang="th"] .btn{font-size:1.02rem}
.btn:active{transform:scale(.97)}
.btn-l{position:relative;z-index:1}
.btn-wrap{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:2}
.btn-wrap rect{x:-3.5px;y:-3.5px;width:calc(100% + 7px);height:calc(100% + 7px);rx:5px;fill:none;stroke:var(--fill);stroke-width:1.3;
  stroke-dasharray:1 1;stroke-dashoffset:1;opacity:0;transition:stroke-dashoffset .8s var(--ease),opacity 0s linear .8s}
/* drawn on hover or focus; at rest it is hidden as well as undrawn, so the seam where the line starts leaves no dot */
.btn:hover .btn-wrap rect,.btn:focus-visible .btn-wrap rect{stroke-dashoffset:0;opacity:1;transition:stroke-dashoffset .8s var(--ease),opacity 0s}
.btn:hover{background:var(--fill-hover)}
.btn:not(.solid){background:none;color:var(--ink);padding-inline:.2rem}
.btn:not(.solid):hover{background:none;color:var(--accent)}
.btn:not(.solid) .btn-wrap rect{x:0;y:calc(100% - 7px);width:100%;height:1px;rx:0;stroke:currentColor;stroke-width:1.2}

/* =========================================================================
   Glossary: a paper tag tied to the word
   ========================================================================= */
.term{font:inherit;color:inherit;border-bottom:1px dotted currentColor;cursor:help;transition:color .25s}
.term:hover,.term[aria-expanded="true"]{color:var(--accent)}
.tip{position:fixed;z-index:120;max-width:19rem;padding:var(--s3) var(--s4) var(--s3) calc(var(--s4) + 10px);background:var(--sheet);color:var(--ink-teak);
  font-family:"Inter",sans-serif;font-size:.9rem;line-height:1.55;border-radius:2px 12px 12px 2px;
  box-shadow:0 14px 30px -14px rgba(26,19,12,.6);pointer-events:none;opacity:0;transform:translateY(-4px) rotate(-1.2deg);transform-origin:12px 0;
  transition:opacity .2s,transform .45s var(--spring)}
.tip::before{content:"";position:absolute;left:9px;top:calc(var(--s3) + 6px);width:7px;height:7px;border-radius:50%;box-shadow:inset 0 0 0 1.2px rgba(43,29,18,.45)}
.tip::after{content:"";position:absolute;left:12px;bottom:calc(100% - var(--s3) - 6px);width:1px;height:var(--string,14px);background:rgba(246,238,223,.85);transform-origin:bottom}
.tip.is-on{opacity:1;transform:none}
.tip b{display:block;font-family:"Cormorant Garamond",serif;font-weight:600;font-size:1.0625rem;margin-bottom:2px}

/* =========================================================================
   Footer: the deepest night, the name again
   ========================================================================= */
.site-footer{position:relative;overflow:hidden;padding:var(--s8) 0 var(--s6);background:var(--teak-9)}
body[data-page="home"] .site-footer{padding-top:var(--s7)}
.f-topo{position:absolute;right:-6%;bottom:-8%;width:78%;height:auto;color:var(--teak-3);opacity:.4;pointer-events:none}
.site-footer .wrap{position:relative}
.f-top{display:grid;grid-template-columns:5fr 4fr;gap:var(--s6);align-items:end}
.f-mark{display:block;font-size:clamp(5rem,11vw,var(--t10));line-height:.9;color:var(--ink);margin-bottom:var(--s4);--w1:#fff6e6;--w2:#f2e8d5;--w3:#9a8468}
.f-about{max-width:24em;color:var(--ink-2);margin:0}
.f-h{font-family:var(--f-txt);font-weight:500;font-size:var(--sm);color:var(--ink-3);margin-bottom:var(--s2)}
.f-mail{font-family:var(--f-dis);font-size:var(--t3);line-height:1.2;word-break:break-word}
html[data-lang="th"] .f-mail{font-family:"Cormorant Garamond",serif}
.f-note{margin:var(--s3) 0 0;color:var(--ink-3);font-size:var(--sm);max-width:22em}
.f-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:var(--s3) var(--s6);margin-top:var(--s8)}
.f-nav ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s2) var(--s5)}
.f-nav a{color:var(--ink-2);transition:color .25s}.f-nav a:hover{color:var(--ink)}
.f-legal{margin:0;color:var(--ink-3);font-size:var(--sm);max-width:44em}

/* =========================================================================
   The title word คิน (the Canva wordmark replaces the text when it arrives)
   ========================================================================= */
.kin-mark{display:inline-block;font-family:"Trirong",serif;font-weight:200;line-height:1}
.kin-mark.is-svg{line-height:0}
.kin-mark.is-svg svg{height:1em;width:auto;overflow:visible}
.kin-mark.is-svg svg *{fill:currentColor}

/* =========================================================================
   HOME — the land at night runs under the title and under the question
   ========================================================================= */
.night{position:relative}
.night > .hero,.night > .question{background:transparent}

.hero{position:relative;z-index:1;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;overflow:hidden;
  --w1:#fff6e6;--w2:#f2e8d5;--w3:#a88c6c;--flame:var(--lamp);
  transition:--w1 1s var(--ease),--w2 1s var(--ease),--w3 1s var(--ease),--flame 1s var(--ease)}
.hero[data-meaning="kin"]{--w1:#ffe3da;--w2:#f0d9cf;--w3:#a8705f;--flame:var(--kin-2)}
.hero::before{content:"";position:absolute;left:0;right:0;top:0;height:calc(var(--head-h) * 2.2);z-index:1;pointer-events:none;background:linear-gradient(rgba(44,32,21,.78),rgba(44,32,21,0))}
.hero-stage{position:absolute;left:50%;top:calc(var(--head-h) + 2.2vh);bottom:calc(var(--s7) + 1vh);aspect-ratio:5/4;max-width:94vw;transform:translateX(-50%);pointer-events:none;color:var(--teak-2)}
.hero-frame{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.hero-frame .fl{fill:none;stroke:currentColor;stroke-width:1.1;stroke-linecap:round;opacity:.46;vector-effect:non-scaling-stroke;transform-box:fill-box}
.hero-frame .fl.faint{opacity:.2}
.hero-frame .gx{transform-origin:50% 50%}.hero-frame .gy{transform-origin:50% 100%}.hero-frame .gl{transform-origin:100% 50%}.hero-frame .gr{transform-origin:0% 50%}
.js .hero-frame .gx,.js .hero-frame .gl,.js .hero-frame .gr{transform:scaleX(0);animation:growx 1.4s var(--ease) forwards}
.js .hero-frame .gy{transform:scaleY(0);animation:growy 1.4s var(--ease) forwards}
@keyframes growx{to{transform:scaleX(1)}}@keyframes growy{to{transform:scaleY(1)}}
.js .hero-frame .d1{animation-delay:.15s}.js .hero-frame .d2{animation-delay:.3s}.js .hero-frame .d3{animation-delay:.6s}.js .hero-frame .d4{animation-delay:.75s}
.hero-lamp{position:absolute;left:80%;top:0;width:2.5rem;transform:translateX(-50%)}
.hero-lamp svg{width:100%;height:auto;overflow:visible}
.lampbody{fill:none;stroke:#e6d6bd;stroke-width:1.2;opacity:.9;vector-effect:non-scaling-stroke}
.flame{fill:var(--flame);transform-box:fill-box;transform-origin:50% 100%;animation:flicker 3.4s ease-in-out infinite;filter:drop-shadow(0 0 7px var(--flame))}
@keyframes flicker{0%,100%{transform:scale(1,1);opacity:.95}30%{transform:scale(.94,1.06);opacity:1}55%{transform:scale(1.03,.96);opacity:.88}80%{transform:scale(.97,1.03);opacity:.97}}
.js .hero-lamp{opacity:0;animation:fadein 1s var(--ease) .9s forwards}
@keyframes fadein{to{opacity:1}}

.hero-inner{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;text-align:center;padding:calc(var(--head-h) + 3vh) var(--pad) calc(var(--s7) + 3vh)}
.hero-presents{font-size:.9rem;letter-spacing:.02em;color:var(--ink-2);margin-bottom:var(--s3)}
html[data-lang="th"] .hero-presents{font-size:1rem;letter-spacing:0}
.hero-title{display:flex;flex-direction:column;align-items:center;font-weight:inherit}
.hero-word{font-size:clamp(5.96rem,min(19vw,21vh),var(--t11));padding:.06em .12em 0;cursor:pointer}
.hero{cursor:default}.hero-title{cursor:pointer}
.hero-word.is-svg{background:none;color:var(--w2);-webkit-text-fill-color:initial}
.hero-sub{display:block;margin-top:-.1em;font-size:var(--t2);color:var(--ink-2);letter-spacing:.02em}
.hero-sub [data-l="en"]{font-family:"Cormorant Garamond",serif;font-weight:400}
.hero-sub [data-l="th"]{font-family:"Trirong",serif;font-weight:300;font-size:.86em}
.hero-sub [data-l="tr"]{font-family:"Cormorant Garamond",serif;font-weight:400}
.js .hero-word{opacity:0;animation:light 1.5s var(--ease) .7s forwards}
.js .hero-sub,.js .hero-presents,.js .kinship{opacity:0;animation:rise 1.1s var(--ease-out) forwards}
.js .hero-presents{animation-delay:1.05s}.js .hero-sub{animation-delay:1.25s}.js .kinship{animation-delay:1.55s}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes light{from{opacity:0;filter:blur(12px)}to{opacity:1;filter:blur(0)}}

/* kin|ship: the Turkish word lives inside the English one */
.kinship{margin-top:var(--s4);display:flex;flex-direction:column;align-items:center;max-width:34rem}
.ks-word{display:inline-flex;align-items:baseline;font-family:"Cormorant Garamond",serif;font-style:italic;font-weight:400;
  font-size:clamp(2.44rem,4.2vw,var(--t6));line-height:1.05;cursor:pointer;user-select:none;-webkit-user-select:none;padding:0 .1em}
.ks-kin{color:var(--ink);transition:color .9s var(--ease),text-shadow .9s var(--ease)}
.ks-ship{display:inline-flex;overflow:hidden;width:var(--ship-w,auto);transition:width .9s var(--ease) .12s;padding-right:.08em}
.ks-ship i{display:inline-block;font-style:inherit;color:var(--ink-2);transition:transform .7s var(--ease),opacity .55s var(--ease),filter .6s var(--ease)}
.ks-ship i:nth-child(2){transition-delay:.05s}.ks-ship i:nth-child(3){transition-delay:.1s}.ks-ship i:nth-child(4){transition-delay:.15s}
.hero[data-meaning="kin"] .ks-ship{width:0;padding-right:0;transition-delay:.25s}
.hero[data-meaning="kin"] .ks-ship i{opacity:0;transform:translateY(.42em) rotate(16deg);filter:blur(3px)}
.hero[data-meaning="kin"] .ks-kin{color:var(--kin-2);text-shadow:0 0 26px rgba(196,61,42,.55)}
.ks-switch{display:flex;align-items:center;gap:.7rem;margin-top:var(--s3)}
.ks-btn{font-size:var(--sm);color:var(--ink-3);padding:.3rem .1rem;transition:color .3s}
.ks-btn:hover,.ks-btn[aria-pressed="true"]{color:var(--ink)}
.ks-rule{position:relative;width:2.4rem;height:1px;background:var(--line-2)}
.ks-rule i{position:absolute;top:50%;left:0;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;background:var(--cream);transition:left .6s var(--spring),background-color .6s}
.hero[data-meaning="kin"] .ks-rule i{left:100%;background:var(--kin-2)}
.ks-defs{display:grid;margin-top:var(--s3);min-height:3.4em}
.ks-def{grid-area:1/1;margin:0;color:var(--ink-2);font-size:var(--body);line-height:1.6;opacity:0;transform:translateY(4px);transition:opacity .5s var(--ease),transform .6s var(--ease-out)}
html[data-lang="th"] .ks-def{line-height:1.75}
.hero[data-meaning="kinship"] .ks-def[data-m="kinship"],.hero[data-meaning="kin"] .ks-def[data-m="kin"]{opacity:1;transform:none}
.ks-close{margin:var(--s3) 0 0;font-family:var(--f-dis);color:var(--ink);font-size:var(--lead)}
html[data-lang="th"] .ks-close{font-size:1.1rem}

.hero-foot{position:absolute;left:0;right:0;bottom:var(--s5);z-index:2;display:flex;justify-content:space-between;align-items:flex-end;gap:var(--s4);
  color:var(--ink-3);font-size:var(--sm)}
.hero-foot .cue{position:relative;width:1px;height:var(--s6);background:var(--line-2);overflow:hidden}
.hero-foot .cue::after{content:"";position:absolute;left:-2px;top:-6px;width:5px;height:5px;border-radius:50%;background:var(--cream);animation:bead 2.6s var(--ease) infinite}
@keyframes bead{0%{transform:translateY(0);opacity:0}15%{opacity:1}85%{opacity:1}100%{transform:translateY(calc(var(--s6) + 6px));opacity:0}}

/* the question: the words light up as you scroll, and the lamp light comes to them */
.question{position:relative;z-index:1;height:175vh}
.q-sticky{position:sticky;top:0;height:100vh;height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:0 var(--pad) 10vh}
.q-text{margin:0;max-width:19em;font-family:var(--f-dis);font-weight:400;font-size:clamp(1.953rem,4.3vw,3.4rem);line-height:1.18}
html[data-lang="th"] .q-text{max-width:17em;font-weight:300;font-size:clamp(1.8rem,3.7vw,3.1rem);line-height:1.52}
.q-text p{margin:0}
.q-text .w{color:rgba(242,232,213,.2);transition:color .6s var(--ease)}
.q-text .w.lit{color:var(--cream)}
.q-after{margin:var(--s6) 0 0;font-size:var(--sm);color:var(--ink-3);opacity:0;transform:translateY(6px);transition:opacity .8s var(--ease),transform .9s var(--ease-out)}
.question.is-asked .q-after{opacity:1;transform:none}

/* where it begins: a field of rice stands at the edge of the night */
.prologue{position:relative;z-index:2;--hz:20rem;padding:var(--s6) 0 var(--s7)}
.horizon{position:absolute;left:0;right:0;top:calc(-1 * var(--hz));height:var(--hz);overflow:hidden;color:var(--cream);pointer-events:none}
.horizon .rice{width:100%;height:100%}
.rice{overflow:visible}
.rice .stalk{transform-box:fill-box;transform-origin:50% 100%}
.rice path,.rice ellipse{fill:none;stroke:currentColor;stroke-width:1.15;stroke-linecap:round;vector-effect:non-scaling-stroke}
.rice .grain{fill:rgba(255,212,161,.28)}
.rice .soil{opacity:0}
.pro-grid{display:grid;grid-template-columns:4fr 5fr;gap:var(--s6);align-items:start}
.pro-grid > *{min-width:0}
.pro-h{margin-bottom:0}
.pro-text .lead{max-width:30em}

/* who is making it, and the one tune to keep */
.makers{padding-block:var(--s7) var(--s6);overflow:hidden}
.stmt{margin:0;font-family:var(--f-dis);font-weight:400;font-size:clamp(1.65rem,2.9vw,2.6rem);line-height:1.3;color:var(--ink);max-width:24em}
html[data-lang="th"] .stmt{font-weight:300;font-size:clamp(1.45rem,2.5vw,2.25rem);line-height:1.6}
.mk-say .actions{margin-top:var(--s5)}
.tune-strip{margin:var(--s7) 0 0;color:var(--accent)}
.tune-art{width:118%;margin-left:-9%}
.tune-art .melody{width:100%;max-width:none;height:auto}
.tune-art .melody path{stroke-width:1.5}
.tune-art .melody ellipse{transform-box:fill-box;transform-origin:50% 50%;transform:scale(.55)}
.tune-strip .melody-cap{margin-top:var(--s2);font-size:var(--lead)}
/* drawn by the scroll where the browser can; otherwise drawn when it arrives */
@supports (animation-timeline: view()){
  html:not(.rm) .js .tune-art .melody path{transition:none;stroke-dashoffset:1;animation:draw-tune linear both;animation-timeline:view();animation-range:entry 10% cover 55%}
  html:not(.rm) .js .tune-strip.is-in .melody path{transition:none}
}
@keyframes draw-tune{to{stroke-dashoffset:0}}


/* a debt of goodness, and its shadow: a sheet of paper beside the dark */
.dip-sec{padding-block:var(--s7) var(--s7)}
.dip-h{text-align:center;margin-bottom:var(--s6)}
.dip{display:grid;grid-template-columns:1fr 1fr;gap:var(--s7);min-height:28rem}
.dip > article{position:relative;padding:var(--s5) 0}
.dip-dark{display:flex;flex-direction:column;min-height:34rem;color:var(--cream)}
.dip-word{position:relative;z-index:1;display:block;font-family:"Trirong",serif;font-weight:200;font-size:clamp(4rem,8vw,var(--t9));line-height:1.15;margin-bottom:var(--s2);
  --w1:#fff6e6;--w2:#f2e8d5;--w3:#9a8468}
.dip-dark .dip-word{--w1:#eefaf4;--w2:#cfe6da;--w3:#6f8a7e}
.dip-roman{position:relative;z-index:1;display:block;font-family:"Cormorant Garamond",serif;font-style:italic;font-size:var(--t2);margin-bottom:var(--s4);color:var(--ink-2)}
.dip p{position:relative;z-index:1;max-width:30em;font-size:1.125rem;line-height:1.6}
.dip-cap{margin-top:auto;padding-top:var(--s6);font-family:var(--f-dis);color:#d9ece2;font-size:var(--lead);line-height:1.4;max-width:24em}
.dip-dark canvas.gl{position:absolute;left:-30%;top:-20%;width:160%;height:140%;max-width:none;z-index:0;pointer-events:none}
html[data-lang="th"] .dip-cap{font-family:var(--f-txt);font-size:1.06rem}
/* the preta without WebGL: still rings of light */
.preta-fallback{display:none;align-items:center;justify-content:center}
.no-gl .preta-fallback{display:flex}
.ghost-rings{width:min(100%,34rem);height:auto;aspect-ratio:1;color:var(--ghost);opacity:.75}
.ghost-rings path{fill:none;stroke:currentColor;stroke-width:1;vector-effect:non-scaling-stroke;opacity:.32}
.ghost-rings path.mj{opacity:.7}
.dip-dark .preta-fallback{justify-content:center;align-items:center;padding:0}
.dip-dark .ghost-rings{width:70%;opacity:.5}

/* the rest of the house: four doorways standing in the night. A plain teak
   door, shut, with lamplight showing under it; it swings open on its hinge
   when you come to it, and the light spills out onto the ground. */
.screen-sec{padding-block:var(--s7) var(--s8);overflow:hidden}
.screen{position:relative}
.doors{list-style:none;margin:0 auto;padding:0;max-width:62rem;display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s6)}
.dr-item{position:relative}
.door{position:relative;display:flex;flex-direction:column;align-items:center;color:var(--cream);text-align:center;outline:none}
/* the doorway: a dark frame with the lit room behind it */
.dr-way{position:relative;display:block;width:78%;aspect-ratio:5/8;perspective:1100px;
  border:5px solid #3d2c1d;border-bottom-width:0;box-shadow:0 0 0 1px rgba(179,154,124,.28),inset 0 0 0 1px rgba(0,0,0,.6)}
.dr-way::before{content:"";position:absolute;left:-14%;right:-14%;top:-9%;height:5%;background:#3d2c1d;box-shadow:0 0 0 1px rgba(179,154,124,.22)}
.dr-inside{position:absolute;inset:0;background:radial-gradient(120% 80% at 50% 100%,#ffd9a8 0%,#e7a25c 34%,#7a4a24 70%,#2a1b10 100%);
  opacity:.9}
/* the door itself, hinged on the left */
.dr-leaf{position:absolute;inset:0;transform-origin:0 50%;transform:rotateY(0deg);transition:transform 1.1s var(--ease-out);
  background:linear-gradient(90deg,#4a3422,#55402b 46%,#4b3523);box-shadow:inset 0 0 0 1px rgba(255,225,190,.08),inset -3px 0 0 rgba(0,0,0,.25)}
.dr-p{position:absolute;left:14%;right:14%;border:1px solid rgba(255,225,190,.14);box-shadow:inset 0 1px 0 rgba(0,0,0,.35),1px 1px 0 rgba(0,0,0,.25)}
.dr-p1{top:8%;height:38%}
.dr-p2{top:52%;height:40%}
.dr-ring{position:absolute;right:11%;top:51%;width:11px;height:11px;margin-top:-5.5px;border-radius:50%;border:1.6px solid #c9a46a;box-shadow:0 1px 2px rgba(0,0,0,.6)}
/* the line of light under the shut door, and the light on the ground when it opens */
.dr-spill{position:relative;display:block;width:78%;height:3px;background:linear-gradient(90deg,transparent,rgba(255,200,140,.7) 20%,rgba(255,214,160,.85) 50%,rgba(255,200,140,.7) 80%,transparent);
  filter:blur(.6px);transition:opacity .9s var(--ease)}
.dr-spill::after{content:"";position:absolute;left:-10%;right:-10%;top:2px;height:5.5rem;opacity:0;transition:opacity .9s var(--ease);
  background:radial-gradient(60% 100% at 50% 0%,rgba(255,200,140,.32),transparent 75%);clip-path:polygon(18% 0,82% 0,100% 100%,0 100%)}
.dr-t{display:block;margin-top:var(--s4);font-family:var(--f-dis);font-size:clamp(1.35rem,2vw,1.85rem);line-height:1.15;color:var(--cream)}
html[data-lang="th"] .dr-t{font-weight:300;line-height:1.35}
.dr-d{display:block;margin-top:var(--s2);max-width:15em;font-size:.95rem;line-height:1.5;color:var(--ink-2);transition:opacity .6s var(--ease),transform .7s var(--ease-out)}
html[data-lang="th"] .dr-d{font-size:1rem;line-height:1.65}
@media (hover:hover){
  .dr-d{opacity:0;transform:translateY(-6px)}
  .door:hover .dr-leaf,.door:focus-visible .dr-leaf{transform:rotateY(-66deg)}
  .door:hover .dr-spill::after,.door:focus-visible .dr-spill::after{opacity:1}
  .door:hover .dr-d,.door:focus-visible .dr-d{opacity:1;transform:none}
  .door:focus-visible .dr-t{text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px}
}
/* on a touch screen the doors stand ajar, so the light and the words are already there */
@media (hover:none){
  .dr-leaf{transform:rotateY(-34deg)}
  .dr-spill::after{opacity:.7}
}
.js .screen:not(.is-open) .dr-item{opacity:0;transform:translateY(16px)}
.js .screen .dr-item{transition:opacity .9s var(--ease),transform 1s var(--ease-out);transition-delay:calc(var(--k) * .1s)}
/* the door you chose swings all the way open as the lights go down */
.door.is-going .dr-leaf{transform:rotateY(-82deg)}
.door.is-going .dr-spill::after{opacity:1}

/* =========================================================================
   STORY — the colour of the page tells the time
   ========================================================================= */
body{--ground-line:#d08040}
body[data-page="story"]{--bg:var(--teak-7);transition:background-color 1.1s var(--ease),color 1.1s var(--ease);background:var(--bg);color:var(--ink)}
body[data-page="story"] .site-header{--h-ink:var(--ink);--h-ink-2:var(--ink-2);--h-ink-3:var(--ink-3);--h-line-2:var(--line-2);--h-bg:color-mix(in srgb,var(--bg) 94%,transparent)}
body[data-page="story"] .neutral{background:transparent}
body[data-chapter="intro"],body[data-chapter="epilogue"]{--ground-line:#d08040;--bg:#2c2015;--ink:#f2e8d5;--ink-2:rgba(242,232,213,.76);--ink-3:rgba(242,232,213,.58);--accent:#e08a3c;--line:rgba(242,232,213,.14);--line-2:rgba(242,232,213,.3)}
body[data-chapter="harvest"]{--ground-line:#e0be7a;--bg:#271e0e;--ink:#f1e7d3;--ink-2:rgba(241,231,211,.78);--ink-3:rgba(241,231,211,.58);--accent:#e0be7a;--line:rgba(241,231,211,.14);--line-2:rgba(241,231,211,.3)}
body[data-chapter="price"]{--ground-line:#c9a15e;--bg:#1d160d;--ink:#ece2cf;--ink-2:rgba(236,226,207,.76);--ink-3:rgba(236,226,207,.56);--accent:#c9a15e;--line:rgba(236,226,207,.13);--line-2:rgba(236,226,207,.28)}
body[data-chapter="third"]{--ground-line:#e6c98e;--bg:#20190d;--ink:#f0e6d2;--ink-2:rgba(240,230,210,.76);--ink-3:rgba(240,230,210,.56);--accent:#e6c98e;--line:rgba(240,230,210,.14);--line-2:rgba(240,230,210,.3)}
body[data-chapter="lullaby"]{--ground-line:#dcbc7d;--bg:#171822;--ink:#ebe5d8;--ink-2:rgba(235,229,216,.76);--ink-3:rgba(235,229,216,.56);--accent:#dcbc7d;--line:rgba(235,229,216,.12);--line-2:rgba(235,229,216,.28)}
body[data-chapter="tune"]{--ground-line:#d2ad68;--bg:#211c12;--ink:#efe6d4;--ink-2:rgba(239,230,212,.76);--ink-3:rgba(239,230,212,.56);--accent:#d2ad68;--line:rgba(239,230,212,.13);--line-2:rgba(239,230,212,.28)}
body[data-chapter="jar"]{--ground-line:#ad8a53;--bg:#15120c;--ink:#e6dcc8;--ink-2:rgba(230,220,200,.74);--ink-3:rgba(230,220,200,.54);--accent:#ad8a53;--line:rgba(230,220,200,.12);--line-2:rgba(230,220,200,.26)}
body[data-chapter="whisper"]{--ground-line:#bfd8cc;--bg:#141b1d;--ink:#e2e6e1;--ink-2:rgba(226,230,225,.74);--ink-3:rgba(226,230,225,.54);--accent:#bfd8cc;--line:rgba(226,230,225,.12);--line-2:rgba(226,230,225,.26)}
body[data-chapter="war"]{--ground-line:#cf5a45;--bg:#211410;--ink:#eadbd2;--ink-2:rgba(234,219,210,.76);--ink-3:rgba(234,219,210,.56);--accent:#cf5a45;--line:rgba(234,219,210,.13);--line-2:rgba(234,219,210,.28)}
body[data-chapter="corridor"]{--ground-line:#e3c88e;--bg:#100d0a;--ink:#efe6d6;--ink-2:rgba(239,230,214,.74);--ink-3:rgba(239,230,214,.54);--accent:#e3c88e;--line:rgba(239,230,214,.12);--line-2:rgba(239,230,214,.26)}
body[data-chapter="now"]{--ground-line:#5e6b73;--bg:#edf0f1;--ink:#1a1f23;--ink-2:rgba(26,31,35,.76);--ink-3:rgba(26,31,35,.58);--accent:#5e6b73;--line:rgba(26,31,35,.14);--line-2:rgba(26,31,35,.3);--focus:#1a1f23}
body[data-chapter="now"]::after{opacity:.02}

.concept{padding-block:var(--s6) var(--s7)}
.concept .split{align-items:start}
.concept .lead{max-width:33em}
.concept .body{max-width:33em;color:var(--ink-2)}
.concept .pull{color:var(--accent);padding-top:var(--s6)}
.rule-note{color:var(--ink-2);font-family:var(--f-dis);font-size:var(--stmt);line-height:1.35;text-align:center;padding-block:var(--s6) var(--s7)}
html[data-lang="th"] .rule-note{font-weight:300;font-size:clamp(1.3rem,2vw,1.72rem);line-height:1.65}
.rule-note p{margin:0 auto;max-width:24em}
/* the poems: one line per line, a little air between them */
.verse{margin:0;font-family:var(--f-dis);font-weight:400;font-size:clamp(1.22rem,1.5vw + .62rem,1.9rem);line-height:1.32}
.verse .vl{display:block;padding-left:1em;text-indent:-1em}
.verse .vl+.vl{margin-top:.5em}
html[data-lang="th"] .verse{font-weight:300;font-size:clamp(1.25rem,1.9vw,1.6rem);line-height:1.6}
.concept .poem{margin-top:var(--s5);max-width:22em}
.pull .verse{font-size:inherit;font-weight:inherit;line-height:inherit}
.concept .pull .vl+.vl{margin-top:.35em}

/* "Kin is about kins…": every kin stands out in the same warm colour */
.kin-sec{min-height:100vh;min-height:100svh;display:flex;align-items:center;padding-block:var(--s7);text-align:center}
.kin-sec>.wrap{width:100%}
.kin-text{margin:0 auto;max-width:21em;font-family:var(--f-dis);font-weight:400;font-size:clamp(1.55rem,3vw,2.55rem);line-height:1.42;color:var(--ink)}
html[data-lang="th"] .kin-text{font-weight:300;font-size:clamp(1.35rem,2.4vw,2.05rem);line-height:1.75}
.kw{font-family:"Cormorant Garamond",serif;font-style:italic;font-weight:500;color:#9a5b1d}
.family .closing-2{max-width:30rem;margin:var(--s7) auto 0;font-family:var(--f-dis);font-size:var(--lead);line-height:1.45}
html[data-lang="th"] .family .closing-2{font-family:var(--f-txt);font-size:1.12rem;line-height:1.75}

.chapters{position:relative}
.thread{position:absolute;top:0;left:calc(max(0px,(100% - var(--wrap)) / 2) + var(--pad) - 9px);width:20px;overflow:visible;pointer-events:none;z-index:3;transition:opacity .6s var(--ease)}
body.in-corridor .thread{opacity:0}
.thread .t-base{stroke:var(--line);stroke-width:1;fill:none}
.thread .t-line{stroke:var(--accent);stroke-width:1.4;fill:none;transition:stroke 1.1s}
.thread .knot{fill:var(--bg);stroke:var(--line-2);stroke-width:1.2;transition:fill .6s,stroke .6s}
.thread .knot.on{fill:var(--accent);stroke:var(--accent)}

.chapter{position:relative;min-height:88vh;display:flex;align-items:center;padding-block:var(--s7)}
.ch-grid{position:relative;z-index:1;display:grid;grid-template-columns:5fr 4fr;gap:var(--s6);align-items:center;padding-left:var(--s6)}
.ch-grid > *{min-width:0}
.chapter.flip .ch-main{order:2}
.ch-head{margin-bottom:var(--s5)}
.ch-num{display:block;font-family:var(--f-dis);font-size:var(--t2);color:var(--accent);line-height:1;margin-bottom:var(--s3)}
html[data-lang="th"] .ch-num{font-family:"Trirong",serif;font-weight:300}
.ch-era{display:block;font-family:var(--f-dis);font-style:italic;font-size:var(--lead);line-height:1.3;color:var(--ink-2);margin-bottom:var(--s2)}
html[data-lang="th"] .ch-era{font-style:normal;font-weight:300}
.ch-title{font-size:clamp(2.44rem,4.8vw,var(--t7));line-height:1.02}
html[data-lang="th"] .ch-title{line-height:1.3;font-size:clamp(2.2rem,4.2vw,var(--t6))}
.ch-text .clue{font-family:var(--f-dis);font-size:var(--stmt);line-height:1.36;color:var(--ink);max-width:22em;margin-bottom:var(--s4)}
html[data-lang="th"] .ch-text .clue{font-weight:300;font-size:clamp(1.3rem,2vw,1.72rem);line-height:1.65}
.ch-text .clue-2{color:var(--ink-2);font-size:var(--body);max-width:32em}
.js .ch-head,.js .ch-text,.js .ch-object,.js .melody-block{opacity:0;transform:translateY(12px);transition:opacity 1s var(--ease),transform 1.2s var(--ease-out)}
.js .ch-text{transition-delay:.12s}.js .ch-object{transition-delay:.28s}.js .melody-block{transition-delay:.4s}
.js .chapter.is-seen .ch-head,.js .chapter.is-seen .ch-text,.js .chapter.is-seen .ch-object,.js .chapter.is-seen .melody-block{opacity:1;transform:none}

.ch-object{margin:0;color:var(--accent);display:flex;flex-direction:column;align-items:center}
.ch-object svg{width:100%;max-width:27rem;aspect-ratio:5/4;height:auto;overflow:visible}
.ch-object .ol{fill:none;stroke:currentColor;stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.ch-object .ol.soft{opacity:.5}
.ch-object .ol.dash{stroke-dasharray:3 5;opacity:.55}
.ch-object .fillsoft{fill:currentColor;opacity:.12;stroke:none}
.ch-object .solid{fill:currentColor;stroke:none}
.js .ch-object .draw{stroke-dasharray:1;stroke-dashoffset:1}
.js .ch-object.is-lit .draw{transition:stroke-dashoffset 1.8s var(--ease) .2s;stroke-dashoffset:0}
@media (hover:none){.js .chapter.is-seen .ch-object .draw{transition:stroke-dashoffset 1.8s var(--ease) .45s;stroke-dashoffset:0}}
.obj-name{margin-top:var(--s4);font-size:var(--sm);color:var(--ink-3);text-align:center}
.jar .lid{transform-box:fill-box;transform-origin:20% 100%;transition:transform 1.4s var(--ease-out) 1.2s}
.ch-object.is-lit .jar .lid,.chapter.is-seen .jar .lid{transform:translate(2px,-7px) rotate(-9deg)}
.jar:hover .lid{transform:translate(3px,-12px) rotate(-14deg);transition-delay:0s}
.ch-now .ch-object .tablet{fill:#101418}

.melody-block{margin-top:var(--s5)}
.melody{width:100%;max-width:30rem;color:var(--accent);overflow:visible}
.melody path{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round}
.melody ellipse{fill:currentColor}
.melody-cap{font-family:var(--f-dis);color:var(--ink-2);font-size:var(--lead);margin-top:var(--s2)}
html[data-lang="th"] .melody-cap{font-family:var(--f-txt);font-size:1.06rem}
.js .melody path{stroke-dasharray:1;stroke-dashoffset:1}
.js .chapter.is-seen .melody path,.js .is-in .melody path{transition:stroke-dashoffset 2.6s var(--ease) .6s;stroke-dashoffset:0}
.js .melody ellipse{opacity:0;transition:opacity .6s}
.js .chapter.is-seen .melody ellipse,.js .is-in .melody ellipse{opacity:1}
.chapter.is-seen .melody ellipse:nth-of-type(1),.is-in .melody ellipse:nth-of-type(1){transition-delay:.9s}.chapter.is-seen .melody ellipse:nth-of-type(2),.is-in .melody ellipse:nth-of-type(2){transition-delay:1.15s}
.chapter.is-seen .melody ellipse:nth-of-type(3),.is-in .melody ellipse:nth-of-type(3){transition-delay:1.4s}.chapter.is-seen .melody ellipse:nth-of-type(4),.is-in .melody ellipse:nth-of-type(4){transition-delay:1.65s}
.chapter.is-seen .melody ellipse:nth-of-type(5),.is-in .melody ellipse:nth-of-type(5){transition-delay:1.9s}.chapter.is-seen .melody ellipse:nth-of-type(6),.is-in .melody ellipse:nth-of-type(6){transition-delay:2.15s}
.chapter.is-seen .melody ellipse:nth-of-type(7),.is-in .melody ellipse:nth-of-type(7){transition-delay:2.4s}

.ch-preta{width:100%}
.ch-preta svg.ghost-rings{max-width:none;aspect-ratio:1}
.preta-box{position:relative;width:100%;aspect-ratio:5/4;overflow:visible}
.preta-box canvas.gl{position:absolute;inset:-14% -16%;width:132%;height:128%;max-width:none}
.preta-box .preta-fallback{padding:4%}
.preta-box .ghost-rings{width:78%}

/* 1765 — a single shot of light */
.flash{position:fixed;inset:0;z-index:80;pointer-events:none;background:#fff1de;opacity:0}
.flash.go{animation:flash .9s ease-out}
@keyframes flash{0%{opacity:0}6%{opacity:.28}100%{opacity:0}}

/* 261 years */
.corridor{position:relative;height:330vh}
.cor-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:#100d0a}
.cor-fallback{background:radial-gradient(60% 60% at 50% 50%,rgba(255,183,102,.16),transparent 70%),linear-gradient(#211410,#100d0a 60%,#edf0f1)}
.cor-text{position:absolute;inset:0;z-index:2;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none;
  color:var(--cor-ink,#f4ead8);transition:color .4s}
.cor-year{display:block;font-family:"Cormorant Garamond",serif;font-weight:300;font-size:clamp(4.77rem,14vw,var(--t11));line-height:1;font-variant-numeric:lining-nums tabular-nums;text-shadow:0 2px 30px rgba(0,0,0,.45)}
html[data-lang="th"] .cor-year{font-family:"Trirong",serif;font-weight:200;font-size:clamp(3.8rem,10.5vw,var(--t10))}
.corridor.is-light .cor-year,.corridor.is-light .cor-line{text-shadow:0 1px 24px rgba(255,255,255,.7)}
.cor-line{margin-top:var(--s4);font-size:var(--stmt);font-weight:400;text-shadow:0 1px 20px rgba(0,0,0,.6)}
html[data-lang="th"] .cor-line{font-weight:300}

/* the needle: the tip of the thread, with the time written along it */
.needle{position:fixed;top:50%;left:calc(max(0px,(100vw - var(--wrap)) / 2) + var(--pad) - 9px - 30px);z-index:50;
  display:flex;align-items:center;gap:var(--s3);writing-mode:vertical-rl;transform:translateY(-50%) rotate(180deg);
  color:var(--ink);pointer-events:none;opacity:0;transition:opacity .5s var(--ease)}
body.in-chapters .needle{opacity:1}
body.in-corridor .needle{opacity:0}
.nd-num{font-family:var(--f-dis);color:var(--accent);font-size:1rem}
html[data-lang="th"] .nd-num{font-family:"Trirong",serif}
.nd-view{position:relative;display:grid}
.nd-view span{grid-area:1/1;white-space:nowrap;font-size:.85rem;color:var(--ink-2);transition:opacity .5s var(--ease)}
html[data-lang="th"] .nd-view span{font-size:.92rem}
.nd-view .out,.nd-view .in{opacity:0}

/* the family: knots on one thread */
.family{padding-block:var(--s8) var(--s7)}
.family .intro{text-align:center;max-width:34rem;margin:0 auto var(--s7)}
.family .intro .h2{margin-bottom:var(--s3)}
.family .intro p{color:var(--ink-2);margin-inline:auto}
.hint{font-size:var(--sm);color:var(--ink-3);margin:var(--s2) 0 0}
.lineage{position:relative;max-width:56rem;margin-inline:auto}
.lin-threads{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.lin-threads path{fill:none;stroke:var(--line-2);stroke-width:1.2;transition:stroke .4s,stroke-width .4s}
.lin-threads path.dashed{stroke-dasharray:3 6}
.lineage.is-tracing .lin-threads path.is-lit{stroke:var(--accent);stroke-width:1.8}
.lin-row{position:relative;height:13.2rem}
.lin-row.g4{height:11rem}
.gen-label{position:absolute;left:0;top:-.3rem;font-size:var(--sm);color:var(--ink-3)}
.kn{position:absolute;top:2.2rem;width:15rem;margin-left:-7.5rem;display:flex;flex-direction:column;align-items:center;text-align:center;outline:none;
  transition:opacity .5s var(--ease)}
.kn:focus-visible .kn-dot{outline:2px solid var(--focus,var(--lamp));outline-offset:4px}
.p-mali{left:22%}.p-kong{left:58%}.p-ploy{left:40%}.p-khwan{left:76%}.p-fueang{left:58%}.p-now{left:58%}
.kn-dot{width:13px;height:13px;border-radius:50%;background:var(--bg);border:1.4px solid var(--accent);margin-bottom:var(--s3);transition:background-color .4s,transform .5s var(--spring)}
.kn-name{font-family:"Trirong",serif;font-weight:300;font-size:var(--t3);line-height:1.25}
.kn-roman{font-family:"Cormorant Garamond",serif;font-style:italic;font-size:1.15rem;color:var(--ink-2)}
.kn-role{margin-top:var(--s2);font-size:.95rem;line-height:1.5;color:var(--ink-3);max-width:13rem}
html[data-lang="th"] .kn-role{font-size:1.02rem;line-height:1.65}
.lineage.is-tracing .kn:not(.is-lit){opacity:.3}
.lineage.is-tracing .kn.is-lit .kn-dot{background:var(--accent);transform:scale(1.25)}
.lin-gap{position:relative;height:5.5rem}
.lin-gap em{position:absolute;left:calc(58% + var(--s4));top:50%;transform:translateY(-50%);font-family:var(--f-dis);font-size:1rem;color:var(--ink-3);white-space:nowrap}
html[data-lang="th"] .lin-gap em{font-style:normal;font-family:var(--f-txt);font-size:.95rem}
.js .kn{opacity:0;transform:translateY(10px)}
.js .kn.is-in{opacity:1;transform:none;transition:opacity .9s var(--ease),transform 1s var(--ease-out)}
.js .lineage.is-tracing .kn.is-in:not(.is-lit){opacity:.3}
.closing{max-width:34rem;margin:var(--s7) auto 0;text-align:center;font-family:var(--f-dis);font-size:var(--t2);line-height:1.4;color:var(--ink)}
html[data-lang="th"] .closing{font-weight:300;font-size:1.32rem;line-height:1.75}
.closing-2{text-align:center;color:var(--ink-2);margin-top:var(--s5)}

/* =========================================================================
   MUSIC — two voices across a field
   ========================================================================= */
.music-hero{position:relative;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden;cursor:crosshair}
.music-hero::after{content:"";position:absolute;left:0;right:0;bottom:0;height:62%;z-index:1;pointer-events:none;background:linear-gradient(rgba(44,32,21,0),rgba(44,32,21,.72) 55%,rgba(44,32,21,.92))}
.voices-fallback .topo{width:100%;height:100%;color:var(--teak-3)}
.mh-inner{position:relative;z-index:2;padding-top:calc(var(--head-h) + var(--s7));padding-bottom:var(--s7);pointer-events:none}
.mh-hint{position:absolute;right:var(--pad);bottom:var(--s5);z-index:2;max-width:22rem;margin:0;font-size:var(--sm);color:var(--ink-3);text-align:right;pointer-events:none}
.music-about{padding-block:var(--s8) var(--s7)}
.ma-text{max-width:44rem;margin-inline:auto;text-align:center}
.ma-text .lead{max-width:none;font-family:var(--f-dis);font-size:var(--stmt);line-height:1.36}
html[data-lang="th"] .ma-text .lead{font-weight:300;font-size:clamp(1.3rem,2vw,1.72rem);line-height:1.7}
.auditions{padding-block:var(--s7) var(--s8)}
.au-grid{display:grid;grid-template-columns:5fr 4fr;gap:var(--s6);align-items:center}
.au-grid > *{min-width:0}
.au-text .lead{margin-bottom:var(--s4)}
.au-text .actions{margin-top:var(--s5)}
.au-text p{color:var(--ink-2);max-width:32em}
.au-mail{margin-top:var(--s5)}
.au-staff{margin:0;color:var(--teak-2)}
.fermata{width:100%;height:auto;overflow:visible}
.fermata .sl{stroke:currentColor;stroke-width:1.4;opacity:.45}
.fermata .bar{stroke:currentColor;stroke-width:1.6;opacity:.7}.fermata .bar.thick{stroke-width:5}
.fermata .rest{fill:currentColor}
.fermata .ferm{fill:none;stroke:var(--saffron);stroke-width:3;stroke-linecap:round}
.fermata .ferm-dot{fill:var(--saffron)}
.js .fermata .ferm{stroke-dasharray:140;stroke-dashoffset:140;animation:hold 4.2s var(--ease) infinite}
.js .fermata .ferm-dot{animation:holddot 4.2s var(--ease) infinite}
@keyframes hold{0%{stroke-dashoffset:140}35%,80%{stroke-dashoffset:0}100%{stroke-dashoffset:-140}}
@keyframes holddot{0%,25%{opacity:0}40%,85%{opacity:1}100%{opacity:0}}

/* =========================================================================
   ABOUT — inside the house. The names are carved into the teak; the groove's
   shading follows the lamp.
   ========================================================================= */
.carve{color:#1a1108;
  text-shadow:calc(var(--sx,0) * -1.6px) calc(var(--sy,-1) * -1.6px) 0 rgba(255,222,176,calc(.42 * var(--sl,.6))),
              calc(var(--sx,0) * 1px) calc(var(--sy,-1) * 1px) 1px rgba(0,0,0,.55)}
.room.is-lit .carve{text-shadow:calc(var(--sx,0) * -1.6px) calc(var(--sy,-1) * -1.6px) 0 rgba(255,222,176,.7),calc(var(--sx,0) * 1px) calc(var(--sy,-1) * 1px) 1px rgba(0,0,0,.55)}
.rm-sinan.is-lit .carve{text-shadow:calc(var(--sx,0) * -1.6px) calc(var(--sy,-1) * -1.6px) 0 rgba(236,106,79,.75),calc(var(--sx,0) * 1px) calc(var(--sy,-1) * 1px) 1px rgba(0,0,0,.55)}
.ab-open{padding:calc(var(--head-h) + var(--s7)) 0 var(--s7);min-height:min(34rem,70vh);display:flex;align-items:center}
.ab-h{font-size:clamp(2.2rem,4.6vw,4.2rem);line-height:1.08;font-weight:400;max-width:13.5em;letter-spacing:-.005em}
html[data-lang="th"] .ab-h{font-weight:300;line-height:1.4;font-size:clamp(1.9rem,3.9vw,3.5rem)}
.room{position:relative;padding-block:var(--s7) var(--s7)}
.rm-text{max-width:46rem}
.mkr-role{font-family:var(--f-dis);font-style:italic;font-size:var(--t2);line-height:1.2;color:var(--ink-2);margin:0 0 var(--s2)}
html[data-lang="th"] .mkr-role{font-style:normal;font-weight:300}
.mkr-h{font-size:clamp(3.4rem,9vw,var(--t10));line-height:.96;font-weight:400;margin-bottom:var(--s5);cursor:pointer;user-select:none;-webkit-user-select:none;letter-spacing:-.01em}
html[data-lang="th"] .mkr-h{font-weight:300;line-height:1.2;font-size:clamp(2.8rem,7.4vw,var(--t9))}
.mkr-bio p{color:var(--ink-2);max-width:34em;font-size:1.125rem;line-height:1.65}
html[data-lang="th"] .mkr-bio p{font-size:1.2rem;line-height:1.85}

/* the writer's note, said on the wall */
.note{padding-block:var(--s7) var(--s8)}
.note-h{font-size:clamp(2rem,4vw,3.4rem);margin-bottom:var(--s6)}
.note-body{max-width:40rem}
.note-body p{font-family:var(--f-dis);font-weight:400;font-size:clamp(1.35rem,2vw,1.75rem);line-height:1.5;color:var(--ink);margin:0}
html[data-lang="th"] .note-body p{font-weight:300;font-size:clamp(1.2rem,1.8vw,1.45rem);line-height:1.9}
.note-sign{display:block;margin-top:var(--s5);font-family:"Cormorant Garamond",serif;font-style:italic;font-size:var(--t3);color:var(--ink)}

/* how we tell it: knots on one thread */
.approach{padding-block:var(--s7) var(--s8)}
.ap-wrap{position:relative;display:grid;grid-template-columns:4fr 5fr;gap:var(--s7);align-items:start}
.ap-wrap > *{min-width:0}
.ap-index{position:sticky;top:calc(var(--head-h) + var(--s6))}
.ap-index .lead{color:var(--ink-2)}
.ap-line{position:absolute;left:calc(var(--pad) + 44.4% + var(--s7) * .5 - 1px);top:.6rem;bottom:0;width:1px;background:var(--line)}
.ap-line::after{content:"";position:absolute;left:0;top:0;width:100%;height:var(--h,0px);background:var(--accent);transition:height .5s var(--ease-out)}
.pnotes{position:relative;padding-left:var(--s6)}
.pn{position:relative;color:var(--ink-2);padding-block:var(--s5)}
.pn-knot{position:absolute;left:calc(-1 * var(--s6) - 6px);top:calc(var(--s5) + .55rem);width:13px;height:13px;border-radius:50%;background:var(--bg);border:1.4px solid var(--accent);transition:background-color .4s,transform .5s var(--spring)}
.pn.is-cur .pn-knot{background:var(--accent);transform:scale(1.25)}
.pn-t{display:block;font-family:var(--f-dis);font-weight:400;font-size:clamp(1.4rem,2vw,1.85rem);line-height:1.15;color:var(--ink);margin-bottom:var(--s3)}
html[data-lang="th"] .pn-t{font-weight:300;line-height:1.4}
.pn p{margin:0;font-size:1.125rem;line-height:1.62;max-width:32em}
html[data-lang="th"] .pn p{font-size:1.2rem;line-height:1.85}
.about-close{padding-block:var(--s5) var(--s9)}
.about-close .pull{max-width:30em;color:var(--ink-2)}

/* =========================================================================
   OPPORTUNITIES — the roles arrive and leave as you scroll
   ========================================================================= */
.page-head .intro{margin-top:var(--s4)}
.roles{padding-bottom:var(--s7)}
.stack{position:relative;display:flex;flex-direction:column;gap:12vh}
.role-card{position:sticky;top:calc(var(--head-h) + 4vh + var(--i) * .78rem);min-height:min(calc(100vh - var(--head-h) - 12vh),44rem);
  border-radius:4px;transform-origin:50% 0;will-change:transform}
.rc-in{position:relative;height:100%;min-height:inherit;border-radius:4px;overflow:hidden;background:var(--c-bg);color:var(--c-ink);transition:filter .2s linear}
.rc-dance{--c-bg:#34261a;--c-ink:#f2e8d5;--c-ink-2:rgba(242,232,213,.8);--c-ink-3:rgba(242,232,213,.6);--c-art:#e08a3c;--c-topo:#8c6f52}
.rc-story{--c-bg:#4a3726;--c-ink:#f6eedf;--c-ink-2:rgba(246,238,223,.82);--c-ink-3:rgba(246,238,223,.62);--c-art:#ffd4a1;--c-topo:#8c6f52}
.rc-songs{--c-bg:#8a4a1c;--c-ink:#fff3e4;--c-ink-2:rgba(255,243,228,.86);--c-ink-3:rgba(255,243,228,.66);--c-art:#ffd4a1;--c-topo:#c98a52}
.rc-music{--c-bg:#261b11;--c-ink:#f2e8d5;--c-ink-2:rgba(242,232,213,.8);--c-ink-3:rgba(242,232,213,.6);--c-art:#ffd4a1;--c-topo:#6e563f}
.rc-sponsors{--c-bg:#5c2a1c;--c-ink:#fff1e6;--c-ink-2:rgba(255,241,230,.84);--c-ink-3:rgba(255,241,230,.64);--c-art:#ffc9a6;--c-topo:#a4563e}
.rc-now{display:inline-flex;align-items:center;gap:.5rem;margin:0 0 var(--s3);font-size:var(--sm);color:var(--c-art)}
.rc-now::before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor;box-shadow:0 0 0 0 currentColor;animation:nowPulse 2.4s ease-out infinite}
@keyframes nowPulse{0%{box-shadow:0 0 0 0 rgba(255,201,166,.6)}70%{box-shadow:0 0 0 9px rgba(255,201,166,0)}100%{box-shadow:0 0 0 0 rgba(255,201,166,0)}}
html.rm .rc-now::before{animation:none}
.rc-mail{margin:var(--s4) 0 0;font-size:var(--sm);color:var(--ink-3)}
.rc-mail .textlink{color:var(--ink-2)}
.rc-kin{display:block;font-size:clamp(7rem,15vw,13rem);line-height:1;color:var(--c-art);opacity:.9}
.rc-kin.is-svg svg{height:1em}
.js .rc-kin{clip-path:inset(100% 0 -10% 0);transform:translateY(.08em);transition:clip-path 1.3s var(--ease),transform 1.3s var(--ease)}
.js .role-card.is-here .rc-kin{clip-path:inset(-12% 0 -12% 0);transform:none}
.role-card{--ink:var(--c-ink);--ink-2:var(--c-ink-2);--ink-3:var(--c-ink-3);--line-2:color-mix(in srgb,var(--c-ink) 32%,transparent);--fill:var(--c-ink);--fill-ink:var(--c-bg);--fill-hover:var(--c-art);--focus:var(--c-art);--accent:var(--c-art)}
.rc-topo{position:absolute;inset:0;width:100%;height:100%;color:var(--c-topo);opacity:.55;pointer-events:none}
.rc-grid{position:relative;display:grid;grid-template-columns:5fr 4fr;gap:var(--s6);align-items:center;min-height:inherit;padding:var(--s7) var(--s7)}
.rc-grid > *{min-width:0}
.rc-title{font-size:clamp(2.2rem,4.3vw,var(--t6));line-height:1.04;margin-bottom:var(--s5)}
html[data-lang="th"] .rc-title{line-height:1.3;font-size:clamp(1.95rem,3.6vw,var(--t5))}
.rc-cols{display:grid;grid-template-columns:1fr 1fr;gap:var(--s5)}
.rc-cols h3{font-family:var(--f-dis);font-size:var(--lead);font-weight:400;color:var(--ink);margin-bottom:var(--s2)}
.rc-cols p{color:var(--ink-2);font-size:var(--body);margin:0}
.rc-num{display:flex;justify-content:flex-end;align-items:center;align-self:stretch;color:var(--c-art)}
.rc-numeral{display:block;font-family:"Trirong",serif;font-weight:200;font-size:clamp(9rem,20vw,18rem);line-height:1;padding-right:.04em}
.js .rc-numeral{clip-path:inset(100% 0 -10% 0);transform:translateY(.08em);transition:clip-path 1.3s var(--ease),transform 1.3s var(--ease)}
.js .role-card.is-here .rc-numeral{clip-path:inset(-12% 0 -12% 0);transform:none}

/* the form: a letter, stamps for the role, an envelope that seals */
.apply-sec{padding-block:var(--s8);scroll-margin-top:var(--head-h)}
.apply-head .lead{color:var(--ink-2)}
.apply-head{max-width:40rem;margin-bottom:var(--s6)}
.form-grid{display:grid;grid-template-columns:5fr 4fr;gap:var(--s6);align-items:start}
.form-grid > *{min-width:0}
.sheet{padding:0}
.field{display:block;margin-bottom:var(--s5)}
.field > .lbl{display:flex;justify-content:space-between;gap:var(--s3);font-size:var(--sm);color:var(--ink-2);margin-bottom:.2rem}
.opt{color:var(--ink-3)}
.inp{display:block;width:100%;background:transparent;border:0;border-bottom:1px solid rgba(242,232,213,.42);padding:.5rem 0 .55rem;color:var(--ink);font-size:var(--body);border-radius:0;transition:border-color .3s,box-shadow .3s}
.inp:focus{outline:none;border-bottom-color:var(--ink);box-shadow:0 1px 0 0 var(--ink)}
.inp::placeholder{color:var(--ink-3)}
textarea.inp{min-height:7.6rem;resize:vertical;line-height:2.05rem;padding-top:.15rem;
  background-image:repeating-linear-gradient(to bottom,transparent 0 calc(2.05rem - 1px),var(--line) calc(2.05rem - 1px) 2.05rem);background-attachment:local}
.hint{display:block;font-size:var(--sm);color:var(--ink-3);margin-top:var(--s2)}
.err{display:block;font-size:var(--sm);color:#e8846a;margin-top:var(--s2)}
.err:empty{display:none}
.field.has-err .inp{border-bottom-color:#e8846a}
.stamps{border:0;padding:0 0 .8rem;margin:0 0 var(--s6);min-width:0;overflow:visible}
.stamps legend{padding:0;margin-bottom:var(--s3);font-size:var(--sm);color:var(--ink-2)}
.stamp-row{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--s3)}
.stamp{position:relative;display:block;cursor:pointer}
.stamp input{position:absolute;opacity:0;width:1px;height:1px}
.stamp-face{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--s1);aspect-ratio:4/5;padding:var(--s3) var(--s2);
  color:var(--saffron);text-align:center;transition:transform .5s var(--spring)}
.stamp-shape{position:absolute;inset:0;width:100%;height:100%;overflow:visible;transition:filter .3s}
.stamp-shape path{fill:rgba(242,232,213,.05);transition:fill .3s}
.stamp-shape rect{fill:none;stroke:rgba(242,232,213,.25);stroke-width:.8;vector-effect:non-scaling-stroke;transition:stroke .3s}
.stamp:hover .stamp-shape path{fill:rgba(242,232,213,.09)}
.stamp-num{position:relative;font-family:"Trirong",serif;font-weight:300;font-size:2.5rem;line-height:1;color:var(--accent)}
.stamp-name{position:relative;font-size:.8125rem;line-height:1.3;color:var(--ink)}
html[data-lang="th"] .stamp-name{font-size:.9rem}
.stamp:hover .stamp-face{transform:translateY(-3px) rotate(-1.5deg)}
.postmark{position:absolute;left:4%;top:18%;width:96%;height:auto;fill:none;stroke:var(--kin);stroke-width:1.6;opacity:0;transform:scale(1.5) rotate(-18deg);
  transition:opacity .15s,transform .35s var(--spring);pointer-events:none}
.postmark text{fill:var(--kin);stroke:none;font-family:"Inter",sans-serif;font-weight:600}
.postmark .pm-t1{font-size:13px;letter-spacing:2px}.postmark .pm-t2{font-size:9px;letter-spacing:1px}
.stamp input:checked + .stamp-face{transform:rotate(-1.5deg) translateY(-2px)}
.stamp input:checked + .stamp-face .stamp-shape path{fill:rgba(255,212,161,.16)}
.stamp input:checked + .stamp-face .stamp-shape rect{stroke:var(--lamp)}
.stamp input:checked + .stamp-face .postmark{opacity:.85;transform:rotate(-12deg)}
.stamp input:focus-visible + .stamp-face{outline:2px solid var(--lamp);outline-offset:3px}
.fields{display:grid;grid-template-columns:1fr 1fr;gap:0 var(--s5)}
.fields .field.area{grid-column:1/-1}
.sendbar{display:flex;flex-wrap:wrap;gap:var(--s3) var(--s5);align-items:center;margin-top:var(--s4)}
.status{min-height:1.6em;margin-top:var(--s4);color:var(--accent);font-size:1rem}
.direct{margin-top:var(--s4);color:var(--ink-3);font-size:.95rem}

.envelope{position:sticky;top:calc(var(--head-h) + var(--s5))}
.env-stage{position:relative;padding-bottom:6.2rem}
.letter-paper{position:relative;z-index:1;background:rgba(242,232,213,.05);box-shadow:inset 0 0 0 1px rgba(242,232,213,.14);color:var(--ink);padding:var(--s5) var(--s5) var(--s6);border-radius:2px;
  font-size:.9rem;line-height:1.6;max-height:calc(100vh - var(--head-h) - 13rem);overflow:auto;
  transition:transform 1s cubic-bezier(.65,0,.35,1),opacity .4s}
html[data-lang="th"] .letter-paper{font-size:1rem;line-height:1.75}
.letter-h{display:block;font-family:"Cormorant Garamond",serif;font-size:1.25rem;color:var(--accent);margin-bottom:var(--s3)}
html[data-lang="th"] .letter-h{font-family:"Sarabun",sans-serif;font-size:1rem;font-weight:500}
.letter-paper dl{margin:0 0 var(--s4);display:grid;grid-template-columns:auto 1fr;gap:2px var(--s3)}
.letter-paper dt{color:var(--ink-3)}
.letter-paper dd{margin:0;word-break:break-word}
.letter-paper pre{margin:0;white-space:pre-wrap;word-break:break-word;font:inherit}
.letter-paper .empty{color:var(--ink-3)}
/* a kraft envelope, and the red seal of the house */
.env-pocket{position:absolute;left:0;right:0;bottom:0;z-index:2;height:8.4rem;background:transparent;border-radius:3px;color:var(--ink-teak)}
.env-flap{display:none;position:absolute;left:0;right:0;bottom:100%;height:5.4rem;background:#b48f66;clip-path:polygon(0 100%,50% 0,100% 100%);transform-origin:50% 100%;
  transform:rotateX(180deg) translateY(-1px);opacity:0;transition:transform .7s var(--ease) .35s,opacity .2s .35s}
.env-addr{display:none}
.env-seal{position:absolute;left:50%;top:-5rem;z-index:3;width:3.1rem;height:3.1rem;margin-left:-1.55rem;border-radius:50%;background:var(--kin);color:#ffe3da;
  display:flex;align-items:center;justify-content:center;font-size:1.25rem;box-shadow:inset 0 0 0 3px rgba(255,255,255,.15);
  opacity:0;transform:scale(1.8);transition:opacity .2s,transform .4s var(--spring)}
.seal-mark{font-size:1.4rem}
.envelope.is-sealed .letter-paper{transform:translateY(8%);opacity:.3}
.envelope.is-sealed .env-flap{transform:none;opacity:1;transition-delay:.55s}
.envelope.is-sealed .env-seal{opacity:1;transform:none;transition-delay:1.1s}

/* =========================================================================
   Responsive
   ========================================================================= */
@media (max-width:1080px){
  .nav ul{gap:var(--s4)}
  .rc-grid{padding:var(--s6)}
}
@media (max-width:900px){
  .doors{grid-template-columns:1fr 1fr;gap:var(--s6) var(--s5);max-width:30rem}
  :root{--head-h:4rem}
  .nav{display:none}
  .bar .lang-switch{display:none}
  .menu-btn{display:block}
  .split,.ch-grid,.au-grid,.form-grid,.pro-grid,.ap-wrap{grid-template-columns:1fr;gap:var(--s5)}
  .room{padding-block:var(--s6)}
  .ap-index{position:static}
  .ap-line{left:calc(var(--pad) + 6px)}
  .pnotes{padding-left:var(--s5)}
  .pn-knot{left:calc(-1 * var(--s5) - 6px)}
  .letter{padding:var(--s6) var(--s5)}
  .tune-art{width:140%;margin-left:-20%}
  .chapter.flip .ch-main{order:0}
  .dip{grid-template-columns:1fr;gap:var(--s5)}
  .dip-dark{min-height:26rem}
  .f-top{grid-template-columns:1fr;gap:var(--s5);align-items:start}
  .ch-grid{padding-left:var(--s5)}
  .thread{left:calc(var(--pad) - 9px)}
  .ch-object svg{max-width:17rem}
  .chapter{min-height:auto;padding-block:var(--s7)}
  .needle{left:auto;right:var(--pad);top:auto;bottom:var(--s4);transform:none;writing-mode:horizontal-tb;background:color-mix(in srgb,var(--bg) 86%,transparent);padding:.35rem .7rem;border-radius:3px}
  .envelope{position:relative;top:0}
  .letter-paper{max-height:none}
  .env-pocket{left:0;right:0}
  .rc-grid{grid-template-columns:1fr;gap:var(--s4);padding:var(--s6) var(--s5)}
  .rc-num{order:-1;justify-content:flex-start;align-self:auto}
  .rc-numeral{font-size:6.5rem;line-height:1;padding:0}
  .rc-kin{font-size:5.5rem}
  .role-card{min-height:calc(100vh - var(--head-h) - 6vh);min-height:calc(100svh - var(--head-h) - 6vh)}
  .prologue{--hz:15rem}
  .pro-h{margin-bottom:var(--s2)}
  .question{height:165vh}
}
/* the menu did not fit on one line (set by the script): the phone header, at any width */
html.nav-tight .nav,html.nav-tight .bar .lang-switch{display:none}
html.nav-tight .menu-btn{display:block}
@media (max-width:640px){
  .hero-foot{flex-direction:column;align-items:center;gap:var(--s2);bottom:var(--s4);text-align:center}
  .hero-foot .cue{display:none}
  .q-text{font-size:1.5rem;line-height:1.3;max-width:20em}
  html[data-lang="th"] .q-text{font-size:1.45rem;line-height:1.6}
  .prologue{--hz:12rem}
  .f-bottom{flex-direction:column;align-items:flex-start}
  .dip > article{padding:var(--s5) var(--s4)}
  .rc-cols{grid-template-columns:1fr;gap:var(--s4)}
  .fields{grid-template-columns:1fr}
  .stamp-row{grid-template-columns:repeat(2,1fr)}
  .stamp-name,html[data-lang="th"] .stamp-name{font-size:.9375rem}
  .letter-paper{font-size:.9375rem}
  .lin-row{height:12.4rem}
  /* two people side by side sit 42% of the width apart: their columns stay narrower than that */
  .kn{width:min(9.6rem,34vw);margin-left:calc(min(9.6rem,34vw) / -2)}
  .kn-name{font-size:1.5rem}
  .kn-role{font-size:.9375rem}
  .p-mali{left:20%}.p-kong{left:62%}.p-ploy{left:38%}.p-khwan{left:80%}.p-fueang{left:59%}.p-now{left:59%}
  .lin-gap em{left:calc(59% + var(--s3))}
  .sheet{padding:var(--s5) var(--s4)}
  .mh-hint{left:var(--pad);text-align:left}
}
@media (max-width:640px){
  .hero-frame .fl{opacity:.24}
  .hero-frame .fl.faint{opacity:.1}
}
@media (max-aspect-ratio:1/1){
  .hero-stage{aspect-ratio:auto;top:calc(var(--head-h) + 1.5vh);bottom:calc(var(--s7) + 2.4rem);width:min(90vw,40rem);max-width:none}
  .hero-lamp{left:80%}
}
@media (hover:none){
  /* on a touch screen the lamp cannot be carried to the words: unlit text is bright
     enough to read on its own (4.5:1), and the lamp still warms what it reaches */
  .dk-base,body[data-page] .dk-base{opacity:.74}
  body[data-page] .rc-songs .dk-base{opacity:.92}
  /* the carved names: a lighter groove in the teak, readable without the lamp (3:1) */
  .carve{color:#8c6f52}
  .ground-still{opacity:.4}
}
/* a finger needs about 44px: invisible touch areas around the small controls, so nothing looks different */
@media (pointer:coarse){
  .lang-flags{gap:1.125rem}
  .lang-btn::before{content:"";position:absolute;inset:-9px;border-radius:50%}
  .ks-btn{position:relative}
  .ks-btn::before{content:"";position:absolute;inset:-.35rem -.4rem}
  .f-nav ul{gap:0 var(--s5)}
  .f-nav a{display:inline-block;padding-block:.75rem}
  .f-mail{position:relative}
  .f-mail::before{content:"";position:absolute;inset:-.3rem 0}
  .term{position:relative}
  .term::after{content:"";position:absolute;inset:-.6rem -.2rem}
  .qz-back{padding:.7rem .6rem;margin-inline:-.6rem}
}

/* =========================================================================
   Reduced motion
   ========================================================================= */
html.rm *,html.rm *::before,html.rm *::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;transition-delay:0s !important}
html.rm .question{height:auto}
html.rm .q-sticky{position:relative;height:auto;padding-block:var(--s8)}
html.rm .q-text .w{color:var(--cream)}
html.rm .q-after{opacity:1;transform:none}
html.rm .land-stick{position:absolute;inset:0;height:auto}
html.rm .corridor{height:auto}
html.rm .cor-sticky{position:relative;height:70vh}
html.rm .role-card{position:relative;top:auto}
html.rm .dr-leaf,html.rm .dr-d,html.rm .dr-item{transition:none !important}
html.rm .scroll-lit .w{color:var(--ink)}
html.rm .dk-base{opacity:1}
html.rm .dk-lit{display:none}
html.rm .lamp-only{-webkit-mask:none;mask:none;opacity:.14}
html.rm .ch-object .draw{stroke-dashoffset:0}
html.rm .ap-line::after{transition:none}

/* ==========================================================================
   QUIZ — which KIN character are you? Questions on the land, answered one at
   a time; a thread of sixteen knots ties itself as you go.
   ========================================================================== */
.qz{position:relative;z-index:1}
.qz .lamp-text{--w1:#fff6e6;--w2:#f2e8d5;--w3:#a88c6c}
.qz-intro{min-height:100vh;min-height:100svh;padding-top:calc(var(--head-h) + var(--s8));padding-bottom:var(--s7);display:flex;flex-direction:column;justify-content:center}
.qz-kicker{margin:0 0 var(--s4);font-size:var(--sm);color:var(--ink-3)}
.qz-title{max-width:11em}
html[data-lang="th"] .qz-title{font-weight:300;line-height:1.18;max-width:12em}
.qz-cast{list-style:none;margin:var(--s7) 0 var(--s6);padding:0;display:flex;flex-wrap:wrap;gap:var(--s4) var(--s6)}
.qz-cast li{display:flex;flex-direction:column;gap:.15rem}
.qc-th{font-family:"Trirong",serif;font-weight:300;font-size:clamp(1.5rem,2.5vw,2.1rem);line-height:1.25}
.qc-ro{font-family:"Cormorant Garamond",serif;font-style:italic;font-size:1.05rem;color:var(--ink-3)}
.qz-go{display:flex;flex-direction:column;align-items:flex-start;gap:var(--s3)}
.qz-thanks{margin:0;font-size:var(--t-1);color:var(--ink-3);letter-spacing:.01em}
html[data-lang="th"] .qz-thanks{font-size:.9rem}
.qz-noscript{margin-top:var(--s4);color:var(--ink-2)}

/* the questions */
.qz-stage{min-height:100vh;min-height:100svh;padding-top:calc(var(--head-h) + var(--s7));padding-bottom:var(--s7);display:flex;flex-direction:column}
.qz-track{display:flex;align-items:center;gap:var(--s5);margin-bottom:var(--s7)}
.qz-thread{position:relative;flex:1;max-width:38rem;height:18px;display:flex;justify-content:space-between;align-items:center}
.qz-thread::before,.qz-thread::after{content:"";position:absolute;left:4px;top:50%;height:1px;transform:translateY(-.5px)}
.qz-thread::before{right:4px;background:var(--line-2)}
.qz-thread::after{width:calc((100% - 8px) * var(--p,0));background:var(--accent);transition:width .6s var(--ease-out)}
.qz-knot{position:relative;z-index:1;width:9px;height:9px;border-radius:50%;background:var(--page-bg,var(--bg));border:1.3px solid var(--line-2);
  transition:background-color .4s,border-color .4s,transform .5s var(--spring),box-shadow .5s}
.qz-knot.is-done{background:var(--accent);border-color:var(--accent)}
.qz-knot.is-cur{border-color:var(--lamp);transform:scale(1.55);box-shadow:0 0 14px rgba(255,212,161,.55)}
.qz-count{margin:0;font-size:var(--sm);color:var(--ink-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.qz-count b{font-weight:500;color:var(--ink)}
.qz-qs{flex:1}
.qz-q{max-width:48rem}
.qz-q.is-in{animation:qzIn .65s var(--ease-out) both}
@keyframes qzIn{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}
.qz-qt{font-size:clamp(2rem,4.4vw,var(--t6));line-height:1.08;margin-bottom:var(--s6);outline:none;max-width:16em}
html[data-lang="th"] .qz-qt{font-weight:300;line-height:1.32;font-size:clamp(1.8rem,3.8vw,3.2rem);max-width:19em}
.qz-opts{list-style:none;margin:0;padding:0}
.qz-opts li{border-top:1px solid var(--line)}
.qz-opts li:last-child{border-bottom:1px solid var(--line)}
.qa{display:flex;align-items:baseline;gap:var(--s4);width:100%;padding:var(--s4) 0;text-align:left;color:var(--ink-2);
  font-size:clamp(1.12rem,1.55vw,1.32rem);line-height:1.45;cursor:pointer;transition:color .3s,opacity .45s}
html[data-lang="th"] .qa{font-size:clamp(1.18rem,1.6vw,1.38rem);line-height:1.6}
.qa-k{flex:none;position:relative;width:13px;height:13px;border-radius:50%;border:1.3px solid var(--line-2);transform:translateY(.1em);
  transition:border-color .3s,background-color .3s,transform .5s var(--spring)}
.qa-k::after{content:"";position:absolute;left:100%;top:50%;width:0;height:1px;background:var(--lamp);transition:width .45s var(--ease-out)}
.qa:hover,.qa:focus-visible{color:var(--ink)}
.qa:hover .qa-k,.qa:focus-visible .qa-k{border-color:var(--lamp)}
.qa:hover .qa-k::after{width:var(--s3)}
.qa.is-picked{color:var(--lamp)}
.qa.is-picked .qa-k{background:var(--accent);border-color:var(--accent);transform:translateY(.1em) scale(1.25)}
.qz-q.is-answered .qa:not(.is-picked){opacity:.36}
.qz-nav{margin-top:var(--s6);min-height:2rem}
.qz-back{font-size:var(--sm);color:var(--ink-3)}
.qz-back:hover{color:var(--ink)}
.qz-live{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

/* the answer */
.qz-result{padding-top:calc(var(--head-h) + var(--s7));padding-bottom:var(--s8)}
.rs-card.is-in{animation:qzIn .9s var(--ease-out) both}
.rs-you{margin:0 0 var(--s2);font-size:var(--sm);color:var(--ink-3)}
.rs-name{display:flex;flex-direction:column;gap:.1em;margin:0;outline:none}
.rs-th{font-family:"Trirong",serif;font-weight:300;font-size:clamp(3.6rem,10vw,var(--t10));line-height:1.12;padding-bottom:.05em}
.rs-ro{font-family:"Cormorant Garamond",serif;font-style:italic;font-weight:400;font-size:var(--t3);line-height:1.1;color:var(--ink-2)}
.rs-role{margin:var(--s4) 0 0;color:var(--ink-3);font-size:var(--sm)}
.rs-grid{display:grid;grid-template-columns:5fr 6fr;gap:var(--s7);align-items:center;margin-top:var(--s6)}
.rs-grid > *{min-width:0}
.rs-obj{margin:0;color:var(--accent);display:flex;flex-direction:column;align-items:center}
.rs-obj svg{width:100%;max-width:27rem;aspect-ratio:5/4;height:auto;overflow:visible}
.rs-obj .ol{fill:none;stroke:currentColor;stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.rs-obj .ol.soft{opacity:.5}.rs-obj .ol.dash{stroke-dasharray:3 5;opacity:.55}
.rs-obj .fillsoft{fill:currentColor;opacity:.12;stroke:none}.rs-obj .solid{fill:currentColor;stroke:none}
.rs-obj .obj-name{position:relative;z-index:1;margin-top:var(--s6)}
.rs-traits{margin:0 0 var(--s4);font-family:var(--f-dis);font-size:var(--t2);line-height:1.3;color:var(--accent)}
html[data-lang="th"] .rs-traits{font-size:1.35rem}
.rs-desc{margin:0;font-size:var(--lead);line-height:1.6;color:var(--ink);max-width:32em}
html[data-lang="th"] .rs-desc{line-height:1.85}
.rs-quote{margin:var(--s6) 0 0;padding-left:var(--s4);border-left:1px solid var(--line-2)}
.rs-quote blockquote{margin:0;font-family:var(--f-dis);font-size:var(--stmt);line-height:1.3;color:var(--ink)}
html[data-lang="th"] .rs-quote blockquote{font-weight:300;line-height:1.5}
.rs-quote figcaption{margin-top:var(--s2);font-size:var(--sm);color:var(--ink-3)}
.rs-kin{display:grid;grid-template-columns:1fr 1fr;gap:var(--s5);margin-top:var(--s6);padding-top:var(--s5);border-top:1px solid var(--line)}
.rs-k{display:flex;flex-direction:column;gap:.3rem}
.rs-kl{font-family:"Cormorant Garamond",serif;font-style:italic;font-size:var(--t3);line-height:1;color:var(--ink)}
.rs-kl i{font-style:inherit;color:var(--ink-3)}
.rs-k.is-kin .rs-kl{color:var(--kin-2);text-shadow:0 0 22px rgba(196,61,42,.45)}
.rs-kn{font-family:var(--f-dis);font-size:var(--t2);line-height:1.2;color:var(--ink)}
html[data-lang="th"] .rs-kn{font-family:"Trirong",serif;font-weight:300}
.rs-kd{font-size:var(--sm);color:var(--ink-3);line-height:1.5}
.rs-also{margin:var(--s5) 0 0;color:var(--ink-2)}
.rs-also b{font-weight:500;color:var(--ink)}
.rs-also:empty{display:none}
.rs-actions{margin-top:var(--s7)}

@media (max-width:900px){
  .qz-thanks,html[data-lang="th"] .qz-thanks{font-size:var(--sm)}
  .rs-grid{grid-template-columns:1fr;gap:var(--s5)}
  .rs-obj .obj-box{max-width:22rem}
}
@media (max-width:640px){
  .qz-intro{justify-content:flex-start;padding-top:calc(var(--head-h) + var(--s7))}
  .qz-cast{gap:var(--s3) var(--s5);margin:var(--s6) 0 var(--s5)}
  .qz-track{flex-direction:column;align-items:stretch;gap:var(--s3);margin-bottom:var(--s6)}
  .qz-thread{max-width:none}
  .qz-knot{width:8px;height:8px}
  .qa{padding:var(--s3) 0}
  .rs-kin{grid-template-columns:1fr}
}
html.rm .qz-q.is-in,html.rm .rs-card.is-in{animation:none}
