/*! FocalShift Ai · Mission Control shell partials · MC-SHELL-DELIVERY-2 (ruling 454 phase 2, 11 Sep 2026).
    Generated by build/externalise.py from the partial's own inline block(s) — byte-for-byte the same
    rules/code, moved out of the document so the browser can cache them. The filename carries the
    content hash; a changed file is a new name, never an overwrite. */
/* ── from public_html/_maven.php: <style> ── */
/* == Maven concierge RESTYLE — card design language on white; additive over fs-pages.css .mvn-* == */

/* Launcher: keep hummingbird identity + a soft pulse (no purple slab). Ruling 410, 9 Sep 2026: the slow rotating ring is gone — it was drawn outside the hexagon that clips it and was never visible; only the pulse remains. */
.mvn-hex{overflow:visible}
.mvn-ring{position:absolute;inset:-6px;z-index:1;pointer-events:none}
.mvn-ring::before{content:"";position:absolute;inset:0;border-radius:50%;border:2.5px solid rgba(124,58,237,.5);animation:mvnPulse 2.4s ease-out infinite}
@keyframes mvnPulse{0%{transform:scale(.82);opacity:.55}100%{transform:scale(1.35);opacity:0}}
/* -mcpolish-0719: shrink lower-right FAB back to rail's prior size (hex 52 / ic 40; was 84/64) */
.mvn-open{height:72px}
.mvn-hex{width:72px;height:72px;flex:0 0 72px}
/* RULING 424 (Hans, 9 Sep 2026): shrink the bird a little so the violet hexagon shows behind it —
   the mark box goes 56 -> 48 in the same 72 px hexagon, i.e. exactly TWO THIRDS of the plate
   (was 0.7778). Nothing else moves: same hexagon, same clip, same pulse, no spin, and the img
   stays object-fit:contain centred by .mvn-hex's own flex centring. The app's
   FsMavenHex.markDeclared is 48/72 to match — the two surfaces move together or not at all. */
.mvn-hex .mvn-ic{width:48px;height:48px;object-fit:contain}
.mvn-dismiss{left:54px}
/* WO-MVNFAB-0815 (Hans 8/15): no floating Maven launcher on mobile — the rail carries Maven there, the app carries it in the bottom bar. Desktop keeps the concierge. */
@media(max-width:820px){.mvn-fab{display:none!important}}


/* Panel surface: WHITE card, soft shadow, big radius (card look). */
/* pm4-0801 (Hans) · ONE PLACE for the flippable brand tokens this pass introduces.
   pm5-0801 (Hans, CORRECTION) · PM4 read the periwinkle ruling as "paint the chat
   SURFACE"; the owner meant the MESSAGE BUBBLE. So:
   --mvn-peri  the established periwinkle #ccccff. It dresses the MEMBER'S OWN chat
     bubbles and the focus ring — never the chat surface, which is back to the panel's
     own (white in light, the MC dark surface in dark) exactly as it was before PM4.
   --mvn-send / --mvn-send-hover  the Send control — a KELLY GREEN GLYPH ON NOTHING.
     The green plate is gone: "I don't like squares and backgrounds like this". There
     is no ink token any more because there is no plate for ink to sit on.
   --mvn-focus the brand focus ring that replaces the browser's default blue box on inputs. */
