/* CASTLE v219 slick UI polish
   Final visual unification pass for the live wwwroot bundle. This is a safe,
   presentation-only overlay: no API routes, storage keys or auth logic change. */
@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500');

@font-face{font-family:'Frutiger LT Pro';src:url('/assets/fonts/FrutigerLTPro-Light.otf') format('opentype');font-weight:300;font-style:normal;font-display:swap;}
@font-face{font-family:'Frutiger LT Pro';src:url('/assets/fonts/FrutigerLTPro-Roman.otf') format('opentype');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Frutiger LT Pro';src:url('/assets/fonts/FrutigerLTPro-Italic.otf') format('opentype');font-weight:400;font-style:italic;font-display:swap;}
@font-face{font-family:'Frutiger LT Pro';src:url('/assets/fonts/FrutigerLTPro-Bold.otf') format('opentype');font-weight:700;font-style:normal;font-display:swap;}
@font-face{font-family:'Frutiger LT Pro';src:url('/assets/fonts/FrutigerLTPro-BoldItalic.otf') format('opentype');font-weight:700;font-style:italic;font-display:swap;}
@font-face{font-family:'Frutiger LT Pro';src:url('/assets/fonts/FrutigerLTPro-Black.otf') format('opentype');font-weight:900;font-style:normal;font-display:swap;}

:root{
  --castle-ui-font:'Frutiger LT Pro', 'Helvetica Neue', Arial, sans-serif;
  --castle-mono-font:'IBM Plex Mono', 'SF Mono', Menlo, monospace;
  --castle-bg:#F5F4F0;
  --castle-surface:#FFFFFF;
  --castle-panel:#F0EFEB;
  --castle-ink:#111110;
  --castle-ink-2:#3A3A38;
  --castle-ink-3:#666B64;
  --castle-muted:#949891;
  --castle-rule:rgba(17,17,16,.085);
  --castle-rule-strong:rgba(17,17,16,.14);
  --castle-cyan:#009BAA;
  --castle-cyan-2:#37BDB7;
  --castle-cyan-soft:rgba(0,155,170,.085);
  --castle-cyan-border:rgba(0,155,170,.28);
  --castle-green:#1A8A4A;
  --castle-amber:#C98918;
  --castle-mag:#B2478F;
  --castle-red:#C0392B;
  --castle-radius-xl:22px;
  --castle-radius-lg:16px;
  --castle-shadow-soft:0 1px 2px rgba(17,17,16,.04),0 14px 42px rgba(17,35,32,.075);
  --castle-shadow-lift:0 6px 16px rgba(17,17,16,.07),0 28px 74px rgba(17,35,32,.10);
  --fd:'Frutiger LT Pro', 'Helvetica Neue', Arial, sans-serif;
  --fb:'Frutiger LT Pro', 'Helvetica Neue', Arial, sans-serif;
  --fm:'IBM Plex Mono', 'SF Mono', Menlo, monospace;
}

html.castle-v219-ui body{
  background:var(--castle-bg)!important;
  color:var(--castle-ink)!important;
  -webkit-font-smoothing:antialiased;
  text-rendering:geometricPrecision;
}
html.castle-v219-ui body:not(.castle-vote-mobile-v176)::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  z-index:0;
  background-image:linear-gradient(rgba(0,155,170,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(0,155,170,.045) 1px,transparent 1px);
  background-size:60px 60px;
  -webkit-mask-image:radial-gradient(ellipse 88% 70% at 50% 0%,#000 12%,transparent 78%);
  mask-image:radial-gradient(ellipse 88% 70% at 50% 0%,#000 12%,transparent 78%);
}
html.castle-v219-ui body > *{position:relative;z-index:1;}

/* Unified shell / top navigation */
html.castle-v219-ui .nav,
html.castle-v219-ui .chrome-top,
html.castle-v219-ui .topbar{
  min-height:64px!important;
  background:rgba(255,255,255,.92)!important;
  border-bottom:1px solid var(--castle-rule)!important;
  box-shadow:0 1px 0 rgba(255,255,255,.8),0 10px 34px rgba(24,39,35,.035)!important;
  backdrop-filter:blur(16px)!important;
  -webkit-backdrop-filter:blur(16px)!important;
}
html.castle-v219-ui .nav{height:64px!important;padding-left:28px!important;padding-right:28px!important;}
html.castle-v219-ui .nav-logo,
html.castle-v219-ui .nav-logo:link,
html.castle-v219-ui .nav-logo:visited,
html.castle-v219-ui .ct-icon,
html.castle-v219-ui .ct-icon:link,
html.castle-v219-ui .ct-icon:visited{
  color:var(--castle-ink)!important;
  text-decoration:none!important;
}
html.castle-v219-ui .nav-logo{display:flex!important;align-items:center!important;gap:13px!important;min-width:max-content!important;}
html.castle-v219-ui .nav-logo img:not([src*="banner"]),
html.castle-v219-ui .ct-icon img,
html.castle-v219-ui .join-logo-mark img,
html.castle-v219-ui .castle-icon img{
  width:44px!important;
  height:44px!important;
  object-fit:contain!important;
  border-radius:14px!important;
  box-shadow:0 12px 30px rgba(17,20,19,.13)!important;
}
html.castle-v219-ui .nav-logo img[src*="banner"]{
  height:28px!important;
  width:auto!important;
  max-width:210px!important;
  object-fit:contain!important;
  opacity:.98!important;
}
html.castle-v219-ui .nav-logo-fallback,
html.castle-v219-ui .ct-brand-name,
html.castle-v219-ui .brand,
html.castle-v219-ui .core-wordmark{
  font-weight:900!important;
  letter-spacing:.14em!important;
  color:var(--castle-ink)!important;
  text-transform:uppercase!important;
}
html.castle-v219-ui .nav-logo-fallback span,
html.castle-v219-ui .ct-brand-name span,
html.castle-v219-ui .brand span{color:var(--castle-cyan)!important;}
html.castle-v219-ui .ct-brand-sub{color:var(--castle-muted)!important;}
html.castle-v219-ui .nav-right,
html.castle-v219-ui .nav-r,
html.castle-v219-ui .ct-right{gap:10px!important;}
html.castle-v219-ui .nav-badge,
html.castle-v219-ui .mode-badge,
html.castle-v219-ui .room-pill,
html.castle-v219-ui .nav-link.active{
  border-radius:999px!important;
  border-color:var(--castle-cyan-border)!important;
  background:var(--castle-cyan-soft)!important;
  color:var(--castle-cyan)!important;
}
html.castle-v219-ui #welcome-user,
html.castle-v219-ui .nav-welcome,
html.castle-v219-ui .nav-user,
html.castle-v219-ui .nav-signout,
html.castle-v219-ui .nav-signout-pill,
html.castle-v219-ui #nav-signout{
  border-radius:999px!important;
  border:1px solid rgba(0,155,170,.20)!important;
  background:rgba(255,255,255,.76)!important;
  color:var(--castle-ink)!important;
  box-shadow:0 6px 20px rgba(22,54,43,.05)!important;
  padding:.52rem .88rem!important;
  font-weight:700!important;
}
html.castle-v219-ui .nav-signout,
html.castle-v219-ui .nav-signout-pill,
html.castle-v219-ui #nav-signout{background:var(--castle-cyan-soft)!important;}

/* Secondary pages: remove the old giant bottom room tile duplicate nav. */
html.castle-v219-ui body.castle-v219-secondary .area-room-grid.no-print,
html.castle-v219-ui body.castle-v219-secondary .room-grid.no-print,
html.castle-v219-ui body.castle-v219-secondary .room-nav-tiles,
html.castle-v219-ui body.castle-v219-secondary .room-nav-grid,
html.castle-v219-ui .castle-v219-hidden-secondary-nav{
  display:none!important;
  visibility:hidden!important;
  height:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
}

/* Page rhythm */
html.castle-v219-ui body.castle-v219-secondary .shell,
html.castle-v219-ui body.castle-v219-secondary .page,
html.castle-v219-ui body.castle-v219-secondary .main,
html.castle-v219-ui body.castle-v219-secondary main{
  position:relative;
}
html.castle-v219-ui body.castle-v219-secondary .shell{max-width:min(1360px,100%);margin:0 auto;width:100%;}
html.castle-v219-ui body.castle-v219-secondary .hero{
  background:transparent!important;
  border-bottom:0!important;
  text-align:left!important;
  padding:42px 28px 24px!important;
  max-width:1240px!important;
  margin:0 auto!important;
}
html.castle-v219-ui body.castle-v219-secondary .hero-eyebrow,
html.castle-v219-ui body.castle-v219-secondary .eyebrow,
html.castle-v219-ui body.castle-v219-secondary .page-kicker,
html.castle-v219-ui body.castle-v219-secondary .tile-customer,
html.castle-v219-ui body.castle-v219-secondary .detail-label,
html.castle-v219-ui body.castle-v219-secondary .filter-label{
  color:var(--castle-cyan)!important;
  letter-spacing:.18em!important;
}
html.castle-v219-ui body.castle-v219-secondary .hero-eyebrow{justify-content:flex-start!important;}
html.castle-v219-ui body.castle-v219-secondary .hero-eyebrow::before{display:none!important;}
html.castle-v219-ui body.castle-v219-secondary .hero-title,
html.castle-v219-ui body.castle-v219-secondary h1{
  font-size:clamp(36px,5vw,58px)!important;
  line-height:.98!important;
  letter-spacing:-.01em!important;
  font-weight:900!important;
}
html.castle-v219-ui body.castle-v219-secondary .hero-sub,
html.castle-v219-ui body.castle-v219-secondary .sub,
html.castle-v219-ui body.castle-v219-secondary .muted{
  color:var(--castle-ink-3)!important;
  font-size:16px!important;
  line-height:1.55!important;
}
html.castle-v219-ui body.castle-v219-secondary .main,
html.castle-v219-ui body.castle-v219-secondary .page-content,
html.castle-v219-ui body.castle-v219-secondary .container{
  max-width:1240px!important;
  width:100%!important;
  margin-left:auto!important;
  margin-right:auto!important;
  padding-left:28px!important;
  padding-right:28px!important;
}

/* Controls, inputs and buttons */
html.castle-v219-ui input,
html.castle-v219-ui select,
html.castle-v219-ui textarea,
html.castle-v219-ui .search-input,
html.castle-v219-ui .castle-input,
html.castle-v219-ui .jinput,
html.castle-v219-ui .join-input{
  border-radius:12px!important;
  border:1px solid var(--castle-rule-strong)!important;
  background:rgba(255,255,255,.78)!important;
  color:var(--castle-ink)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.72)!important;
}
html.castle-v219-ui input:focus,
html.castle-v219-ui textarea:focus,
html.castle-v219-ui .search-input:focus,
html.castle-v219-ui .castle-input:focus,
html.castle-v219-ui .jinput:focus,
html.castle-v219-ui .join-input:focus{
  border-color:var(--castle-cyan)!important;
  box-shadow:0 0 0 4px rgba(0,155,170,.10), inset 0 1px 0 rgba(255,255,255,.72)!important;
  outline:none!important;
}
html.castle-v219-ui .btn,
html.castle-v219-ui button,
html.castle-v219-ui .filter-btn,
html.castle-v219-ui .bb-btn,
html.castle-v219-ui .btn-join{
  border-radius:12px!important;
  transition:transform .16s ease,box-shadow .16s ease,background .16s ease,border-color .16s ease!important;
}
html.castle-v219-ui .btn:hover,
html.castle-v219-ui button:not(:disabled):hover,
html.castle-v219-ui .filter-btn:hover,
html.castle-v219-ui .bb-btn:hover,
html.castle-v219-ui .btn-join:hover{transform:translateY(-1px);}
html.castle-v219-ui .btn-p,
html.castle-v219-ui .btn.primary,
html.castle-v219-ui .btn-join,
html.castle-v219-ui .btn-join-submit,
html.castle-v219-ui .bb-btn.primary,
html.castle-v219-ui .bb-btn.cyan{
  background:linear-gradient(135deg,var(--castle-cyan),var(--castle-cyan-2))!important;
  border-color:transparent!important;
  color:#fff!important;
  box-shadow:0 12px 28px rgba(0,155,170,.20)!important;
}
html.castle-v219-ui .filter-btn.active{
  background:var(--castle-ink)!important;
  border-color:var(--castle-ink)!important;
  color:#fff!important;
}
html.castle-v219-ui .filter-btn.cat-active{
  background:var(--castle-cyan-soft)!important;
  border-color:var(--castle-cyan-border)!important;
  color:var(--castle-cyan)!important;
}

/* Cards / tiles */
html.castle-v219-ui .panel,
html.castle-v219-ui .sim-tile,
html.castle-v219-ui .report-tile,
html.castle-v219-ui .tile,
html.castle-v219-ui .details-card,
html.castle-v219-ui .join-card,
html.castle-v219-ui .join-card-mobile,
html.castle-v219-ui .phone-card,
html.castle-v219-ui .scenario-box,
html.castle-v219-ui .option-card,
html.castle-v219-ui .result-row,
html.castle-v219-ui .stat-card,
html.castle-v219-ui .summary-card,
html.castle-v219-ui .visual-card{
  border-radius:var(--castle-radius-lg)!important;
  border:1px solid var(--castle-rule)!important;
  background:rgba(255,255,255,.88)!important;
  box-shadow:var(--castle-shadow-soft)!important;
}
html.castle-v219-ui .tile:hover,
html.castle-v219-ui .sim-tile:hover,
html.castle-v219-ui .report-tile:hover,
html.castle-v219-ui .result-row:hover{
  transform:translateY(-2px)!important;
  box-shadow:var(--castle-shadow-lift)!important;
  border-color:var(--castle-cyan-border)!important;
}
html.castle-v219-ui .sim-tile.expanded,
html.castle-v219-ui .report-tile.active,
html.castle-v219-ui .stat-card.active{
  border-color:var(--castle-cyan)!important;
  box-shadow:0 0 0 3px rgba(0,155,170,.10),var(--castle-shadow-soft)!important;
}
html.castle-v219-ui .tile-grid{gap:18px!important;}
html.castle-v219-ui .report-tile{position:relative!important;overflow:hidden!important;}
html.castle-v219-ui .report-tile::before{background:var(--castle-cyan,var(--cyan))!important;}
html.castle-v219-ui .report-tile[data-status="review"]::before{background:var(--castle-cyan,var(--cyan))!important;}
html.castle-v219-ui .report-tile[data-status="completed"]::before{background:var(--castle-green,var(--green))!important;}
html.castle-v219-ui .report-tile[data-status="due"]::before{background:var(--castle-amber,var(--amber))!important;}
html.castle-v219-ui .report-tile[data-status="draft"]::before,
html.castle-v219-ui .report-tile[data-status="active"]::before{background:var(--castle-mag,var(--mag))!important;}
html.castle-v219-ui .report-tile[data-status="overdue"]::before{background:var(--castle-red,var(--red))!important;}
html.castle-v219-ui .report-tile[data-status="archive"]::before{background:var(--castle-ink-3,var(--ink3))!important;opacity:.45!important;}
html.castle-v219-ui .tile-title,
html.castle-v219-ui .tile-name,
html.castle-v219-ui .panel h2,
html.castle-v219-ui .panel h3{font-weight:900!important;color:var(--castle-ink)!important;}
html.castle-v219-ui .detail-stats,
html.castle-v219-ui .tile-stats{gap:10px!important;}
html.castle-v219-ui .ds-cell,
html.castle-v219-ui .stat,
html.castle-v219-ui .topbar-stat,
html.castle-v219-ui .cover-metric{
  border-radius:12px!important;
  background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(245,244,240,.86))!important;
  border:1px solid var(--castle-rule)!important;
}
html.castle-v219-ui .pill,
html.castle-v219-ui .tile-tag,
html.castle-v219-ui .tile-status,
html.castle-v219-ui .tile-date,
html.castle-v219-ui .tag{
  border-radius:999px!important;
  padding:4px 9px!important;
}

