/* Parley — layout only. Every colour, radius, shadow, duration and step is an
   Reckon token; nothing here re-declares a design decision.

   Chosen once for the product and applied everywhere:
   · Density — reading first. 30px nav rows, 24px page gutters, and a 46rem
     measure for the conversation: chrome is 14px, the conversation itself is
     16px at 1.7, because it is prose and gets read like prose.
   · Separation — hairlines on the tinted --sidebar plane. The conversation
     sits on --background with no card around it; the only raised surfaces in
     the whole product are the composer, the rail panels and the record cards.
   · Active state — --sidebar-accent wash plus the foreground token and medium
     weight, derived from the route.
   · Corners — the token ladder, unmodified: 10px controls, 14px panels,
     16px cards and message bubbles.
   · Motion — 150ms on hover and focus, 200ms on overlays. The one moving thing
     in the product is the caret at the end of a streaming turn, and it stops
     under prefers-reduced-motion.

   Breakpoints, declared once for the shell: 1280 expanded with the context
   rail · 1024 icon rail, the context rail folds above the conversation ·
   below 1024 an off-canvas drawer. Nothing is lost on the way down. */

/* The shell is viewport-height and is not itself a scrolling box, so the
   sidebar — and the account menu in its footer — never leaves the screen. The
   single row is bounded explicitly, or the nav would size to its content and
   overflow:hidden would clip the footer instead of scrolling the list. The one
   scroll owner is the content column (SidebarInset). */
.pl-shell{--toolbar-h:52px;--sidebar-width:17rem;--gutter-page:var(--space-6);--gutter-card:var(--space-5);display:grid;height:100dvh;overflow:hidden;grid-template-columns:var(--sidebar-width) minmax(0,1fr);grid-template-rows:minmax(0,1fr);background:var(--sidebar)}
/* The track and the sidebar read one variable. Overriding `.o-sidebar`'s own
   width instead ties on specificity and loses — navigation.css loads after this
   file — which leaves the sidebar narrower than its track and a strip of the
   page plane showing between the two. */
.pl-shell[data-mode=rail]{--sidebar-width:3.5rem}
.pl-shell[data-mode=drawer]{grid-template-columns:minmax(0,1fr)}
.pl-shell[data-mode=rail] .o-sidebar__button{justify-content:center;padding-inline:0}
.pl-shell[data-mode=drawer] .pl-nav{position:fixed;inset-block:0;inset-inline-start:0;z-index:60;box-shadow:var(--shadow-lg)}
.pl-scrim{position:fixed;inset:0;z-index:55;background:rgb(0 0 0/32%)}
.pl-inset{min-width:0}
.pl-nav .o-sidebar__button{min-height:30px}
.pl-nav .fd-floating-anchor{width:100%}
.pl-nav__top{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}