.mvn-panel{z-index:1150!important;border-radius:22px!important;box-shadow:0 12px 26px -10px rgba(20,18,60,.4)!important;border-color:#ececf4!important;
  --mvn-peri:#ccccff;--mvn-send:#4cbb17;--mvn-send-hover:#3fa412;--mvn-focus:rgba(204,204,255,.55)}

/* Header: WHITE surface, hex avatar + level badge, dark name + light subtitle, quiet icon controls. */
.mvn-panel .mvn-hd{background:#fff;border-bottom:0;color:#23233a;padding:15px 13px 13px;gap:11px}
.mvn-hexav{position:relative;width:44px;height:48px;flex:0 0 44px;display:flex;align-items:center;justify-content:center}
.mvn-hexface{width:44px;height:48px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:#f2f1fd;display:flex;align-items:center;justify-content:center}
.mvn-hexface img{width:30px;height:30px;object-fit:contain}
.mvn-bird{width:56px;height:56px;flex:0 0 56px;object-fit:contain;display:block} /* pm4-0801 (Hans): the header hummingbird grows 46px→56px */
button.mvn-trust{background:none;border:0;cursor:pointer;font:inherit}
.mvn-trust i,.mvn-trust svg{color:var(--fsc-ok,#0d8128)!important} /* mavenhome-0730 (Hans): Kelly green shield */
.mvn-hexlvl{position:absolute;left:50%;bottom:-3px;transform:translateX(-50%);width:18px;height:16px;clip-path:polygon(50% 0,100% 25%,100% 75%,50% 100%,0 75%,0 25%);background:#45437f;color:#fff;font:700 9px Inter,sans-serif;display:flex;align-items:center;justify-content:center;box-shadow:0 3px 7px rgba(69,67,127,.45)}
.mvn-panel .mvn-hd .id{flex:1;min-width:0}
.mvn-panel .mvn-hd .id b{display:block;font-size:16px;font-weight:800;color:#23233a;letter-spacing:-.01em;line-height:1.15}
.mvn-panel .mvn-hd .id small{display:block;font-size:11.5px;color:var(--fsc-muted,#6a6a8b);margin-top:1px}
.mvn-panel .mvn-hd .id small::before{display:none}
.mvn-panel .mvn-hd button{width:32px;height:32px;border:0;background:transparent;color:var(--fsc-muted,#6a6a8b);border-radius:8px;cursor:pointer;font-size:15px}
/* pm5-0801 (Hans) · NO SQUARE ON HOVER, ANYWHERE IN THIS HEADER. The hover feedback is
   the GLYPH'S COLOUR and nothing else. .mvn-x is excluded by name because it is the
   canonical close hexagon from private_html/_fs_closehex.php — its clip-path, its
   admin-set fill and its hover belong to that component, not to this file. */
.mvn-panel .mvn-hd button:not(.mvn-x):hover{background:transparent;color:var(--fsc-violet-2,#5450ee)}
/* pm4-0801 (Hans) · the LAYOUT-TOGGLE (popup/side/full) is the header's primary control, so
   it reads a clear step larger than its siblings: the button grows to 38px and its glyph to
   22px, where the other header icons sit at the inherited ~15px (1em). */
.mvn-panel .mvn-hd [data-mvn-mode]{width:38px;height:38px}
.mvn-panel .mvn-hd [data-mvn-mode] svg,.mvn-panel .mvn-hd [data-mvn-mode] i{width:22px!important;height:22px!important}

/* Tab bar: underlined text tabs; the ONE always-on thin violet->teal hairline under the whole bar. */
.mvn-tabs{display:flex;gap:4px;padding:0 12px;background:#fff;position:relative;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.mvn-tabs::-webkit-scrollbar{display:none}
.mvn-tabs::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:linear-gradient(90deg,#7c3aed,#14b8a6);opacity:.45}
.mvn-tab{position:relative;z-index:1;flex:0 0 auto;border:0;background:transparent;font:800 15px Inter,system-ui,sans-serif;color:var(--fsc-muted,#6a6a8b);padding:11px 7px 12px;cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;border-radius:0}
.mvn-tab:focus,.mvn-tab:focus-visible,.mvn-tab:active,.mvn-tab.on,.fs-dark .mvn-tab,.fs-dark .mvn-tab:focus,.fs-dark .mvn-tab:focus-visible,.fs-dark .mvn-tab:active,.fs-dark .mvn-tab.on{background:transparent!important;box-shadow:none!important;outline:none}
.mvn-tab i{font-size:12px;opacity:.85}
.mvn-tab:hover{color:#6a5cff}
.mvn-tab.on{color:var(--fsc-violet-2,#5450ee);border-bottom-color:#5b57ef}
.mvn-tab .mvn-tdot{min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:#ff3b5c;color:#fff;font:700 10px Inter,sans-serif;display:none;align-items:center;justify-content:center}
.mvn-tab .mvn-tdot.show{display:inline-flex}

/* Views
   pm3-0801 · min-width:0 IS LOAD-BEARING — it is the whole fix for the off-canvas column.
   .mvn-view is a flex item of the ROW flex container .mvn-views. Its min-width was left at
   the initial `auto`, which in a row flex container resolves to the item's AUTOMATIC MINIMUM
   SIZE — its content-based minimum — and that floors the item's width no matter how narrow
   the panel is. Measured before the fix: at a 648px sheet the view sized itself to 841px
   (193px past the panel, clipped by .mvn-panel{overflow:hidden}), so the grid box was 798px
   and auto-fill laid out two 394px tracks — the second one hanging off-canvas. At 420px it
   was identical: the view never shrank, so the grid never collapsed to one column.
   min-height:0 was already here — the vertical twin of this same bug was fixed long ago; the
   horizontal one was never added because until a grid went inside, every view's content was
   content to shrink on its own. Measured after: 648 → view 646, grid 603, two 297px tracks,
   no overflow; 900 → two 423px tracks; 420 → one 375px track. */
.mvn-views{flex:1;min-height:0;min-width:0;display:flex;background:#fff}
.mvn-view{display:none;flex:1;min-height:0;min-width:0;flex-direction:column}
.mvn-view.on{display:flex}
/* pm5-0801 (Hans, CORRECTION to pm4) · THE CHAT SURFACE IS THE PANEL'S OWN SURFACE.
   PM4 painted this body periwinkle; the owner's ruling was about the BUBBLES. So the
   body simply inherits .mvn-views{background:#fff} in light and the MC dark surface in
   dark — the pre-PM4 state, restored by DELETING the override rather than adding a
   counter-rule. The periwinkle now lives on .mvn-bub.me (the member's own messages)
   and on the focus ring. The active-tab dark-purple highlight is untouched. */
.mvn-view[data-v="chat"] .mvn-body{flex:1}
.mvn-scroll{flex:1;min-width:0;overflow-y:auto;padding:16px 15px 18px}
/* pm4-0801 · Lucide swap-in — the tile / chip / activity icon families were Font Awesome
   (sized by font-size); Lucide renders <svg>, so give those families an explicit box. The
   prompt-card, hover-card and header icons were already sized for svg in earlier waves. */
.mvn-tile .tic svg{width:18px;height:18px}
.mvn-chip svg{width:13px;height:13px}
.mvn-act svg{width:12px;height:12px}
.mvn-ctxstrip svg{width:12px;height:12px}

/* Context strip */
.mvn-ctxstrip{display:flex;align-items:center;gap:8px;font-size:11.5px;color:#7b7b95;background:#fafafe;border:1px solid #ececf4;border-radius:10px;padding:8px 11px;margin-bottom:14px}
/* MAVENDOCK-NEWCHAT (founder ruling 214) · the one-line note the pane shows after New chat.
   Plain words (ruling 190), one line, and a real link to where the earlier chats actually are —
   the Maven queue in Conversations (ruling 126). It borrows the context strip's exact shape so it
   reads as part of the pane and not as an alert; nothing about it is red or urgent, because
   nothing went wrong. */
.mvn-newnote{display:flex;align-items:center;gap:8px;font-size:11.5px;color:#7b7b95;background:#fafafe;border:1px solid #ececf4;border-radius:10px;padding:8px 11px;margin:0 0 14px}
.mvn-newnote i,.mvn-newnote svg{width:14px;height:14px;flex:0 0 14px;color:var(--fsc-violet-2,#5450ee)}
.mvn-newnote a{color:var(--fsc-violet-2,#5450ee);font-weight:700;text-decoration:none}
.mvn-newnote a:hover{text-decoration:underline}
.mvn-ctxstrip i{color:#6a5cff;font-size:12px}
.mvn-ctxstrip b{color:#23233a;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Stats row: 3-up bordered stat tiles (big number + tiny uppercase label) — card's Level/Journey/Verified */
.mvn-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:16px}
.mvn-stat{background:#fff;border:1px solid #ececf4;border-radius:12px;padding:12px 12px 10px}
.mvn-stat b{display:block;font:800 20px Inter,sans-serif;color:#23233a;line-height:1}
.mvn-stat span{display:block;font:700 9px Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--fsc-muted,#6a6a8b);margin-top:6px}

.mvn-sec{font:800 10px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--fsc-muted,#6a6a8b);margin:0 2px 10px}

/* Content tiles: WHITE, 1px light border, ~12px radius, violet LINE-icon, bold dark title + grey sub. */
.mvn-tiles{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.mvn-tile{display:flex;gap:11px;align-items:flex-start;text-align:left;background:#fff;border:1px solid #ececf4;border-radius:12px;padding:12px 12px;cursor:pointer;transition:border-color .13s,box-shadow .13s;text-decoration:none}
.mvn-tile:hover{border-color:#cdcbf7;box-shadow:0 10px 22px -16px rgba(60,55,120,.6)}
.mvn-tile .tic{flex:0 0 20px;color:#6a5cff;font-size:16px;line-height:1;margin-top:1px;text-align:center}
.mvn-tile .ttx{min-width:0}
.mvn-tile .ttx b{display:block;font-size:12.5px;font-weight:700;color:#23233a;line-height:1.25;letter-spacing:-.01em}
.mvn-tile .ttx small{display:block;font-size:10.5px;color:#9293ac;margin-top:2px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* qa1-0801 (Hans) · THE BUILDER'S OWN QUICK ACTIONS, above the generic ones.
   NO THIRD CARD STYLE: every row here is the .mvn-tile already defined above — the same
   border, radius, icon column and title/sub pair. All this adds is the block wrapper, a
   group heading, and the two states a tile can be in that it could not be in before:
   `off` (this action needs something you have not done yet — the sub-line says what, and
   the title attribute says it again on hover) and `busy` (it is running). A disabled tile
   is deliberately still hoverable so its reason is readable; it just does nothing. */
.mvn-bx{display:none}
.mvn-bx.on{display:block;margin-bottom:20px}
.mvn-bxg{font:800 11.5px Inter,sans-serif;color:#5f6079;letter-spacing:-.01em;margin:15px 2px 8px}
.mvn-bx .mvn-sec+.mvn-bxg{margin-top:10px}   /* the first group sits under the block's own label */
.mvn-tile.off{opacity:.45;cursor:default}
.mvn-tile.off:hover{border-color:#ececf4;box-shadow:none}
.mvn-tile.busy{opacity:.6;cursor:progress}
/* the audit's findings: one .mvn-tile per finding, stacked full width, each a click that
   selects that block on the canvas */
.mvn-bxf{display:flex;flex-direction:column;gap:8px;margin-top:9px}
.mvn-bxf .mvn-tile .tic{color:#c48a2a}
.mvn-bxf .mvn-tile.ok .tic{color:#2c7a45}
.fs-dark .mvn-bxg{color:var(--fsc-muted,#6a6a8b)}
.fs-dark .mvn-tile.off:hover{border-color:#2b2c3e}
.fs-dark .mvn-bxf .mvn-tile .tic{color:#e0a53d}
.fs-dark .mvn-bxf .mvn-tile.ok .tic{color:#5fbf84}

/* Chat: intro chips (context-aware quick suggestions under the greeting) reuse .mvn-chip base. */
.mvn-view[data-v="chat"] .mvn-body{padding:16px 14px}
/* pm5-0801 (Hans) · THE MEMBER'S OWN BUBBLES ARE PERIWINKLE. They were dark purple
   (#5b57ef, written inline by add('me')); Maven's own bubbles are untouched — they keep
   the white/light bubble .mvn-bub already gives them on both themes. The ink is the dark
   MC ink, not white: #23233a on #ccccff measures ~9.5:1, where white on #ccccff measures
   ~1.7:1 and would be unreadable. Same pair on both themes, because the bubble itself is
   the same light periwinkle on both. */
.mvn-bub.me{background:var(--mvn-peri)!important;color:#23233a!important}
.fs-dark .mvn-panel .mvn-bub.me{background:var(--mvn-peri)!important;color:#23233a!important}
.mvn-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}

/* Chat citations (KB grounding) */
.mvn-cites{margin-top:8px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mvn-cites .lbl{font:700 10px Inter,sans-serif;letter-spacing:.05em;text-transform:uppercase;color:var(--fsc-muted,#6a6a8b)}
.mvn-cite{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:700;color:var(--fsc-violet-2,#5450ee);background:#f4f3fe;border:1px solid #e3e1fb;padding:3px 9px;border-radius:200px;text-decoration:none;max-width:180px;overflow:hidden}
.mvn-cite:hover{background:#f4f3fe;border-color:#cdcbf7}
.mvn-cite .n{font-weight:800}
.mvn-cite span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Maven-Do: honest tool activity + amber approval card */
.mvn-acts{margin-top:8px;display:flex;flex-direction:column;gap:5px}
.mvn-act{display:inline-flex;align-items:flex-start;gap:7px;font-size:12px;font-weight:600;color:#2c7a45;background:#effaf1;border:1px solid #cdeccf;padding:5px 10px;border-radius:9px}
.mvn-act.err{color:#9a4b2f;background:#fdf2ec;border-color:#f0d6c6}
.mvn-act i{margin-top:2px;font-size:11px}
.mvn-card{margin-top:9px;border:1px solid #e5e3f6;background:#faf9ff;border-radius:12px;padding:12px}
.mvn-card .ttl{display:flex;align-items:center;gap:7px;font:800 12px Inter,sans-serif;color:#1d1e2b;letter-spacing:.01em}
.mvn-card .ttl .dot{width:8px;height:8px;border-radius:50%;background:#e0a53d;flex:none}
.mvn-card .sub{margin:6px 0 2px;font-size:12.5px;color:#41435a;line-height:1.45}
.mvn-card .rsn{margin:6px 0 10px;font-size:11px;color:var(--fsc-muted,#6a6a8b);line-height:1.4}
.mvn-card .row{display:flex;gap:8px}
.mvn-card button{flex:1;font:700 12px Inter,sans-serif;padding:7px 10px;border-radius:8px;cursor:pointer;border:1px solid transparent}
.mvn-card .ap{background:#22994f;color:#fff}
.mvn-card .ap:hover{background:#1c8043}
.mvn-card .cx{background:#fff;color:#5c5e78;border-color:#dcdce6}
.mvn-card .cx:hover{background:#f2f2f6}
.mvn-card.done .row{display:none}
.mvn-card .res{display:none;margin-top:8px;font-size:12px;font-weight:600}
.mvn-card.done .res{display:block}

/* Footer: white, trust line only (no card visitor branding). */
.mvn-panel .mvn-ft{background:#fff;border-top:1px solid #f1f1f8}
/* THE per-view primary CTA — the Send button. */
/* pm5-0801 (Hans, CORRECTION to pm4): A KELLY GREEN GLYPH ON NOTHING. The green plate is
   removed entirely — "I don't like squares and backgrounds like this". No background, no
   border, no shadow, no radius to catch the eye: just the send arrow in kelly, going a
   shade darker on hover so the control still answers the pointer. One token to re-flip. */
.mvn-input .snd{background:transparent!important;background-image:none!important;color:var(--mvn-send)!important;
  border:0!important;box-shadow:none!important;border-radius:0!important;padding:0 2px!important}
.mvn-input .snd:hover{background:transparent!important;color:var(--mvn-send-hover)!important;filter:none}
.mvn-input .snd svg,.mvn-input .snd i{color:var(--mvn-send)!important}
.mvn-input .snd:hover svg,.mvn-input .snd:hover i{color:var(--mvn-send-hover)!important}
/* pm4-0801 (Hans): kill the browser's default blue focus box on EVERY input in the pop-up and
   replace it with a soft periwinkle ring. The composer has no border of its own, so the ring
   goes on its wrapper via :focus-within; the search field carries its own border, so the ring
   goes on the field. Nothing here ever shows the default outline. */
/* pm5-0801 · the ring's periwinkle is now --mvn-peri; --mvn-chat retired with the surface. */
.mvn-input input:focus,.mvn-input input:focus-visible{outline:none!important;box-shadow:none}
.mvn-input:focus-within{border-color:var(--mvn-peri)!important;box-shadow:0 0 0 3px var(--mvn-focus)!important}
.mvn-prq:focus,.mvn-prq:focus-visible{outline:none!important;border-color:var(--mvn-peri)!important;box-shadow:0 0 0 3px var(--mvn-focus)}

/* Fluid modes (side/full) */
/* pm2-0801 (Hans): the side sheet WIDENS from 420px to 648px so the prompts grid below
   genuinely carries two readable columns. 648 = 14px list padding each side + two 305px
   cards + the 9px gutter — 305 is the width at which a prompt title, its stage line and a
   two-line hint all sit without wrapping to ribbons. Below a 760px viewport (the same
   number the builder's own grid guard uses) the sheet returns to 420px and the grid to one
   column: two columns and the page behind them stop making sense together at that size.
   max-width:92vw still governs, so the sheet never eats a small screen whole. */
.mvn-panel.mvn-side{right:0!important;left:auto!important;top:0!important;bottom:0!important;width:648px!important;max-width:92vw!important;height:100vh!important;max-height:100vh!important;border-radius:0!important;}
@media(max-width:760px){.mvn-panel.mvn-side{width:420px!important}}
.mvn-panel.mvn-full{inset:0!important;width:100vw!important;height:100vh!important;max-width:100vw!important;max-height:100vh!important;border-radius:0!important;}
.mvn-panel.mvn-full .mvn-hd,.mvn-panel.mvn-full .mvn-tabs,.mvn-panel.mvn-full .mvn-view,.mvn-panel.mvn-full .mvn-ft{max-width:820px;margin-left:auto;margin-right:auto;width:100%;}
.mvn-panel.mvn-full .mvn-tiles{grid-template-columns:repeat(3,1fr)}
.mvn-badge{position:absolute;top:-5px;left:-5px;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:#ff3b5c;color:#fff;font:700 11px Inter,system-ui,sans-serif;display:inline-flex;align-items:center;justify-content:center;box-shadow:0 2px 7px rgba(255,59,92,.5);z-index:7;pointer-events:none;}
.mvn-badge[hidden]{display:none;}
/* drag-to-reposition + resize (popup mode only) */
.mvn-hd{cursor:grab;user-select:none;-webkit-user-select:none;}
.mvn-hd:active{cursor:grabbing;}
.mvn-hd button{cursor:pointer;}
.mvn-resize{position:absolute;right:2px;bottom:2px;width:15px;height:15px;cursor:nwse-resize;z-index:8;opacity:.5;background:linear-gradient(135deg,transparent 0 45%,#b9b9cc 45% 55%,transparent 55% 68%,#b9b9cc 68% 78%,transparent 78%);}
.mvn-resize:hover{opacity:.95;}
.mvn-panel.mvn-side .mvn-resize,.mvn-panel.mvn-full .mvn-resize{display:none;}
/* pm3-0801 · EDGE-DRAG RESIZE for the side sheet. A 6px grab strip on the sheet's LEFT edge
   (it is right-docked, so the left edge is the one that moves). Side mode only — the popup
   keeps its corner grip and full mode has nothing to resize. Removed entirely on a device
   with no real hover, so it can never sit under a thumb and eat a scroll. */
.mvn-edge{display:none}
.mvn-panel.mvn-side .mvn-edge{display:block;position:absolute;left:0;top:0;bottom:0;width:6px;
  z-index:9;cursor:col-resize;background:transparent;touch-action:none}
.mvn-panel.mvn-side .mvn-edge::after{content:"";position:absolute;left:2px;top:0;bottom:0;width:2px;
  background:#5b57ef;opacity:0;transition:opacity .12s}
.mvn-panel.mvn-side .mvn-edge:hover::after,.mvn-panel.mvn-side.mvn-sizing .mvn-edge::after{opacity:.55}
.mvn-panel.mvn-sizing{user-select:none;-webkit-user-select:none}
.fs-dark .mvn-panel.mvn-side .mvn-edge::after{background:#7d79f4}
@media(hover:none){.mvn-panel.mvn-side .mvn-edge{display:none}}
.mvn-panel.mvn-side .mvn-hd,.mvn-panel.mvn-full .mvn-hd{cursor:default;}

/* == pm1-0801 · PROMPT LIBRARIES view — the builder's five sets, compact for the sheet ==
   Same data, its own presentation: one column, a search field, library + stage pills, and
   a card per prompt with the two actions the builder's modal has (copy it, or put it in
   Maven's composer). Muted MC palette; the accent is a line and a label, never a slab. */
.mvn-view[data-v="prompts"]{background:#fff}
.mvn-prtop{padding:11px 14px 9px;border-bottom:1px solid #f1f1f8;background:#fff}
.mvn-prq{width:100%;box-sizing:border-box;font:600 12.5px Inter,system-ui,sans-serif;color:#23233a;background:#fafafe;border:1px solid #ececf4;border-radius:9px;padding:8px 10px;outline:none}
.mvn-prq::placeholder{color:var(--fsc-muted,#6a6a8b);font-weight:600}
.mvn-prq:focus{border-color:#cdcbf7;background:#fff}
.mvn-prchips{display:flex;gap:5px;margin-top:8px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.mvn-prchips::-webkit-scrollbar{display:none}
.mvn-prchips button{flex:0 0 auto;font:700 11px Inter,sans-serif;color:#7b7b95;background:#fff;border:1px solid #ececf4;border-radius:200px;padding:4px 10px;cursor:pointer;white-space:nowrap}
.mvn-prchips button:hover{border-color:#cdcbf7;color:var(--fsc-violet-2,#5450ee)}
.mvn-prchips button.on{color:#fff;background:#5b57ef;border-color:#5b57ef}
.mvn-prchips button.lib{font-weight:800}
.mvn-prlist{padding:13px 14px 18px}
.mvn-prhd{display:flex;align-items:baseline;gap:7px;margin:2px 0 9px}
.mvn-prhd + .mvn-prcard{margin-top:0}
.mvn-prhd b{font:800 10px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--fsc-violet-2,#5450ee)}
.mvn-prhd span{font:600 10px Inter,sans-serif;color:var(--fsc-muted,#6a6a8b)}
/* pm2-0801 · TWO COLUMNS — the builder's .tzpr-grid pattern. Container-driven rather
   than viewport-driven: repeat(auto-fill,minmax(280px,1fr)) yields two EQUAL columns
   whenever the list is wide enough for them (the 648px sheet gives 620px of content →
   two 305px columns) and exactly one when it is not. That covers the cases a viewport
   media query cannot see: the draggable popup mode and the member resizing the sheet by
   its grip both re-flow correctly with no breakpoint to miss. Headings span the full row. */
.mvn-prgrp{margin-top:16px;display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:9px;align-items:start}
.mvn-prgrp:first-child{margin-top:0}
.mvn-prhd,.mvn-prstg{grid-column:1/-1}
.mvn-prstg{font:800 9.5px Inter,sans-serif;letter-spacing:.07em;text-transform:uppercase;color:var(--fsc-muted,#6a6a8b);margin:11px 2px 0}
.mvn-prcard{background:#fff;border:1px solid #ececf4;border-radius:12px;padding:11px 12px;margin-bottom:0}
.mvn-prcard:hover{border-color:#cdcbf7;box-shadow:0 10px 22px -16px rgba(60,55,120,.6)}
.mvn-prcard .pt{display:flex;gap:9px;align-items:flex-start}
.mvn-prcard .pt i,.mvn-prcard .pt svg{flex:0 0 14px;width:14px;height:14px;color:#6a5cff;margin-top:2px}
.mvn-prcard .pt b{font:700 12.5px Inter,sans-serif;color:#23233a;line-height:1.3;letter-spacing:-.01em}
.mvn-prcard small{display:block;font-size:11px;color:var(--fsc-muted,#6a6a8b);line-height:1.4;margin:5px 0 0 23px}
.mvn-pract{display:flex;gap:6px;margin:9px 0 0 23px}
.mvn-pract button{font:700 11px Inter,sans-serif;padding:5px 11px;border-radius:8px;cursor:pointer;border:1px solid #ececf4;background:#fff;color:#5c5e78}
.mvn-pract button:hover{border-color:#cdcbf7;color:var(--fsc-violet-2,#5450ee)}
.mvn-pract button.use{border-color:#5b57ef;color:var(--fsc-violet-2,#5450ee)}
.mvn-pract button.use:hover{background:#f4f3fe}
.mvn-prnote{font:600 12px Inter,sans-serif;color:var(--fsc-muted,#6a6a8b);line-height:1.5;padding:6px 2px;grid-column:1/-1}

/* == pm2-0801 · THE FLOATING DETAIL CARD, VIEWPORT-CENTERED (Hans's explicit spec) ==
   The builder's .hc-* anatomy carried over — icon + title, library · stage, the full
   brief, the prompt's own ROLE/CONTEXT/TASK opening lines, an actions legend footer.
   The one deliberate difference from the builder, and it is the owner's ruling: this card
   is CENTERED IN THE VIEWPORT rather than placed beside the hovered card. Centering means
   it necessarily covers page content behind it while shown, so every dismissal path is
   immediate — pointer out, any scroll, any pointer-down, any click, Escape, resize.
   pointer-events stay NONE at all times: the cards underneath carry two real buttons and
   an interactive overlay could swallow a Copy or a Use it. Nothing in the card is
   clickable, so nothing is lost by that. */
.mvn-hc{position:fixed;left:50%;top:50%;z-index:2147483600;width:344px;max-width:86vw;max-height:82vh;overflow:hidden;
  background:#fff;border:1px solid #ececf4;border-radius:16px;
  box-shadow:0 28px 64px -24px rgba(30,26,80,.55);padding:16px 17px;
  opacity:0;transform:translate(-50%,-50%) translateY(6px) scale(.985);pointer-events:none;
  transition:opacity .14s ease,transform .14s ease}
.mvn-hc.on{opacity:1;transform:translate(-50%,-50%)}
.mvn-hc .hc-h{display:flex;align-items:center;gap:10px;margin:0 0 9px}
.mvn-hc .hc-ic{width:32px;height:32px;flex:0 0 auto;border-radius:10px;display:grid;place-items:center;background:#5b57ef;color:#fff}
.mvn-hc .hc-ic i,.mvn-hc .hc-ic svg{width:15px;height:15px;flex:none;font-size:14px}
.mvn-hc .hc-ht{min-width:0}
.mvn-hc .hc-t{display:block;font:800 14.5px/1.25 Inter,sans-serif;color:#23233a}
.mvn-hc .hc-lib{display:block;font:600 9.5px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:#9293ac;margin-top:3px}
.mvn-hc .hc-x{font:400 12.5px/1.62 Inter,sans-serif;color:#41435a}
.mvn-hc .hc-st{margin-top:12px;display:flex;flex-direction:column;gap:8px}
.mvn-hc .hc-st b{display:block;font:700 9px Inter,sans-serif;letter-spacing:.1em;text-transform:uppercase;color:var(--fsc-violet-2,#5450ee);margin-bottom:2px}
.mvn-hc .hc-st span{display:block;font:400 11px/1.5 Inter,sans-serif;color:var(--fsc-muted,#6a6a8b)}
.mvn-hc .hc-tag{display:flex;align-items:center;gap:7px;margin-top:12px;padding-top:11px;border-top:1px solid #ececf4;font:700 11px Inter,sans-serif;color:#9293ac}
.mvn-hc .hc-tag .d{width:9px;height:9px;border-radius:50%;background:#5b57ef;flex:0 0 auto}
@media(prefers-reduced-motion:reduce){.mvn-hc{transition:none}}

/* == pm4-0801 · THE SMALL DESCRIPTIVE HOVER CARD (Hans) ==
   For the four tabs and the layout toggle: faster than a tooltip, richer than one. Same
   .mvn-hc visual family, smaller, and positioned NEAR the control (center-screen is reserved
   for the big prompt cards). Label + one sentence; the mode toggle also carries a tiny CSS
   sketch of popup / side / full with the current one lit. pointer-events:none, ~120ms show,
   instant hide on move-out / click / scroll / Escape, never built on a touch device. */
.mvn-hc2{position:fixed;left:0;top:0;z-index:2147483600;width:238px;max-width:80vw;
  background:#fff;border:1px solid #ececf4;border-radius:12px;
  box-shadow:0 18px 44px -20px rgba(30,26,80,.5);padding:11px 13px;
  opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity .12s ease,transform .12s ease}
.mvn-hc2.on{opacity:1;transform:none}
.mvn-hc2 b{display:block;font:800 12px Inter,sans-serif;color:#23233a;margin-bottom:3px}
.mvn-hc2 span{display:block;font:400 11.5px/1.5 Inter,sans-serif;color:var(--fsc-muted,#6a6a8b)}
.mvn-hc2 .mvn-md{display:flex;gap:6px;margin-bottom:9px}
.mvn-hc2 .mvn-md .md{flex:1;height:34px;border:1px solid #d8d8ea;border-radius:6px;position:relative;background:#f7f7fc}
.mvn-hc2 .mvn-md .md.on{border-color:#5b57ef;background:#f0eefe}
.mvn-hc2 .mvn-md .md::after{content:"";position:absolute;background:#c7c8de;border-radius:2px}
.mvn-hc2 .mvn-md .md.pop::after{right:4px;bottom:4px;width:13px;height:11px}
.mvn-hc2 .mvn-md .md.side::after{right:0;top:0;bottom:0;width:10px;border-radius:0 5px 5px 0}
.mvn-hc2 .mvn-md .md.full::after{inset:5px;border-radius:3px}
.mvn-hc2 .mvn-md .md.on::after{background:#5b57ef}
.mvn-hc2 .mvn-ml{display:flex;gap:6px;margin:-4px 0 8px;font:700 8px Inter,sans-serif;color:var(--fsc-muted,#6a6a8b);text-transform:uppercase;letter-spacing:.05em}
.mvn-hc2 .mvn-ml span{flex:1;text-align:center;display:block;margin:0}
.fs-dark .mvn-hc2{background:#20212f;border-color:#2b2c3e;box-shadow:0 18px 44px -20px rgba(0,0,0,.72)}
.fs-dark .mvn-hc2 b{color:#eaeaf4}
.fs-dark .mvn-hc2 span,.fs-dark .mvn-hc2 .mvn-ml{color:var(--fsc-muted,#6a6a8b)}
.fs-dark .mvn-hc2 .mvn-md .md{background:#26273a;border-color:#33344a}
.fs-dark .mvn-hc2 .mvn-md .md::after{background:#4a4b63}
.fs-dark .mvn-hc2 .mvn-md .md.on{border-color:#7d79f4;background:#2a2a48}
.fs-dark .mvn-hc2 .mvn-md .md.on::after{background:#a9a6ff}
@media(prefers-reduced-motion:reduce){.mvn-hc2{transition:none}}
@media(hover:none){.mvn-hc2{display:none!important}}

/* Dark mode = MC dark surface (NOT purple). Base .mvn-panel/.mvn-bub/.mvn-chip/.mvn-input dark in fs-pages.css. */
.fs-dark .mvn-panel{border-color:#2b2c3e!important}
.fs-dark .mvn-panel .mvn-hd,.fs-dark .mvn-tabs,.fs-dark .mvn-views,.fs-dark .mvn-view[data-v="chat"] .mvn-body,.fs-dark .mvn-panel .mvn-ft{background:#1a1b26!important;color:#e9e9f2}
/* pm5-0801 (Hans, CORRECTION to pm4): PM4's periwinkle chat SURFACE is withdrawn here too.
   The dark chat body goes back to the MC dark surface it shares with the header, tabs and
   footer on the line above — one continuous panel, no odd light panel inside a dark one.
   Periwinkle moved to the member's own bubbles (.mvn-bub.me). */
.fs-dark .mvn-panel .mvn-hd .id b{color:#f0f0f7}
.fs-dark .mvn-hexface{background:#26273a}
.fs-dark .mvn-panel .mvn-hd button:not(.mvn-x):hover{background:transparent;color:#a9a6ff}  /* pm5-0801 · colour only, no plate */
.fs-dark .mvn-tab{color:var(--fsc-muted,#6a6a8b)}
.fs-dark .mvn-tab.on{color:#a9a6ff;border-bottom-color:#7d79f4}
.fs-dark .mvn-ctxstrip{background:#20212f;border-color:#2b2c3e;color:#b7b8cf}
.fs-dark .mvn-newnote{background:#20212f;border-color:#2b2c3e;color:#b7b8cf}
.fs-dark .mvn-newnote a{color:#a9a4ff}
.fs-dark .mvn-ctxstrip b{color:#eaeaf4}
.fs-dark .mvn-stat,.fs-dark .mvn-tile{background:#20212f!important;border-color:#2b2c3e!important}
.fs-dark .mvn-stat b,.fs-dark .mvn-tile .ttx b{color:#eaeaf4}
.fs-dark .mvn-tile .ttx small{color:var(--fsc-muted,#6a6a8b)}
.fs-dark .mvn-tile .tic{color:#a9a6ff}
.fs-dark .mvn-cite{background:#26273a!important;border-color:#33344a!important;color:#a9a6ff}
.fs-dark .mvn-act{color:#7fd79a;background:#182a1f;border-color:#2c4a37}
.fs-dark .mvn-act.err{color:#e8a98d;background:#2a1e18;border-color:#4a352c}
.fs-dark .mvn-card{background:#20212f;border-color:#33344a}
.fs-dark .mvn-card .ttl{color:#eaeaf4}
.fs-dark .mvn-card .sub{color:#c3c4d6}
.fs-dark .mvn-card .rsn{color:var(--fsc-muted,#6a6a8b)}
.fs-dark .mvn-card .cx{background:#26273a;color:#c3c4d6;border-color:#3a3b52}
.fs-dark .mvn-card .cx:hover{background:#2e2f44}
.fs-dark .mvn-panel .mvn-ft{border-top-color:#2b2c3e}
/* pm1-0801 · prompt libraries, dark */
.fs-dark .mvn-view[data-v="prompts"],.fs-dark .mvn-prtop{background:#1a1b26!important;border-bottom-color:#2b2c3e}
.fs-dark .mvn-prq{background:#20212f;border-color:#2b2c3e;color:#eaeaf4}
.fs-dark .mvn-prq::placeholder{color:#7a7b96}
.fs-dark .mvn-prq:focus{border-color:#4b48b8;background:#20212f}
.fs-dark .mvn-prchips button{background:#20212f;border-color:#2b2c3e;color:var(--fsc-muted,#6a6a8b)}
.fs-dark .mvn-prchips button:hover{border-color:#4b48b8;color:#a9a6ff}
.fs-dark .mvn-prchips button.on{background:#5b57ef;border-color:#5b57ef;color:#fff}
.fs-dark .mvn-prhd b{color:#a9a6ff}
.fs-dark .mvn-prhd span,.fs-dark .mvn-prstg{color:#7a7b96}
.fs-dark .mvn-prcard{background:#20212f;border-color:#2b2c3e}
.fs-dark .mvn-prcard:hover{border-color:#4b48b8;box-shadow:none}
.fs-dark .mvn-prcard .pt b{color:#eaeaf4}
.fs-dark .mvn-prcard .pt i,.fs-dark .mvn-prcard .pt svg{color:#a9a6ff}
.fs-dark .mvn-prcard small,.fs-dark .mvn-prnote{color:var(--fsc-muted,#6a6a8b)}
.fs-dark .mvn-pract button{background:#26273a;border-color:#33344a;color:#c3c4d6}
.fs-dark .mvn-pract button:hover{border-color:#4b48b8;color:#a9a6ff}
.fs-dark .mvn-pract button.use{border-color:#5b57ef;color:#a9a6ff}
.fs-dark .mvn-pract button.use:hover{background:#2a2a48}
/* pm2-0801 · the floating detail card, dark (the deeper shadow variant) */
.fs-dark .mvn-hc{background:#20212f;border-color:#2b2c3e;box-shadow:0 28px 64px -24px rgba(0,0,0,.72)}
.fs-dark .mvn-hc .hc-t{color:#eaeaf4}
.fs-dark .mvn-hc .hc-lib,.fs-dark .mvn-hc .hc-st span,.fs-dark .mvn-hc .hc-tag{color:var(--fsc-muted,#6a6a8b)}
.fs-dark .mvn-hc .hc-x{color:#c3c4d6}
.fs-dark .mvn-hc .hc-st b{color:#a9a6ff}
.fs-dark .mvn-hc .hc-tag{border-top-color:#2b2c3e}

/* Reduced motion — launcher animation off */
@media(prefers-reduced-motion:reduce){
  .mvn-ring::before{animation:none!important}
  .mvn-ring::before{opacity:0!important}
  .mvn-tile,.mvn-input .snd{transition:none}
}
