/* Shared customer portal glass theme. The background belongs to the viewport,
   so there is no inset rounded backdrop or dark strip beside the content. */
body.portal-glass {
  --glass-text: #21364d;
  --glass-muted: #52667d;
  --glass-panel: rgba(255,255,255,.76);
  --glass-inset: rgba(255,255,255,.54);
  --glass-input: rgba(255,255,255,.88);
  --glass-line: rgba(67,98,137,.2);
  --glass-edge: rgba(255,255,255,.9);
  --glass-accent: #235d95;
  --glass-selected: rgba(215,234,255,.9);
  --glass-ring-center: #edf4fc;
  --glass-ring-track: #d1deeb;
  --glass-shadow: 0 20px 60px -28px rgba(34,64,103,.36), inset 0 1px 0 var(--glass-edge);
  color: var(--glass-text);
}
body.portal-glass.theme-dark {
  --glass-text: #e6effa;
  --glass-muted: #b5c5d9;
  --glass-panel: rgba(25,36,53,.78);
  --glass-inset: rgba(35,50,72,.5);
  --glass-input: rgba(13,24,40,.8);
  --glass-line: rgba(167,198,237,.2);
  --glass-edge: rgba(210,230,255,.16);
  --glass-accent: #a5d3ff;
  --glass-selected: rgba(55,88,128,.67);
  --glass-ring-center: #24364b;
  --glass-ring-track: #35485f;
  --glass-shadow: 0 24px 64px -28px rgba(0,0,0,.65), inset 0 1px 0 var(--glass-edge);
}
html body.portal-glass {
  min-height: calc(100vh - 60px);
  background-image: radial-gradient(ellipse at 0% 12%,rgba(93,170,240,.24),transparent 50%),
                    radial-gradient(ellipse at 100% 35%,rgba(146,119,215,.18),transparent 48%),
                    radial-gradient(ellipse at 45% 100%,rgba(90,181,195,.13),transparent 50%);
  background-attachment: fixed;
  color: var(--glass-text);
}
body.portal-glass .portal-content { padding-inline: 12px !important; padding-top: .4rem; }
body.portal-glass .portal-content > main > .row { margin-inline: 0; }
body.portal-glass :is(.card,.modal-content,.portal-area-card,.portal-glass-sheet,.user-account-card,.page-loading-overlay__content) {
  color: var(--glass-text);
  background: var(--glass-panel);
  border: 1px solid var(--glass-line);
  border-radius: 18px;
  box-shadow: var(--glass-shadow);
  -webkit-backdrop-filter: blur(18px) saturate(130%);
  backdrop-filter: blur(18px) saturate(130%);
}
body.portal-glass .card .card { background: var(--glass-inset); box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
body.portal-glass .portal-glass-sheet { padding: clamp(1.2rem,3vw,2.5rem); margin-block: 1rem 2rem; min-width: 0; overflow-wrap: anywhere; }
body.portal-glass .user-account-card { padding: .65rem .85rem; border-radius: 14px; }
body.portal-glass .navbar {
  background: var(--glass-panel) !important;
  border-color: var(--glass-line) !important;
  box-shadow: 0 4px 20px #00000009;
  -webkit-backdrop-filter: blur(18px) saturate(130%);
  backdrop-filter: blur(18px) saturate(130%);
}
body.portal-glass .navbar .nav-link { border-radius: 10px; padding: .65rem .85rem; color: var(--glass-muted) !important; transition: background .18s ease,color .18s ease; }
body.portal-glass .navbar .nav-link:is(.active,:hover,:focus-visible) { background: var(--glass-selected); color: var(--glass-text) !important; }
body.portal-glass .footer { background: var(--glass-inset); border-color: var(--glass-line) !important; }
body.portal-glass :is(.text-muted,.form-text,.user-email,.portal-area-card span span) { color: var(--glass-muted) !important; }
body.portal-glass .user-account-card .fw-semibold { color: var(--glass-text) !important; }
body.portal-glass h1 { letter-spacing: -.035em; font-weight: 650; }
body.portal-glass :is(.form-control,.form-select,.input-group-text) { background-color: var(--glass-input); border-color: var(--glass-line); border-radius: 10px; color: var(--glass-text); }
body.portal-glass :is(.form-control,.form-select):focus { background-color: var(--glass-input); color: var(--glass-text); border-color: var(--glass-accent); box-shadow: 0 0 0 3px #559be42b; }
body.portal-glass :is(.form-control,.form-select)::placeholder { color: var(--glass-muted); opacity: 1; }
body.portal-glass :is(.form-control,.form-select):is(:disabled,[readonly]) { background-color: var(--glass-inset); color: var(--glass-muted); }
body.portal-glass :is(.form-control,.form-select).is-invalid,body.portal-glass .input-validation-error { border-color: #dc3545; }
body.portal-glass select option { background: var(--glass-ring-center); color: var(--glass-text); }
body.portal-glass input::file-selector-button { background: var(--glass-selected); color: var(--glass-text); border-color: var(--glass-line); }
body.portal-glass input:hover::file-selector-button { background: var(--glass-ring-center); }
body.portal-glass :is(.list-group-item,.card-header,.card-footer) { background: var(--glass-inset); color: var(--glass-text); border-color: var(--glass-line); }
body.portal-glass :is(.modal-header,.modal-footer,.ticket-card-header) { border-color: var(--glass-line); }
body.portal-glass .modal-content { border-radius: 22px; }
body.portal-glass .modal-backdrop { background: #091526; }
body.portal-glass.theme-dark { color-scheme: dark; }
body.portal-glass.theme-dark .btn-close { filter: invert(1) grayscale(100%) brightness(200%); }
body.portal-glass.theme-dark .navbar-toggler { border-color: var(--glass-line); }
body.portal-glass.theme-dark .navbar-toggler-icon { filter: invert(1); }
body.portal-glass.theme-dark * { scrollbar-color: #8092a8 #192435; }
body.portal-glass .btn { border-radius: 10px; transition: background-color .18s ease,border-color .18s ease,box-shadow .18s ease; }
body.portal-glass .btn-primary { background: linear-gradient(135deg,#de292e,#b91626); border-color: #ec626977; box-shadow: inset 0 1px 0 #ffffff45; }
body.portal-glass .btn-primary:hover { background: linear-gradient(135deg,#c9232b,#a41221); }
body.portal-glass .btn-outline-secondary { background: var(--glass-inset); border-color: var(--glass-line); color: var(--glass-text); }
body.portal-glass .btn-outline-secondary:is(:hover,:focus-visible) { background: var(--glass-selected); border-color: var(--glass-accent); color: var(--glass-text); }
body.portal-glass .btn-outline-primary { color: var(--glass-accent); border-color: var(--glass-accent); }
body.portal-glass .btn-outline-primary:is(:hover,:focus-visible) { background: var(--glass-selected); color: var(--glass-text); }
body.portal-glass .portal-create-button { border-radius: 2rem; box-shadow: 0 8px 24px #a0102438,inset 0 1px 0 #ffffff45; }
body.portal-glass :is(a,button,input,select,textarea):focus-visible { outline: 2px solid var(--glass-accent); outline-offset: 3px; }
body.portal-glass .portal-area-card { transition: transform .2s ease,border-color .2s ease,box-shadow .2s ease; }
body.portal-glass .portal-area-card .portal-area-icon { color: var(--glass-accent); }
body.portal-glass .ticket-summary-toggle { transition: border-color .2s ease,box-shadow .2s ease; }
body.portal-glass .ticket-summary-toggle h2.h6 { color: var(--glass-accent); }
body.portal-glass .ticket-summary-toggle :is(.small.text-muted,p) { color: var(--glass-muted) !important; }
body.portal-glass .ticket-summary-toggle .fw-semibold { color: var(--glass-text) !important; }
body.portal-glass .ticket-summary-toggle:hover { background: var(--glass-panel); border-color: var(--glass-accent); }
body.portal-glass .ticket-photo-card { background: var(--glass-input); border-color: var(--glass-line); border-radius: 12px; }
body.portal-glass :is(.project-day-dialog,.project-picker-dialog) { background: var(--glass-panel); border-color: var(--glass-line); color: var(--glass-text); border-radius: 20px; box-shadow: var(--glass-shadow); -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px); }
body.portal-glass .project-day-dialog::backdrop { background: #091526aa; }
body.portal-glass .table { --bs-table-bg: transparent; --bs-table-color: var(--glass-text); color: var(--glass-text); border-color: var(--glass-line); }
body.portal-glass .alert { border-radius: 14px; }
body.portal-glass .alert-warning { background: #db9c161c; border-color: #b9811c80; color: #75510d; }
body.portal-glass .alert-danger { background: #d737371a; border-color: #cd424280; color: #9a2525; }
body.portal-glass .alert-success { background: #239e641a; border-color: #239e6480; color: #14613e; }
body.portal-glass .alert-info { background: #3979bf1a; border-color: #3979bf80; color: #245488; }
body.portal-glass.theme-dark .alert-warning { color: #ffe1a6; }
body.portal-glass.theme-dark :is(.alert-danger,.text-danger) { color: #ffb4b4 !important; }
body.portal-glass.theme-dark .alert-success { color: #a1ebc1; }
body.portal-glass.theme-dark .alert-info { color: #b4daff; }
@keyframes portal-glass-arrive { from { opacity: .4; } to { opacity: 1; } }
body.portal-glass :is(.portal-area-card,.portal-glass-sheet,.ticket-summary-toggle) { animation: portal-glass-arrive .25s ease-out; }
@media (hover:hover) { body.portal-glass .portal-area-card:hover { transform: translateY(-3px); border-color: var(--glass-accent); box-shadow: 0 22px 45px -20px #235d9540,inset 0 1px 0 var(--glass-edge); } }
@media (max-width:575px) {
  body.portal-glass .portal-content { padding-inline: 10px !important; }
  body.portal-glass .portal-glass-sheet { margin-inline: .5rem; width: calc(100% - 1rem); }
  body.portal-glass .modal-content { border-radius: 16px; }
}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))) {
  body.portal-glass { --glass-panel: #f3f7fc; }
  body.portal-glass.theme-dark { --glass-panel: #1b293c; }
}
@media (prefers-reduced-transparency:reduce) {
  body.portal-glass { --glass-panel: #f3f7fc; --glass-inset: #eaf1fa; background-image: none; }
  body.portal-glass.theme-dark { --glass-panel: #1b293c; --glass-inset: #24364b; }
  body.portal-glass * { -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
}
@media (prefers-reduced-motion:reduce) {
  body.portal-glass,body.portal-glass *,body.portal-glass *::before,body.portal-glass *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
  body.portal-glass .portal-area-card:hover { transform: none; }
}
