:root,:root[data-theme="light"]{--bg:var(--bg-light-user,#ffffff);--ink:#2a2620;--ink-soft:#6b6357;--rule:#d9d2c3;--shadow-rgb:69,10,108;--serif:"Iowan Old Style","Apple Garamond","Garamond","Baskerville","Hoefler Text","Times New Roman",Times,serif;--measure:32rem;--rhythm:1.7}:root[data-theme="dark"]{--bg:var(--bg-dark-user,#000000);--ink:#ece6d6;--ink-soft:#9c9382;--rule:#3a352b}@media (prefers-color-scheme:dark){:root:not([data-theme]){--bg:var(--bg-dark-user,#000000);--ink:#ece6d6;--ink-soft:#9c9382;--rule:#3a352b}}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--ink);font-family:var(--user-font,"Iowan Old Style"),"Apple Garamond","Garamond","Baskerville","Hoefler Text","Times New Roman",Times,serif;font-size:18px;line-height:var(--rhythm);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden}main{min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 1.5rem}#gate{width:100%;max-width:22rem;display:flex;flex-direction:column;align-items:center;transition:opacity 350ms ease}#gate[data-fading]{opacity:0;pointer-events:none}#letter{position:relative}.karaoke-cursor{position:absolute;background:var(--karaoke-bg);border-radius:4px;box-shadow:0 0 0 2px var(--karaoke-shadow);z-index:-1;opacity:0;pointer-events:none;display:none;transition:left 220ms cubic-bezier(0.25,0.8,0.25,1),width 220ms cubic-bezier(0.25,0.8,0.25,1),height 220ms cubic-bezier(0.25,0.8,0.25,1),top 0ms,opacity 160ms ease}.karaoke-cursor.is-active{opacity:1}.karaoke-cursor.is-jumping{transition:opacity 160ms ease}body[data-karaoke-mode="line"] .karaoke-cursor{display:block}body[data-karaoke-mode="line"] #letter .hw-word.is-speaking::before{display:none}:root{--karaoke-color:#ffffff;--karaoke-bg-rgb:0,170,255;--karaoke-bg-alpha:1;--karaoke-bg:rgba(var(--karaoke-bg-rgb),var(--karaoke-bg-alpha));--karaoke-shadow:rgba( var(--karaoke-bg-rgb),calc(var(--karaoke-bg-alpha) * 1.25) )}#letter .hw-word{position:relative}#letter .hw-word.is-speaking{color:var(--karaoke-color)}#letter .hw-word.is-speaking::before{content:"";position:absolute;inset:-1px -2px;background:var(--karaoke-bg);border-radius:4px;box-shadow:0 0 0 2px var(--karaoke-shadow);z-index:-1;transform-origin:center;animation:karaoke-pop 200ms cubic-bezier(0.34,1.4,0.64,1)}body[data-bounce="off"] #letter .hw-word.is-speaking::before{animation:none}@keyframes karaoke-pop{0%{transform:scale(0.94);opacity:0}60%{transform:scale(1.05);opacity:1}100%{transform:scale(1);opacity:1}}@keyframes karaoke-fade{from{opacity:0}to{opacity:1}}#letter .hw-word.is-seekable{cursor:pointer}.greeting-controls{display:inline-flex;gap:0.4em;margin-left:0.6em;vertical-align:middle}#top-toolbar{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:25;display:flex;align-items:center;pointer-events:auto}#top-toolbar .greeting-controls{margin-left:0;gap:0.6em}#top-toolbar .greeting-btn{width:38px;height:38px;background:#00aaff;border-color:#00aaff;color:#fff;box-shadow:inset 1px 1px 0 rgba(255,255,255,0.32),inset -1px -1px 0 rgba(0,80,140,0.18),0 1px 2px -1px rgba(0,80,140,0.28),0 4px 8px -2px rgba(0,80,140,0.32);transition:background 160ms ease,border-color 160ms ease,box-shadow 160ms ease,transform 120ms ease}#top-toolbar .greeting-btn:hover{background:#2bb8ff;border-color:#2bb8ff}#top-toolbar .greeting-btn:active{transform:scale(0.94)}#top-toolbar .greeting-btn .vo-glyph{width:18px;height:18px;stroke:#fff;fill:none}@keyframes greeting-btn-emerge{0%{transform:scale(0);opacity:0}60%{transform:scale(1.12);opacity:1}100%{transform:scale(1);opacity:1}}#top-toolbar .greeting-btn.is-emerging{animation:greeting-btn-emerge 320ms cubic-bezier(0.22,1.2,0.36,1) both}#top-toolbar .greeting-btn--voice .vo-glyph{fill:#fff;stroke:none}#top-toolbar .greeting-btn .lang-glyph{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:13px;font-weight:600;line-height:1;color:#fff;letter-spacing:0}#top-toolbar .greeting-btn.is-playing{background:rgba(255,255,255,0.92);color:#00aaff;border-color:#00aaff}#top-toolbar .greeting-btn.is-playing .vo-glyph{stroke:#00aaff}#top-toolbar .greeting-btn--voice.is-playing .vo-glyph{fill:#00aaff;stroke:none}#top-toolbar .greeting-btn.is-playing .lang-glyph{color:#00aaff}@media (prefers-color-scheme:dark){:root:not([data-theme]) #top-toolbar .greeting-btn.is-playing{background:rgba(20,20,26,0.85)}}:root[data-theme="dark"] #top-toolbar .greeting-btn.is-playing{background:rgba(20,20,26,0.85)}.greeting-btn{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;border:1px solid #00aaff;background:transparent;color:#00aaff;cursor:pointer;padding:0;transition:background 160ms ease,transform 120ms ease}.greeting-btn:hover{background:rgba(0,170,255,0.1)}.greeting-btn:active{transform:scale(0.94)}.greeting-btn .vo-glyph{width:14px;height:14px;display:block}.greeting-btn.is-playing{background:#00aaff;color:#fff}#gate{font-size:var(--user-font-size,18px)}.gate-brand,#letter .greeting{font-size:1.25em;font-weight:600;color:var(--ink);letter-spacing:0.005em}.gate-brand{align-self:flex-start;margin-left:1.5rem;margin-bottom:1rem;pointer-events:none;opacity:0;transition:opacity 180ms ease-out}.gate-enter{position:relative;align-self:flex-end;margin-top:1rem;background:#00aaff;border:1px solid #00aaff;color:#fff;font-family:inherit;font-size:1em;font-weight:600;letter-spacing:0.005em;padding:0 1.5rem;min-height:56px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;cursor:pointer;box-shadow:inset 1px 1px 0 rgba(255,255,255,0.32),inset -1px -1px 0 rgba(0,80,140,0.18),0 1px 2px -1px rgba(0,80,140,0.28),0 4px 8px -2px rgba(0,80,140,0.32);transition:background 160ms ease,border-color 160ms ease,box-shadow 160ms ease,transform 120ms ease}.gate-enter:hover{background:#2bb8ff;border-color:#2bb8ff}.gate-enter:active{transform:scale(0.97)}.gate-enter-label{display:inline-block;transition:opacity 160ms ease}.gate-enter-dots{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:0.32rem;opacity:0;pointer-events:none;transition:opacity 160ms ease}.gate-enter-dots>span{width:5px;height:5px;background:currentColor;border-radius:50%;opacity:0.4;animation:gate-enter-dot-bounce 900ms ease-in-out infinite}.gate-enter-dots>span:nth-child(2){animation-delay:140ms}.gate-enter-dots>span:nth-child(3){animation-delay:280ms}.gate-enter.is-loading{pointer-events:none;cursor:wait}.gate-enter.is-loading .gate-enter-label{opacity:0}.gate-enter.is-loading .gate-enter-dots{opacity:1}@keyframes gate-enter-dot-bounce{0%,70%,100%{transform:translateY(0);opacity:0.4}35%{transform:translateY(-4px);opacity:1}}#gate-form{position:relative;width:100%;display:flex;flex-direction:column;align-items:center;gap:0.75rem}.password-shell{position:relative;width:100%;min-height:56px;background:rgba(var(--shadow-rgb),0.04);border-radius:999px;border:1px solid rgba(var(--shadow-rgb),0.12);box-shadow:inset 1px 1px 0 rgba(255,255,255,0.14),inset -1px -1px 0 rgba(var(--shadow-rgb),0.04),0 1px 2px -1px rgba(var(--shadow-rgb),0.12),0 4px 6px -3px rgba(var(--shadow-rgb),0.14)}.password-shell:focus-within{background:var(--bg)}@media (prefers-color-scheme:dark){:root:not([data-theme]) .password-shell{background:rgba(255,255,255,0.05);border-color:rgba(255,255,255,0.13);box-shadow:inset 1px 1px 0 rgba(255,255,255,0.08),inset -1px -1px 0 rgba(0,0,0,0.5),0 1px 2px -1px rgba(0,0,0,0.55),0 4px 6px -3px rgba(0,0,0,0.65)}}:root[data-theme="dark"] .password-shell{background:rgba(255,255,255,0.05);border-color:rgba(255,255,255,0.13);box-shadow:inset 1px 1px 0 rgba(255,255,255,0.08),inset -1px -1px 0 rgba(0,0,0,0.5),0 1px 2px -1px rgba(0,0,0,0.55),0 4px 6px -3px rgba(0,0,0,0.65)}#password{position:relative;width:100%;background:transparent;border:none;border-radius:999px;color:transparent;caret-color:transparent;font-family:inherit;font-size:1.125rem;line-height:1.4;padding:0.75rem 1.25rem;text-align:center;outline:none;z-index:2;-webkit-text-security:none}#password::placeholder{color:var(--ink-soft);font-style:italic}#password::selection{background:transparent;color:transparent}.petal-row{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:4px;pointer-events:none;flex-wrap:nowrap;z-index:1}.petal-row img{height:1.5rem;width:auto;user-select:none;-webkit-user-drag:none;filter:drop-shadow(0 1px 3px rgba(var(--shadow-rgb),0.08));animation:petal-sprout 480ms cubic-bezier(0.22,1.2,0.36,1) both;transform-origin:50% 70%}@keyframes petal-sprout{0%{transform:scale(0) rotate(var(--sprout-from,-180deg));opacity:0}60%{transform:scale(1.18) rotate(0deg);opacity:1}100%{transform:scale(1) rotate(0deg);opacity:1}}.petal-caret{display:none;position:absolute;width:2px;height:1.5rem;top:50%;transform:translateY(-50%);border-radius:2px;background:#00aaff;pointer-events:none;z-index:2;animation:petal-caret-blink 1s linear infinite}.petal-row.caret-moving .petal-caret{animation:none}.petal-selection-rect{display:none;position:absolute;background:rgba(120,78,200,0.25);border-radius:6px;outline:1px solid rgba(120,78,200,0.5);outline-offset:0;pointer-events:none;z-index:0}.petal-selection-rect.is-active{display:block}.petal-row img{position:relative;z-index:1}.password-shell:focus-within .petal-caret.is-shown{display:block}@keyframes petal-caret-blink{0%,49.99%{opacity:1}50%,100%{opacity:0}}#error{position:absolute;top:calc(100% + 0.6rem);left:0;right:0;margin:0;font-size:1.0625rem;font-family:inherit;color:var(--ink-soft);text-align:center;pointer-events:none;opacity:0;transform:translateY(-4px);transition:opacity 220ms ease,transform 220ms ease}#error.is-shown{opacity:1;transform:translateY(0)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#letter{width:100%;max-width:var(--measure);font-size:var(--user-font-size,18px)}#letter>*{opacity:0;transform:translateY(12px);transition:opacity 1100ms cubic-bezier(0.22,0.61,0.36,1),transform 1100ms cubic-bezier(0.22,0.61,0.36,1);transition-delay:var(--stagger,0ms)}#letter.shown>*{opacity:1;transform:translateY(0)}#letter>*{margin:1em 0}#letter>*:first-child{margin-top:0}#letter>*:last-child{margin-bottom:0}#letter p{}#letter .preamble{color:var(--ink);font-size:0.9375em;margin-bottom:4em}#letter blockquote{padding-left:1.25em;border-left:2px solid var(--rule);font-style:italic;color:var(--ink-soft)}#letter blockquote p{margin:0}#letter .callout{text-align:center;font-style:italic;font-size:1.125em;color:var(--ink);line-height:1.5}#letter .dinkus{text-align:center;user-select:none;display:flex;justify-content:center;align-items:center;gap:0.4em}#letter .image,#letter .image-square{padding:0;display:flex;justify-content:center;position:relative}#letter .image-caption-spoken{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden;pointer-events:none;user-select:none;margin:0;padding:0}#letter .image img{display:block;width:auto;height:auto;border-radius:var(--user-img-radius,12px);border:1px solid var(--rule);box-shadow:inset 1px 1px 0 rgba(255,255,255,0.14),inset -1px -1px 0 rgba(var(--shadow-rgb),0.04),0 2px 3px -1px rgba(var(--shadow-rgb),0.18),0 8px 12px -4px rgba(var(--shadow-rgb),0.2),0 22px 28px -12px rgba(var(--shadow-rgb),0.22);transition:border-radius 120ms ease}@media (prefers-color-scheme:dark){:root:not([data-theme]) #letter .image img{box-shadow:inset 1px 1px 0 rgba(255,255,255,0.1),inset -1px -1px 0 rgba(var(--shadow-rgb),0.15),0 2px 3px -1px rgba(var(--shadow-rgb),0.5),0 8px 12px -4px rgba(var(--shadow-rgb),0.55),0 22px 28px -12px rgba(var(--shadow-rgb),0.6)}}:root[data-theme="dark"] #letter .image img{box-shadow:inset 1px 1px 0 rgba(255,255,255,0.1),inset -1px -1px 0 rgba(var(--shadow-rgb),0.15),0 2px 3px -1px rgba(var(--shadow-rgb),0.5),0 8px 12px -4px rgba(var(--shadow-rgb),0.55),0 22px 28px -12px rgba(var(--shadow-rgb),0.6)}#letter .image-square img{aspect-ratio:1 / 1;width:auto;height:224px;max-height:224px;object-fit:cover;object-position:center}#letter .closer{color:var(--ink)}#letter .stella-name{position:relative;display:inline-block}#letter .stella-name::before,#letter .stella-name::after{position:absolute;font-size:0.36em;font-weight:400;pointer-events:none;opacity:0.7;top:0.35em;display:inline-block}#letter .star-divider{display:flex;justify-content:center;align-items:center;gap:0.3em;margin:3em 0;line-height:1;pointer-events:none;user-select:none}#letter .preamble:has(+ .star-divider){margin-bottom:0}#letter .star-divider + .greeting{margin-top:0}#letter .signature:has(+ .star-divider){margin-bottom:0}#letter .star-divider + p{margin-top:0}#letter .star-divider__s{display:inline-block;font-size:0.55em;line-height:1;opacity:0.85}#letter .star-divider__s--0{color:#7cc9ff;transform:rotate(-12deg);opacity:0.85}#letter .star-divider__s--1{color:#5fd5c8;transform:rotate(7deg);opacity:0.9}#letter .star-divider__s--2{color:#5fa8e0;transform:rotate(-5deg);opacity:0.85}#letter .stella-name::before{content:"✦";left:-0.6em;color:#a685e0;transform:rotate(-15deg);opacity:0.85}#letter .stella-name::after{content:"✦";right:-0.6em;color:#5fa8e0;transform:rotate(18deg);opacity:0.85}#letter .stella-name .stella-star-bottom{position:absolute;font-size:0.3em;font-weight:400;pointer-events:none;user-select:none;left:1.45em;bottom:-0.4em;color:#5fd5c8;transform:rotate(8deg);opacity:0.7;display:inline-block}#letter .stella-name .stella-star-bottom::before{content:"✦"}#letter .hw-word.is-speaking .stella-name::before,#letter .hw-word.is-speaking .stella-name::after{color:#ffffff;opacity:1}#letter .hw-word.is-speaking .stella-name .stella-star-bottom{color:#ffffff;opacity:1}#letter .stella-name__legacy{display:inline-block;position:relative;padding-bottom:0.16em;line-height:1}#letter .stella-name .hw-word,#letter .stella-name .hw-char{text-decoration:none}#letter .stella-name>svg.stella-underline{position:absolute;left:0;right:0;bottom:0;width:100%;height:0.18em;display:block;pointer-events:none;overflow:visible}#letter .rose{text-align:center;font-size:1.5em;line-height:1}#letter .signature{margin-top:3em;text-align:left;font-style:normal;font-size:1.25em;font-weight:600;letter-spacing:0.005em;color:var(--ink);line-height:1.35}#letter .signature + p{margin-top:2.5em}#letter .signature-sub{display:block;margin-top:0.1em;color:#00aaff;font-weight:600;opacity:1}#letter .greeting{font-size:1.25em;font-weight:600;color:var(--ink);letter-spacing:0.005em;margin-bottom:2em}.inline-petal{display:inline-block;height:1.4em;width:auto;vertical-align:-0.35em;margin:0 0.2em 0 0;transform:rotate(var(--doodle-rot,0deg));user-select:none;-webkit-user-drag:none;pointer-events:none;filter:drop-shadow(0 1px 3px rgba(var(--shadow-rgb),0.08))}.inline-doodle{position:relative;display:inline-block;width:1.5em;height:1em;vertical-align:baseline;margin:0 0.05em;user-select:none;pointer-events:none}.inline-doodle::before{content:"";position:absolute;left:50%;bottom:calc(var(--doodle-bot,0) * -1.6em);width:1.6em;height:1.6em;transform:translateX(-50%) rotate(var(--doodle-rot,0deg));background-color:var(--pen,var(--ink));-webkit-mask-image:var(--src);mask-image:var(--src);-webkit-mask-size:contain;mask-size:contain;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;opacity:0.85}#letter[data-user-font]{font-family:var(--user-font),var(--serif)}#gate{position:relative;z-index:2}#letter{position:relative;z-index:1;padding-top:calc(50vh - 1em - 72px);padding-bottom:30vh}body.unlocked #gate{display:none}:root{--hw-rot:1.5deg;--hw-tx:0.8px;--hw-ty:0.8px;--row-rot:0.6deg;--row-tx:4px;--row-scale:0.02;--img-rot:1deg;--img-frame:0px}.hw-char{display:inline-block;--rot-seed:0;--tx-seed:0;--ty-seed:0;transform:translate( calc(var(--tx-seed) * var(--hw-tx)),calc(var(--ty-seed) * var(--hw-ty)) ) rotate(calc(var(--rot-seed) * var(--hw-rot)));will-change:transform}.hw-word{display:inline-block;--word-rot-seed:0;--word-tx-seed:0;--word-scale-seed:0;transform:translate(calc(var(--word-tx-seed) * var(--row-tx)),0) rotate(calc(var(--word-rot-seed) * var(--row-rot))) scale(calc(1 + var(--word-scale-seed) * var(--row-scale)));transform-origin:50% 50%}#letter .image,#letter .image-square{transform:rotate(var(--img-rot-deg,0deg));transform-origin:50% 50%;max-width:67%;margin:3.5em auto;display:flex;justify-content:center}#letter .image img{max-height:224px;width:auto;max-width:100%}#letter .image img{padding:var(--img-frame);background:var(--bg)}@media (prefers-color-scheme:dark){:root:not([data-theme]) #letter .image img{background:#ffffff}}:root[data-theme="dark"] #letter .image img{background:#ffffff}.fallen-petal,.sprinkle-petal{position:fixed;pointer-events:none;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;width:auto;z-index:3;filter:drop-shadow(0 1px 4px rgba(var(--shadow-rgb),0.09));transform-origin:center}#font-picker[hidden],#player[hidden]{display:none !important}#font-picker{position:fixed;top:0;right:0;width:320px;height:100dvh;display:flex;flex-direction:column;background:var(--bg);border-left:1px solid var(--rule);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;z-index:20;overflow-y:auto;transition:transform 240ms cubic-bezier(0.4,0,0.2,1)}body.picker-collapsed #font-picker{transform:translateX(100%);pointer-events:none}#font-picker-reopen{position:fixed;top:1rem;right:1rem;z-index:21;background:var(--ink);border:1px solid var(--ink);color:var(--bg);font-family:system-ui,-apple-system,"Segoe UI",sans-serif;font-size:0.8rem;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;padding:0.55rem 1rem;border-radius:999px;cursor:pointer;display:none;box-shadow:0 2px 4px rgba(var(--shadow-rgb),0.15),0 8px 20px rgba(var(--shadow-rgb),0.18);transition:transform 160ms cubic-bezier(0.2,0,0,1),box-shadow 160ms ease}#font-picker-reopen:hover{transform:translateY(-1px);box-shadow:0 4px 6px rgba(var(--shadow-rgb),0.18),0 12px 28px rgba(var(--shadow-rgb),0.22)}body.picker-collapsed #font-picker-reopen{display:block}.font-picker-head{display:flex;align-items:center;justify-content:space-between;padding:0.875rem 1rem;border-bottom:1px solid var(--rule);font-size:0.75rem;text-transform:uppercase;letter-spacing:0.1em;color:var(--ink-soft);position:sticky;top:0;background:var(--bg);z-index:1}.font-picker-head button{background:transparent;border:1px solid var(--rule);color:var(--ink-soft);font-family:inherit;font-size:0.75rem;text-transform:uppercase;letter-spacing:0.08em;padding:0.25rem 0.5rem;border-radius:4px;cursor:pointer;transition:color 120ms ease,border-color 120ms ease}.font-picker-head button:hover{color:var(--ink);border-color:var(--ink)}.font-picker-controls{padding:0.75rem 1rem;border-bottom:1px solid var(--rule);display:flex;flex-direction:column;gap:0.5rem}.control-row{display:flex;align-items:center;gap:0.6rem;font-size:0.75rem;text-transform:uppercase;letter-spacing:0.08em;color:var(--ink-soft)}.control-row label{flex-shrink:0;width:3rem}#shadow-color{width:32px;height:28px;flex-shrink:0;border:1px solid var(--rule);border-radius:4px;padding:0;background:transparent;cursor:pointer}#shadow-color::-webkit-color-swatch-wrapper{padding:2px}#shadow-color::-webkit-color-swatch{border:none;border-radius:2px}#shadow-color-hex{flex:1;min-width:0;height:28px;border:1px solid var(--rule);border-radius:4px;background:transparent;color:var(--ink);font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:0.75rem;letter-spacing:0.04em;padding:0 0.5rem;text-transform:lowercase}#shadow-color-hex:focus{outline:none;border-color:var(--ink-soft)}#shadow-color-hex.is-invalid{border-color:#b94a48}.control-row input[type="range"]{flex:1;-webkit-appearance:none;appearance:none;background:transparent;height:1.25rem;margin:0;cursor:pointer}.control-row input[type="range"]::-webkit-slider-runnable-track{height:2px;background:var(--rule);border-radius:1px}.control-row input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--ink);margin-top:-5px;cursor:pointer}.control-row input[type="range"]::-moz-range-track{height:2px;background:var(--rule);border-radius:1px}.control-row input[type="range"]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--ink);border:none;cursor:pointer}#font-size-display,#jitter-rot-display,#jitter-trans-display,#sprinkle-count-display{flex-shrink:0;min-width:1.75rem;text-align:right;color:var(--ink);font-variant-numeric:tabular-nums}.control-row--head{color:var(--ink);font-weight:600;cursor:pointer;user-select:none}.control-row--head label{cursor:pointer;display:flex;align-items:center;gap:0.4rem}.control-row--head label::before{content:"▾";display:inline-block;font-size:0.6em;color:var(--ink-soft);transition:transform 120ms ease;width:0.8em;text-align:center}.picker-section.is-collapsed .control-row--head label::before{transform:rotate(-90deg)}.picker-section.is-collapsed>.control-row:not(.control-row--head){display:none}.picker-section.is-collapsed{}.control-row--head button{margin-left:auto;background:transparent;border:1px solid var(--rule);color:var(--ink-soft);font-family:inherit;font-size:0.7rem;text-transform:uppercase;letter-spacing:0.08em;padding:0.2rem 0.5rem;border-radius:4px;cursor:pointer;transition:color 120ms ease,border-color 120ms ease}.control-row--head button:hover{color:var(--ink);border-color:var(--ink)}.theme-toggle{display:flex;flex:1;border:1px solid var(--rule);border-radius:4px;overflow:hidden}.theme-toggle button{flex:1;background:transparent;border:none;border-right:1px solid var(--rule);color:var(--ink-soft);font-family:inherit;font-size:0.7rem;text-transform:uppercase;letter-spacing:0.08em;padding:0.3rem 0;cursor:pointer;transition:color 120ms ease,background-color 120ms ease}.theme-toggle button:last-child{border-right:none}.theme-toggle button:hover{color:var(--ink)}.theme-toggle button.is-active{background:var(--ink);color:var(--bg)}.font-list{padding:0.5rem 0 7rem 0}.font-list[data-filter="starred"] .font-row:not(.is-rated){display:none}.font-picker-actions{display:flex;gap:0.4rem}.font-row{display:flex;align-items:center;border-left:2px solid transparent;transition:background-color 120ms ease,border-color 120ms ease}.font-row:hover{background:rgba(127,127,127,0.08)}.font-row.is-selected{border-left-color:var(--ink);background:rgba(127,127,127,0.08)}.font-item{flex:1;text-align:left;background:transparent;border:none;color:var(--ink);font-size:1.25rem;line-height:1.2;padding:0.6rem 0.5rem 0.6rem 1rem;cursor:pointer;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.font-stars{display:flex;gap:1px;padding-right:0.6rem;flex-shrink:0}.font-stars .star{background:transparent;border:none;color:var(--rule);font-size:0.875rem;line-height:1;padding:0.25rem;cursor:pointer;font-family:system-ui,-apple-system,"Segoe UI",sans-serif;transition:color 80ms ease}.font-stars .star:hover{color:var(--ink-soft)}.font-stars .star.is-on{color:#d4a017}@media (prefers-color-scheme:dark){.font-stars .star.is-on{color:#e9b94d}}#constellation{position:fixed;inset:0;pointer-events:none;z-index:2;display:none}:root[data-theme="dark"] #constellation{display:block}@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) #constellation{display:block}}.star{position:absolute;border-radius:50%;box-shadow:0 0 4px currentColor,0 0 8px currentColor;animation:star-twinkle var(--twinkle-dur,5s) ease-in-out infinite;animation-delay:var(--twinkle-delay,0s)}@keyframes star-twinkle{0%,100%{opacity:var(--twinkle-base,0.5)}50%{opacity:var(--twinkle-peak,0.9)}}#top-fade{position:fixed;top:0;left:0;right:0;height:6rem;background:linear-gradient(to bottom,var(--bg) 40%,transparent);pointer-events:none;z-index:10}#bottom-fade{position:fixed;bottom:0;left:0;right:0;height:6rem;background:linear-gradient(to top,var(--bg) 40%,transparent);pointer-events:none;z-index:10}#player{position:fixed;left:0;right:0;bottom:0;padding:0.75rem;background:transparent;z-index:11;transform:translateY(110%);opacity:0;pointer-events:none;transition:transform 700ms cubic-bezier(0.2,0.7,0.3,1) var(--player-reveal-delay,1500ms),opacity 500ms ease var(--player-reveal-delay,1500ms),right 240ms cubic-bezier(0.4,0,0.2,1)}body.unlocked #player{transform:translateY(0);opacity:1;pointer-events:auto}.player-card{display:grid;grid-template-columns:56px 1fr auto auto;grid-template-areas:"art meta volume toggle" "progress progress progress progress" "times times times times";column-gap:12px;row-gap:8px;align-items:center;max-width:var(--measure,32rem);width:100%;margin:0 auto;padding:12px;background:var(--bg);border:1px solid var(--rule);border-radius:var(--user-img-radius,12px);box-shadow:inset 1px 1px 0 rgba(255,255,255,0.14),inset -1px -1px 0 rgba(var(--shadow-rgb),0.04),0 2px 3px -1px rgba(var(--shadow-rgb),0.18),0 8px 12px -4px rgba(var(--shadow-rgb),0.2),0 22px 28px -12px rgba(var(--shadow-rgb),0.22);font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme]) .player-card{box-shadow:inset 1px 1px 0 rgba(255,255,255,0.1),inset -1px -1px 0 rgba(var(--shadow-rgb),0.15),0 2px 3px -1px rgba(var(--shadow-rgb),0.5),0 8px 12px -4px rgba(var(--shadow-rgb),0.55),0 22px 28px -12px rgba(var(--shadow-rgb),0.6)}}:root[data-theme="dark"] .player-card{box-shadow:inset 1px 1px 0 rgba(255,255,255,0.1),inset -1px -1px 0 rgba(var(--shadow-rgb),0.15),0 2px 3px -1px rgba(var(--shadow-rgb),0.5),0 8px 12px -4px rgba(var(--shadow-rgb),0.55),0 22px 28px -12px rgba(var(--shadow-rgb),0.6)}.player-art{grid-area:art;width:56px;height:56px;border-radius:6px;object-fit:cover;display:block;background:var(--rule);box-shadow:inset 1px 1px 0 rgba(255,255,255,0.14),inset -1px -1px 0 rgba(var(--shadow-rgb),0.04),0 1px 2px -1px rgba(var(--shadow-rgb),0.18),0 4px 6px -3px rgba(var(--shadow-rgb),0.2),0 10px 14px -8px rgba(var(--shadow-rgb),0.22)}@media (prefers-color-scheme:dark){:root:not([data-theme]) .player-art{box-shadow:inset 1px 1px 0 rgba(255,255,255,0.1),inset -1px -1px 0 rgba(var(--shadow-rgb),0.15),0 1px 2px -1px rgba(var(--shadow-rgb),0.5),0 4px 6px -3px rgba(var(--shadow-rgb),0.55),0 10px 14px -8px rgba(var(--shadow-rgb),0.6)}}:root[data-theme="dark"] .player-art{box-shadow:inset 1px 1px 0 rgba(255,255,255,0.1),inset -1px -1px 0 rgba(var(--shadow-rgb),0.15),0 1px 2px -1px rgba(var(--shadow-rgb),0.5),0 4px 6px -3px rgba(var(--shadow-rgb),0.55),0 10px 14px -8px rgba(var(--shadow-rgb),0.6)}.player-meta{grid-area:meta;min-width:0}.player-title{font-size:14px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:0.01em}.player-artist{font-size:12px;color:var(--ink-soft);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player-toggle{grid-area:toggle;width:36px;height:36px;border-radius:50%;border:none;background:var(--ink);color:var(--bg);cursor:pointer;display:grid;place-items:center;padding:0;transition:transform 120ms ease,background 160ms ease}.player-toggle:hover{transform:scale(1.06)}.player-toggle:active{transform:scale(0.94)}.player-glyph{width:14px;height:14px;fill:currentColor;display:block}.player-toggle .pause{display:none}.player-toggle.is-playing .play{display:none}.player-toggle.is-playing .pause{display:block}.player-progress{grid-area:progress;height:3px;border-radius:999px;background:var(--rule);cursor:pointer;position:relative;overflow:hidden}.player-progress-fill{height:100%;width:0%;background:var(--ink);border-radius:999px;transition:width 80ms linear}.player-times{grid-area:times;display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--ink-soft);font-variant-numeric:tabular-nums}.player-volume{grid-area:volume;display:flex;align-items:center;gap:6px;width:96px}.player-vol-icon{width:13px;height:13px;flex-shrink:0;fill:var(--ink-soft);opacity:0.7}#player-volume{flex:1;height:3px;-webkit-appearance:none;appearance:none;background:linear-gradient( to right,var(--ink) var(--vol-fill,50%),var(--rule) var(--vol-fill,50%) );border-radius:999px;outline:none;cursor:pointer;min-width:0;margin:0;padding:0}#player-volume::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:10px;height:10px;border-radius:50%;background:var(--ink);cursor:pointer;border:none}#player-volume::-moz-range-thumb{width:10px;height:10px;border-radius:50%;background:var(--ink);cursor:pointer;border:none}main{padding-bottom:2rem}@media (max-width:480px){html,body{font-size:17px}main{padding:2.5rem 1.25rem 2rem}#letter .callout{font-size:1.0625rem}}@media (max-width:1023px){#font-picker{display:none}}#font-picker,#font-picker-reopen{display:none !important}#tweakpane-container{position:fixed;top:12px;right:12px;width:320px;z-index:30;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;display:none}body.god-mode #tweakpane-container{display:block}@media (max-width:1023px){body.god-mode #tweakpane-container{display:none}}