/* drawer-bottom.css — bottom-drawer mode layout (#6384, #6381).
 *
 * WHY THIS FILE EXISTS AT ALL. Lane 2 owns "drawer layout CSS"; measured, 279 of
 * the 283 drawer rules live inside notes.jsx, which lane 1 owns and is editing
 * right now (#6378). So the drawer had no stylesheet to own. This is it. Every
 * rule here is scoped to `.ns-mainwrap.layout-v` — bottom mode only — so side
 * mode is untouched by construction rather than by care, and the file loads
 * after notes.jsx's <style> block so equal-specificity rules win.
 * DH #507 D2 uses exact ladder rungs only; Default preserves prior values.
 *
 * ── #6384, AND THE ARITHMETIC IT HAS TO SATISFY
 * FOUNDER 2026-08-21: a fresh cue in the DEFAULT bottom drawer must need NO
 * vertical scroll; do NOT make the drawer bigger, make the content smaller.
 * Measured live at 1280x1100, a fresh cue, before any of this:
 *     drawer client height 319   (flex: 0 0 min(36vh,320px) — capped at 320)
 *     content scroll height 463  -> OVERFLOWS BY 144px
 *     nsd-view-tabs 42 · nsd-head 105 · nsd-note 175 · nsd-comments 93 · nsd-delete-row 48
 * And two controls were already below the fold: the Comment button sat 85px
 * past the bottom edge and Delete 126px past it. So the defect is not "a bit
 * tight" — on a fresh cue you cannot reach Comment or Delete without scrolling,
 * which is exactly what he is describing.
 *
 * THE 42px OF nsd-view-tabs IS NOT MINE. Lane 1's #6378 removes the note/project
 * buttons; my plow says inherit that, do not duplicate it. Nothing here touches
 * them, and the budget below is stated both with and without that removal so the
 * result is honest either way.
 */

/* ── #6453 · THE DRAWER SLOT IS THE DOCK ───────────────────────────────────
   #6378 wrapped every drawer in `.nsd-slot` so project settings can cover the
   drawer without unmounting it. The old vertical-layout rules still expected
   `.nsd-drawer` to be a DIRECT child of `.ns-mainwrap`; after the wrapper
   landed, none of those rules matched. Bottom mode therefore kept the side
   rail's 392px width and let content choose the slot height. Repeated aspect
   flips could grow that auto-sized slot past the viewport and crush the live
   note list.

   The slot now owns the fixed bottom-dock geometry. Its selected-note drawer
   fills that box and scrolls internally; the project-settings cover continues
   to use the same inset:0 slot, so opening and closing it preserves the note
   and any draft exactly as DH #654 requires. Side mode is untouched because
   every selector remains scoped to `.layout-v`. */
.ns-mainwrap.layout-v > .nsd-slot {
  width: 100%;
  height: min(36vh, 320px);
  max-height: min(36vh, 320px);
  flex: 0 0 min(36vh, 320px);
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  border-top: 1px solid var(--line);
}

/* ══ #7402 · THE DOCK YIELDS TO RESERVED BOTTOM CHROME AT EVERY WIDTH ═══════
   MEASURED, live, 1280x800, layout-v, with a write-queue failure notice up
   (--ss-bottom-chrome-h: 134px):

     .ss-app     0 … 666   overflow:hidden      <- the shell, correctly short
     .ns-main  228 … 448   min-height 220px     <- at its floor already
     .nsd-slot 448 … 736   flex 0 0 288px       <- SPILLS 70px past the clip

   220 + 288 = 508 does not fit in 438, `.ns-mainwrap` is overflow:visible, so
   the dock did not shrink — it SPILLED past `.ss-app`, which clips. Seventy
   pixels of drawer, the delete row among them, simply stopped being drawn.
   Trading "a toast covers Comment" for "Delete is cut off" is not a fix.

   THIS IS #7177's OWN RULE, AT THE WIDTH IT NOW NEEDS. shell.css already ships
   exactly this pair — `.ns-main` floor 110px, slot capped at the rest — and
   states the trade in the order sv3v2.css declares it: "a band buys height
   from the list, not from the text". It was scoped to the phone media query
   because in #7177 the only fixed bottom chrome (the PT band, the phone rail)
   was phone-sized. That premise is gone: the toast host is bottom chrome at
   EVERY width now, so the yielding has to reach every width too. The same
   measurement shows the phone-only scope was already too narrow — a 105px PT
   band spills this dock by 41px at 1280x800 today, with no toast anywhere
   near it.

   IT IS INERT WHEN THERE IS ROOM, which is the normal case. `.ns-main` is
   flex:1 1 0% and sits far above 110px whenever the column is not squeezed;
   the slot's cap only bites once 100% - 110px falls below its own
   min(36vh, 320px) basis. Verified live with no chrome reserved at 1280x800:
   slot 288, list 284 — the same numbers as before this rule existed.

   Selector shape copied from #7177's deliberately, not casually: the extra
   `.ns-wrap` is specificity (sv3v2.css's :has() rule is (0,5,0) and is
   injected after every <link>), and `.ss-app:not(.mobile)` keeps the native
   app surface out of it. */
