/* ==========================================================================
   BotPlaza — Output previews (.pv). Depends on tokens.css.
   Every size is in cqi (1% of the preview's own width), so ONE markup
   renders identically as a 380px card thumbnail and a 1200×800 PNG.
   Stage is always 3:2.
   ========================================================================== */
.pv { container-type: inline-size; position: relative; aspect-ratio: 3 / 2; width: 100%; overflow: hidden; isolation: isolate;
  /* dark stage + warm glow behind the sheet: the paper is lit, the room is dark */
  background: radial-gradient(55% 60% at 50% 42%, rgba(240,160,110,.17), rgba(240,160,110,0) 72%), linear-gradient(180deg, #2A2622 0%, #1F1C19 100%);
  color: var(--sa-ink); font-family: var(--sa-font-ui); }
.pv * { box-sizing: border-box; }
.pv-flag { position: absolute; top: 2.6cqi; right: 2.6cqi; z-index: 3; font: 600 1.5cqi/1 var(--sa-font-ui); letter-spacing: .12em; text-transform: uppercase; color: #CBC3B6; background: rgba(18,17,16,.72); border: 1px dashed #6F675C; padding: .95cqi 1.35cqi; border-radius: .7cqi; backdrop-filter: blur(4px); }
.pv-doc { position: absolute; left: 50%; top: 7cqi; transform: translateX(-50%); width: 76cqi; background: #FFFDF9; border-radius: .7cqi;
  box-shadow: 0 .2cqi .4cqi rgba(0,0,0,.45), 0 3cqi 7cqi -2cqi rgba(0,0,0,.55), 0 0 10cqi -2cqi rgba(240,170,120,.18); padding: 4.2cqi 4.6cqi; }
.pv-doc--tall { bottom: -4cqi; } /* runs off the bottom edge: reads as "more below" */
.pv-k { font: 600 1.45cqi/1 var(--sa-font-ui); letter-spacing: .14em; text-transform: uppercase; color: var(--sa-print-accent); }
.pv-m { font: 500 1.5cqi/1.3 var(--sa-font-ui); color: var(--sa-ink-3); letter-spacing: .02em; }
.pv-h { font: 400 4.2cqi/1.05 var(--sa-font-display); letter-spacing: -.01em; color: var(--sa-ink); }
.pv-t { font-family: var(--sa-font-text); font-size: 1.9cqi; line-height: 1.42; color: var(--sa-ink-2); font-variation-settings: "opsz" 10; }
.pv-t b { color: var(--sa-ink); font-weight: 600; }
.pv-rule { border: 0; border-top: 1px solid var(--sa-rule); margin: 2cqi 0; }
.pv-sec { font: 700 1.4cqi/1 var(--sa-font-ui); letter-spacing: .14em; text-transform: uppercase; color: var(--sa-ink); padding-bottom: .9cqi; border-bottom: 1px solid var(--sa-ink); margin-bottom: 1.3cqi; }
.pv-pill { display: inline-flex; align-items: center; height: 2.6cqi; padding: 0 1.1cqi; border-radius: 99cqi; font: 600 1.35cqi/1 var(--sa-font-ui); letter-spacing: .04em; background: var(--sa-paper-2); color: var(--sa-ink-2); white-space: nowrap; }
.pv-pill--hot { background: var(--sa-print-accent-soft); color: var(--sa-print-accent-ink); }
.pv-pill--ok { background: var(--sa-print-green-soft); color: var(--sa-print-green); }
.pv-av { width: 3.6cqi; height: 3.6cqi; border-radius: 50%; display: inline-grid; place-items: center; font: 600 1.35cqi/1 var(--sa-font-ui); color: #FFFDF9; flex: none; }

/* 1 · Morning Newspaper ------------------------------------------------- */
.pv-news { background: var(--sa-newsprint); background-image: radial-gradient(rgba(120,95,60,.05) 1px, transparent 1px); background-size: 3px 3px; border: 1px solid #E6DECF; border-radius: .3cqi; width: 80cqi; padding: 3.6cqi 4.2cqi; font-family: var(--sa-font-text); color: #1A1712; }
.pv-news__ears { display: flex; justify-content: space-between; font: 500 1.2cqi/1 var(--sa-font-ui); letter-spacing: .1em; text-transform: uppercase; color: #5A5347; }
.pv-news__mast { text-align: center; font: 400 8.4cqi/.95 var(--sa-font-display); letter-spacing: -.02em; margin: .8cqi 0 1.2cqi; white-space: nowrap; }
.pv-news__date { display: flex; justify-content: space-between; padding: .7cqi 0; border-top: 3px double #1A1712; border-bottom: 1px solid #1A1712; font: 500 1.25cqi/1 var(--sa-font-ui); letter-spacing: .08em; text-transform: uppercase; }
.pv-news__grid { display: grid; grid-template-columns: 1.55fr 1fr 0.95fr; margin-top: 2cqi; }
.pv-news__grid > div { padding: 0 1.8cqi; border-left: 1px solid #CFC6B5; }
.pv-news__grid > div:first-child { padding-left: 0; border-left: 0; }
.pv-news__grid > div:last-child { padding-right: 0; }
.pv-news__hed { font-weight: 600; font-variation-settings: "opsz" 60; font-size: 3.5cqi; line-height: 1.02; letter-spacing: -.015em; margin: .8cqi 0 1.1cqi; text-wrap: balance; }
.pv-news__hed--sm { font-size: 2.15cqi; line-height: 1.1; margin-top: .6cqi; }
.pv-news__p { font-size: 1.5cqi; line-height: 1.42; color: #29251E; font-variation-settings: "opsz" 8; }
.pv-news__p::first-letter { float: left; font: 400 4.6cqi/.8 var(--sa-font-display); color: var(--sa-print-accent); padding: .3cqi .4cqi 0 0; }
.pv-news__p--plain::first-letter { all: unset; }
.pv-news__wx { display: flex; align-items: center; gap: 1cqi; }
.pv-news__temp { font: 400 5.4cqi/.9 var(--sa-font-display); }
.pv-news__day { list-style: none; margin: 0; padding: 0; font-size: 1.45cqi; line-height: 1.3; }
.pv-news__day li { display: grid; grid-template-columns: 5.4cqi 1fr; padding: .55cqi 0; border-bottom: 1px dotted #BFB5A2; }
.pv-news__day li:last-child { border: 0; }
.pv-news__day time { font: 600 1.25cqi/1.5 var(--sa-font-ui); color: var(--sa-print-accent); }

/* 2 · Research Brief ---------------------------------------------------- */
.pv-research .pv-h { font-size: 3.9cqi; max-width: 92%; margin: 1.2cqi 0 1.4cqi; text-wrap: balance; }
.pv-research__meta { display: flex; gap: 1.2cqi; align-items: center; flex-wrap: wrap; }
.pv-bottom { margin-top: 2.4cqi; padding: 1.8cqi 2.2cqi; background: var(--sa-paper); border-left: .5cqi solid var(--sa-print-accent); border-radius: 0 .6cqi .6cqi 0; }
.pv-bottom .pv-t { font-size: 1.95cqi; color: var(--sa-ink); }
.pv-findings { list-style: none; margin: 2.2cqi 0 0; padding: 0; counter-reset: f; display: grid; gap: 1.3cqi; }
.pv-findings li { counter-increment: f; display: grid; grid-template-columns: 3.4cqi 1fr; }
.pv-findings li::before { content: counter(f); font: italic 400 2.8cqi/1 var(--sa-font-display); color: var(--sa-print-accent); }
.pv-cite { font: 600 1.15cqi/1 var(--sa-font-ui); color: var(--sa-print-blue); vertical-align: super; margin-left: .2cqi; }

/* 3 · Inbox Digest ------------------------------------------------------ */
.pv-inbox { padding: 0; overflow: hidden; }
.pv-inbox__head { padding: 3.4cqi 4cqi 2.4cqi; display: flex; justify-content: space-between; align-items: flex-end; border-bottom: 1px solid var(--sa-rule); }
.pv-inbox__head .pv-h { font-size: 3.8cqi; }
.pv-inbox__count { text-align: right; }
.pv-inbox__count b { display: block; font: 400 4.6cqi/1 var(--sa-font-display); color: var(--sa-print-accent); }
.pv-inbox__grp { padding: 1.6cqi 4cqi .4cqi; }
.pv-mail { display: grid; grid-template-columns: 3.6cqi 1fr auto; gap: 1.6cqi; align-items: center; padding: 1.15cqi 0; border-bottom: 1px solid var(--sa-rule); font-size: 1.6cqi; line-height: 1.3; }
.pv-mail:last-child { border-bottom: 0; }
.pv-mail b { display: block; font-weight: 600; color: var(--sa-ink); }
.pv-mail span.pv-mail__s { display: block; color: var(--sa-ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pv-mail--sus { background: var(--sa-print-accent-soft); margin: 0 -4cqi; padding-inline: 4cqi; border-bottom: 0; }
.pv-ignore { display: flex; gap: .4cqi; height: 1.1cqi; border-radius: 1cqi; overflow: hidden; margin-top: 1cqi; }
.pv-ignore i { display: block; background: #D9D0C0; }

/* 4 · Meeting Prep Brief ------------------------------------------------ */
.pv-meet__time { display: inline-flex; align-items: center; gap: 1cqi; font: 600 1.5cqi/1 var(--sa-font-ui); color: var(--sa-ink); background: var(--sa-paper-2); padding: .9cqi 1.3cqi; border-radius: .6cqi; }
.pv-meet__time i { width: 1cqi; height: 1cqi; border-radius: 50%; background: var(--sa-print-green); }
.pv-meet .pv-h { margin: 1.8cqi 0 1cqi; font-size: 3.9cqi; }
.pv-meet__goal { font-size: 1.7cqi; color: var(--sa-ink-2); }
.pv-meet__goal b { color: var(--sa-ink); }
.pv-people { display: grid; grid-template-columns: 1fr 1fr; gap: 1.6cqi; margin: 2.2cqi 0; }
.pv-person { display: flex; gap: 1.2cqi; align-items: flex-start; padding: 1.4cqi; border: 1px solid var(--sa-rule); border-radius: .8cqi; font-size: 1.45cqi; line-height: 1.35; color: var(--sa-ink-3); }
.pv-person b { display: block; font-size: 1.65cqi; color: var(--sa-ink); font-weight: 600; }
.pv-sayask { display: grid; grid-template-columns: 1fr 1fr; gap: 2.4cqi; }
.pv-sayask ol { margin: 0; padding-left: 2.2cqi; font-family: var(--sa-font-text); font-size: 1.6cqi; line-height: 1.4; color: var(--sa-ink-2); }
.pv-sayask li + li { margin-top: .5cqi; }
.pv-sayask li::marker { color: var(--sa-print-accent); font-weight: 600; }
.pv-watch { margin-top: 2cqi; padding: 1.2cqi 1.6cqi; border-radius: .6cqi; background: #F6EBDD; color: #6A4A12; font-size: 1.5cqi; line-height: 1.3; }
.pv-watch b { color: #4A330B; }

/* 5 · Weekly Planner ---------------------------------------------------- */
.pv-plan__stats { display: flex; gap: 3cqi; margin: 1.4cqi 0 2.4cqi; }
.pv-plan__stats div { font-size: 1.45cqi; color: var(--sa-ink-3); }
.pv-plan__stats b { display: block; font: 400 3.6cqi/1 var(--sa-font-display); color: var(--sa-ink); margin-bottom: .3cqi; }
.pv-week { display: grid; grid-template-columns: repeat(5, 1fr); gap: 1.2cqi; }
.pv-day { border-top: 1px solid var(--sa-ink); padding-top: .9cqi; }
.pv-day__n { display: flex; justify-content: space-between; font: 600 1.4cqi/1 var(--sa-font-ui); letter-spacing: .08em; text-transform: uppercase; color: var(--sa-ink); }
.pv-day__n span { font-weight: 500; letter-spacing: 0; text-transform: none; color: var(--sa-ink-3); }
.pv-day__col { position: relative; height: 15cqi; margin-top: 1cqi; background: repeating-linear-gradient(var(--sa-paper) 0 2.4cqi, #FFFDF9 2.4cqi 2.5cqi); border-radius: .4cqi; overflow: hidden; }
.pv-blk { position: absolute; left: .5cqi; right: .5cqi; border-radius: .35cqi; font: 600 1.15cqi/1.15 var(--sa-font-ui); padding: .5cqi .6cqi; overflow: hidden; }
.pv-blk--mtg { background: #DCD3C4; color: var(--sa-ink-2); }
.pv-blk--focus { background: var(--sa-print-green-soft); color: var(--sa-print-green); border-left: .4cqi solid var(--sa-print-green); }
.pv-blk--warn { background: var(--sa-print-accent-soft); color: var(--sa-print-accent-ink); }
.pv-blk--trip { background: #DDE4EC; color: var(--sa-print-blue); }
.pv-day__task { margin-top: .8cqi; font-size: 1.35cqi; line-height: 1.25; color: var(--sa-ink-2); }
.pv-top3 { margin-top: 2cqi; display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.6cqi; }
.pv-top3 div { font-size: 1.45cqi; line-height: 1.3; color: var(--sa-ink-3); padding-left: 1.2cqi; border-left: 2px solid var(--sa-print-accent); }
.pv-top3 b { display: block; color: var(--sa-ink); font-weight: 600; margin-bottom: .2cqi; }

/* 6 · Weekly Fitness Summary ------------------------------------------- */
.pv-fit { display: grid; grid-template-columns: 1fr 1.1fr; gap: 4cqi; }
.pv-fit__big { font: 400 11cqi/.9 var(--sa-font-display); letter-spacing: -.03em; color: var(--sa-ink); margin-top: 1.4cqi; }
.pv-fit__big small { font: 500 2.2cqi/1 var(--sa-font-ui); letter-spacing: 0; color: var(--sa-ink-3); margin-left: .6cqi; }
.pv-fit__delta { display: inline-block; margin-top: 1.2cqi; }
.pv-fit__row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.4cqi; margin-top: 2.4cqi; }
.pv-fit__row div { font-size: 1.4cqi; color: var(--sa-ink-3); border-top: 1px solid var(--sa-rule); padding-top: .9cqi; }
.pv-fit__row b { display: block; font: 600 2.2cqi/1.1 var(--sa-font-ui); color: var(--sa-ink); letter-spacing: -.01em; font-variant-numeric: tabular-nums; }
.pv-cmp { display: grid; gap: 1.2cqi; margin-top: .4cqi; }
.pv-cmp__r { display: grid; grid-template-columns: 9cqi 1fr 6.5cqi; gap: 1cqi; align-items: center; font-size: 1.4cqi; color: var(--sa-ink-3); font-variant-numeric: tabular-nums; }
.pv-cmp__r b { color: var(--sa-ink); font-weight: 600; text-align: right; }
.pv-cmp__bar { height: 1.8cqi; background: var(--sa-paper-2); border-radius: .3cqi; overflow: hidden; }
.pv-cmp__bar i { display: block; height: 100%; background: #CFC5B4; border-radius: .3cqi; }
.pv-cmp__r--now .pv-cmp__bar i { background: var(--sa-ink); }
.pv-fit__note { margin-top: 2.2cqi; padding: 1.4cqi 1.6cqi; background: var(--sa-paper); border-radius: .6cqi; font-size: 1.5cqi; line-height: 1.35; color: var(--sa-ink-2); }
.pv-fit__note b { color: var(--sa-ink); }

/* 7 · Price Drop Watcher ----------------------------------------------- */
.pv-price { display: grid; grid-template-columns: 22cqi 1fr; gap: 3.4cqi; align-items: start; }
.pv-prod { aspect-ratio: 1; border-radius: .9cqi; background: radial-gradient(70% 70% at 50% 40%, #FFFFFF, #EFE8DC); position: relative; border: 1px solid var(--sa-rule); }
.pv-price__now { display: flex; flex-wrap: wrap; align-items: baseline; gap: .6cqi 1.4cqi; margin-top: 1.2cqi; }
.pv-price__now b { font: 400 7.6cqi/1 var(--sa-font-display); letter-spacing: -.02em; color: var(--sa-ink); }
.pv-price__now s { font-size: 2cqi; color: var(--sa-ink-3); }
.pv-spark { margin-top: 1.8cqi; width: 100%; height: auto; display: block; }
.pv-still { margin-top: 2.2cqi; padding-top: 1.4cqi; border-top: 1px solid var(--sa-rule); display: grid; gap: .8cqi; font-size: 1.45cqi; color: var(--sa-ink-3); }
.pv-still div { display: flex; justify-content: space-between; gap: 1cqi; }
.pv-still b { color: var(--sa-ink-2); font-weight: 500; }

/* 8 · Reading Digest ---------------------------------------------------- */
.pv-read__item { display: grid; grid-template-columns: 5cqi 1fr; gap: 1.2cqi; padding: 2cqi 0; border-top: 1px solid var(--sa-rule); }
.pv-read__first { border-top: 1px solid var(--sa-ink); }
.pv-read__num { font: italic 400 5cqi/.9 var(--sa-font-display); color: var(--sa-print-accent); }
.pv-read__item h4 { margin: 0; font: 600 2.15cqi/1.2 var(--sa-font-text); color: var(--sa-ink); }
.pv-read__item .pv-m { margin: .6cqi 0 1cqi; }
.pv-wfw { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.2cqi; }
.pv-wfw div { font-family: var(--sa-font-text); font-size: 1.45cqi; line-height: 1.35; color: var(--sa-ink-2); }
.pv-wfw span { display: block; font: 700 1.2cqi/1 var(--sa-font-ui); letter-spacing: .12em; text-transform: uppercase; color: var(--sa-ink); margin-bottom: .5cqi; }
.pv-caveat { margin-top: 1cqi; font: italic 400 1.4cqi/1.3 var(--sa-font-text); color: var(--sa-ink-3); }

.pv-hl { margin-top: 2.4cqi; display: grid; gap: .9cqi; }
.pv-hl div { display: grid; grid-template-columns: 2.4cqi 1fr; font-family: var(--sa-font-text); font-size: 1.6cqi; line-height: 1.4; color: var(--sa-ink-2); }
.pv-hl div::before { content: "—"; color: var(--sa-print-accent); }