.pl-brand{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1)}
.pl-brand__mark{display:block;width:26px;height:26px;flex:none}
.pl-brand__mark--lg{width:28px;height:28px}
.pl-brand__text{display:flex;min-width:0;flex-direction:column}
.pl-brand__name{font-family:var(--font-heading);font-weight:var(--font-weight-semibold);font-size:var(--text-sm);line-height:var(--leading-tight)}
.pl-brand__sub{font-size:var(--text-xs);color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-nav__actions{display:flex;flex-direction:column;gap:var(--space-2);padding-top:var(--space-2)}
.pl-nav__new .o-btn{width:100%;justify-content:flex-start}
.pl-nav__search input{cursor:pointer}
.pl-nav__badge{position:absolute;inset-inline-end:var(--space-1);top:7px}
.pl-nav__badge .o-sidebar__badge{position:static;inset:auto}
.pl-rail-dot{pointer-events:none;position:absolute;inset-inline-end:6px;top:7px;width:6px;height:6px;border-radius:var(--radius-full);background:var(--warning);box-shadow:0 0 0 2px var(--sidebar)}

/* The nested thread list — Chats' within-destination level, living in the
   shell rather than on the page (AGENTS §6.3). It scrolls inside the sidebar,
   between the fixed brand block and the fixed footer. */
.pl-threads{display:flex;min-height:0;flex-direction:column;gap:1px;margin:var(--space-1) 0 var(--space-2) var(--space-3);border-inline-start:1px solid var(--border);padding-inline-start:var(--space-2)}
.pl-threads__group{padding:var(--space-3) var(--space-2) var(--space-1);font-size:var(--text-xs);color:var(--muted-foreground)}
.pl-thread-row{display:grid;width:100%;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-2);border:0;border-radius:var(--radius-md);background:transparent;padding:var(--space-1-5) var(--space-2);text-align:left;font:inherit;color:var(--sidebar-foreground);cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}
.pl-thread-row:hover{background:var(--sidebar-accent)}
.pl-thread-row[data-active=true]{background:var(--sidebar-accent);color:var(--sidebar-accent-foreground);font-weight:var(--font-weight-medium)}
.pl-thread-row__title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm)}
.pl-thread-row__mark{display:inline-flex;color:var(--muted-foreground)}
.pl-thread-row__age{font-size:var(--text-xs);color:var(--muted-foreground);font-variant-numeric:tabular-nums}

.pl-account{display:flex;width:100%;align-items:center;gap:var(--space-2);border:0;border-radius:var(--radius-lg);background:transparent;padding:var(--space-1-5);text-align:left;font:inherit;color:inherit;cursor:pointer}
.pl-account:hover{background:var(--sidebar-accent)}
.pl-account--rail{justify-content:center}
.pl-account__text{display:flex;min-width:0;flex-direction:column}
.pl-account__name{font-size:var(--text-sm);font-weight:var(--font-weight-medium);line-height:var(--leading-tight)}
.pl-account__role{font-size:var(--text-xs);color:var(--muted-foreground);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-account .fd-icon{margin-inline-start:auto;color:var(--muted-foreground)}

/* ── Toolbar: page context on the left, utility on the right ─────────── */
.pl-toolbar{position:sticky;top:0;z-index:40;display:flex;height:var(--toolbar-h);align-items:center;gap:var(--space-3);padding-inline:var(--gutter-page);background:color-mix(in srgb,var(--background) 82%,transparent);backdrop-filter:blur(4px);border-bottom:1px solid var(--border)}
.pl-toolbar__context{display:flex;min-width:0;align-items:center;gap:var(--space-2)}
.pl-toolbar__title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--text-sm);font-weight:var(--font-weight-medium)}
.pl-toolbar__utility{margin-inline-start:auto;display:flex;align-items:center;gap:var(--space-1)}
.pl-content{min-width:0;padding:var(--gutter-page);background:var(--background)}
.pl-page{display:flex;max-width:72rem;flex-direction:column;gap:var(--space-5);margin-inline:auto}
.pl-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--space-3)}
.pl-head__text{min-width:0}
.pl-title{margin:var(--space-1) 0 0;font-family:var(--font-heading);font-weight:var(--font-weight-semibold);font-size:var(--text-2xl);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}
.pl-head__note{margin:var(--space-1) 0 0;max-width:52rem;font-size:var(--text-sm);color:var(--muted-foreground);text-wrap:pretty}
.pl-head__actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}

/* ── The conversation ─────────────────────────────────────────────────── */
/* Two columns: the reading measure and the context rail. No card around the
   stream — the page is the conversation. */