.ss-app:not(.mobile) .ns-wrap .ns-mainwrap.layout-v > .ns-main {
  min-height: 110px;
}
.ss-app:not(.mobile) .ns-wrap .ns-mainwrap.layout-v > .nsd-slot {
  max-height: min(36vh, 320px, calc(100% - 110px));
}
.ns-mainwrap.layout-v > .nsd-slot > .nsd-drawer.rail {
  width: 100%;
  max-width: none;
  height: 100%;
  flex: 1 1 auto;
  min-width: 0;
  min-height: 0;
  border-left: 0;
  overflow: auto;
}
.ns-mainwrap.layout-v > .nsd-slot > .nsd-drawer.rail > * {
  flex-shrink: 0;
}
.ns-mainwrap.layout-v > .nsd-slot > .nsd-cover {
  border-left: 0;
}

/* ── the note field ─────────────────────────────────────────────────────────
   85px for a 3-row box on a cue whose body is usually one line. It stays
   comfortably typeable — it grows on focus, where the space is actually
   wanted — but it stops reserving three lines' worth of drawer for nothing. */
.ns-mainwrap.layout-v .nsd-note { padding: var(--ep-gap) 14px var(--ep-gap); }
.ns-mainwrap.layout-v .nsd-note-label { margin-bottom: 4px; }
.ns-mainwrap.layout-v .nsd-frame { margin-bottom: var(--ep-gap-md); }
.ns-mainwrap.layout-v .nsd-txt {
  padding: var(--ep-gap) var(--ep-pad-x);
  line-height: 1.45;
  max-height: 58px;
  overflow-y: auto;
  transition: max-height .12s ease, border-color .12s, box-shadow .12s;
}
/* Typing is when you want the room, so that is when it is given. */
.ns-mainwrap.layout-v .nsd-txt:focus { max-height: 132px; }
.ns-mainwrap.layout-v .nsd-note-foot { margin-top: var(--ep-gap-sm); }

/* ── the header block ──────────────────────────────────────────────────────
   Same information, less air. The timecode stays 15px because it is the one
   thing in the drawer an editor reads at a glance. */
.ns-mainwrap.layout-v .nsd-head { padding: var(--ep-gap-sm) 12px var(--ep-gap-md); gap: var(--ep-gap-xs); }

/* ── comments: not shown until asked for ───────────────────────────────────
   FOUNDER: "the comment box is NOT shown by default — user clicks an Add
   Comment button first, and only then the box appears (expanded size is fine
   there, and scroll is fine after comments exist)."
   On a cue with NO comments the composer collapses to a single quiet row that
   reads and behaves as the Add Comment control: clicking it focuses the field,
   which expands it to full size. Focus is the disclosure, so no new markup and
   no state is needed in notes.jsx — which matters, because notes.jsx is lane
   1's file and is in flight.
   ⚠ IF HE WANTS A LITERAL BUTTON LABELLED "Add Comment" rather than a collapsed
   field, that is a small notes.jsx change and it is written out for lane 1 on
   the board — it is deliberately NOT hacked in from here. */
.ns-mainwrap.layout-v .nsd-comments:not(:focus-within) .nsd-thread:empty { display: none; }
.ns-mainwrap.layout-v .nsd-thread-head { padding: var(--ep-gap-md) 14px 1px; }
.ns-mainwrap.layout-v .nsd-composer { padding: var(--ep-gap-md) 12px var(--ep-gap); }
.ns-mainwrap.layout-v .nsd-composer:not(:focus-within) .nsd-composer-foot { display: none; }
.ns-mainwrap.layout-v .nsd-composer:not(:focus-within) textarea {
  max-height: 30px;
  min-height: 0;
  padding-top: var(--ep-gap-sm);
  padding-bottom: var(--ep-gap-sm);
  overflow: hidden;
  cursor: pointer;
}

