/* =====================================================================
   admin-v2.css — the console on the new design.

   Layered on v2.css (the foundation), event-v2.css (the Information page IS
   the public event page, drawn inside the console, and the masthead becomes
   its hero there) and v2-app.css (what every working page shares). This is
   the console's own furniture: the top bar, the platform rail and the
   competition's dock, the masthead over every other panel, the dashboard,
   list rows, sub-tabs and dialogs — at the proportions the console's tests
   hold it to: toolbars at 48px, list rows padded, the run list fitting a
   1280px screen.

   Screen only, like v2-app.css: the start list, the referee sheet, the boards
   and the QR poster print from theme.css and admin.html's own print block.
   ===================================================================== */
@media screen{
body.console.v2-site{--maxw:1280px}
.console.v2-site main.wrap{max-width:var(--maxw);padding:28px 24px 48px}
.console.v2-site:has(#panel-info:not([hidden])) main.wrap{max-width:1600px;padding-bottom:100px}
/* A photograph kept off the public page is tagged in its top corner here: the
   Gallery settings tab sets the tag lower, under its tick box, and the
   Information page has no tick box. */
.v2-admin #panel-info .gal-cell .file-hidden{top:8px}
/* Edit, on each section of the Information page. It sits in the section's top
   corner, so the headings keep exactly the rules the public page gives them,
   and the heading leaves it room. Details already has a header row, and its
   button sits there, beside the publish state. */
.v2-admin #panel-info .v2-event-section>.sec-edit{position:absolute;top:34px;right:34px;z-index:1}
.v2-admin #panel-info .v2-event-section>.sec-edit+h2{padding-right:96px}
/* centred on each kind of heading: the gallery's is a one-line caption with no
   card around it, the documents' a smaller title in a tighter card */
.v2-admin #panel-info .v2-event-section.ev-strip>.sec-edit{top:-12px;right:0}
.v2-admin #panel-info .v2-event-section.ev-secondary>.sec-edit{top:13px;right:26px}
@media(max-width:1100px){.v2-admin #panel-info .v2-event-section:not(.ev-strip):not(.ev-secondary)>.sec-edit{top:26px;right:26px}}
@media(max-width:480px){.v2-admin #panel-info .v2-event-section:not(.ev-strip):not(.ev-secondary)>.sec-edit{top:16px;right:20px}.v2-admin #panel-info .v2-event-section.ev-secondary>.sec-edit{top:8px;right:18px}}
/* A section with nothing in it yet, as the organizer sees it: named, in a
   dashed box, under its Edit. The public page hides the same section. */
.v2-admin #panel-info .sec-empty{display:block;margin:0;padding:16px 18px;border:1px dashed var(--ev-line);border-radius:3px;background:transparent;color:var(--ev-muted);font-size:13px;line-height:1.5;font-weight:500;white-space:normal}
.v2-admin #panel-info .off-list>.sec-empty{grid-column:1/-1}
.v2-admin #panel-info .ev-strip .gal-grid:has(>.sec-empty){display:block}
.v2-admin #panel-info .map-links>.sec-empty{flex:1 1 100%}
/* ---- the contents rail, on the console's Information page -----------------
   The public page's rail (event-v2.css #evNav, twinned there), without the
   theme's .ev-nav class: theme.css gives any document that CONTAINS an .ev-nav
   a scroll-padding-top of the public page's measured bars, and the console holds
   this rail on every tab, so every in-page jump on every tab would land that far
   short. The jump is made in admin.js instead, measured to land under the top
   bar and this rail. What .ev-nav would have given, it is given here; [hidden]
   has to be restated, because display:flex above outranks it. */
.v2-admin #panel-info #infoNav{padding:0;margin:0 0 24px;max-width:100%;overflow-x:auto;scrollbar-width:none;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}
.v2-admin #panel-info #infoNav[hidden]{display:none}
.v2-admin #panel-info #infoNav::-webkit-scrollbar{display:none}
.v2-admin #panel-info #infoNav a{flex:0 0 auto;text-decoration:none}
/* ---- the bulletin ------------------------------------------------------------
   Its button sits under the masthead's call to action, quieter than it: a print
   an organizer makes now and then, not a way into the competition. */
.v2-admin #admHero.ev-hero .info-prints{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 0}
.v2-admin #admHero.ev-hero .info-prints .btn{color:#fff;border:1px solid #a7bfd059;background:#10172266;border-radius:3px;font-size:12px;font-weight:800;letter-spacing:.025em;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}
.v2-admin #admHero.ev-hero .info-prints .btn:hover{border-color:#fff;background:#ffffff1c}
/* The sheet as previewed in its dialog: paper in either theme, so the preview
   is what the printer will make. The console's own tokens are restated light
   inside it, because the schedule, price list and people cards read them. */
#bulModal .bul-modal{max-width:760px}
#bulModal .bul-sheet{color-scheme:light;--text:#111;--muted:#555;--line:#d5d9e0;--line-strong:#b9c0ca;--card:#fff;--surface-2:#f3f5f8;--chip-bg:#eef0f3;--hover-bg:#eef0f3;--accent-ink:#0d3b66;
  display:grid;gap:20px;padding:28px;background:#fff;color:#111;border:1px solid #d5d9e0;border-radius:4px}
#bulModal .bul-head{display:flex;gap:18px;align-items:center}
#bulModal .bul-logo{flex:none;width:64px;height:64px;display:grid;place-items:center;overflow:hidden;border:1px solid #d5d9e0;border-radius:4px;background:#eef0f3;color:#10141c;font:600 italic 24px/1 'V2 Display','Arial Narrow',Arial,sans-serif}
#bulModal .bul-logo img{width:100%;height:100%;object-fit:contain}
#bulModal .bul-name{margin:0;color:#10141c;font:600 italic 34px/1 'V2 Display','Arial Narrow',Arial,sans-serif;text-transform:uppercase;overflow-wrap:anywhere}
#bulModal .bul-who,#bulModal .bul-when{margin:6px 0 0;font-size:13px;color:#3d4450}
#bulModal .bul-about{margin:0;font-size:13px;line-height:1.7;white-space:pre-line;color:#222}
#bulModal .bul-sec h5{margin:0 0 10px;font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:#59616f}
#bulModal .pfee-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
#bulModal .pfee{display:flex;align-items:baseline;gap:16px;padding:8px 0;border-bottom:1px solid #e3e6eb}
#bulModal .pfee-amt b{font-weight:800;color:#10141c;font-variant-numeric:tabular-nums}
#bulModal .off-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(200px,100%),1fr));gap:8px}
#bulModal .bul-codes{border-top:1px solid #d5d9e0;padding-top:18px}
#bulModal .bul-scan{margin:0 0 12px;font-size:13px;font-weight:800;color:#10141c}
#bulModal .bul-code-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
#bulModal .bul-code{display:grid;justify-items:center;gap:6px;text-align:center}
#bulModal .bul-qr{width:150px;max-width:100%}
#bulModal .bul-qr svg,#bulModal .bul-qr img{display:block;width:100%;height:auto}
#bulModal .bul-code b{font-size:13px;color:#10141c}
#bulModal .bul-url{font-size:11px;color:#59616f;overflow-wrap:anywhere}
@media(max-width:520px){#bulModal .bul-sheet{padding:18px}#bulModal .bul-name{font-size:26px}#bulModal .bul-code-row{grid-template-columns:1fr}}

/* ---- top bar: the platform's wordmark, at the height the rail sits under -- */
.console.v2-site .topbar{min-height:64px;padding:10px 24px;flex-wrap:nowrap;gap:16px}
.console.v2-site .brandbar{min-width:0}
.console.v2-site #brandHome.v2-brand{padding:0;gap:0;flex-shrink:0}
.console.v2-site #brandHome.v2-brand img{width:148px;height:27px}
.console.v2-site .admin-tag{border-radius:2px;letter-spacing:.1em;text-transform:uppercase;font-size:9px;font-weight:800}
.console.v2-site .usermenu-pop{background:var(--v2-card);border:1px solid var(--v2-line);border-radius:4px}
.console.v2-site .usermenu-item{border-radius:2px}

/* ---- the platform rail, and the competition's dock ----------------------- */
.console.v2-site .tabbar{background:var(--v2-card);border-color:var(--v2-line);box-shadow:none}
.console.v2-site .tabbar .tab{font-family:var(--font);font-weight:700;border-radius:3px;color:var(--v2-muted)}
.console.v2-site .tabbar .tab:hover{background:var(--hover-bg);color:var(--v2-ink)}
.console.v2-site .tabbar .tab.active{background:color-mix(in srgb,var(--v2-brand) 13%,transparent);color:var(--v2-accent-ink)}
.console.v2-site .tabbar .tab-fab{border-radius:3px;background:var(--v2-brand);color:#fff;box-shadow:none}
@media(min-width:901px){
  .console.v2-site #adminTabbar .tab.active{box-shadow:inset 3px 0 0 var(--v2-brand)}
  /* the competition's own menu floats as the public pages' dock does */
  .console.v2-site .tabbar-event{background:#0e141df2;border:1px solid #ffffff26;border-radius:5px;box-shadow:0 16px 46px #00000061;-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);padding:6px}
  .console.v2-site .tabbar-event .tab{color:#c3cedb}
  .console.v2-site .tabbar-event .tab:hover{background:#ffffff16;color:#fff}
  .console.v2-site .tabbar-event .tab.active{background:var(--v2-brand);color:#fff}
  .console.v2-site .tabbar-event .tab.active .tab-fab{background:#fff;color:var(--v2-brand)}
}

/* ---- the masthead ---------------------------------------------------------
   One header over every panel. On Information it is the public event hero
   (event-v2.css, #admHero.ev-hero); everywhere else it is the same dark band
   at working size: the sport and club, what this page is, which competition. */
.console.v2-site #admHero{position:relative;isolation:isolate;overflow:hidden;border:0;border-radius:0;box-shadow:none;background:var(--v2-hero-to,#090b10);background-image:none;color:#f4f5f7;margin:0 0 26px}
.console.v2-site #admHero:not(.ev-hero){padding:30px 36px 28px}
/* at night the page ground is as dark as an unbranded hero, and the band would
   vanish into it: lift it a step and give it an edge */
html:not([data-theme="light"]) .console.v2-site #admHero:not(.ev-hero){background:color-mix(in srgb,var(--v2-hero-to,#090b10) 62%,#26303e);box-shadow:inset 0 0 0 1px var(--v2-line)}
.console.v2-site #admHero:not(.ev-hero):before{content:'';position:absolute;left:0;top:30px;width:10px;height:48px;background:var(--v2-brand);clip-path:polygon(0 0,100% 0,100% 85%,0 100%)}
.console.v2-site #admHero:not(.ev-hero) #ahEyebrow{margin:0 0 10px;color:#c2d6e5;font-size:11px;font-weight:750;letter-spacing:.17em;opacity:1}
.console.v2-site #admHero:not(.ev-hero) #ahTitle{font-family:'V2 Display',Arial,sans-serif;font-size:clamp(34px,3.3vw,52px);font-weight:600;font-style:italic;text-transform:uppercase;letter-spacing:-.01em;line-height:.95;color:#fff;margin:0;overflow-wrap:anywhere}
.console.v2-site #admHero #ahSub{margin-top:12px;color:#ccd6e1;opacity:1;font-size:14px;line-height:1.6}
.console.v2-site #admHero #ahSub:empty{display:none}
.console.v2-site #admHero .dash-who{color:#dbe5ef;opacity:1;margin-top:10px}
/* THE SIGNED-IN ADDRESS WAS BLACK ON BLACK. .who:not(td) strong in theme.css
   paints a name var(--text) — right for the light cards every other .who sits
   on, and exactly the masthead's own background here, so the e-mail beside
   "Super admin" rendered and could not be seen. It takes the band's ink. */
.console.v2-site #admHero .dash-who strong{color:inherit}
.console.v2-site #admHero .tagline{opacity:1}
.console.v2-site #admHero .hero-glider{display:none!important}

/* the competition's status and its four actions, along the foot of the header */
.console.v2-site #ahStatus{position:relative;z-index:2;display:flex;flex-wrap:wrap;align-items:center;gap:10px 12px;margin-top:20px;padding-top:16px;border-top:1px solid #ffffff24}
.console.v2-site #ahStatus .adm-status-k{font-size:10px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#9fb3c6}
.console.v2-site #ahStatusBadge .badge{border-color:#ffffff40;color:#fff;background:#ffffff14}
.console.v2-site #ahStatus .adm-status-acts{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}
.console.v2-site #ahStatus .btn:not(.btn-primary){color:#fff;border-color:#ffffff45;background:#ffffff0d}
.console.v2-site #ahStatus .btn:not(.btn-primary):hover{background:#ffffff1f}
@media(max-width:640px){.console.v2-site #ahStatus .adm-status-acts{margin-left:0;width:100%}}

/* ---- panels --------------------------------------------------------------- */
.console.v2-site .card{padding:24px;margin-top:20px}
.console.v2-site .card h2{font-size:clamp(24px,2vw,30px)}
.console.v2-site .card-narrow{position:relative;padding:32px;max-width:480px}
.console.v2-site .card-narrow:before{content:'';position:absolute;top:-1px;left:32px;width:40px;height:3px;background:var(--v2-brand)}
.console.v2-site .btn{min-height:48px;padding:12px 18px;gap:10px;line-height:22px}
.console.v2-site .btn-lg{min-height:52px;padding:14px 22px}
.console.v2-site .btn-sm{min-height:44px;padding:10px 14px}
.console.v2-site .grid{gap:20px}
.console.v2-site th{font-size:11px;letter-spacing:.06em;padding-top:14px;padding-bottom:14px}
.console.v2-site td{padding-top:12px;padding-bottom:12px}
/* An actions cell stays a TABLE CELL. theme.css makes td.cell-actions a flex
   box to space its buttons, and a cell taken out of table layout stops
   stretching to its row: in the Users table the buttons' row lines ran at their
   own height and the header band stopped short of the column — the bug
   tests/layout_check.js was written about, in a table it does not measure. The
   run list (table.comp-run) is left as it is: its action column is built
   around that flex box and tests/run_probe.js holds its geometry. The buttons
   wrap as inline boxes instead, spaced by their own margins. */
body.console.v2-site:not(.view-list) table.rtable:not(.comp-run) td.cell-actions{display:table-cell;vertical-align:middle;white-space:normal}
body.console.v2-site:not(.view-list) table.rtable:not(.comp-run) td.cell-actions > .btn{margin:3px 6px 3px 0;vertical-align:middle;white-space:nowrap}

/* the dashboard: the numbers in the design's figures */
.console.v2-site .dash-stats{gap:16px}
.console.v2-site .dash-stat,.console.v2-site .dash-chart{padding:20px;margin-top:0}
.console.v2-site .ds-k{font-size:10px;font-weight:750;letter-spacing:.12em;text-transform:uppercase;color:var(--v2-muted)}
.console.v2-site .ds-v{font-family:'V2 Display',Arial,sans-serif;font-size:44px;font-weight:600;font-style:italic;line-height:1;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.console.v2-site .ds-of{font-family:var(--font);font-style:normal}
.console.v2-site .meter,.console.v2-site .meter-fill{border-radius:0}
.console.v2-site .dash-h{margin-bottom:16px;font-size:15px}

/* The entries chart and the calendar share their row half and half. Each
   competition's count is a block of its own — the name, the bar, the number in
   the design's figures — and the whole block is the way into it. With nothing
   to chart the month takes the row, as theme.css already arranges. */
.console.v2-site .dash-two{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:stretch}
.console.v2-site .dash-two:has(> [hidden]){grid-template-columns:minmax(0,1fr)}
.console.v2-site .dash-two > .card{min-width:0}
.console.v2-site #evBars{max-width:none;gap:10px;margin-top:18px}
.console.v2-site #evBars .bc-row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"label n" "bar n";align-items:center;gap:12px 20px;padding:16px 18px;background:var(--v2-paper);border:1px solid var(--v2-line);border-left:3px solid var(--v2-brand);border-radius:2px;transition:border-color .2s,background .2s}
.console.v2-site #evBars .bc-row:hover{background:var(--hover-bg);border-color:var(--v2-ink);border-left-color:var(--v2-brand)}
.console.v2-site #evBars .bc-label{grid-area:label;font-size:15px;font-weight:750;color:var(--v2-ink)}
.console.v2-site #evBars .bc-bar{grid-area:bar;height:8px;background:var(--chip-bg)}
.console.v2-site #evBars .bc-fill{border-radius:0;background:var(--v2-brand)}
.console.v2-site #evBars .bc-n{grid-area:n;min-width:2ch;font-family:'V2 Display',Arial,sans-serif;font-size:44px;font-style:italic;font-weight:600;line-height:1;text-align:right;color:var(--v2-ink)}

/* The calendar at half the row: a month you can read, and the list under it
   in a track that may shrink — a grid item will not narrow below its content
   by default, so one long competition name pushed the list out of the card. */
.console.v2-site .cal-nav{gap:8px}
.console.v2-site .cal-nav .icon-btn{width:36px;height:36px;min-width:36px;min-height:36px}
.console.v2-site .cal-card .cal-title{min-width:9em;font-family:'V2 Display',Arial,sans-serif;font-size:22px;font-style:italic;font-weight:600;text-transform:uppercase;letter-spacing:0}
.console.v2-site .cal-grid{gap:4px;margin-top:18px}
.console.v2-site .cal-dow{font-size:10px;letter-spacing:.12em;padding-bottom:6px}
.console.v2-site .cal-day{height:40px;border-radius:2px;font-size:13px}
.console.v2-site .cal-day.is-today{background:transparent;box-shadow:inset 0 0 0 1px var(--v2-ink)}
.console.v2-site .cal-day.has-ev{background:color-mix(in srgb,var(--v2-brand) 12%,transparent);color:var(--v2-accent-ink)}
.console.v2-site .cal-day.has-ev:hover{background:var(--v2-brand);color:#fff}
.console.v2-site .cal-dot{bottom:6px;width:12px;height:2px;margin-left:-6px;border-radius:0;background:var(--v2-brand)}
.console.v2-site .cal-day.has-ev:hover .cal-dot{background:#fff}
.console.v2-site .cal-list{grid-template-columns:minmax(0,1fr);gap:6px;margin-top:16px;padding-top:14px;border-top:1px solid var(--v2-line)}
.console.v2-site .cal-item{min-width:0;gap:12px;padding:10px 12px;border:1px solid var(--v2-line);border-radius:2px;background:var(--v2-paper)}
.console.v2-site .cal-item:hover{border-color:var(--v2-ink);background:var(--hover-bg)}
.console.v2-site .cal-d{min-width:34px;height:34px;border-radius:2px;background:var(--v2-brand);color:#fff;font-family:'V2 Display',Arial,sans-serif;font-size:18px;font-style:italic;font-weight:600}
.console.v2-site .cal-n{font-size:14px}
.console.v2-site .cal-item .s-meta{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--v2-muted)}
@media(max-width:900px){.console.v2-site .dash-two{grid-template-columns:minmax(0,1fr)}}

/* list rows, cards of competitions, rosters */
.console.v2-site .ev-card-admin{min-height:0}
.console.v2-site .ev-card-admin:hover{transform:none;box-shadow:none}
.console.v2-site .ev-card-admin .ev-main{padding:18px;gap:10px}
.console.v2-site .ev-card-admin .ev-title{font-size:18px}
.console.v2-site .scope-item{padding:16px 20px;gap:16px}
.console.v2-site .scope-item > span:first-child{display:flex;flex-direction:column;gap:5px}
.console.v2-site .scope-item > span:first-child > br{display:none}
.console.v2-site .scope-item .s-name,.console.v2-site .scope-item .s-meta{margin:0;line-height:1.45}
/* A latest entry leads with the face; the rule above stacks a row's first span,
   so this one lays the face beside the name block instead. */
.console.v2-site .scope-item > span.reg-who{flex-direction:row;align-items:center;gap:12px}
.console.v2-site .scope-item .reg-txt{display:flex;flex-direction:column;gap:5px;min-width:0}
.console.v2-site .scope-item .reg-txt > br{display:none}
.console.v2-site .off-row{gap:12px}
.console.v2-site .off-row .icon-btn{width:48px;height:48px}
/* v2.css pads every box 14px a side, which laid the currency over the amount. */
.console.v2-site .fee-amt input{padding-right:52px}
.console.v2-site .ev-acts{gap:10px}
.console.v2-site .admin-team-member{display:flex;flex-wrap:wrap;gap:6px 12px;justify-content:space-between;padding:8px 0}
.console.v2-site .admin-team-member + .admin-team-member{border-top:1px solid var(--v2-line)}

/* sub-tabs and dialogs */
.console.v2-site .subtabs{padding:4px;gap:4px;background:var(--v2-card);border:1px solid var(--v2-line)}
.console.v2-site .subtab{min-height:44px;padding:10px 16px;display:inline-flex;align-items:center;font-weight:700}
.console.v2-site .modal{background:var(--v2-card);border:1px solid var(--v2-line);border-radius:4px;box-shadow:0 30px 80px #0000004d}
.console.v2-site .modal-head{padding-bottom:18px}
.console.v2-site .modal-foot{padding-top:18px;gap:12px}

/* Settings: a contact person is one row of four boxes, and the map's preview
   sits under the coordinates it shows. */
.console.v2-site .off-row.contact-row{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,.9fr) minmax(0,1.2fr) auto}
.console.v2-site #s_mapPreview{position:relative;aspect-ratio:16/9;max-height:360px;margin-top:18px;border:1px solid var(--v2-line);border-radius:3px;overflow:hidden;background:var(--chip-bg)}
.console.v2-site #s_mapPreview iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
/* Settings → the map: a name offers the search on Google Maps under the box,
   the zoom is a slider between a step down and a step up, and a line under
   the preview says what it keeps. */
.console.v2-site #mapFind{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;margin-top:10px}
.console.v2-site #mapFind[hidden],.console.v2-site #mapPreviewHint[hidden]{display:none}
.console.v2-site #mapFind .btn{max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:left}
.console.v2-site #mapFind .hint{flex:1 1 240px;margin:0}
.console.v2-site .map-zoom{display:flex;align-items:center;gap:10px;min-height:48px}
.console.v2-site .map-zoom .btn{flex:none;width:40px;min-width:40px;height:40px;padding:0;justify-content:center;font-size:18px;line-height:1}
.console.v2-site #s_mapZoom{flex:1 1 auto;min-width:0;width:auto;height:auto;min-height:0;padding:0;border:0;background:none;box-shadow:none;accent-color:var(--v2-brand)}
.console.v2-site #mapZoomVal{min-width:2ch;text-align:center;font-weight:750;font-variant-numeric:tabular-nums}
.console.v2-site #mapPreviewHint{margin:8px 0 0}
/* The two bands at the foot of the Information page: the console's column is
   their width, Edit sits in the heading's top corner, and the form — which
   does not send from here — is followed by what it has brought in. */
.v2-admin #panel-info .ev-band{margin-top:64px}
.v2-admin #panel-info .band-head{max-width:none;padding-left:0;padding-right:0}
.v2-admin #panel-info .band-head>.sec-edit{position:absolute;top:0;right:0;z-index:1}
.v2-admin #panel-info .map-card{left:28px}
.v2-admin #panel-info .ev-form{padding:0}
.v2-admin #panel-info .ev-field input:disabled,.v2-admin #panel-info .ev-field textarea:disabled{cursor:default;opacity:1}
.v2-admin #panel-info .form-off{max-width:640px;margin:0 auto}
.v2-admin #panel-info .form-off[hidden]{display:none}
.v2-admin #panel-info .form-messages{max-width:900px;margin:34px auto 0}
.v2-admin #panel-info .form-messages[hidden]{display:none}
.v2-admin #panel-info .msgs-head{display:flex;align-items:center;gap:10px;margin:0 0 12px;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--ev-muted)}
.v2-admin #panel-info .msgs-head .n{padding:1px 8px;border-radius:999px;background:var(--ev-soft);color:var(--ev-ink);letter-spacing:0}
.v2-admin #panel-info .msgs{display:grid;gap:10px;margin:0;padding:0;list-style:none}
.v2-admin #panel-info .msg{padding:16px 18px;background:var(--ev-surface);border:1px solid var(--ev-line);border-radius:12px}
.v2-admin #panel-info .msg-top{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;font-size:13px}
.v2-admin #panel-info .msg-top b{font-weight:750;color:var(--ev-ink)}
.v2-admin #panel-info .msg-top a{color:var(--ev-muted)}
.v2-admin #panel-info .msg-when{margin-left:auto;font-size:11px;color:var(--ev-muted);font-variant-numeric:tabular-nums}
.v2-admin #panel-info .msg-state{padding:2px 8px;border-radius:999px;font-size:10px;font-weight:750;letter-spacing:.06em;text-transform:uppercase}
.v2-admin #panel-info .msg-state.is-sent{background:var(--ev-fee-bg);color:var(--ev-fee-ink)}
.v2-admin #panel-info .msg-state.is-unsent{background:#d6454514;color:#b43a3a}
.v2-admin #panel-info .msg-text{margin:10px 0 0;white-space:pre-line;font-size:14px;line-height:1.7;color:var(--ev-ink)}
@media(max-width:760px){.v2-admin #panel-info .map-card{left:auto;margin:-70px 16px 0}.v2-admin #panel-info .band-head>.sec-edit{position:relative;top:auto;right:auto;display:flex;margin:0 0 14px auto}}
.console.v2-site #s_formToWrap[hidden]{display:none}
@media(max-width:720px){.console.v2-site .off-row.contact-row{grid-template-columns:minmax(0,1fr) auto}.console.v2-site .off-row.contact-row > input{grid-column:1}.console.v2-site .off-row.contact-row > .icon-btn{grid-column:2;grid-row:1}}

@media(max-width:640px){
  body.console.v2-site{--maxw:100%}
  .console.v2-site main.wrap{padding:18px 12px 40px}
  .console.v2-site:has(#panel-info:not([hidden])) main.wrap{padding-bottom:100px}
  .console.v2-site .topbar{min-height:60px;padding:10px 12px;gap:6px}
  .console.v2-site .brandbar{flex:1 1 auto}
  .console.v2-site #brandHome.v2-brand img{width:110px;height:20px}
  .console.v2-site .card{padding:20px 16px}
  .console.v2-site .card-narrow{padding:24px}
  .console.v2-site .card-narrow:before{left:24px}
  .console.v2-site .dash-stats{gap:10px}
  .console.v2-site .dash-stat,.console.v2-site .dash-chart{padding:16px;margin:0}
  .console.v2-site .ds-v{font-size:34px}
  .console.v2-site #admHero:not(.ev-hero){padding:24px 20px 22px}
  .console.v2-site #admHero:not(.ev-hero):before{top:24px;width:6px;height:40px}
  .console.v2-site #admHero:not(.ev-hero) #ahTitle{font-size:30px}
  .console.v2-site .modal{padding:20px 16px}
  .console.v2-site .subtab{padding:10px 12px}
}
}
