/* portal v2 layout trial (local copy only). Ported from website portal-example-v2 plus William's 2026-09-12 round-2 notes.
   Logo, Sign out, tabs, pill and This Week title are untouched. */

/* Header: client name in the same white as "This"; faint bronze rule under it with even spacing before the This Week title. */
body.portal-board[data-portal="med-spa"] .dashboard-client,
body.portal-board[data-portal="med-spa"] .dashboard-client.dashboard-client-premium{color:#FFF;-webkit-text-fill-color:#FFF}
/* Round 8: the line sits 10px above the tab text instead of directly under the name; it is drawn on the nav (position from the
   nav top: 13px on phones, 19px wide) and the header-top keeps its round-7 height (border swapped for 1px of padding), so the
   tab row, the section and the rings do not move. The extra space lands under the name. */
body.portal-board[data-portal="med-spa"] .dashboard-header-top{padding-bottom:17px;border-bottom:0}
body.portal-board[data-portal="med-spa"] .dashboard-nav{position:relative;--rule-top:17px}
body.portal-board[data-portal="med-spa"] .dashboard-nav::before{content:"";position:absolute;left:0;right:0;top:var(--rule-top);height:1px;background:rgba(185,135,91,.14);pointer-events:none}

/* This Week (round 10): original order and geometry restored - MED SPA pill above the section, ring inside the hero, title at
   the original size (clamp 54-60px on phones) in its original place under the pill; all ring, section, hero and pill overrides
   from rounds 3-5 removed. The fresh / rated / clears row follows the hero at the original title->row distance (24px phones,
   40 wide; the hero's own bottom padding is dropped because the row is outside it) and sits 12px above the first card; it keeps
   the round-7 text size. The "scripts rated" block stays at the foot of the list. */
body.portal-board[data-portal="med-spa"] .medspa-dashboard .zmeta{font-size:11.3px;margin-top:calc(clamp(45.82px,5.53vw,72.68px) - 6.59375px)} /* round 15: was 40px under the title; now under the pill (title height 0.79 x clamp(58px,7vw,92px) minus pill height 46.59375px + 40px) so the row does not move */
body.portal-board[data-portal="med-spa"] .dashboard-hero{padding-bottom:0;border-bottom:0}
body.portal-board[data-portal="med-spa"] .dashboard-week .tiles{margin-top:12px}
body.portal-board[data-portal="med-spa"] .dashboard-tuning{margin:32px 0 0}
@media (max-width:760px){
  /* Round 11: the row and everything below it sit exactly where round 9 left them (row top 381.55 / first card 411.55 at 375,
     383.48 / 413.48 at 390) while the pill, title and rings keep their original positions; the title->row gap is the only
     thing that changes: 44.796875px at 375 and 44.953125px at 390 (both on the 1/64px layout grid), i.e. 40.890625px + 1.041667vw; the title is taller at 390. */
  /* Round 13: the pill, title and rings move up 12px (the This Week column's top padding 36 -> 24px here, 30 -> 18px at <=390);
     the row keeps its place, so its distance from the title grows by the same 12px: calc(56.890625px + 1.041667vw) -> calc(68.890625px + 1.041667vw). */
  body.portal-board[data-portal="med-spa"] .dashboard-content[data-view="fresh"]{padding-top:24px}
  /* Round 15 step 1: calc(58.890625px + 1.041667vw) -> calc(53.890625px + 1.041667vw) measured from the title bottom (row and everything below up 5px from round 14; 15px from the live round-12 value 68.890625px).
     Round 15 step 2: the row now follows the pill (height 40.265625px) instead of the title (height 0.82 x clamp(54px,14.5vw,60px)), so the margin carries the difference: title height - 40.265625px + 53.890625px + 1.041667vw. Row/card positions equal step 1. */
  body.portal-board[data-portal="med-spa"] .medspa-dashboard .zmeta{font-size:9.75px;margin-top:calc(clamp(44.28px,11.89vw,49.2px) + 13.625px + 1.041667vw)}
  body.portal-board[data-portal="med-spa"] .dashboard-hero{padding-bottom:0}
  body.portal-board[data-portal="med-spa"] .dashboard-week .tiles{margin-top:12px}
  body.portal-board[data-portal="med-spa"] .dashboard-tuning{margin:22px 0 0}
}
@media (max-width:390px){
  body.portal-board[data-portal="med-spa"] .dashboard-content[data-view="fresh"]{padding-top:18px} /* round 13: 30 -> 18px */
  body.portal-board[data-portal="med-spa"] .medspa-dashboard .zmeta{font-size:9px}
  /* Round 11: equal outer margins on the tab row. The columns stay equal thirds and Saved stays centred; the outer tabs align
     their content to the outer column edges with the same --tab-outer inset, so the This week icon's left edge and the Submit a
     post text's right edge are both 6px inside the page margins. 6px is the most the right column allows at 375 with 6% added to
     the text width (19 + 6 + 81.04 x 1.06 = 110.9 of 117). */
  body.portal-board[data-portal="med-spa"] .dashboard-nav{--tab-outer:6px}
  body.portal-board[data-portal="med-spa"] .dashboard-nav .dashboard-tab:first-child{justify-content:flex-start;padding-left:var(--tab-outer)}
  body.portal-board[data-portal="med-spa"] .dashboard-nav .dashboard-tab:last-child{justify-content:flex-end;padding-right:var(--tab-outer)}
}
/* Round 15: pill and title swap slots on This Week. The pill is rendered after .dashboard-hero (index.html), so the title starts
   where the pill's top edge was (hero margin-top stays 0), the pill starts where the title's top edge was (pill margin-top =
   old pill height + old pill margin-bottom - title height; margin-bottom 0), and the ring, which is positioned from the hero,
   is translated down by the old pill height + margin (88.59375px wide, 68.265625px phones) so it does not move. The pill gets
   z-index 1 like the row so the ring dots stay behind it. */
body.portal-board[data-portal="med-spa"] .dashboard-week{margin-top:0} /* the section's 23/28px zone margin used to collapse into the pill's margin-bottom above it; with the pill inside the section it would show, so it is zeroed */
body.portal-board[data-portal="med-spa"] .dashboard-week .dashboard-hero{margin-top:0}
body.portal-board[data-portal="med-spa"] .dashboard-week .dashboard-account{position:relative;z-index:1;margin:calc(88.59375px - clamp(45.82px,5.53vw,72.68px)) 0 0}
body.portal-board[data-portal="med-spa"] .dashboard-week .dashboard-ring{transform:translateY(88.59375px)}
@media (max-width:760px){
  body.portal-board[data-portal="med-spa"] .dashboard-week .dashboard-account{margin:calc(68.265625px - clamp(44.28px,11.89vw,49.2px)) 0 0}
  body.portal-board[data-portal="med-spa"] .dashboard-week .dashboard-ring{transform:translateY(68.265625px)}
}
/* Tab row (round 10): back to the original - access.css's three equal grid columns across the content width, 12.5px text /
   19px icons at <=390 (14px / 21px at 391-760), dividers on the column boundaries. The rounds 7-8 flex/scale rules are gone;
   the faint line above the tabs and the round-9 header spacing stay. */
@media (max-width:760px){
  body.portal-board[data-portal="med-spa"] .dashboard-nav{--rule-top:13px}
  /* Round 9: the tab row and its line move up 8.19px (20% of the 40.82px between the name's box and the tab text at 375/390):
     header-top padding-bottom 17 -> 1.906px and row-gap 8 -> 14.906px (+6.906) net the nav -8.19px, and the +6.906px row-gap
     is what centres the name between the logo row and the line (14.9px above and below; the line is 13px into the nav).
     The header takes the 8.1875px back as bottom padding (values on the 1/64px layout grid so the header height stays exactly 193.91px) so the main column, the section and the rings do not move. */
  body.portal-board[data-portal="med-spa"] .dashboard-header{padding-bottom:8.1875px}
  /* Round 12: the space from the logo row to the line shrinks 20% (68.6875 -> 54.9375px, -13.75px) with the name still centred:
     8.03125px above it (row-gap) and 8.03125px below it (the line is 13px into the nav, so the nav starts 4.96875px above the
     name's box bottom - descender space only). The header simply gets 13.75px shorter, so the tab row and everything under it
     move up by that amount. */
  body.portal-board[data-portal="med-spa"] .dashboard-header-top{row-gap:8.03125px;padding-bottom:0}
  body.portal-board[data-portal="med-spa"] .dashboard-nav{margin-top:-4.96875px}
  .dashboard-tab span{white-space:nowrap}
  /* Guard: render() adds .is-tight when the row is still wider than its box (unknown font metrics); one step below the original sizes. */
  .dashboard-nav.is-tight .dashboard-tab{font-size:11.5px}
  .dashboard-nav.is-tight .dashboard-tab svg{width:17px;height:17px}
}

/* Card labels: HOOK in the same teal as ON-SCREEN TEXT and CALL TO ACTION (access.css paints .card-topic-label bronze). */
body.portal-board[data-portal="med-spa"] .script-preview-card .card-topic-label{color:var(--accent)}
/* Round 9: the label row is one label line tall (no min-height) and its margin below equals the card-label margin (8px, 6px on
   phones), so HOOK sits the same distance above the hook text as ON-SCREEN TEXT does above its text. The Script 01 index is
   baseline-aligned to the label with line-height 0, so its numeral rises above the row instead of stretching it. */
body.portal-board[data-portal="med-spa"] .script-preview-card .card-topic-head{min-height:0;align-items:baseline;margin-bottom:8px}
body.portal-board[data-portal="med-spa"] .script-preview-card .card-topic-head .card-label{padding-top:0;margin-bottom:0}
body.portal-board[data-portal="med-spa"] .script-preview-card .script-index{margin-top:0;line-height:0}
@media (max-width:760px){
  body.portal-board[data-portal="med-spa"] .script-preview-card .card-topic-head{min-height:0;margin-bottom:6px}
  body.portal-board[data-portal="med-spa"] .script-preview-card .card-topic-head .card-label{margin-bottom:0}
  body.portal-board[data-portal="med-spa"] .script-preview-card .script-index{margin-top:0}
}

/* This Week card: hook-first, "2 more hooks" expander in copper where the count line was (same type size and spacing). */
.script-preview-card .card-hookmore{display:flex;align-items:center;gap:5px;font-family:'JetBrains Mono';font-size:10.5px;line-height:1.5;letter-spacing:.14em;text-transform:uppercase;color:var(--bronze-bright);margin-top:6px;padding:0;background:none;border:0;cursor:pointer;opacity:.9}
.script-preview-card .card-hookmore:hover{opacity:1}
.script-preview-card .card-hookmore .reader-toggle-arrow{font-size:14px;line-height:.8;transition:transform .18s ease}
.script-preview-card .card-hookmore[aria-expanded="true"] .reader-toggle-arrow{transform:rotate(180deg)}
.script-preview-card .card-hooks{margin-top:8px;border:1px solid rgba(120,210,222,.18);background:rgba(120,210,222,.035)}
.script-preview-card .card-hook-alt{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 12px;border:0;border-bottom:1px solid rgba(120,210,222,.12);background:none;text-align:left;color:var(--text);cursor:pointer}
.script-preview-card .card-hook-alt:last-child{border-bottom:0}
.script-preview-card .card-hook-alt:hover{background:rgba(185,135,91,.055)}
.script-preview-card .card-hook-alt-copy{font-family:'Space Grotesk';font-size:13px;line-height:1.5}
.script-preview-card .card-hook-alt-go{flex:none;font-family:'JetBrains Mono';font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}

/* Reader head: label, the selected hook in the serif title style (one step smaller on phones), script id, then the faint rule. */
body.portal-board[data-portal="med-spa"] .reader-head{margin:2px 0 24px;padding-bottom:17px;border-bottom:1px solid rgba(185,135,91,.14)}
body.portal-board[data-portal="med-spa"] .reader-head .reader-label{margin:0 0 8px}
body.portal-board[data-portal="med-spa"] .reader-head h2{margin:0 0 12px}
body.portal-board[data-portal="med-spa"] .reader-head .reader-id{display:flex;align-items:baseline;gap:8px;margin:0}
body.portal-board[data-portal="med-spa"] .reader-id-dot{color:var(--dim)}
@media (max-width:760px){
  body.portal-board[data-portal="med-spa"] .reader-head h2{font-size:32px;line-height:1.06}
}
@media (max-width:560px){ body.portal-board[data-portal="med-spa"] .reader-head{margin-bottom:20px;padding-bottom:14px} }

/* One script box in the posting-kit style: HOOK label + toggle, hook line, FULL SCRIPT paragraph, CALL TO ACTION label + toggle, CTA line, copy. */
body.portal-board[data-portal="med-spa"] .reader-script-card{padding:16px 18px 16px}
body.portal-board[data-portal="med-spa"] .reader-script-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 8px}
body.portal-board[data-portal="med-spa"] .reader-script-tools .reader-toggle{margin-left:auto;padding:4px 0}
body.portal-board[data-portal="med-spa"] .reader-script-tools .reader-label{margin:0}
body.portal-board[data-portal="med-spa"] .reader-script-card .rhook{margin:0 0 16px;font-size:15px;line-height:1.55;color:#FFF}
body.portal-board[data-portal="med-spa"] .reader-script-card .reader-script-label{margin:2px 0 8px}
body.portal-board[data-portal="med-spa"] .reader-script-para{margin:0 0 18px;font-size:16px;line-height:1.7;white-space:normal}
body.portal-board[data-portal="med-spa"] .reader-script-hook,
body.portal-board[data-portal="med-spa"] .reader-script-closing{color:var(--bronze-bright)}
body.portal-board[data-portal="med-spa"] .reader-script-card .reader-disclosure-panel{margin:-6px 0 16px}
body.portal-board[data-portal="med-spa"] .reader-script-actions{display:flex;justify-content:flex-end;margin-top:2px}
.copy.inbox{font-family:'Space Grotesk';font-size:13px;font-weight:600;color:var(--accent);border:1px solid rgba(120,210,222,.35);background:rgba(120,210,222,.06);border-radius:10px;padding:9px 14px}
.copy.inbox:hover{background:rgba(120,210,222,.12)}
body.portal-board .copy.inbox{border-radius:3px}

/* Close of the script page, in flow after the posting kit: one-line rating (question left, stars right, fixed height so the
   stars never move between the two steps), full-width Mark as filmed, small centred Next script link. No bottom bar. */
body.portal-board[data-portal="med-spa"] .reader-close{display:grid;gap:12px;margin-top:24px}
body.portal-board[data-portal="med-spa"] .reader-rate{display:flex;align-items:center;justify-content:space-between;gap:12px;height:44px;box-sizing:border-box}
body.portal-board[data-portal="med-spa"] .reader-rate-copy{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;min-width:0}
body.portal-board[data-portal="med-spa"] .reader-rate .dq{font-size:13px;line-height:1.2;color:var(--text)}
body.portal-board[data-portal="med-spa"] .reader-rate-note{font-family:'JetBrains Mono';font-size:9.5px;line-height:1.2;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);white-space:nowrap}
.deck-relink{color:var(--accent);font:inherit;text-decoration:underline;text-underline-offset:2px;padding:0;background:none;border:0;cursor:pointer;letter-spacing:inherit;text-transform:inherit}
body.portal-board[data-portal="med-spa"] .reader-rate .starwrap{position:relative;flex:none;gap:0}
body.portal-board[data-portal="med-spa"] .reader-rate .stars .star{font-size:24px;padding:0 1px}
body.portal-board[data-portal="med-spa"] .reader-rate .learn{position:absolute;right:0;top:100%;height:10px;line-height:10px;white-space:nowrap}
body.portal-board[data-portal="med-spa"] .reader-rate .learn span{font-size:7.5px}
body.portal-board[data-portal="med-spa"] .reader-crown{width:100%;justify-content:center;min-height:46px;padding:12px 14px;font-size:13px}
body.portal-board[data-portal="med-spa"] .reader-next{justify-self:center;font-family:'JetBrains Mono';font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);padding:6px 10px}
body.portal-board[data-portal="med-spa"] .reader-next:hover{color:#D8FBFF}

/* Larger HOOK label retained for the selected local preview. */
body.portal-board[data-portal="med-spa"] .script-preview-card .card-topic-label{font-size:12px}

/* Phone heading and pill: lowered 3px from the previous midpoint preview. */
@media (max-width:760px){
  body.portal-board[data-portal="med-spa"] .dashboard-week .dashboard-week-title{position:relative;top:-6px}
  body.portal-board[data-portal="med-spa"] .dashboard-week .dashboard-account{top:-6px}
}

/* Faint section dividers inside the full-script reader. */
body.portal-board[data-portal="med-spa"] .reader-script-card .reader-script-label,
body.portal-board[data-portal="med-spa"] .reader-script-card .reader-script-para + .reader-script-tools{border-top:1px solid rgba(185,135,91,.14);padding-top:14px}


/* September 13 exact phone reference: shared geometry, original Venzor palette. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard{--portal-copper:#B9875B;--portal-blue:#78D2DE;max-width:780px;padding:27px 11px 64px;position:relative;isolation:isolate}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-header{position:relative;background:none;backdrop-filter:none;padding:0;border:0;z-index:1}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .client-signature{position:relative;border-left:4px solid var(--portal-copper);padding:0 0 0 15px;margin:0 -1px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .client-signature::after{display:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .client-signature-name{font-family:'Cormorant Garamond',Georgia,serif;font-size:24px;line-height:1.12;font-weight:400;color:#fff;overflow-wrap:anywhere}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .client-eyebrow{font-family:'JetBrains Mono',monospace;color:var(--portal-blue);font-size:11px;font-weight:400;line-height:15px;letter-spacing:.12em;text-transform:uppercase;margin:4px 0 0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-content{position:relative;padding-top:13px;animation:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-hero{position:relative;z-index:1;height:110px;padding:0;margin:0 -1px;display:flex;align-items:flex-start;border:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-page-title{font-size:clamp(50px,15.5vw,74px);font-weight:600;line-height:1;letter-spacing:-.035em;white-space:nowrap;margin:0;position:static;color:#fff}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-page-title span{display:inline;font-size:inherit;line-height:inherit;letter-spacing:inherit;margin:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-page-title .o{color:var(--portal-copper);font-style:italic;margin:0;-webkit-text-stroke:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-page-status{position:relative;z-index:1;height:18px;margin:0 6px 4px;font-size:10px;line-height:18px;transform:translateY(0px);letter-spacing:.12em;color:#fff}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-page-status i{height:14px;margin:0 10px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-content>.dashboard-ring{position:absolute;width:400px;right:-257px;top:calc(-88px - (clamp(50px,15.5vw,74px) - 45.875px));transform:none;--ring-rest:rgb(185 135 91 / .2204496);z-index:0;pointer-events:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-content>.zone{position:relative;z-index:1;padding:0;margin:8px 0 0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .tiles{margin-top:0;gap:14px;position:relative;z-index:1}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::before{display:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav{z-index:1;margin:0;overflow:hidden}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav .dashboard-tab{min-height:40px;font-size:14px;gap:5px;padding:0 4px;justify-content:center}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-tab svg{width:20px;height:20px;color:var(--portal-copper)}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-tab::after{bottom:6px;left:8px;right:8px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .card-filmed{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;border:0;border-top:1px solid rgba(185,135,91,.35);margin:12px 0 0;padding:10px 0 0;background:none;color:var(--portal-blue);font-family:'JetBrains Mono',monospace;font-size:12px;line-height:18px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .card-filmed svg{width:18px;height:18px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-zone{padding:17px 16px 14px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .idea-eyebrow,body.portal-board[data-portal="med-spa"] #app.concept-dashboard .recent-submissions h2{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:400;line-height:16px;letter-spacing:.08em;text-transform:uppercase;color:var(--portal-copper);margin:0 0 6px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-zone>h2{font-family:'Cormorant Garamond',Georgia,serif;font-size:32px;font-weight:400;line-height:1.1;color:#fff;margin:0 0 7px;letter-spacing:-.02em}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-zone .zsub{font-size:15px;line-height:1.4;color:#fff;margin:0 0 17px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-form{display:flex;flex-direction:column;padding:0;margin:0;border:0;background:none;clip-path:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-form label{font-family:'JetBrains Mono',monospace;font-size:12px;line-height:16px;letter-spacing:.04em;text-transform:uppercase;color:var(--portal-blue);margin:0 0 3px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-form input,body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-form textarea{box-sizing:border-box;width:100%;min-width:0;border:1px solid #aaa;border-radius:8px;background:transparent;color:#fff;font-family:inherit;font-size:15px;line-height:20px;padding:9px 11px;box-shadow:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-form input{height:40px;margin:0 0 17px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-form textarea{height:81px;resize:vertical;margin:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-form .err:empty{display:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-send{display:block;width:100%;height:43px;min-height:43px;margin-top:13px;padding:0;border:0;border-radius:7px;background:var(--portal-blue);color:#000;box-shadow:none;font-family:'Cormorant Garamond',Georgia,serif;font-size:23px;font-weight:600;line-height:43px;text-transform:none;letter-spacing:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-send span{margin-left:8px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .recent-submissions{padding:16px;margin-top:13px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .recent-submissions h2{font-size:11px;margin-bottom:7px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .submissions-empty{font-family:'Cormorant Garamond',Georgia,serif;font-size:22px;line-height:1.1;margin:0;color:#fff}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .recent-submissions ul{list-style:none;margin:0;padding:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .recent-submissions li+li{border-top:1px solid rgba(185,135,91,.3);padding-top:10px;margin-top:10px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .submission-link{font-size:13px;overflow-wrap:anywhere;color:#fff}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .recent-submissions li p{font-size:14px;white-space:pre-wrap;overflow-wrap:anywhere;margin:6px 0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .recent-submissions small{color:var(--portal-blue);font-size:10px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-submit-form :focus-visible,body.portal-board[data-portal="med-spa"] #app.concept-dashboard .card-filmed:focus-visible{outline:2px solid var(--portal-blue);outline-offset:3px}
@media(min-width:761px){body.portal-board[data-portal="med-spa"] #app.concept-dashboard{padding:38px 24px 64px}body.portal-board[data-portal="med-spa"] #app.concept-dashboard .client-signature-name{font-size:34px}}

body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-tab+.dashboard-tab::before{background:rgba(185,135,91,.75)}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .card-filmed svg{fill:none;stroke:currentColor;stroke-width:1.8}
/* Script cards inherit the September 12 working styles above and in access.css. */


/* Keep the approved header; navigation and form sections use the original open presentation. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav,
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .portal-panel{position:relative;border:0;border-radius:0;background:none;box-shadow:none;clip-path:none;backdrop-filter:none;-webkit-backdrop-filter:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after,
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .portal-panel::after{display:none}

/* Faint rule above the open tabs, matching the original section dividers. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::before{content:"";display:block;position:absolute;top:0;left:0;right:0;height:1px;background:rgba(185,135,91,.14);pointer-events:none}

/* Requested card gutters, close tab rules, and small upper-left sign out. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .tiles{margin-left:3.5px;margin-right:3.5px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after{content:"";display:block;position:absolute;top:auto;bottom:0;left:0;right:0;height:1px;background:rgba(185,135,91,.14);pointer-events:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-tab::after{bottom:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-signout{position:absolute;top:-24px;left:8px;display:inline-flex;align-items:center;gap:4px;padding:0;min-height:18px;font-size:10px;font-weight:400;border:0;background:none;color:var(--portal-copper)}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-signout svg{width:14px;height:14px;stroke-width:1.2}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-signout span{font-size:10px}

/* Requested right-aligned sign out and script-style tab frame. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-signout{top:3px;left:auto;right:8px;font-size:12px;gap:5px;min-height:24px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-signout span{font-size:12px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-signout svg{width:18px;height:18px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .client-signature-name{padding-right:86px}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav{margin-left:9px;margin-right:9px;border:1px solid rgba(185,135,91,.34);border-radius:14px;clip-path:polygon(0 0,calc(100% - 24px) 0,100% 24px,100% 100%,0 100%);background:linear-gradient(180deg,rgba(27,28,28,.91) 0%,rgba(16,18,18,.94) 58%,rgba(10,12,12,.96) 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::before{inset:5px;width:auto;height:auto;border:1px solid rgba(185,135,91,.075);border-radius:8px;background:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after{left:auto;bottom:auto;right:-5px;top:11px;width:34px;height:1px;background:rgba(185,135,91,.55);transform:rotate(45deg)}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-tab::after{bottom:4px}

/* Latest review: smaller identity and open navigation, with slightly larger counts. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav{border:0;border-radius:0;background:none;box-shadow:none;clip-path:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::before,
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after{display:none}

/* Requested soft rules around the tabs and lighter sign out. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::before,
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after{content:"";display:block;position:absolute;inset:auto;left:0;right:0;width:auto;height:1px;border:0;border-radius:0;transform:none;background:rgba(185,135,91,.14);pointer-events:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::before{top:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after{bottom:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-signout{color:var(--bronze-bright)}

/* Latest review: open tabs closer to first card, without surrounding rules. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::before,
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after{display:none}

/* Requested frosted navigation panel for contrast over the rings. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav{margin-left:3.5px;margin-right:3.5px;border:1px solid rgba(185,135,91,.34);border-radius:14px;clip-path:polygon(0 0,calc(100% - 24px) 0,100% 24px,100% 100%,0 100%);background:linear-gradient(180deg,rgba(27,28,28,.91),rgba(10,12,12,.96));box-shadow:inset 0 1px 0 rgba(255,255,255,.035);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::before{content:"";display:block;position:absolute;inset:5px;width:auto;height:auto;border:1px solid rgba(185,135,91,.075);border-radius:8px;background:none;pointer-events:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after{content:"";display:block;position:absolute;left:auto;bottom:auto;right:-5px;top:11px;width:34px;height:1px;background:rgba(185,135,91,.34);transform:rotate(45deg);pointer-events:none}

/* Wider navigation and a smaller cut that clears the final tab label. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav{margin-left:-5px;margin-right:-5px;border-radius:10px;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,0 100%)}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after{right:-3px;top:5px;width:18px}

/* Keep only the light inset outline around the frosted tabs. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav{border-color:transparent;box-shadow:none}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::after{display:none}

/* Frost only the thin outline, with balanced room around all three labels. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav{background:none;backdrop-filter:none;-webkit-backdrop-filter:none;clip-path:none;margin-left:2.5px;margin-right:2.5px;padding-inline:8px;grid-template-columns:1fr .8fr 1.3fr}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav::before{inset:5px 13px 5px 8px;background:linear-gradient(180deg,rgba(27,28,28,.384),rgba(10,12,12,.432));backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:0}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav .dashboard-tab{z-index:1}

/* Softer, more transparent script panels. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .tile{background:linear-gradient(180deg,rgba(27,28,28,.384) 0%,rgba(16,18,18,.408) 58%,rgba(10,12,12,.432) 100%);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}

/* Page title first, with the complete client identity beneath it. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-header .dashboard-hero{height:auto}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-identity-slot{position:relative;z-index:1;height:110px}

/* Lift the title and client identity slightly toward the top. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-header .dashboard-hero,
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-identity-slot .client-signature{transform:translateY(-8px)}

/* Selected second displayed image: title first; counts close below identity. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-identity-slot{height:auto;margin-bottom:24.8828125px}

/* Bring the client identity closer to the title without moving following content. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-identity-slot .client-signature{transform:translateY(-13px)}

/* Copper rating label and a single outer frame on script cards. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .script-preview-card .card-rate-label{color:var(--bronze-bright)}
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .script-preview-card::before{display:none}

/* Venzor blue for the script opening link. */
body.portal-board[data-portal="med-spa"] #app.concept-dashboard .script-preview-card .openhint{color:var(--accent)}


/* Existing website demo notes and narrow navigation. */
body.portal-board[data-portal="med-spa"] .demo-saved-note{margin:4px 0 14px;color:var(--muted);font-size:13px;line-height:1.5}
@media (max-width:359px){
  body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav{grid-template-columns:1fr .75fr 1.35fr}
  body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-nav .dashboard-tab{min-width:0;font-size:13px;gap:4px;padding:0 3px}
  body.portal-board[data-portal="med-spa"] #app.concept-dashboard .dashboard-tab svg{width:18px;height:18px;flex-shrink:0}
}