.pl-chat{display:grid;align-items:start;gap:var(--space-6);grid-template-columns:minmax(0,1fr) 19rem;max-width:76rem;margin-inline:auto}
.pl-chat__main{display:flex;min-width:0;flex-direction:column}
.pl-stream{display:flex;width:100%;max-width:46rem;flex-direction:column;gap:var(--space-8);margin-inline:auto;padding-bottom:var(--space-6)}
.pl-chat__head{display:flex;width:100%;max-width:46rem;flex-wrap:wrap;align-items:center;gap:var(--space-2) var(--space-3);margin-inline:auto;padding-bottom:var(--space-6)}
.pl-chat__head-text{display:flex;min-width:0;flex-direction:column;gap:2px}
.pl-chat__title{margin:0;font-family:var(--font-heading);font-size:var(--text-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--leading-snug)}
.pl-chat__meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1-5);font-size:var(--text-xs);color:var(--muted-foreground)}
.pl-chat__actions{margin-inline-start:auto;display:flex;align-items:center;gap:var(--space-2)}

.pl-turn{display:flex;flex-direction:column;gap:var(--space-2)}
.pl-turn--user{align-items:flex-end}
.pl-bubble{max-width:34rem;border:1px solid var(--border);border-radius:var(--radius-2xl);background:var(--accent);padding:var(--space-3) var(--space-4)}
.pl-turn__byline{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--muted-foreground)}
.pl-turn__mark{display:inline-flex;width:20px;height:20px;flex:none;align-items:center;justify-content:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--card);font-family:var(--font-heading);font-size:var(--text-2xs);font-weight:var(--font-weight-semibold);font-variation-settings:var(--font-variation-display)}
.pl-turn__model{font-weight:var(--font-weight-medium);color:var(--foreground)}
.pl-turn__foot{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1)}
.pl-turn__foot .o-btn{color:var(--muted-foreground)}
.pl-turn__spacer{margin-inline-start:auto}
.pl-cites{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1-5);font-size:var(--text-xs);color:var(--muted-foreground)}

/* Prose: the one place in the product that is not 14px. */
.pl-prose{display:flex;flex-direction:column;gap:var(--space-4);font-size:var(--text-base);line-height:var(--leading-relaxed);text-wrap:pretty}
.pl-prose p,.pl-prose ul,.pl-prose ol{margin:0}
.pl-prose ul,.pl-prose ol{display:flex;flex-direction:column;gap:var(--space-2);padding-inline-start:var(--space-5)}
.pl-prose li::marker{color:var(--muted-foreground)}
.pl-prose h4{margin:var(--space-2) 0 0;font-family:var(--font-heading);font-size:var(--text-base);font-weight:var(--font-weight-semibold);line-height:var(--leading-snug)}
.pl-prose blockquote{margin:0;border-inline-start:2px solid var(--border);padding-inline-start:var(--space-4);color:var(--muted-foreground)}
.pl-code{position:relative;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--muted)}
.pl-code__bar{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);border-bottom:1px solid var(--border);padding:var(--space-1-5) var(--space-2) var(--space-1-5) var(--space-3);font-family:var(--font-mono);font-size:var(--text-2xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--muted-foreground)}
.pl-code pre{overflow-x:auto;margin:0;padding:var(--space-3);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--leading-normal)}
.pl-caret{display:inline-block;width:7px;height:1em;translate:0 2px;background:var(--foreground);animation:pl-blink 1s steps(2,start) infinite}
@keyframes pl-blink{to{visibility:hidden}}
@media(prefers-reduced-motion:reduce){.pl-caret{animation:none}}
.pl-turn__note{display:flex;align-items:flex-start;gap:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--muted);padding:var(--space-3);font-size:var(--text-sm);color:var(--muted-foreground);text-wrap:pretty}

/* ── The composer ─────────────────────────────────────────────────────── */
/* Sticky, not fixed, so the content column stays the only scroll owner. */
.pl-composer{position:sticky;bottom:0;z-index:30;width:100%;max-width:46rem;margin-inline:auto;padding-bottom:var(--space-4);background:linear-gradient(to bottom,transparent,var(--background) var(--space-4))}
.pl-composer__box{display:flex;flex-direction:column;gap:var(--space-2);border:1px solid var(--input);border-radius:var(--radius-2xl);background:var(--card);padding:var(--space-3);box-shadow:var(--shadow-sm)}