/* ── delete row ────────────────────────────────────────────────────────────
   48px of drawer for one destructive button that should not be prominent. */
/* #7402 — bottom mode keeps its tighter side padding, but not a zero top: the
   destructive row needs the same visible separation from the composer that the
   base rule gives side mode. See notes-<gen> .nsd-delete-row. */
.ns-mainwrap.layout-v .nsd-delete-row { padding: var(--ep-gap-sm) 14px var(--ep-pad-x); }

/* ── #6381 · THE RIGHT-EDGE STRIP ──────────────────────────────────────────
   FOUNDER: in bottom mode the cue card's right edge is "covered by a small
   vertical strip/column" and the avatar is cut.
   Measured: in bottom mode `.ns-list` spans the FULL viewport width (right edge
   1280 of 1280) and `.ci-people` — the avatar cell — ends 12px short of it,
   while the list is overflow-y:auto and on any real project it is scrolling.
   In SIDE mode the drawer occupies the right of the window, so the list's right
   edge is inboard at 888 and its scrollbar is nowhere near the window edge —
   which is exactly why he sees this in bottom mode and not the other one.
   That 12px is the whole clearance the avatar column has from the scrollbar,
   and a macOS overlay scrollbar paints inside it rather than reserving layout
   space (measured: scrollHeight > clientHeight yet gutter is 0). Give the
   column real clearance instead of relying on a gap that the scrollbar is
   already using. Fixing the layout, not nudging the avatar. */
.ns-mainwrap.layout-v .ns-list { padding-right: var(--ep-pad-x); }
.ns-mainwrap.layout-v .ns-list .ci-row.full { padding-right: var(--ep-gap-sm); }

/* ══ #7154 · THE SV3 BOTTOM DOCK IS A CLAMP, NOT A CONSTANT ════════════════
   WALK 48. Two things were wrong with the dock under a .sv3-hero drawer, and
   they were the same mistake pointing in opposite directions.

   (a) TOO SMALL. min(36vh,320px) gives the founder's own app config (780x848)
       a 304px drawer. Measured in it: the note box 126 client / 251 scroll
       paging at 6.44 lines, the comment thread 156 of 800, and 66px of dead
       space under the teleport cell. 304px cannot hold the founder's ladder —
       three whole note lines, three accordion rows, one whole item, a compact
       teleport cell and the delete row — at any content shape.

   (b) A LATCH. sv3v2.css answered (a) with
         .nsd-slot:has(> .nsd-drawer.sv3-hero.ff-h.tight){height:400px}
       which is BISTABLE and is walk 48 defect 8. The drawer wears `ff-h` while
       it is under 420px tall and `tight` while it is under 560px wide; the rule
       then pins the slot to 400px BECAUSE the drawer is tight — and 400 < 420
       keeps ff-h, while the side rail's own 392px keeps `tight`. So once the
       window had been narrow, 1440 -> 390 -> 1440 came back to a side rail that
       was still `ff-h tight` forever, with .ns-mainwrap correctly back on
       layout-h around it. A form factor may never be an input to the box that
       decides the form factor. That rule is deleted; this one is scoped to
       layout-v (the dock) and reads only the surface, never the drawer's state.

   THE CEILING IS 408px AND THAT IS ARITHMETIC, NOT TASTE: notes-<gen>.jsx
   switches to the band at `h < 420`, so a dock that could reach 420 would make
   the drawer change form factor as the window height crossed it, mid-drag. 408
   leaves 12px of hysteresis. The floor is 280px, and #7177's
   `max-height: calc(100% - 110px)` (shell.css, which owns the fixed-chrome
   reserve) still caps this on a phone — deliberately: the note list keeps its
   floor and the dock gives back whatever does not fit, which is the trade
   sv3v2.css itself declares ("a band buys height from the list"). */
