/* Self-hosted, license-verified fonts. Sourced from each family's official upstream repo
   (Newsreader/Spectral: productiontype; Eczar: rosettatype) or the canonical google/fonts
   entry (Work Sans, Hind) — never a font-mirror/CDN scrape. OFL license+copyright kept in
   licenses/fonts/ and in each file's own name table. Only the weights V3 actually uses are
   shipped: Newsreader 400/500 (brand/hero/poem titles), Spectral 400 (English verse, no
   italic — none is used), Work Sans 400/500/600 (UI body/controls/poet-name emphasis),
   Eczar 400/500 (Hindi verse/titles), Hind 400 (Hindi UI body). English pages never fetch
   Eczar/Hind; Hindi content triggers those two families only when actually rendered. */
@font-face{font-family:'Newsreader';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/newsreader/Newsreader-Regular.woff2') format('woff2')}
@font-face{font-family:'Newsreader';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/newsreader/Newsreader-Medium.woff2') format('woff2')}
@font-face{font-family:'Spectral';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/spectral/Spectral-Regular.woff2') format('woff2')}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/work-sans/WorkSans-Regular.woff2') format('woff2')}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/work-sans/WorkSans-Medium.woff2') format('woff2')}
@font-face{font-family:'Work Sans';font-style:normal;font-weight:600;font-display:swap;src:url('fonts/work-sans/WorkSans-SemiBold.woff2') format('woff2')}
@font-face{font-family:'Eczar';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/eczar/Eczar-Regular.woff2') format('woff2')}
@font-face{font-family:'Eczar';font-style:normal;font-weight:500;font-display:swap;src:url('fonts/eczar/Eczar-Medium.woff2') format('woff2')}
@font-face{font-family:'Hind';font-style:normal;font-weight:400;font-display:swap;src:url('fonts/hind/Hind-Regular.woff2') format('woff2')}
/* V3 design-system tokens (Engineering Handoff §08/§07). --serif/--verse-serif/--sans/
   --devanagari-serif/--devanagari-sans are semantic aliases used throughout this file — the
   family names themselves are canonical and must not be substituted. Never reuse a Latin
   face (--serif/--verse-serif/--sans) for Devanagari text, or vice versa. */
html,body{overflow-x:hidden}:root{--paper:#FAF6EE;--paper-2:#F3ECDD;--ink:#211C17;--ink-soft:#4A423A;--meta:#63584C;--burgundy:#7A2331;--burgundy-soft:#9C4A57;--border:#D8C9AE;--serif:'Newsreader',Georgia,serif;--verse-serif:'Spectral',Georgia,serif;--sans:'Work Sans',sans-serif;--devanagari-serif:'Eczar',serif;--devanagari-sans:'Hind',sans-serif;--title-compact:22px;--title-standard:28px;--title-featured:43px;--title-featured-sm:32px;--radius-pill:30px;--radius-action:5px;--radius-card:14px;--radius-card-compact:10px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.6 var(--sans)}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;background:none;border:0;color:inherit}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--burgundy);outline-offset:5px}header{height:105px;max-width:1320px;margin:auto;padding:0 60px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);overflow:visible}.header-actions,.header-nav{display:flex;align-items:center;gap:18px}#header-menu{display:contents}#menu-toggle{display:none}#menu-close{display:none}.brand{text-decoration:none;letter-spacing:-2px;display:inline-flex;align-items:center;min-height:44px}.brand-en,.brand-hi{display:block;height:52px;width:auto}.edition,.eyebrow{font-size:12px;letter-spacing:2px;font-weight:500}.edition{color:var(--meta)}header button{font-size:14px}#saved-count{margin-left:8px;color:var(--meta)}main{max-width:1120px;margin:auto;padding:0 30px}.opening{padding:65px 0 42px;max-width:820px;margin:auto}.eyebrow{color:var(--burgundy);margin:0 0 18px}h1{font:52px/1.23 var(--serif);letter-spacing:-1.3px;margin:0 0 30px}h1 em{font-weight:400;color:var(--burgundy)}form{display:flex;align-items:center;gap:16px;background:white;border:1px solid #c8cec5;padding:12px 14px 12px 23px;border-radius:var(--radius-action);box-shadow:0 8px 28px #26302a05}form:focus-within{border-color:var(--burgundy);box-shadow:0 0 0 3px #7634321f}form>span{font-size:30px;color:var(--meta)}input{border:0;min-width:0;flex:1;background:transparent;color:var(--ink);padding:10px 0;outline-offset:0!important}form button{background:var(--burgundy);color:white;border-radius:var(--radius-action);width:46px;height:46px;font-size:24px}.suggestions{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;margin-top:18px;font-size:14px;color:var(--meta)}.suggestions button{border:0;background:none;padding:0;font:inherit;font-style:italic;color:var(--meta);text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:3px}.suggestions button:hover{color:var(--burgundy);text-decoration-color:var(--burgundy)}.suggestions button::before{content:'\201C'}.suggestions button::after{content:'\201D'}.suggestions button:not([data-first])::before{content:'\00b7 \201C'}.shelf{border-top:1px solid var(--border);padding:35px 0}.epic-link{display:inline-flex;align-items:center;text-decoration:none;border:1px solid var(--border);border-radius:var(--radius-pill);padding:8px 16px;font-size:13px;color:var(--burgundy);margin:14px 0}.epic-link:hover{border-color:var(--burgundy);background:#f7f2ee}.section-head{display:flex;justify-content:space-between;align-items:center;gap:20px}.section-head .eyebrow{margin-bottom:5px}h2{font:28px/1.4 var(--serif);margin:0}.language{font-size:13px;color:var(--meta)}select{margin-left:6px;border:0;background:transparent;color:var(--ink);padding:8px;font-size:14px}.muted{font-size:13px;color:var(--meta)}#search-note:empty{display:none}footer{display:flex;justify-content:space-between;gap:25px;border-top:1px solid var(--border);padding:25px 0 40px;font-size:12px;color:var(--meta)}footer details{max-width:460px}summary{cursor:pointer}#reader-view{max-width:1000px}.back{margin:32px 0 45px;font-size:14px;padding:8px 0;color:var(--meta)}article{max-width:680px;margin:auto}.reader-heading{text-align:center}.reader-heading h1{font-size:var(--title-featured);margin-bottom:14px}.reader-heading h1[lang=hi]{font-family:var(--devanagari-serif);line-height:1.65}.reader-heading>p:not(.eyebrow){color:var(--meta)}.reader-tools{display:flex;justify-content:center;gap:24px;padding:17px 0 25px;font-size:14px}.reader-tools button[aria-pressed=true]{color:var(--burgundy)}.versions{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;border-top:1px solid var(--border);padding:22px 0 0}.versions button{padding:8px 17px;font-size:14px;border-radius:var(--radius-pill)}.versions button[aria-pressed=true]{background:var(--burgundy);color:#fff;border-color:var(--burgundy)}#version-note{text-align:center}.poem-text{font:23px/1.95 var(--verse-serif),Georgia,serif;white-space:pre-wrap;margin:42px auto 35px;width:fit-content;max-width:100%;overflow-wrap:break-word;text-align:center}.poem-text[lang=hi]{font:27px/2.3 var(--devanagari-serif),serif}.poem-text.large{font-size:30px}.word{font:inherit;line-height:inherit;padding:0;border-bottom:1px dotted var(--burgundy);color:inherit}.word-meaning{background:#edefe8;border-left:2px solid var(--burgundy);padding:18px 22px;max-width:500px;margin:auto}.end-mark{text-align:center;color:var(--burgundy);margin:35px 0 45px}.understand{padding-top:26px;margin-bottom:80px}.understand>.eyebrow{margin-top:44px}.understand details{border:0;padding:0;margin-top:44px}.understand summary{font:15px var(--sans);color:var(--meta)}.understand summary span{font:13px var(--sans);color:var(--meta);margin-left:10px}.understand p:not(.eyebrow){line-height:1.9}.understand-action{margin-top:6px}.understand-trigger{font:21px var(--serif);color:var(--burgundy);display:block;padding:0}.understand-trigger:disabled{opacity:.7;cursor:default}.understand-status{margin:10px 0 0}.understand-signin{margin-top:14px}.understand-signin-btn{border:1px solid var(--border);border-radius:var(--radius-pill);padding:8px 18px;font-size:13px;color:var(--burgundy);margin-top:8px}.understand-signin-btn:hover{border-color:var(--burgundy);background:#f7f2ee}.understand-result{margin-top:26px}.understand-heading{font:15px var(--sans);font-weight:600;color:var(--ink-soft);margin:22px 0 6px}.understand-line{font:19px var(--verse-serif),Georgia,serif;color:var(--ink);margin:10px 0}.related{margin-top:40px}#toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--ink);color:white;border-radius:6px;padding:10px 20px;font-size:14px;pointer-events:none;opacity:0;transition:opacity .2s}#toast.show{opacity:1}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}[hidden],.lang-hidden{display:none!important}.empty{grid-column:1/-1;padding:45px 0;max-width:600px}.empty h3{font:26px var(--serif)}@media(max-width:760px){header{padding:0 24px;height:85px}.edition{display:none}main{padding:0 24px}.opening{padding:42px 0 35px}h1{font-size:40px}.section-head{align-items:flex-start;flex-direction:column;gap:12px}footer{flex-direction:column}.reader-heading h1{font-size:var(--title-featured-sm)}.poem-text{font-size:20px}.poem-text[lang=hi]{font-size:23px}.back{margin-bottom:32px}.poets-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.brand-en,.brand-hi{height:44px}h1{font-size:36px}.suggestions{gap:7px}.suggestions>span{width:100%}.poem-text.large{font-size:25px}.versions button{padding:7px 12px}.reader-tools{gap:15px}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}

fieldset{border:0;padding:0;margin:0;min-width:0}.filters{display:flex;gap:14px;align-items:end;flex-wrap:wrap;margin:24px 0 8px}.filters button{font-size:14px;padding:11px 0;color:var(--burgundy)}.load-more{display:block;margin:32px auto 5px;padding:12px 25px;border:1px solid var(--border);border-radius:var(--radius-action);color:var(--burgundy)}.poem-text.prose{width:100%;font-size:22px;line-height:1.9}.poem-text.prose.large{font-size:28px}.sources-page{max-width:850px;padding:40px 24px;margin:auto}.sources-page h1{font-size:38px}.sources-page h2{margin-top:36px}.sources-page li{margin-bottom:12px}.sources-page a{overflow-wrap:anywhere}#license{font-size:14px}#edition{font-weight:500}button:disabled{cursor:wait;opacity:.65}@media(max-width:480px){.poem-text.prose{font-size:20px}.reader-heading h1{overflow-wrap:anywhere}}
/* Post feed: quiet literary typography with familiar social reading controls. */
header{position:sticky;top:0;z-index:5;background:var(--paper);height:78px}.opening{max-width:680px;padding:40px 0 28px}.opening h1{font-size:42px}.shelf{max-width:680px;margin:auto}.results{display:flex;flex-direction:column;gap:28px}/* Explicit user direction: soften the card outline so it reads as a page, not a boxed tile — a
   near-invisible border plus the page's own paper color (instead of a white fill against the
   cream page) removes the hard rectangle; a very faint shadow keeps just enough separation
   between stacked cards now that poem scrolling is vertical-only. */
.poetry-post{width:100%;border:1px solid var(--paper-2);border-radius:var(--radius-card);overflow:hidden;background:var(--paper);box-shadow:0 2px 10px #211c170a;margin:0;content-visibility:auto;contain-intrinsic-size:auto 750px}.post-heading{display:flex;gap:12px;padding:18px 22px;align-items:center}.poet-avatar{width:42px;height:42px;display:grid;place-items:center;background:#eee8e0;border-radius:50%;color:var(--burgundy);font:17px var(--serif);flex-shrink:0}.poet-name{padding:0;text-align:left;font-weight:600;font-size:14px}.post-heading .muted{font-size:11px}.open-post{margin-left:auto;font-size:22px;min-width:44px;min-height:44px}.poetry-canvas{background:#f2eee6;padding:30px 34px 16px}.poetry-canvas h3{font:var(--title-standard)/1.45 var(--serif);margin:0 0 25px;overflow-wrap:anywhere;text-align:center}.poetry-canvas[lang=hi] h3{font-family:var(--devanagari-serif)}.verse-viewport{min-height:260px;max-height:460px;overflow-y:auto;touch-action:pan-y;overscroll-behavior-x:contain;scrollbar-width:thin}.post-verse{font:21px/1.85 var(--verse-serif),Georgia,serif;white-space:pre-wrap;overflow-wrap:anywhere;padding-bottom:12px;text-align:center}.poetry-canvas[lang=hi] .post-verse{font-family:var(--devanagari-serif);font-size:23px;line-height:2}.post-paging{display:flex;align-items:center;justify-content:center;gap:22px;padding-top:15px}.post-paging button{border:1px solid #b7b1a7;border-radius:50%;height:40px;width:40px}.post-paging button:disabled{opacity:.25;cursor:default}.page-counter{font-size:12px;font-variant-numeric:tabular-nums}.swipe-hint{text-align:center;font-size:11px;color:var(--meta);margin:12px 0 0}.post-actions{display:flex;gap:12px;padding:12px 16px 0;align-items:center}.post-actions button{min-height:44px;font-size:14px}.post-actions button[aria-pressed=true]{color:var(--burgundy)}.read-full{margin-left:auto;font-size:12px!important}.post-secondary-actions{padding:0 16px 12px}.post-secondary-actions summary{font-size:12px;color:var(--meta);list-style:none}.post-secondary-actions summary::-webkit-details-marker{display:none}.post-secondary-actions summary:hover{color:var(--burgundy)}.post-secondary-actions-row{display:flex;gap:12px;padding-top:10px}.post-secondary-actions-row button{min-height:44px;font-size:13px;color:var(--meta)}.post-secondary-actions-row button[aria-pressed=true]{color:var(--burgundy)}.post-details{border-top:1px solid var(--border);padding:16px 22px;font-size:14px}.post-details summary{font-size:14px;min-height:26px}.post-details p{line-height:1.8}.source-link{display:block;margin:12px 0;color:var(--burgundy);overflow-wrap:anywhere}.interpretation summary{color:var(--burgundy)}#result-title{scroll-margin-top:95px}#toast{z-index:10;max-width:90%;width:max-content}.section-head h2{font-size:25px}.filters{gap:10px}footer{max-width:680px;margin:auto}.post-details a:focus-visible{outline-offset:2px}/* Canonical PoemCard sizing correction (real-device QA): ~2:3 portrait, not 3:4 — the card is a
   reading surface, not a social-post tile, so it must be sized like one. PoemCard simplification
   removed the title/language·form rows from view entirely (the title stays in the DOM only as an
   sr-only heading, for accessibility and discover.js's focus-management call) — ornament/poet/
   actions stay a fixed height, and virtually all of the freed height goes to the verse region,
   which is now the card's visual hero. Explicit user direction: every PoemCard is the exact same
   size everywhere, with no per-context variant — ~500x750 on desktop, and (since the mobile rail
   is gone — poem scrolling is vertical-only now) ~390x585 on mobile, inset from the viewport via
   width:calc(100% - 32px). cardExcerpt()/CARD_LINES in poetry-post.mjs, and every other anatomy/
   typography rule on this card, are unchanged by container context. justify-content: flex-start
   (not center) at every size, so if a card ever runs short on room, any overflow crops from the
   end of the excerpt, never from its start. */
.poem-card{aspect-ratio:2/3;width:100%;max-width:500px;margin:0 auto;display:flex;flex-direction:column}
.poem-card .poetry-canvas{flex:1;display:flex;flex-direction:column;justify-content:flex-start;overflow:hidden}.poem-card .card-ornament{display:block;text-align:center;color:var(--burgundy);font-size:16px;margin:0 0 14px}.poem-card .poet-name{display:block;text-align:center;margin:16px 0 0}.poetry-canvas[lang=hi] .poet-name{font-family:var(--devanagari-sans)}@media(max-width:600px){header{padding:0 20px}main{padding:0 16px}.opening h1{font-size:36px}.opening{padding:42px 0 8px}#discover-view .opening h1{margin:0 0 16px}#discover-view .opening h1+.muted{margin:0 0 10px}
/* Mobile landing-page hierarchy correction (real-device QA): the first poem used to appear too
   late on mobile because of 3 stacked example prompts, excessive whitespace, an oversized "OR
   WANDER" section and large bordered Wander tiles. #feeling-examples now shows exactly one example
   at a time (see discover.js's EXAMPLE_VISIBLE_COUNT). The quiet borderless Wander-link treatment
   and the removed .todays-picks border-top are now the base/unscoped rules (every breakpoint), so
   only the extra phone-specific tightening on top of that base lives here. The divider that used to
   sit above the Wander nav was later removed entirely (live-site feedback), along with its rule. */
.todays-picks{padding-top:14px}
/* Live-site feedback: on narrow phones the hero placeholder ran past the input's available width
   at the base 22px, clipping its trailing characters. */
#feeling{font-size:15px}.poetry-canvas{padding:25px 22px 16px}.poetry-canvas h3{font-size:var(--title-compact)}.post-verse{font-size:19px}.poetry-canvas[lang=hi] .post-verse{font-size:21px}.post-heading{padding:14px 18px}.post-actions{gap:6px}.poetry-post{border-radius:var(--radius-card-compact)}.verse-viewport{max-height:420px}.post-details{padding:14px 18px}.poem-card{width:100%;max-width:440px}.poem-card .poetry-canvas{padding-top:22px}.poem-card .post-verse{font-size:clamp(22px,5.5vw,27px);line-height:1.5}.poem-card .poetry-canvas[lang=hi] .post-verse{font-size:clamp(24px,5.5vw,27px);line-height:1.6}
/* Minimal mobile header: logo, compact Read-in, one menu button. Secondary nav (Saved,
   Playlists, Epics, account) lives in a right-side drawer so it never competes for space. */
.language-label{display:none}.language{min-width:0;flex-shrink:1}.language select{margin-left:0;padding:8px 4px;min-width:0;width:100%;max-width:100%}
/* Three-zone mobile header (wordmark / language selector / menu): .header-actions is unwrapped via
   display:contents (the same technique #header-menu already uses to go inert on desktop) so its
   real children become direct grid items of header — its position:fixed drawer/backdrop children
   are excluded from grid placement automatically, so only .brand, .language and #menu-toggle ever
   land in the three explicit columns. Explicit grid-column placement (rather than auto-placement
   order) means this degrades cleanly on Epics/Playlists, which have no .language: the hamburger
   still lands in column 3, right-aligned, with no empty gap where the selector would have been. */
header{display:grid;grid-template-columns:auto 1fr auto}
.header-actions{display:contents}
.brand{grid-column:1}
.language{grid-column:2;justify-self:center}
/* The 1fr middle track is a definite-width containing block, so the select's own width:100% (set
   above for the pre-grid packed layout) would otherwise stretch it to fill the whole track instead
   of centering as a compact control. Chrome also sizes a native select to its widest OPTION, not
   the selected one (213px here, for "Roman Hindi (limited beta)"), which no longer fits the 1fr
   track at the narrowest phones and would overlap the wordmark when centered — cap it instead. */
.language select{width:auto;max-width:130px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#menu-toggle{grid-column:3;justify-self:end}
.header-actions{min-width:0}
#menu-toggle{display:flex;align-items:center;justify-content:center;width:44px;height:44px;font-size:20px;flex-shrink:0}
#header-menu-backdrop{position:fixed;inset:0;background:#15100d66;opacity:0;visibility:hidden;transition:opacity .2s;z-index:6}
body.menu-open{overflow:hidden}
body.menu-open #header-menu-backdrop{opacity:1;visibility:visible}
#header-menu{display:flex;position:fixed;top:0;right:0;bottom:0;left:auto;width:min(85vw,340px);max-width:100%;background:var(--paper);
  border-left:1px solid var(--border);flex-direction:column;gap:2px;visibility:hidden;
  padding:calc(16px + env(safe-area-inset-top)) calc(16px + env(safe-area-inset-right)) calc(16px + env(safe-area-inset-bottom)) 16px;
  transform:translateX(100%);transition:transform .2s,visibility .2s;overflow-y:auto;z-index:7;box-shadow:-8px 0 24px #15100d1a}
#header-menu.open{transform:translateX(0);visibility:visible}
#header-menu>*{display:flex!important;align-items:center;min-height:44px;width:100%;box-sizing:border-box;flex-shrink:0}
#menu-close{width:44px;height:44px;min-height:44px!important;justify-content:center;font-size:18px;align-self:flex-end;margin-bottom:6px}
header{position:relative}
}

.share-dialog{width:min(680px,92vw);max-height:90dvh;overflow:auto;border:1px solid var(--border);border-radius:16px;padding:24px;background:var(--paper);color:var(--ink)}.share-dialog::backdrop{background:#15100dc0}.share-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.share-close{width:44px;height:44px;min-width:44px;min-height:44px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:26px;line-height:1;color:var(--meta);border-radius:50%}.share-close:hover{color:var(--burgundy);background:var(--paper-2)}.share-preview{margin:16px 0 18px}.share-preview canvas{display:block;width:100%;max-width:100%;height:auto;margin:auto;border-radius:8px;border:1px solid var(--border)}.share-actions{display:flex;flex-wrap:wrap;gap:10px;margin:0 0 12px}.share-actions-primary button{flex:1;min-width:140px;padding:13px 16px;border:1px solid var(--burgundy);border-radius:8px;background:var(--burgundy);color:#fff;font-size:15px;font-weight:500}.share-actions-primary button:hover{background:var(--burgundy-soft);border-color:var(--burgundy-soft)}.share-actions-secondary button{flex:1;min-width:120px;padding:9px 14px;border:1px solid var(--border);border-radius:8px;background:none;color:var(--meta);font-size:13px}.share-actions-secondary button:hover{color:var(--burgundy);border-color:var(--burgundy)}.share-actions button:disabled{opacity:.5}.share-format{display:block;width:auto;margin:0 0 14px;padding:7px 10px;font-size:12px;color:var(--meta);border:1px solid var(--border);border-radius:6px;background:var(--paper)}.share-dialog p{font-size:13px;color:var(--meta);min-height:1.4em}
.auth-toggle{font-size:13px;color:var(--meta);white-space:nowrap}.auth-toggle[aria-pressed=true]{color:var(--burgundy)}.auth-dialog{width:min(400px,90vw);border:1px solid var(--border);border-radius:16px;padding:26px;background:var(--paper);color:var(--ink)}.auth-dialog::backdrop{background:#15100dc0}.auth-dialog h2{font:22px var(--serif);margin:0 0 8px}.auth-dialog .auth-form{display:block;background:none;border:0;box-shadow:none;padding:0;gap:0}.auth-dialog .auth-form input{flex:none;box-sizing:border-box;width:100%;padding:12px;border:1px solid var(--border);border-radius:6px;margin:14px 0;background:#fff;font-size:15px}.auth-dialog .auth-actions{display:flex;justify-content:flex-end;gap:10px}.auth-dialog .auth-actions button{width:auto;height:auto;font-size:14px;padding:9px 18px;border-radius:6px;background:none;color:var(--burgundy);border:1px solid var(--border)}.auth-dialog .auth-actions button.primary{background:var(--burgundy);color:#fff;border-color:var(--burgundy)}.auth-status{min-height:18px}
.like-button[aria-pressed=true]{color:var(--burgundy)}.comment-signin{color:var(--burgundy);font-size:13px;padding:4px 0}.comment-list{display:flex;flex-direction:column;gap:14px;margin:10px 0}.comment{border-top:1px solid var(--border);padding-top:10px}.comment-name{display:block;font-size:12px;font-weight:600;color:var(--meta);margin-bottom:4px}.comment p{margin:0;line-height:1.7}.comment-form{display:flex;flex-direction:column;gap:10px;margin-top:12px;background:none;border:0;box-shadow:none;padding:0}.comment-form textarea{font:inherit;padding:10px;border:1px solid var(--border);border-radius:6px;resize:vertical;min-height:70px;background:#fff}.comment-form button{align-self:flex-end;width:auto;height:auto;font-size:14px;padding:9px 18px;border:1px solid var(--border);border-radius:6px;background:none;color:var(--burgundy)}
.playlists-link{font-size:14px}.playlists-main{max-width:820px}#mine-section,#recommended-section,#discover-section{border-top:1px solid var(--border);padding:30px 0}#mine-section{border-top:0}.playlist-form{display:flex;gap:10px;margin:14px 0}.playlist-form input{border:1px solid var(--border);border-radius:6px;padding:10px 12px;flex:1;background:#fff}.playlist-form button{width:auto;height:auto;background:var(--burgundy);color:#fff;border-radius:6px;padding:0 20px;font-size:14px;white-space:nowrap}.playlist-list{display:flex;flex-direction:column;gap:18px;margin-top:16px}.playlist-card{border:1px solid var(--border);border-radius:var(--radius-card-compact);padding:20px 24px}.playlist-card h3{font:22px var(--serif);margin:0 0 4px}.playlist-poems{display:flex;flex-direction:column;gap:6px;margin:14px 0}.playlist-poem-link{color:var(--burgundy);font-size:14px}.delete-playlist{color:var(--meta);font-size:13px;margin-top:8px}.delete-playlist:hover{color:var(--burgundy)}.playlist-dialog{width:min(460px,90vw);border:1px solid var(--border);border-radius:16px;padding:26px;background:var(--paper);color:var(--ink)}.playlist-dialog::backdrop{background:#15100dc0}.playlist-dialog h2{font:22px var(--serif);margin:0 0 14px}.playlist-picker{display:flex;flex-direction:column;gap:10px;margin-bottom:16px}.playlist-row{display:flex;justify-content:space-between;align-items:center;gap:12px;border:1px solid var(--border);border-radius:6px;padding:10px 14px}.playlist-row button{font-size:13px;padding:6px 14px;border:1px solid var(--border);border-radius:6px;color:var(--burgundy)}.playlist-row button.add{background:var(--burgundy);color:#fff;border-color:var(--burgundy)}.playlist-dialog .playlist-form{margin:0}.playlist-dialog .playlist-form input{flex:1;min-width:0}.playlist-dialog .playlist-form button[value=close]{background:none;color:var(--burgundy)}@media(max-width:600px){.playlist-form{flex-direction:column}.playlist-card{padding:16px 18px}}
#discover-form{border:0;background:none;box-shadow:none;border-radius:0;border-bottom:1px solid var(--border);padding:10px 0}#discover-form:focus-within{border-color:var(--border);box-shadow:none;border-bottom-color:var(--burgundy)}#feeling{font:22px/1.5 var(--verse-serif);font-style:italic}#feeling[lang=hi]{font-family:var(--devanagari-serif);font-style:normal}#feeling::placeholder{color:var(--meta);font-style:italic;opacity:1}#discover-form button{align-self:center;flex:0 0 auto;width:44px;height:44px;min-width:44px;padding:0;border-radius:50%;background:var(--burgundy);color:#fff;font-size:18px;display:flex;align-items:center;justify-content:center}#discover-form button:hover{background:var(--burgundy-soft)}#discover-status{margin:0;min-height:1em;font-size:17px;font-style:italic;color:var(--burgundy)}#feeling:focus-visible{outline:0}#feeling:-webkit-autofill{-webkit-box-shadow:0 0 0 1000px var(--paper) inset;-webkit-text-fill-color:var(--ink)}.wander-tiles{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:2px 22px;margin-top:6px}.wander-tiles a{display:inline-flex;align-items:center;color:var(--burgundy);text-decoration:none;min-height:44px;border:0;padding:0;font-size:14px}.wander-tiles a:hover{text-decoration:underline}.poets-showcase{max-width:680px;margin:auto;border-top:1px solid var(--border);padding:35px 0}.poets-showcase>.muted{margin:0 0 20px}.poets-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.poet-tile{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;border:1px solid var(--border);border-radius:var(--radius-action);padding:16px 18px;width:100%}.poet-tile:hover{border-color:var(--burgundy)}.poet-tile-name{font:19px var(--serif);color:var(--ink)}.browse-search{margin:20px 0 14px}.poets-search{display:block;width:100%;max-width:320px;border:1px solid var(--border);border-radius:var(--radius-action);padding:10px 14px;margin:16px 0 6px;background:#fff;font:inherit;color:var(--ink)}.poets-poet-filter{display:flex;flex-direction:column;gap:5px;color:var(--meta);font-size:13px;max-width:320px;margin:0 0 16px}.poets-poet-filter select{border:1px solid var(--border);border-radius:var(--radius-action);padding:9px;width:100%;background:var(--paper);font:inherit;color:var(--ink)}.poets-az{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.poets-az-item{border:1px solid var(--border);border-radius:var(--radius-pill);padding:6px 14px;font-size:13px}.poets-az-item:hover{border-color:var(--burgundy);color:var(--burgundy)}.discover-back{display:inline-block;margin-bottom:18px;font-size:13px;color:var(--meta)}.discover-result{border-top:1px solid var(--border);padding:35px 0;max-width:820px;margin:auto}#discover-poem-mount{max-width:680px;margin:auto}.discover-next{text-align:center;margin-top:22px;display:flex;justify-content:center;gap:14px;flex-wrap:wrap}.discover-next button,.discover-next a{border:1px solid var(--border);border-radius:var(--radius-pill);padding:9px 18px;font-size:14px;text-decoration:none;color:var(--burgundy)}.discover-error{border-top:1px solid var(--border);padding:35px 0;max-width:600px;margin:auto;text-align:center}.discover-error button,.discover-error a{margin:14px 8px 0;border:1px solid var(--border);border-radius:var(--radius-pill);padding:9px 18px;text-decoration:none;color:var(--burgundy);display:inline-block}.discover-more{border-top:1px solid var(--border);padding:35px 0;max-width:820px;margin:auto}.discover-more>.eyebrow{text-align:center}.todays-picks{padding:35px 0;max-width:820px;margin:auto}.todays-picks>.eyebrow{text-align:center}.discover-cards{display:flex;flex-direction:column;gap:28px;margin-top:18px}#todays-picks-rail{display:flex;flex-direction:column;gap:28px}.discover-alternate{display:flex;flex-direction:column}.reading-pref-prompt{margin-top:18px;padding:14px 16px;border:1px solid var(--border);border-radius:8px;background:#fff}.reading-pref-prompt p{margin:0 0 8px;font-size:13px;color:var(--meta)}.reading-pref-prompt button{border:1px solid var(--border);border-radius:var(--radius-pill);padding:7px 16px;margin:0 6px 6px 0;font-size:13px}.reading-pref-prompt button:hover{border-color:var(--burgundy);color:var(--burgundy)}
.discover-more-head,.results-head,.poets-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.discover-more-head .eyebrow,.results-head .eyebrow{margin:0}.see-all{font-size:13px;color:var(--burgundy);white-space:nowrap;min-height:44px;padding:0 4px}@media(min-width:601px){.see-all{display:none}.results-head{display:none!important}.discover-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}
/* TODAY'S PICKS desktop: the same 2-column grid language as "More for this feeling" — five items
   in two columns auto-flow as a 2-2-1 composition (the fifth card alone in the last row, filling
   only its own cell, never stretched to span the row) without any bespoke layout rule. */
#todays-picks-rail{display:grid;grid-template-columns:repeat(2,1fr);gap:28px}}
@media(max-width:600px){.discover-next{flex-direction:column}
  /* Explicit user direction: poem cards scroll vertically only — no horizontal rail/carousel for
     poems on mobile, at any breakpoint. This removes the former "five permitted mobile horizontal
     rails" pattern for every PoemCard context (More for this feeling / .discover-cards, Search-
     the-library results / .results, Related Poetry / #related, TODAY'S PICKS / #todays-picks-rail)
     — they all now fall back to their own unscoped vertical-column base rule (#related reuses the
     .discover-cards class, so it inherits automatically; #todays-picks-rail gets an equivalent
     unscoped rule alongside .discover-cards/.results below). Explore Poets tiles (.poets-grid) are
     a separate component — poet tiles, not PoemCards — and keep the one remaining horizontal rail,
     since the instruction was scoped to "scrolling for poems". With the rail gone, every PoemCard
     now shares one .poem-card size and one .post-verse line-clamp at each breakpoint — there is no
     smaller "rail card" variant left anywhere. */
  .poets-grid{display:flex;flex-direction:row;width:100%;max-width:100%;min-width:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;gap:16px;padding-bottom:6px}
  .poets-grid>*{flex:0 0 44%;scroll-snap-align:start;min-width:0;margin:0}
  #search-controls{display:flex;flex-direction:column;width:100%;max-width:100%;min-width:0}#browse{order:1;width:100%;max-width:100%;min-width:0}#poets{order:2;width:100%;max-width:100%;min-width:0}
}