.pl-composer textarea{max-height:14rem;min-height:3.25rem;overflow-y:auto;border:0;background:transparent;box-shadow:none;padding:0;font-size:var(--text-base);line-height:var(--leading-normal);resize:none}
.pl-composer .o-input{display:block;width:100%;border:0;background:transparent;box-shadow:none;padding:0}
.pl-composer .o-input::before{display:none}
.pl-composer__box:focus-within{border-color:var(--ring)}
.pl-composer textarea:focus,.pl-composer textarea:focus-visible,.pl-composer .o-input:focus-within{outline:none;box-shadow:none}
.pl-composer__bar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.pl-composer__bar-end{margin-inline-start:auto;display:flex;align-items:center;gap:var(--space-2)}
.pl-composer__model{width:9.5rem;flex:none}
.pl-composer__foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-2);padding:var(--space-2) var(--space-1) 0;font-size:var(--text-xs);color:var(--muted-foreground)}
.pl-attachments{display:flex;flex-wrap:wrap;gap:var(--space-1-5)}
.pl-attach{display:inline-flex;align-items:center;gap:var(--space-1-5);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--muted);padding:var(--space-1) var(--space-1) var(--space-1) var(--space-2);font-size:var(--text-xs)}
.pl-readonly{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-2xl);background:var(--muted);padding:var(--space-4);font-size:var(--text-sm);color:var(--muted-foreground);text-wrap:pretty}
.pl-readonly__actions{margin-inline-start:auto;display:flex;gap:var(--space-2)}

/* ── The new-chat screen ──────────────────────────────────────────────── */
.pl-open{display:flex;width:100%;max-width:46rem;flex-direction:column;gap:var(--space-6);margin-inline:auto;padding-top:var(--space-16)}
.pl-open__greeting{margin:0;font-family:var(--font-heading);font-size:var(--text-3xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);text-wrap:balance}
.pl-open__note{margin:var(--space-2) 0 0;font-size:var(--text-sm);color:var(--muted-foreground);text-wrap:pretty}
.pl-open .pl-composer{position:static;padding-bottom:0;background:none}
.pl-starters{display:grid;gap:var(--space-2);grid-template-columns:repeat(auto-fit,minmax(14rem,1fr))}
.pl-starter{display:flex;flex-direction:column;gap:var(--space-1);border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--card);padding:var(--space-3);text-align:left;font:inherit;color:inherit;cursor:pointer;box-shadow:var(--shadow-xs);transition:border-color var(--duration-fast) var(--ease-out)}
.pl-starter:hover{border-color:var(--ring)}
.pl-starter__title{font-size:var(--text-sm);font-weight:var(--font-weight-medium)}
.pl-starter__body{font-size:var(--text-xs);color:var(--muted-foreground);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* ── The context rail ─────────────────────────────────────────────────── */
/* Sticky under the toolbar, not under the scroll port: the toolbar occupies the
   first 52px of the same scroll container. A rail taller than what is left
   scrolls inside itself — it is a rail, not the content column, so this is not
   a second shell scroll owner. */
.pl-rail{position:sticky;top:calc(var(--toolbar-h) + var(--space-4));display:flex;flex-direction:column;gap:var(--space-3);min-width:0;max-height:calc(100dvh - var(--toolbar-h) - var(--space-10));overflow-y:auto}
.pl-rail__panel{display:flex;flex-direction:column;gap:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--card);padding:var(--space-4)}
.pl-rail__head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}
.pl-rail__label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--muted-foreground)}
.pl-rail__figure{font-family:var(--font-heading);font-size:var(--text-xl);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight);font-variant-numeric:tabular-nums;line-height:var(--leading-none)}
.pl-rail__note{font-size:var(--text-xs);color:var(--muted-foreground);text-wrap:pretty}
.pl-rail__list{display:flex;flex-direction:column;gap:var(--space-2)}
.pl-rail__item{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-2);font-size:var(--text-xs)}
.pl-rail__item-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pl-rail__item--out .pl-rail__item-name{color:var(--muted-foreground)}
.pl-rail__fold{display:none}