.ns-mainwrap.layout-v > .nsd-slot:has(> .nsd-drawer.sv3-hero) {
  --nsd-dock: clamp(280px, 50vh, 408px);
  /* SHRINKABLE, and that is the whole difference between this and the rule it
     replaces. `flex: 0 0 <n>` cannot give anything back, so when the column was
     shorter than `.ns-main`'s own min-height plus the dock, the dock did not
     shrink — it SPILLED, out of an overflow:visible .ns-mainwrap, past the
     shell, off the bottom of the window. Measured at the founder's own 780x848
     config: mainwrap 608px tall wanting 628, the drawer's last 20px (the
     SUGGESTIONS row) below the viewport with .ss-app clipping them, so the row
     was unreachable at any click. `0 1` lets the flex algorithm hand the dock
     whatever is left after the note list's floor, which is the only number that
     is true at every breakpoint — and the two files that own that floor
     (notes-<gen>.jsx: 220px, shell.css on phones: 110px) stay the authority on
     it instead of being duplicated here as a third constant. */
  flex: 0 1 var(--nsd-dock);
  height: auto;
  max-height: var(--nsd-dock);
  min-height: 0;
}

/* ══ RULING 1 · AN OPEN SECTION GROWS THE DRAWER OVER THE CUE LIST ═════════
   ORCH, walk 48 round 3, after the notes focus drawer failed acceptance twice
   on the same region, verbatim:

     "Four comments at ~125px each need ~500px. The founder's drawer at his own
      working config is 407px tall and also has to hold the note, three
      accordion rows, the teleport cell and the delete row. No pager, however
      good, makes that 'visible at a glance'. Round 2 failed because it kept
      trying to win an argument with arithmetic. … Opening COMMENTS / DESIGNS /
      SUGGESTIONS expands the notes focus drawer over the cue list, up to the
      available window height; closing it returns the drawer to its resting
      size."

   THE THREE NUMBERS THIS RULE READS, AND WHY NONE OF THEM CAN LATCH.
   `--nsd-open-h` is written by NSD-FIT (§ openWant) from the first, UNCOMPACTED
   naturals of a fit: the head as it wraps at this width, the note's own line
   count, three summary rows, the open body's scrollHeight with every item
   shown, the teleport cell at its designed level, the delete row. Every term is
   a function of the drawer's WIDTH and the cue's CONTENT; not one of them reads
   its height. That is the whole difference between this rule and the one it
   sits beside — `:has(> .nsd-drawer.sv3-hero.ff-h.tight){height:400px}`, walk
   48 defect 8, which pinned the slot BECAUSE the drawer was tight and so
   guaranteed it stayed tight. A form factor may never be an input to the box
   that decides the form factor; a section the founder opened is not one.

   `100%` is the second: the dock may take the whole notes column, no more.
   And the third is not written here at all — `.ns-main`'s own `min-height`
   (110px under SV2, sv2-selection.css § 400) is what stops the expansion, and
   at the founder's config those 110px are exactly the filter chrome plus one
   cue row. So "expands over the cue list" happens, and ORCH's condition —
   "it never covers the cue the drawer is about" — is satisfied by the list's
   own owner rather than by a constant duplicated here. The flex algorithm
   enforces it: `flex: 0 1 <basis>` shrinks the dock to whatever is left.

   Closing the section removes the variable (NSD-FIT writes nothing when
   nothing is open) and the dock falls back to its resting clamp above.

   AND IT NEVER SHRINKS ON OPEN (#7207). With the pinned teleport cell gone from
   the ladder (sv3v2.css header), an open section can ask for LESS than the
   resting dock: measured at app 780x848, SFX rail open, SUGGESTIONS open —
   `--nsd-open-h` 349px against a 407px resting dock, so the drawer got
   SMALLER when the founder opened a section and the note lost six of its ten
   lines to make room for a chip rack that had room already. The floor of the
   open clamp is therefore the resting size itself (the same `min(50vh, 408px)`
   the rule above resolves to), and the ladder spends the difference on the
   note in whole lines. This cannot latch: the resting term reads the viewport
   and `--nsd-open-h` reads width and content; neither reads the dock. */
.ns-mainwrap.layout-v > .nsd-slot:has(> .nsd-drawer.sv3-hero.sec-open) {
  --nsd-dock: clamp(280px, max(var(--nsd-open-h, 50vh), min(50vh, 408px)), 100%);
}

