/* Fonts are served from this site (assets/fonts), so the page never waits on another server. */
@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');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-wght-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:'Lora';font-style:normal;font-weight:400 700;font-display:swap;src:url('fonts/lora-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}
@font-face{font-family:'Lora';font-style:normal;font-weight:400 700;font-display:swap;src:url('fonts/lora-latin-wght-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:'Lora';font-style:italic;font-weight:400 700;font-display:swap;src:url('fonts/lora-latin-ext-wght-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:'Lora';font-style:italic;font-weight:400 700;font-display:swap;src:url('fonts/lora-latin-wght-italic.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:'Cinzel';font-style:normal;font-weight:400 900;font-display:swap;src:url('fonts/cinzel-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}
@font-face{font-family:'Cinzel';font-style:normal;font-weight:400 900;font-display:swap;src:url('fonts/cinzel-latin-wght-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}
/* STANDING OVATION: shared design system (all pages). Dark is the default; theme.js sets data-theme. */
/* STANDING OVATION: shared design system (all pages). Dark is the default; theme.js sets data-theme. */
:root{
  color-scheme:dark;
  --bg:#0a090a;--bg2:#0f0d0f;--surface:#161314;--surface2:#1f1a1b;
  --line:rgba(239,230,216,.10);--line2:rgba(239,230,216,.22);
  --text:#efe6d8;--muted:#a39a8c;
  --gold:#d4af68;--gold2:#efd59c;--gold-text:#dcb972;--on-gold:#1b1407;
  --red:#a8232c;--red2:#df4f57;
  --nav:rgba(10,9,10,.66);--chip:rgba(255,255,255,.05);
  --shadow:0 28px 80px rgba(0,0,0,.6);--glow:rgba(212,175,104,.42);
  --hero-wash:linear-gradient(180deg,rgba(10,9,10,.8) 0%,rgba(10,9,10,.62) 45%,rgba(10,9,10,.97) 100%);--hero-side:linear-gradient(90deg,rgba(10,9,10,.9) 0%,rgba(10,9,10,.55) 48%,rgba(10,9,10,.1) 100%);
  --beam:rgba(255,226,160,.17);--beam-blend:screen;
}
:root[data-theme="light"]{
  color-scheme:light;
  --bg:#f8f2e8;--bg2:#f0e7d7;--surface:#fffcf6;--surface2:#f4ecdc;
  --line:rgba(52,36,22,.12);--line2:rgba(52,36,22,.26);
  --text:#241b14;--muted:#665a4d;
  --gold:#c99b3f;--gold2:#e6c479;--gold-text:#7f5a0e;--on-gold:#1b1407;
  --red:#a1222b;--red2:#c1363f;
  --nav:rgba(248,242,232,.78);--chip:rgba(36,27,20,.05);
  --shadow:0 24px 64px rgba(70,45,20,.2);--glow:rgba(201,155,63,.5);
  --hero-wash:linear-gradient(180deg,rgba(248,242,232,.86) 0%,rgba(248,242,232,.74) 45%,rgba(248,242,232,.98) 100%);--hero-side:linear-gradient(90deg,rgba(248,242,232,.92) 0%,rgba(248,242,232,.6) 50%,rgba(248,242,232,.1) 100%);
  --beam:rgba(214,166,70,.3);--beam-blend:normal;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font-family:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:clip}
.theme-anim,.theme-anim *{transition:background-color .5s ease,color .5s ease,border-color .5s ease,box-shadow .5s ease!important}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3{font-family:'Cinzel',serif;font-weight:600;letter-spacing:.03em;line-height:1.15;margin:0}
p{margin:0}
.display{font-family:'Cinzel',serif}
.wrap{max-width:1160px;margin:0 auto;padding:0 28px}
::selection{background:var(--gold);color:var(--on-gold)}
a:focus-visible,button:focus-visible,select:focus-visible,summary:focus-visible,textarea:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.ic{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex:none}
.eyebrow{display:inline-flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold-text);font-weight:600;margin:0 0 18px}
.eyebrow::before{content:"";width:28px;height:1px;background:currentColor;transform-origin:0 50%}
.center .eyebrow::after{content:"";width:28px;height:1px;background:currentColor}
html[lang="ja"] .eyebrow{letter-spacing:.12em}

/* scroll progress */
.progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:120;transform-origin:0 50%;transform:scaleX(var(--p,0));background:linear-gradient(90deg,var(--red),var(--gold),var(--gold2));pointer-events:none}

/* NAV */
.nav{position:fixed;inset:0 0 auto 0;z-index:100;border-bottom:1px solid transparent;transition:background .4s,border-color .4s,box-shadow .4s}
.nav.scrolled,.nav.open{background:var(--nav);-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);border-bottom-color:var(--line)}
.nav-in{display:flex;align-items:center;justify-content:space-between;gap:18px;height:68px}
.brand{font:600 14px 'Cinzel',serif;letter-spacing:.22em;color:var(--gold-text);text-decoration:none;white-space:nowrap}
.nav-links{display:flex;align-items:center;gap:28px}
.nav-links a{position:relative;font-size:13px;font-weight:500;text-decoration:none;padding:6px 0;opacity:.86;transition:opacity .2s,color .2s}
.nav-links a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:0 50%;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.nav-links a:hover,.nav-links a.active{opacity:1;color:var(--gold-text)}
.nav-links a:hover::after,.nav-links a.active::after{transform:scaleX(1)}
.nav-tools{display:flex;align-items:center;gap:10px}
.only-m,.nav-burger{display:none}
.new-pill{display:none;margin-left:8px;padding:2px 7px;border-radius:999px;background:var(--red);color:#fff;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;vertical-align:1px}
.has-new .new-pill{display:inline-block;animation:newPulse 2.2s ease-in-out infinite}
@keyframes newPulse{0%,100%{box-shadow:0 0 0 0 rgba(223,79,87,.6)}50%{box-shadow:0 0 0 6px rgba(223,79,87,0)}}
.theme-toggle,.nav-burger{width:40px;height:40px;border-radius:50%;border:1px solid var(--line2);background:var(--chip);color:var(--text);place-items:center;cursor:pointer;font-size:18px;transition:transform .35s cubic-bezier(.3,1.4,.5,1),border-color .25s,background .25s}
.theme-toggle{display:inline-grid}
.theme-toggle:hover,.nav-burger:hover{border-color:var(--gold);transform:rotate(16deg) scale(1.07)}
.theme-toggle .ic{grid-area:1/1;transition:transform .6s cubic-bezier(.3,1.4,.5,1),opacity .3s}
.theme-toggle .i-moon{opacity:0;transform:rotate(-120deg) scale(.3)}
[data-theme="light"] .theme-toggle .i-sun{opacity:0;transform:rotate(120deg) scale(.3)}
[data-theme="light"] .theme-toggle .i-moon{opacity:1;transform:none}
.lang-select{display:none;appearance:none;-webkit-appearance:none;background:var(--chip);color:var(--text);border:1px solid var(--line2);border-radius:999px;padding:10px 14px;font:500 12px 'Inter',sans-serif;cursor:pointer;transition:border-color .25s}
.js .lang-select{display:inline-block}
.lang-select:hover{border-color:var(--gold)}
.lang-select option{background:var(--surface);color:var(--text)}

/* BUTTONS */
.btn{--tx:0px;--ty:0px;--lift:0px;--sc:1;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:17px 36px;border-radius:999px;border:1px solid transparent;font:600 14px/1 'Inter',sans-serif;letter-spacing:.03em;text-decoration:none;cursor:pointer;isolation:isolate;transform:translate(var(--tx),calc(var(--ty) + var(--lift))) scale(var(--sc));transition:transform .28s cubic-bezier(.2,.8,.2,1),box-shadow .35s,color .3s,border-color .3s,background-position .6s}
.btn>*{position:relative;z-index:2}
.btn:hover{--lift:-3px;--sc:1.03}
.btn:active{--lift:0px;--sc:.96}
.btn .ic{font-size:17px;transition:transform .3s cubic-bezier(.3,1.4,.5,1)}
.btn:hover .ic{transform:translateX(5px)}
.btn-sm{padding:12px 22px;font-size:13px}
.btn-primary{color:var(--on-gold);background:linear-gradient(115deg,var(--gold2),var(--gold) 42%,#b9892f 70%,var(--gold2));background-size:220% 100%;box-shadow:0 12px 32px -10px var(--glow),inset 0 1px 0 rgba(255,255,255,.5)}
.btn-primary:hover{background-position:100% 0;box-shadow:0 22px 44px -12px var(--glow),inset 0 1px 0 rgba(255,255,255,.6)}
.btn-primary::before{content:"";position:absolute;inset:0;border-radius:inherit;z-index:1;background:linear-gradient(105deg,transparent 38%,rgba(255,255,255,.62) 50%,transparent 62%);background-size:260% 100%;background-position:160% 0;transition:background-position .9s ease}
.btn-primary:hover::before{background-position:-60% 0}
.btn-ghost{color:var(--text);border-color:var(--line2);background:var(--chip);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.btn-ghost::after{content:"";position:absolute;inset:-1px;border-radius:inherit;z-index:1;background:linear-gradient(115deg,var(--gold2),var(--gold));clip-path:inset(100% 0 0 0 round 999px);transition:clip-path .45s cubic-bezier(.2,.8,.2,1)}
.btn-ghost:hover{color:var(--on-gold);border-color:var(--gold)}
.btn-ghost:hover::after{clip-path:inset(0 0 0 0 round 999px)}
.btn.pop{animation:pop .7s ease-out}
@keyframes pop{0%{box-shadow:0 0 0 0 var(--glow)}100%{box-shadow:0 0 0 26px rgba(0,0,0,0)}}
@media (prefers-reduced-motion:no-preference){
  .btn-pulse{animation:ring 2.8s ease-in-out 2.4s infinite}
  @keyframes ring{0%,100%{box-shadow:0 12px 32px -10px var(--glow),0 0 0 0 var(--glow)}55%{box-shadow:0 12px 32px -10px var(--glow),0 0 0 14px rgba(0,0,0,0)}}
}

/* REVEAL */
.js .reveal{opacity:0;transform:translateY(36px);transition:opacity .95s cubic-bezier(.2,.7,.2,1) var(--d,0ms),transform .95s cubic-bezier(.2,.7,.2,1) var(--d,0ms)}
.js .reveal[data-reveal="left"]{transform:translateX(-46px)}
.js .reveal[data-reveal="right"]{transform:translateX(46px)}
.js .reveal[data-reveal="zoom"]{transform:scale(.92)}
.js .reveal.in{opacity:1;transform:none}
html.js:not(.ready) .reveal{animation:failsafe 0s 4s forwards}
@keyframes failsafe{to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.js .reveal,.js .reveal[data-reveal]{opacity:1;transform:none;transition:none}}

/* CURTAIN (first visit per session, home page only) */
.curtain{display:none;position:fixed;inset:0;z-index:300;pointer-events:none;overflow:hidden}
html.curtain .curtain{display:block}
.cur{position:absolute;top:0;bottom:0;width:51%;background:repeating-linear-gradient(90deg,#5a0910 0,#8f1522 22px,#5a0910 44px),#5a0910;box-shadow:inset 0 -120px 140px rgba(0,0,0,.55),inset 0 80px 120px rgba(0,0,0,.45)}
.cur::after{content:"";position:absolute;top:0;bottom:0;width:4px;background:linear-gradient(var(--gold2),var(--gold),var(--gold2));opacity:.8}
.cur-l{left:0;animation:curL 1.7s cubic-bezier(.76,0,.18,1) .45s forwards}
.cur-l::after{right:0}
.cur-r{right:0;animation:curR 1.7s cubic-bezier(.76,0,.18,1) .45s forwards}
.cur-r::after{left:0}
@keyframes curL{to{transform:translateX(-104%)}}
@keyframes curR{to{transform:translateX(104%)}}
@media (prefers-reduced-motion:reduce){html.curtain .curtain{display:none}}

/* FOOTER */
.footer{padding:56px 0 46px;border-top:1px solid var(--line);background:var(--bg2)}
.footer-grid{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:28px 40px;align-items:start;font-size:13px;color:var(--muted)}
.footer .brand{display:inline-block;margin-bottom:10px}
.footer a{color:var(--muted);text-decoration:none;border-bottom:1px solid var(--line2);transition:color .2s,border-color .2s}
.footer a:hover{color:var(--gold-text);border-color:var(--gold)}
.footer-links{display:flex;flex-direction:column;gap:8px;align-items:flex-start}

/* MUSIC */
.music-btn{position:fixed;left:18px;bottom:18px;z-index:90;display:inline-flex;align-items:center;gap:10px;padding:11px 18px 11px 14px;border-radius:999px;border:1px solid var(--line2);background:var(--nav);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:var(--text);font:500 12px 'Inter',sans-serif;cursor:pointer;box-shadow:var(--shadow);transition:transform .3s cubic-bezier(.3,1.4,.5,1),border-color .25s}
.music-btn:hover{transform:translateY(-3px);border-color:var(--gold)}
.bars{display:inline-flex;align-items:flex-end;gap:3px;height:14px}
.bars i{display:block;width:3px;height:5px;border-radius:2px;background:var(--gold)}
.music-btn.playing .bars i{animation:eq 1s ease-in-out infinite}
.music-btn.playing .bars i:nth-child(2){animation-delay:.2s}
.music-btn.playing .bars i:nth-child(3){animation-delay:.4s}
@keyframes eq{0%,100%{height:4px}50%{height:14px}}

/* TILT + GLOW helpers (JS sets --rx --ry --mx --my) */
.tilt{transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .25s ease-out;transform-style:preserve-3d;position:relative}
.tilt::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at var(--mx,50%) var(--my,0%),rgba(255,255,255,.3),transparent 55%);opacity:0;transition:opacity .3s;mix-blend-mode:soft-light}
.tilt:hover::after{opacity:1}
.glow{position:relative}
.glow::before{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),var(--glow),transparent 45%);opacity:0;transition:opacity .35s;z-index:0}
.glow:hover::before{opacity:.22}

@media (max-width:900px){
  .nav-in{height:62px}
  .nav-order{display:none}
  .nav-burger{display:inline-grid}
  .only-m{display:block}
  .nav-links{position:fixed;top:62px;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;padding:6px 28px 22px;background:var(--surface);border-bottom:1px solid var(--line);box-shadow:var(--shadow);opacity:0;visibility:hidden;transform:translateY(-14px);transition:opacity .3s,transform .3s,visibility .3s}
  .nav.open .nav-links{opacity:1;visibility:visible;transform:none}
  .nav-links a{padding:15px 0;font-size:15px;border-bottom:1px solid var(--line)}
  .nav-links a::after{display:none}
  .footer-grid{grid-template-columns:1fr}
}
@media (max-width:420px){.brand{font-size:11px;letter-spacing:.1em}.wrap{padding:0 20px}.nav-in{gap:10px}.nav-tools{gap:6px}.lang-select{padding:9px 8px;font-size:11px}.theme-toggle,.nav-burger{width:38px;height:38px}}
html.curtain-done .curtain{display:none}

/* TEXT ALIGNMENT: paragraph text is justified (flush left and right). Headings, labels, buttons and poems keep their own alignment.
   Text that sits in a centred block keeps its last line centred; text in a left-aligned block keeps its last line left. */
body .story-copy,
body .review-card blockquote,
body .chapter-text,
body .cta-ask p,
body .msg:not([data-type="poem"]) .b-body{text-align:justify;text-align-last:left;text-justify:inter-word;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word}
body .story-copy .eyebrow{text-align:left}
body .section-head .lead,
body .gr-intro .lead,
body .intro-note,
body .step p,
body .feature-quote blockquote,
body .lulu-what,
body .lulu-note,
body .physical-note,
body .secure-note,
body .format-note,
body .lulu-steps li>span:last-child{text-align:justify;text-align-last:center;text-justify:inter-word;-webkit-hyphens:auto;hyphens:auto;overflow-wrap:break-word}
body .step p,
body .lulu-steps li>span:last-child{display:block}

/* ALIGNMENT: let text blocks use the full width of their card or column so justified lines stay even */
body .panel .physical-note,
body .panel .secure-note,
body .panel .lulu-what,
body .panel .lulu-note,
body .panel .format-note,
body .panel .lulu-steps{max-width:none;width:100%}
body .steps{max-width:1100px}
@media (min-width:961px){
  body .review-grid{grid-template-columns:repeat(6,1fr)}
  body .review-card{grid-column:span 2}
  body .review-card:nth-child(4){grid-column:2 / span 2}
  body .review-card:nth-child(5){grid-column:4 / span 2}
}

/* ALIGNMENT (remaining short paragraphs): justified as well, last line follows the block's own alignment */
body .signoff,
body .alt-contact,
body .intl-line,
body .real-fig figcaption,
body .intl-english,
body .rev-note,
body .en-note,
body .gr-english{text-align:justify;text-align-last:center;text-justify:inter-word;-webkit-hyphens:auto;hyphens:auto}
body .hook,
body .card .hint,
body .steps-list li{text-align:justify;text-align-last:left;text-justify:inter-word;-webkit-hyphens:auto;hyphens:auto}
@media (max-width:960px){body .hook{text-align-last:center}}
body .signoff .name{text-align:center;text-align-last:center}