.pl-bar{position:relative;display:block;height:6px;width:100%;overflow:hidden;border-radius:var(--radius-full);background:var(--muted)}
.pl-bar__fill{display:block;height:100%;border-radius:var(--radius-full);background:var(--foreground)}
.pl-bar--warn .pl-bar__fill{background:var(--warning)}
.pl-bar--soft .pl-bar__fill{background:var(--muted-foreground)}

/* ── Records: projects, library, files, usage ─────────────────────────── */
.pl-grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fit,minmax(18rem,1fr))}
.pl-columns{display:grid;align-items:start;gap:var(--space-5);grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}
.pl-col{display:flex;min-width:0;flex-direction:column;gap:var(--space-5)}
.pl-card-full{width:100%}
.pl-card-table{min-width:0;overflow-x:auto}
.pl-card-table table{min-width:100%}
/* Specificity has to beat the kit's own `.o-table td` rules, which load after
   this file — an unprefixed `.pl-card-table td` ties on specificity and loses.
   Cells are nowrap by default, which is right for a figure and wrong for a cell
   carrying a sentence: the prose columns wrap and absorb the slack, so the
   table fits its card and the scroll container above it never has anything to
   scroll until the viewport is genuinely too narrow. */
.pl-card-table .o-table td{white-space:normal}
.pl-card-table .o-table td.pl-num,.pl-card-table .o-table td.pl-actions{white-space:nowrap}
/* A formatted timestamp is one value and never breaks, but the line beneath it
   is prose and may — so the nowrap belongs on the value, not on the cell. */
.pl-when{white-space:nowrap}
.pl-card-table .o-table th,.pl-card-table .o-table td{padding-inline:var(--space-3);padding-block:var(--space-2)}
.pl-card-table .o-table th:first-child,.pl-card-table .o-table td:first-child{padding-inline-start:var(--gutter-card)}
.pl-card-table .o-table th:last-child,.pl-card-table .o-table td:last-child{padding-inline-end:var(--gutter-card)}
.pl-project{display:flex;height:100%;flex-direction:column;gap:var(--space-3);padding:var(--space-5)}
.pl-project__top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2)}
.pl-project__name{font-family:var(--font-heading);font-size:var(--text-base);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-tight)}
.pl-project__purpose{font-size:var(--text-sm);color:var(--muted-foreground);text-wrap:pretty}
.pl-project__foot{margin-top:auto;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1) var(--space-3);padding-top:var(--space-2);font-size:var(--text-xs);color:var(--muted-foreground)}
.pl-record{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:1px}
.pl-record__name{font-weight:var(--font-weight-medium)}
.pl-record__meta{font-size:var(--text-xs);color:var(--muted-foreground)}
.pl-mono{font-family:var(--font-mono);font-size:var(--text-xs)}
.pl-num{text-align:right;font-variant-numeric:tabular-nums}
.pl-actions,.pl-actions-head{text-align:right}
.pl-actions__row{display:inline-flex;justify-content:flex-end;gap:var(--space-1-5)}
.pl-muted{color:var(--muted-foreground)}
.pl-foot{font-size:var(--text-xs);color:var(--muted-foreground);text-wrap:pretty}
.pl-sub{display:block;font-size:var(--text-xs);color:var(--muted-foreground)}
.pl-row--recessed{background:var(--muted)}
.pl-row--recessed .pl-record__name{font-weight:var(--font-weight-normal);color:var(--muted-foreground)}
.pl-filters{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}
.pl-filters__text{flex:1;min-width:11rem;max-width:20rem}
.pl-filters__select{display:block;width:11.5rem;flex:none}
.pl-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
.pl-chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-1-5)}
.pl-stack{display:flex;flex-direction:column;gap:var(--space-4)}
.pl-stack--tight{gap:var(--space-2)}
.pl-spread{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}
.pl-link{border:0;background:transparent;padding:0;font:inherit;color:inherit;text-align:left;text-decoration:underline;text-decoration-color:var(--border);text-underline-offset:3px;cursor:pointer}
.pl-link:hover{text-decoration-color:var(--foreground)}
.pl-instructions{margin:0;border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--muted);padding:var(--space-3);font-size:var(--text-sm);line-height:var(--leading-relaxed);text-wrap:pretty}
.pl-defs{display:flex;flex-direction:column;gap:var(--space-2);margin:0;font-size:var(--text-sm)}
.pl-defs>div{display:flex;justify-content:space-between;gap:var(--space-4)}
.pl-defs dt{color:var(--muted-foreground)}
.pl-defs dd{margin:0;font-variant-numeric:tabular-nums}
.pl-fields{display:flex;flex-direction:column;gap:var(--space-4)}
.pl-checks{display:flex;flex-direction:column;gap:var(--space-2)}
.pl-check{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--text-sm)}
.pl-check__text{display:flex;flex-direction:column;gap:1px}
.pl-setting{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--space-1) var(--space-4);border-bottom:1px solid var(--border);padding-block:var(--space-3)}
.pl-setting:last-child{border-bottom:0;padding-bottom:0}
.pl-setting:first-child{padding-top:0}
.pl-setting__text{display:flex;min-width:0;flex-direction:column;gap:2px}
.pl-setting__name{font-size:var(--text-sm);font-weight:var(--font-weight-medium)}
.pl-formbar{position:sticky;bottom:0;z-index:30;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:var(--space-3);border-top:1px solid var(--border);background:color-mix(in srgb,var(--background) 88%,transparent);backdrop-filter:blur(4px);padding-block:var(--space-3)}
.pl-formbar__note{margin-inline-end:auto;font-size:var(--text-sm);color:var(--muted-foreground);text-wrap:pretty}