/* ══ RULING 1-C · AN OPEN SECTION TAKES THE FULL CONTENT COLUMN ════════════
   ORCH, walk 48 round 4, correcting the arithmetic of his own RULING 1:

     "MEASURED CEILING IS 582px, because 266px is immovable chrome: app-header
      89 + div.ns-main pinned at its 110px min-height + footer 67. … When a
      section is opened, the notes focus drawer expands to the whole content
      column: div.ns-main yields its 110px min-height."

   THE ARITHMETIC, AT THE FOUNDER'S OWN CELL, MEASURED 2026-09-03.
   app 780x848 with the SFX rail open: `.ns-mainwrap` is 692px tall (89 → 781)
   and that IS the content column. With COMMENTS open NSD-FIT publishes
   `--nsd-open-h: 994px`; the rule above clamps it to `100%`, which is 692; and
   then the flex algorithm hands 110 of those 692 straight back to `.ns-main`,
   because sv2-selection.css § 400 pins its min-height there. Measured result:
   a 582px drawer, THREE of the founder's four comments, and the fourth
   `display:none` behind "1-3 OF 4 NEWEST". 692 − 582 = 110, exactly the pin.
   The ceiling was never the window. It was this one declaration, and the round
   that promised "roughly 700px" was measuring the window instead of the box.

   SO IT YIELDS — but only while a section is open, and only to the drawer that
   opened one. `.ns-main` keeps its pin in every other state, which is every
   state in which the founder is actually reading the cue list.

   WHAT HE GIVES UP, AND WHY ORCH TOOK THE TRADE, verbatim: "opening a section
   is a deliberate focus action. While you are reading one note's comments, the
   cue list behind it is not what you are looking at. … Three comments plus a
   whole cue row is the worse trade; four comments plus a covered row is the
   better one."

   COVERED, NOT DELETED, AND THE DIFFERENCE IS THE WHOLE SAFETY OF THIS RULE.
   `.ns-main` stays mounted and stays in the flow; only the FLOOR under its
   height is released, so the flex algorithm may take it to 0. Its toolbar keeps
   its own 42px box and simply overflows a zero-height parent, and the dock —
   a LATER, positioned sibling in the same stacking context — paints over the
   top of it. Nothing unmounts, no list re-renders, no scroll position is lost,
   and closing the section puts every pixel back in one frame, because the only
   thing that ever changed was a min-height.

   THIS CANNOT LATCH, and that is the property walk 48 defect 8 lacked.
   `min-height` is an INPUT to the flex algorithm and is never written by it;
   the selector reads exactly one class that the founder's own click puts on the
   drawer (`sec-open`) and nothing whatever about any box's size. Contrast
   `:has(> .nsd-drawer.sv3-hero.ff-h.tight){height:400px}` — deleted 60 lines
   above — where a form factor was an input to the box that decided the form
   factor.

   SPECIFICITY, STATED OUT LOUD BECAUSE THIS FILE LOADS BEFORE sv2-selection.css
   (app.html: drawer-bottom.css line 112, sv2-selection.css line 118). That
   file's `.sv2-selection .ns-mainwrap.layout-v > .ns-main` is (0,4,0) and would
   win on ORDER. This selector is (0,7,0) — `:has()` carries the specificity of
   its argument — and wins on WEIGHT, so the rule holds wherever either file
   ends up in the cascade, including after a future re-order. */
/* ══ ROUND 5 · RULING A · AND IT YIELDS DOWN TO A MEASURED FLOOR, NOT TO 0 ══
   `min-height: 0` was this rule as round 4 shipped it, and it was measured to
   be too much. app 780x848, SFX rail open, rich fixture: section CLOSED, 6 of
   14 cue rows self-hit; section OPEN, 0 of 14 — including the 67x14 timecode
   spans at [12,173] [12,242] [12,311] [12,381], every one reporting coveredBy
   'THE DRAWER'. "Clickable OTHER cues with a section open: 0". The founder
   could not click another cue to move on, which made restore-on-cue-change
   unreachable by mouse on this surface. ORCH, round 5: "A dead Ingest button,
   or a cue list the founder cannot click out of, is a broken application."

   `--nsd-main-floor` IS WRITTEN BY NSD-FIT (§ publishMainFloor), never by CSS,
   because the only honest value for it is measured from the live list: the
   summed height of everything in `.ns-main` above the cue scroller (75px at the
   founder's window — div.ns-toolbar plus a zero-height div.ns-colhead) plus
   THREE CUE ROWS REACHABLE BY MOUSE: two whole rows at the measured median
   pitch (69px) and enough of the third for its MIDPOINT to clear the edge,
   which is what a click actually needs. 255px at the founder's window.
   That engine's comment carries the arithmetic and the reason the number is
   three rather than one or two — in short, the first two rows of the founder's
   own list are both 01:00:04:12, the cue the drawer is already open on, so a
   two-row reserve still leaves him zero OTHER cues to click — and the reason
   the reserve is withheld ENTIRELY at a viewport whose list never had that much
   (350x760), where half-spending it would have cost the note's three-line floor
   and bought no clickable cue at all.

   THE FALLBACK IS THE OLD PIN, ON PURPOSE. If NSD-FIT has not run, or the list
   has no rows to measure, `var(--nsd-main-floor, 110px)` is 110px — exactly
   sv2-selection.css § 400's pin, i.e. this rule does nothing at all. A
   measurement that did not happen must never be spent as if it had. */