/* Reports and admin tables */
html.castle-v219-ui .user-table,
html.castle-v219-ui table{border-collapse:separate!important;border-spacing:0!important;}
html.castle-v219-ui .user-table th,
html.castle-v219-ui .user-table td{border-color:var(--castle-rule)!important;}
html.castle-v219-ui .panel-h,
html.castle-v219-ui .modal-head,
html.castle-v219-ui .preview-toolbar,
html.castle-v219-ui .report-toolbar{
  border-color:var(--castle-rule)!important;
}
html.castle-v219-ui .empty-state,
html.castle-v219-ui .empty{color:var(--castle-muted)!important;}
html.castle-v219-ui .empty-state .es-icon{filter:grayscale(.2);opacity:.72;}

/* Join/vote screens should look like the Gatehouse rather than an older mobile view. */
html.castle-v219-ui body.castle-vote-mobile-v176{
  background:var(--castle-bg)!important;
}
html.castle-v219-ui body.castle-vote-mobile-v176::before{
  content:"";
  position:fixed;
  inset:0;
  pointer-events:none;
  background-image:linear-gradient(rgba(0,155,170,.04) 1px,transparent 1px),linear-gradient(90deg,rgba(0,155,170,.04) 1px,transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(ellipse 88% 72% at 50% 0%,#000 12%,transparent 76%);
  mask-image:radial-gradient(ellipse 88% 72% at 50% 0%,#000 12%,transparent 76%);
}
html.castle-v219-ui body.castle-vote-mobile-v176 .topbar{height:56px!important;padding:0 20px!important;}
html.castle-v219-ui body.castle-vote-mobile-v176 .mobile-wrap{
  max-width:520px!important;
  min-height:calc(100dvh - 56px)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:32px 18px!important;
}
html.castle-v219-ui body.castle-vote-mobile-v176 .join-shell{padding:0!important;width:100%!important;max-width:420px!important;}
html.castle-v219-ui body.castle-vote-mobile-v176 .join-logo{margin-bottom:22px!important;text-align:center!important;}
html.castle-v219-ui body.castle-vote-mobile-v176 .join-logo-mark img{width:58px!important;height:58px!important;margin:0 auto 10px!important;}
html.castle-v219-ui body.castle-vote-mobile-v176 .join-title{font-size:28px!important;letter-spacing:.03em!important;}
html.castle-v219-ui body.castle-vote-mobile-v176 .join-card-mobile{padding:24px!important;border-radius:20px!important;}
html.castle-v219-ui body.castle-vote-mobile-v176 .btn-join-submit{width:100%!important;min-height:50px!important;}

/* Command-live readability and overflow fixes. */
html.castle-v219-ui body.castle-command-v176 .chrome-top{height:64px!important;grid-template-columns:minmax(220px,1fr) minmax(260px,auto) minmax(250px,1fr)!important;}
html.castle-v219-ui body.castle-command-v176 .ct-icon{width:44px!important;height:44px!important;border-radius:14px!important;padding:0!important;background:transparent!important;}
html.castle-v219-ui body.castle-command-v176 .ct-brand-name{font-size:13px!important;}
html.castle-v219-ui body.castle-command-v176 .sim-centre{padding:24px 28px 84px!important;}
html.castle-v219-ui body.castle-command-v176 .join-step-text,
html.castle-v219-ui body.castle-command-v176 .join-step-text code,
html.castle-v219-ui body.castle-command-v176 .join-instruction-card,
html.castle-v219-ui body.castle-command-v176 .join-instructions-card,
html.castle-v219-ui body.castle-command-v176 .join-instructions-steps *{
  overflow-wrap:anywhere!important;
  word-break:normal!important;
}
html.castle-v219-ui body.castle-command-v176 .join-step-text code{
  white-space:normal!important;
  display:inline!important;
  line-height:1.75!important;
}
html.castle-v219-ui body.castle-command-v176 .bottom-bar{box-shadow:0 -10px 34px rgba(24,39,35,.055)!important;}
html.castle-v219-ui body.castle-command-v176 .castle-text-size-control{
  box-shadow:0 10px 34px rgba(22,54,43,.10)!important;
}

/* Status/footer bars */
html.castle-v219-ui .status-bar,
html.castle-v219-ui .sbar{
  background:rgba(255,255,255,.92)!important;
  border-top:1px solid var(--castle-rule)!important;
  color:var(--castle-muted)!important;
}
html.castle-v219-ui .s-dot,
html.castle-v219-ui .sdot,
html.castle-v219-ui .dot{background:var(--castle-green)!important;}

@media(max-width:900px){
  html.castle-v219-ui .nav{padding-left:16px!important;padding-right:16px!important;}
  html.castle-v219-ui .nav-logo img[src*="banner"]{height:24px!important;max-width:170px!important;}
  html.castle-v219-ui .room-pill-nav{display:none!important;}
  html.castle-v219-ui body.castle-v219-secondary .hero{padding:28px 18px 18px!important;}
  html.castle-v219-ui body.castle-v219-secondary .main,
  html.castle-v219-ui body.castle-v219-secondary .page-content,
  html.castle-v219-ui body.castle-v219-secondary .container{padding-left:18px!important;padding-right:18px!important;}
  html.castle-v219-ui .tile-grid{grid-template-columns:1fr!important;}
  html.castle-v219-ui body.castle-command-v176 .chrome-top{display:flex!important;flex-wrap:wrap!important;height:auto!important;padding:10px 14px!important;}
  html.castle-v219-ui body.castle-command-v176 .ct-center{order:3;width:100%;align-items:flex-start!important;text-align:left!important;}
  html.castle-v219-ui body.castle-command-v176 .sim-centre{padding:18px 16px 108px!important;}
}
@media(max-width:560px){
  html.castle-v219-ui .nav-logo-fallback,
  html.castle-v219-ui .ct-brand-name{font-size:12px!important;letter-spacing:.08em!important;}
  html.castle-v219-ui #welcome-user,.nav-welcome{display:none!important;}
  html.castle-v219-ui body.castle-vote-mobile-v176 .mobile-wrap{align-items:flex-start!important;padding-top:28px!important;}
}

/* v219.1: legacy area-room-grid markup exists without no-print/aria on users.html. */
html.castle-v219-ui body.castle-v219-secondary .area-room-grid,
html.castle-v219-ui body.castle-v219-secondary .room-grid{
  display:none!important;
  visibility:hidden!important;
  height:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
}