/* Anchor figures: one row definition so labels, figures and qualifiers line up
   across the row even when one label wraps or one qualifier is missing. */
.pl-anchor{display:grid;grid-template-columns:repeat(4,minmax(0,auto));grid-template-rows:auto auto auto;justify-content:start;gap:var(--space-1-5) var(--space-10)}
.pl-anchor>.pl-part{display:grid;grid-row:span 3;grid-template-rows:subgrid;gap:0;min-width:0}
.pl-anchor__label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--muted-foreground)}
.pl-anchor__figure{font-family:var(--font-heading);font-weight:var(--font-weight-semibold);font-size:var(--text-3xl);line-height:var(--leading-none);letter-spacing:var(--tracking-tight);font-variant-numeric:tabular-nums;align-self:end}
.pl-anchor__qual{font-size:var(--text-xs);color:var(--muted-foreground);text-wrap:pretty}

/* The day chart. Every bar is a figure and carries its own tooltip. */
.pl-chart{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);align-items:stretch;gap:var(--space-1-5);height:9rem;border-bottom:1px solid var(--border);padding-bottom:var(--space-1)}
/* Each bar is wrapped in a tooltip anchor, so the anchor — not the column — is
   the grid item: it has to stretch, or every percentage height below it
   resolves against a content-sized box and the whole chart goes flat. */
.pl-chart>.fd-floating-anchor{height:100%;min-width:0}
.pl-chart__col{display:flex;height:100%;width:100%;flex-direction:column;justify-content:flex-end;min-width:0}
.pl-chart__bar{display:block;width:100%;border-radius:var(--radius-xs) var(--radius-xs) 0 0;background:var(--foreground);min-height:5px}
.pl-chart__bar--empty{height:2px;min-height:2px;background:var(--muted)}
.pl-chart__axis{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:var(--space-1-5);padding-top:var(--space-1-5);font-size:var(--text-2xs);color:var(--muted-foreground);text-align:center}