.ns-mainwrap.layout-v:has(> .nsd-slot > .nsd-drawer.sv3-hero.sec-open) > .ns-main {
  min-height: var(--nsd-main-floor, 110px);
}
/* "animated but fast", and on the two properties that actually move: the
   basis the flex algorithm starts from and the cap it may not pass. Height is
   `auto` on this box, so animating height would animate nothing. */
.ns-mainwrap.layout-v > .nsd-slot:has(> .nsd-drawer.sv3-hero) {
  transition: flex-basis 160ms ease, max-height 160ms ease;
}
@media (prefers-reduced-motion: reduce) {
  .ns-mainwrap.layout-v > .nsd-slot:has(> .nsd-drawer.sv3-hero) { transition: none }
}
/* The dock's drawer computes overflow-y:auto from the rule 60 lines above, and
   that is LEFT ALONE ON PURPOSE (#7154). With the fit engine allocating every
   region there is nothing to scroll; if a future change breaks that, a real
   scrollbar appears and the regression is SEEN. The v2.1 answer — a blanket
   overflow:hidden plus ::-webkit-scrollbar{width:0} — is what let four rounds
   of this defect ship. Evidence is never painted out. */

/* the note field's vertical air is BORDER in the SV3 subtree (sv3v2.css says
   why: padding is inside clientHeight and made every page boundary land
   mid-glyph). These layout-v rules were written for the padded box and would
   put a max-height fight back on top of the engine's measured height. */
.ns-mainwrap.layout-v .nsd-drawer.sv3-hero .nsd-txt {
  max-height: none;
  overflow: hidden;
  padding: 0 var(--ep-pad-x);
  /* AND THE LINE HEIGHT, because this file's own `line-height:1.45` fifty lines
     above is (0,3,0) — the same weight as sv3v2.css's rule and later in the
     cascade, so it was winning. 1.45 x 13.5 = 19.575px, a number that cannot be
     multiplied into a whole number of device pixels, which is exactly why the
     note box could never be an integer count of lines and every page after the
     first started a fraction of a line low. The SV3 subtree's line height is an
     INTEGER; this selector carries one more class and settles it. */
  line-height: var(--nsd-lh, 20px);
}
.ns-mainwrap.layout-v .nsd-drawer.sv3-hero .nsd-txt:focus { max-height: none; }

/* ── THE COLLAPSED REPLY FIELD IS A WHOLE LINE, OR IT IS NOT COLLAPSED ──────
   `.ns-mainwrap.layout-v .nsd-composer:not(:focus-within) textarea` above caps
   the unfocused composer at `max-height:30px` — the collapsed-field affordance
   from #6384. 30 is not a whole line of it. Measured at the founder's own
   780x848 with COMMENTS open: line-height 18.125px + 12px of padding + 2px of
   border wants 32.125, the box was 30, and the textarea reported 28px client
   against 30px of scroll. Two pixels of his own draft destroyed, in 14 cells
   of the matrix, by a number that was never a multiple of anything — the note
   field's sliced-glyph defect, committed a second time by a different file.
   In the SV3 subtree the collapsed field is ONE WHOLE LINE: an integer
   line-height (the same reason the note's is an integer, fifty lines below)
   and no cap underneath it. It still collapses; it just collapses to a line
   rather than to two pixels short of one. */
.ns-mainwrap.layout-v .nsd-drawer.sv3-hero .nsd-composer:not(:focus-within) textarea.ns-cinput {
  max-height: none;
  height: auto;
  line-height: 18px;
}