/* ui-runtime's own classes — the shared render helpers emit these. */
.fd-icon{display:inline-flex;flex:none;align-items:center;justify-content:center}
.fd-floating-anchor{display:inline-flex}
.fd-command{max-width:36rem;overflow:hidden}
/* The palette's optional footer row: one destination under the filtered list,
   separated by a hairline so it never reads as a result. */
.fd-command__foot{border-top:1px solid var(--border)}
.pl-command-foot{display:flex;width:100%;align-items:center;justify-content:space-between;gap:var(--space-3);border:0;background:transparent;padding:var(--space-3) var(--space-4);font:inherit;font-size:var(--text-sm);color:var(--muted-foreground);text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}
.pl-command-foot:hover{background:var(--accent);color:var(--foreground)}
.pl-menu-note{padding:var(--space-1-5) var(--space-2) var(--space-2);font-size:var(--text-xs);color:var(--muted-foreground);text-wrap:pretty;max-width:18rem}
.pl-shortcuts{display:flex;flex-direction:column;gap:var(--space-2-5)}
.pl-shortcut{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);font-size:var(--text-sm)}

/* ── Auth: its own shell, no navigation owner. One variant — centred card ─ */
.pl-auth{display:flex;min-height:100dvh;align-items:center;justify-content:center;background:var(--sidebar);padding:var(--space-6)}
.pl-auth__col{display:flex;width:100%;max-width:23rem;flex-direction:column;gap:var(--space-4)}
.pl-auth__mark{display:flex;align-items:center;justify-content:center;gap:var(--space-2)}
.pl-auth__foot{margin:0;text-align:center;font-size:var(--text-xs);color:var(--muted-foreground);text-wrap:pretty}
.pl-auth__switch{display:flex;justify-content:center;gap:var(--space-1);font-size:var(--text-sm);color:var(--muted-foreground)}
.pl-auth__rule{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs)}
.pl-auth__label{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-2)}
.pl-auth__checks{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-xs)}
.pl-auth__check{display:flex;align-items:center;gap:var(--space-1-5);color:var(--muted-foreground)}
.pl-auth__check[data-met=true]{color:var(--success-foreground)}

/* ── Responsive. Nothing is lost on the way down. ─────────────────────── */
@media(max-width:1400px){.pl-columns{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)}}
/* The context rail folds above the conversation rather than keeping a
   zero-width track: it carries the thread's anchor figure, so at one column it
   precedes the record (AGENTS §6.5). */
@media(max-width:1279px){
  .pl-chat{grid-template-columns:minmax(0,1fr)}
  .pl-rail{position:static;order:-1;width:100%;max-width:46rem;max-height:none;overflow:visible;margin-inline:auto}
  .pl-rail__fold{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2);width:100%;border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--card);padding:var(--space-3) var(--space-4);font:inherit;color:inherit;cursor:pointer}
  .pl-rail[data-folded=true] .pl-rail__panel{display:none}
}
@media(max-width:1100px){
  .pl-columns{grid-template-columns:minmax(0,1fr)}
  .pl-anchor{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(6,auto);gap:var(--space-4) var(--space-6)}
}
@media(max-width:1000px){.pl-drop-md{display:none}}
@media(max-width:767px){
  .pl-shell{--gutter-page:var(--space-4);--gutter-card:var(--space-4)}
  .pl-title{font-size:var(--text-xl)}
  .pl-open{padding-top:var(--space-8)}
  .pl-open__greeting{font-size:var(--text-2xl)}
  .pl-anchor{grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(12,auto)}
  .pl-bubble{max-width:100%}
  .pl-chart{height:7rem}
  .pl-toolbar .o-btn,.pl-composer .o-btn,.pl-turn__foot .o-btn,.pl-actions .o-btn{min-height:44px;min-width:44px}
  .pl-composer__model{width:100%}
}

.pl-photo{display:flex;align-items:center;gap:var(--space-4);flex-wrap:wrap}
.pl-photo__acts{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}
