@import url("https://fonts.googleapis.com/css2?family=Crimson+Pro:wght@400;500;600;700&family=Source+Sans+3:wght@400;500;600;700&display=swap");

:root {
  --portal-bg: #eee4d6;
  --portal-bg-soft: #e3d6c5;
  --portal-bg-raised: rgba(246, 239, 229, 0.94);
  --portal-surface: rgba(250, 246, 239, 0.92);
  --portal-surface-strong: rgba(248, 240, 229, 0.99);
  --portal-surface-muted: rgba(235, 225, 211, 0.78);
  --portal-text: #231f1c;
  --portal-text-soft: #51493f;
  --portal-text-muted: #746a5f;
  --portal-line: rgba(49, 41, 35, 0.14);
  --portal-line-strong: rgba(49, 41, 35, 0.24);
  --portal-gold: #856d48;
  --portal-gold-soft: rgba(143, 116, 72, 0.16);
  --portal-green: #596a56;
  --portal-sage-soft: rgba(89, 106, 86, 0.13);
  --portal-clay: #a56f60;
  --portal-clay-soft: rgba(165, 111, 96, 0.13);
  --portal-blue: #516f88;
  --portal-blue-soft: rgba(81, 111, 136, 0.12);
  --portal-red: #ad7467;
  --portal-shadow: 0 20px 48px rgba(29, 24, 20, 0.09);
  --portal-shadow-soft: 0 10px 24px rgba(29, 24, 20, 0.055);
  --portal-radius-lg: 28px;
  --portal-radius-md: 20px;
  --portal-radius-sm: 14px;
  --portal-shell: min(1320px, calc(100% - 40px));
  --portal-font-display: "Crimson Pro", "Iowan Old Style", "Palatino Linotype", Georgia, serif;
  --portal-font-body: "Source Sans 3", "Avenir Next", "Segoe UI", "Helvetica Neue", Arial, sans-serif;
  --portal-page-dissolve-duration: 180ms;
  --portal-page-dissolve-ease: cubic-bezier(0.22, 1, 0.36, 1);
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

[hidden] {
  display: none !important;
}

html {
  background: var(--portal-bg);
  scroll-behavior: smooth;
}

@view-transition {
  navigation: auto;
}

::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: var(--portal-page-dissolve-duration);
  animation-timing-function: var(--portal-page-dissolve-ease);
  mix-blend-mode: normal;
}

::view-transition-old(root) {
  animation-name: portal-view-old;
}

::view-transition-new(root) {
  animation-name: portal-view-new;
}

@keyframes portal-view-old {
  from {
    opacity: 1;
    filter: blur(0);
    transform: translate3d(0, 0, 0) scale(1);
  }

  to {
    opacity: 0.985;
    filter: blur(0.24px);
    transform: translate3d(0, 0, 0) scale(0.9986);
  }
}

@keyframes portal-view-new {
  from {
    opacity: 0.97;
    filter: saturate(0.99) blur(0.38px);
    transform: translate3d(0, 4px, 0) scale(1.002);
  }

  to {
    opacity: 1;
    filter: saturate(1) blur(0);
    transform: translate3d(0, 0, 0) scale(1);
  }
}

@media (prefers-reduced-motion: reduce) {
  ::view-transition-old(root),
  ::view-transition-new(root) {
    animation-duration: 1ms;
  }
}

body {
  margin: 0;
  min-height: 100vh;
  color: var(--portal-text);
  font-family: var(--portal-font-body);
  background:
    radial-gradient(circle at 12% 0%, rgba(255, 255, 255, 0.42), transparent 28%),
    radial-gradient(circle at 88% 12%, rgba(132, 109, 72, 0.11), transparent 30%),
    radial-gradient(circle at bottom right, rgba(81, 101, 82, 0.09), transparent 30%),
    linear-gradient(180deg, #f3eadf 0%, #eadfd0 54%, #e0d2c1 100%);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

body.portal-body--guarded {
  visibility: visible;
}

body.portal-body--ready {
  visibility: visible;
}

body.portal-body--error {
  visibility: visible;
}

img {
  display: block;
  max-width: 100%;
}

button,
input,
select,
textarea {
  font: inherit;
}

button {
  cursor: pointer;
}

a {
  color: inherit;
  text-decoration: none;
}

.portal-app,
.portal-login {
  width: var(--portal-shell);
  margin: 0 auto;
  transition:
    opacity var(--portal-page-dissolve-duration) ease,
    transform var(--portal-page-dissolve-duration) ease,
    filter var(--portal-page-dissolve-duration) ease;
}

body.portal-body--navigating .portal-app,
body.portal-body--navigating .portal-login {
  opacity: 0.42;
  transform: translateY(6px);
  filter: saturate(0.98);
}

.portal-login-body {
  display: grid;
  min-height: 100vh;
  place-items: center;
  padding: 24px 0;
}

.portal-login {
  display: grid;
}

.portal-login__panel,
.portal-panel,
.portal-metric-card,
.portal-guide-card,
.portal-list__item {
  border: 1px solid var(--portal-line);
  background:
    linear-gradient(180deg, rgba(252, 248, 242, 0.96), rgba(239, 230, 217, 0.78));
  box-shadow: var(--portal-shadow);
  backdrop-filter: blur(12px);
}

.portal-login__panel {
  width: min(100%, 540px);
  display: grid;
  gap: 30px;
  padding: 40px 38px 34px;
  border-radius: 32px;
}

.portal-login__brand,
.portal-login__actions {
  display: grid;
  gap: 14px;
}

.portal-login__eyebrow,
.portal-page__eyebrow,
.portal-section-label,
.portal-header__eyebrow {
  margin: 0;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(92, 72, 45, 0.78);
}

.portal-login__panel h1,
.portal-page h1,
.portal-panel h2,
.portal-header__title {
  margin: 0;
  font-family: var(--portal-font-display);
  font-weight: 600;
  letter-spacing: -0.025em;
}

.portal-login__panel h1 {
  font-size: clamp(2.35rem, 5.6vw, 3.35rem);
  line-height: 0.96;
}

.portal-login__lead,
.portal-page__lead,
.portal-panel__caption,
.portal-list__meta,
.portal-empty-state {
  margin: 0;
  color: var(--portal-text-soft);
}

.portal-login__button {
  width: 100%;
}

.portal-login__status,
.portal-form__status {
  min-height: 1.4em;
  margin: 0;
  color: #8f7a58;
}

.portal-boot-error {
  width: var(--portal-shell);
  margin: 0 auto;
  padding: 24px 0 44px;
}

.portal-boot-pending {
  width: var(--portal-shell);
  margin: 0 auto;
  padding: 24px 0 44px;
  opacity: 1;
  transform: translateY(0);
  pointer-events: none;
  transition: opacity 180ms ease, transform 180ms ease;
}

body.portal-body--guarded.portal-body--show-pending .portal-boot-pending {
  opacity: 1;
  transform: translateY(0);
}

body.portal-body--ready .portal-boot-pending,
body.portal-body--error .portal-boot-pending {
  display: none;
}

.portal-boot-error__panel {
  max-width: 720px;
  display: grid;
  gap: 14px;
  padding: 24px;
  border: 1px solid rgba(182, 127, 114, 0.24);
  border-radius: 24px;
  background:
    linear-gradient(180deg, rgba(251, 244, 240, 0.96), rgba(243, 231, 226, 0.92));
  box-shadow: var(--portal-shadow);
}

.portal-boot-pending__panel {
  max-width: 720px;
  display: grid;
  gap: 14px;
  padding: 24px;
  border: 1px solid var(--portal-line);
  border-radius: 24px;
  background:
    linear-gradient(180deg, rgba(250, 247, 241, 0.96), rgba(237, 229, 218, 0.8));
  box-shadow: var(--portal-shadow);
}

.portal-boot-error__panel h1 {
  margin: 0;
  font-family: var(--portal-font-display);
  font-size: clamp(1.95rem, 3.8vw, 2.55rem);
  line-height: 0.98;
  letter-spacing: -0.025em;
}

.portal-boot-pending__panel h1 {
  margin: 0;
  font-family: var(--portal-font-display);
  font-size: clamp(1.95rem, 3.8vw, 2.55rem);
  line-height: 0.98;
  letter-spacing: -0.025em;
}

.portal-boot-error__panel p {
  margin: 0;
  color: var(--portal-text-soft);
}

.portal-boot-pending__panel p {
  margin: 0;
  color: var(--portal-text-soft);
}

.portal-boot-pending__status {
  color: #8f7a58;
}

.portal-boot-error__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 6px;
}

.portal-header {
  position: sticky;
  top: 0;
  z-index: 20;
  padding: 22px 0 18px;
}

.portal-header__inner {
  display: grid;
  gap: 18px;
  padding: 18px 22px;
  border: 1px solid var(--portal-line);
  border-radius: 26px;
  background:
    linear-gradient(180deg, rgba(252, 248, 242, 0.96), rgba(238, 229, 217, 0.9)),
    radial-gradient(circle at 8% 0%, rgba(143, 116, 72, 0.09), transparent 28%);
  box-shadow: 0 16px 38px rgba(29, 24, 20, 0.085), inset 0 1px 0 rgba(255, 255, 255, 0.52);
  backdrop-filter: blur(16px);
}

.portal-header__top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}

.portal-brand {
  display: grid;
  gap: 4px;
}

.portal-brand__name {
  font-family: var(--portal-font-display);
  font-size: 1.62rem;
  font-weight: 600;
  letter-spacing: -0.02em;
}

.portal-brand__subline {
  color: var(--portal-text-muted);
  font-size: 0.88rem;
  letter-spacing: 0.01em;
}

.portal-header__meta {
  display: flex;
  align-items: center;
  gap: 12px;
}

.portal-user-badge {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border: 1px solid var(--portal-line);
  border-radius: 999px;
  color: var(--portal-text-soft);
  background: linear-gradient(180deg, rgba(255, 251, 245, 0.68), rgba(241, 233, 222, 0.5));
}

.portal-user-badge__role {
  color: var(--portal-text-muted);
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-size: 0.72rem;
}

.portal-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.portal-nav__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 42px;
  padding: 0 16px;
  border: 1px solid transparent;
  border-radius: 999px;
  color: var(--portal-text-soft);
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  transition: border-color 180ms ease, background 180ms ease, color 180ms ease, box-shadow 180ms ease;
}

.portal-nav__link:hover,
.portal-nav__link:focus-visible {
  border-color: rgba(143, 116, 72, 0.2);
  background: rgba(255, 250, 244, 0.76);
  color: var(--portal-text);
  box-shadow: 0 8px 18px rgba(29, 24, 20, 0.045);
  outline: none;
}

.portal-nav__link.is-active {
  border-color: rgba(143, 116, 72, 0.34);
  background:
    linear-gradient(180deg, rgba(143, 116, 72, 0.2), rgba(143, 116, 72, 0.08)),
    rgba(255, 251, 245, 0.52);
  color: var(--portal-text);
  box-shadow: inset 0 1px 0 rgba(255, 251, 245, 0.56);
}

.portal-main {
  padding: 14px 0 44px;
}

.portal-page {
  display: grid;
  gap: 24px;
}

.portal-page__intro,
.portal-panel__header,
.portal-form__actions {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 18px;
}

.portal-page__intro {
  padding: 12px 4px 0;
}

.portal-page h1 {
  font-size: clamp(2.15rem, 3.8vw, 3.08rem);
  line-height: 0.98;
}

.portal-page__lead {
  max-width: 44rem;
  font-size: 1rem;
  line-height: 1.7;
}

.portal-metrics {
  display: grid;
  gap: 18px;
}

.portal-metrics--trio {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.portal-metrics--quad {
  grid-template-columns: repeat(4, minmax(0, 1fr));
}

.portal-metric-card {
  position: relative;
  overflow: hidden;
  padding: 18px 18px 16px;
  border-radius: var(--portal-radius-md);
}

.portal-metric-card::before {
  content: "";
  position: absolute;
  inset: 0 auto 0 0;
  width: 4px;
  background: linear-gradient(180deg, rgba(143, 116, 72, 0.42), rgba(89, 106, 86, 0.18));
  opacity: 0.74;
}

.portal-metric-card__label {
  margin: 0;
  color: #5a4d3f;
  font-size: 0.86rem;
  font-weight: 600;
  letter-spacing: 0.015em;
}

.portal-metric-card__value {
  display: block;
  margin-top: 10px;
  font-family: var(--portal-font-display);
  font-size: clamp(1.72rem, 2.2vw, 2.18rem);
  font-weight: 600;
  line-height: 1.02;
}

.portal-metric-card__hint {
  margin: 8px 0 0;
  color: var(--portal-text-muted);
  font-size: 0.84rem;
}

.portal-panel {
  padding: 24px;
  border-radius: var(--portal-radius-lg);
}

.portal-panel__header {
  padding-bottom: 2px;
}

.portal-panel__header--stacked {
  align-items: flex-start;
}

.portal-panel--form {
  padding-bottom: 20px;
}

.portal-form,
.portal-form__grid,
.portal-guides-section,
.portal-guides-grid,
.portal-field,
.portal-list {
  display: grid;
  gap: 16px;
}

.portal-task-composer {
  display: grid;
  grid-template-columns:
    minmax(400px, 38fr)
    minmax(120px, 11fr)
    minmax(120px, 11fr)
    minmax(168px, 13fr)
    minmax(280px, 23fr)
    104px;
  gap: 12px;
  align-items: start;
  padding: 0 0 18px;
}

.portal-task-composer--item {
  grid-template-columns:
    minmax(400px, 36fr)
    minmax(120px, 11fr)
    minmax(120px, 11fr)
    minmax(168px, 13fr)
    minmax(360px, 29fr)
    38px;
  padding: 8px 0 7px;
  border-top: 1px solid rgba(49, 41, 35, 0.08);
}

.portal-task-composer .portal-field {
  gap: 7px;
}

.portal-task-composer__title,
.portal-task-composer__notes {
  min-width: 0;
}

.portal-task-composer__title-input {
  min-height: 76px;
  height: 76px;
  padding-top: 12px;
  padding-bottom: 12px;
  line-height: 1.4;
  font-weight: 600;
  resize: none;
  overflow-y: auto;
}

.portal-task-composer__meta {
  min-width: 0;
}

.portal-task-composer__date-field {
  min-width: 0;
}

.portal-task-composer .portal-field span {
  margin-bottom: 0;
}

.portal-task-composer .portal-field input,
.portal-task-composer .portal-field select,
.portal-task-composer .portal-field textarea {
  border-radius: 14px;
}

.portal-task-composer__meta select,
.portal-task-composer__date-display {
  padding: 11px 12px;
  background: rgba(255, 251, 245, 0.58);
  font-size: 0.92rem;
}

.portal-task-composer__date-control {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 38px;
  gap: 8px;
  align-items: center;
}

.portal-task-composer__date-display {
  width: 100%;
}

.portal-task-composer__date-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  min-width: 38px;
  height: 38px;
  padding: 0;
  border: 1px solid rgba(143, 122, 88, 0.18);
  border-radius: 12px;
  color: var(--portal-text-soft);
  background: rgba(255, 251, 245, 0.88);
}

.portal-task-composer__date-trigger:hover,
.portal-task-composer__date-trigger:focus-visible {
  border-color: rgba(143, 122, 88, 0.34);
  background: rgba(255, 251, 245, 0.98);
  outline: none;
}

.portal-task-composer__date-picker {
  position: absolute;
  top: 0;
  right: 0;
  width: 38px;
  height: 38px;
  opacity: 0;
  pointer-events: none;
}

.portal-task-composer__notes textarea {
  min-height: 86px;
  height: 86px;
  padding-top: 12px;
  padding-bottom: 12px;
  line-height: 1.45;
  resize: none;
  overflow-y: auto;
}

.portal-task-composer--item .portal-task-composer__notes textarea {
  min-height: 72px;
  height: 72px;
}

.portal-task-composer--item .portal-task-composer__title-input {
  min-height: 58px;
  height: 58px;
}

.portal-task-composer__notes-hint {
  display: block;
  margin-top: 2px;
  color: var(--portal-text-muted);
  font-size: 0.76rem;
  line-height: 1.2;
  text-align: right;
}

.portal-task-composer__due-hint {
  display: block;
  margin-top: 4px;
  color: var(--portal-text-muted);
  font-size: 0.76rem;
  line-height: 1.2;
}

.portal-task-composer__due-hint[data-tone="error"] {
  color: #9f6257;
}

.portal-task-composer__due-hint--ok {
  color: var(--portal-green);
}

.portal-task-composer__due-hint--soon {
  color: var(--portal-gold);
}

.portal-task-composer__due-hint--overdue {
  color: var(--portal-red);
}

.portal-task-composer__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
  min-height: 100%;
  min-width: 0;
  padding-top: 23px;
  justify-self: end;
}

.portal-task-composer__actions--create {
  align-self: center;
  padding-top: 0;
}

.portal-task-composer--item .portal-task-composer__actions {
  padding-top: 20px;
}

.portal-task-composer__submit {
  width: 40px;
  min-width: 40px;
  min-height: 40px;
  padding: 0;
  font-size: 1.2rem;
  line-height: 1;
  align-self: center;
}

.portal-task-composer__actions .portal-button--compact {
  min-height: 34px;
  padding: 0 10px;
  font-size: 0.82rem;
}

.portal-task-composer__status {
  grid-column: 1 / -1;
  min-height: 1.2em;
  font-size: 0.88rem;
  padding-top: 1px;
}

.portal-task-composer__status:empty {
  display: none;
}

.portal-task-composer--item .portal-task-composer__status {
  min-height: 0;
  padding-top: 0;
}

.portal-task-list {
  gap: 0;
}

.portal-task-list--active {
  gap: 12px;
}

.portal-task-list__footer {
  display: flex;
  justify-content: center;
  padding-top: 8px;
}

.portal-task-entry {
  display: grid;
  gap: 5px;
  padding: 10px 12px;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 16px;
  background:
    linear-gradient(180deg, rgba(253, 250, 245, 0.94), rgba(246, 239, 230, 0.88));
}

.portal-task-entry.is-expanded {
  border-color: rgba(143, 116, 72, 0.24);
  background:
    linear-gradient(180deg, rgba(253, 250, 245, 0.99), rgba(241, 233, 222, 0.96)),
    radial-gradient(circle at left, rgba(143, 116, 72, 0.08), transparent 34%);
  box-shadow: 0 14px 30px rgba(29, 24, 20, 0.065);
}

.portal-task-entry--editable {
  gap: 6px;
}

.portal-task-entry__utility {
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  padding-top: 1px;
}

.portal-task-inline-text {
  min-width: 0;
  display: grid;
  gap: 4px;
}

.portal-task-inline-text__label {
  color: rgba(79, 72, 62, 0.68);
  font-size: 0.64rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.portal-task-inline-text__input {
  width: 100%;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 14px;
  background: rgba(255, 252, 247, 0.68);
  color: var(--portal-text);
  resize: none;
  transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease, color 160ms ease;
}

.portal-task-inline-text__input--title {
  min-height: 38px;
  padding: 7px 9px;
  font-size: 0.95rem;
  font-weight: 600;
  line-height: 1.28;
}

.portal-task-inline-text__input--notes {
  min-height: 34px;
  padding: 7px 9px;
  color: var(--portal-text-soft);
  line-height: 1.34;
}

.portal-task-inline-text__input[readonly] {
  cursor: text;
}

.portal-task-inline-text__input[readonly]:hover {
  border-color: rgba(143, 116, 72, 0.18);
  background: rgba(255, 252, 247, 0.86);
}

.portal-task-inline-text[data-editing="true"] .portal-task-inline-text__input,
.portal-task-inline-text__input:focus {
  border-color: rgba(143, 116, 72, 0.28);
  background: rgba(255, 252, 247, 0.96);
  box-shadow: 0 0 0 4px rgba(143, 116, 72, 0.09);
  outline: none;
}

.portal-task-entry__meta-control {
  display: grid;
  gap: 6px;
}

.portal-task-entry__meta-control > span {
  color: rgba(79, 72, 62, 0.7);
  font-size: 0.68rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.portal-task-entry__meta-control select,
.portal-task-entry__meta--controls .portal-task-composer__date-display {
  min-height: 40px;
}

.portal-task-entry__meta-control--structured select {
  min-height: 30px;
  padding: 0 9px;
  border-radius: 12px;
  background: rgba(255, 252, 247, 0.72);
  font-size: 0.8rem;
}

.portal-task-entry__meta-control--date .portal-task-composer__date-field {
  gap: 4px;
}

.portal-task-entry__meta-control--date > .portal-task-composer__date-field > span {
  display: block;
  color: rgba(79, 72, 62, 0.7);
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.portal-task-entry__meta-control--date .portal-task-composer__date-control {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 30px;
  align-items: center;
  gap: 5px;
}

.portal-task-entry__meta-control--date .portal-task-composer__date-display {
  min-width: 114px;
  min-height: 30px;
  padding: 0 9px;
  border-radius: 12px;
  font-size: 0.78rem;
  background: rgba(255, 252, 247, 0.72);
}

.portal-task-entry__meta-control--date .portal-task-composer__date-trigger {
  width: 30px;
  min-width: 30px;
  height: 30px;
  margin-left: 0;
  border-radius: 10px;
  background: rgba(255, 252, 247, 0.72);
}

.portal-task-entry__summary {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px;
  align-items: start;
  padding: 0;
  border: 0;
  color: inherit;
  background: transparent;
  text-align: left;
}

.portal-task-entry__content {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1.58fr) minmax(200px, 0.64fr);
  gap: 8px;
  align-items: start;
}

.portal-task-entry__primary,
.portal-task-entry__secondary {
  min-width: 0;
  display: grid;
  gap: 5px;
}

.portal-task-entry__meta {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 5px;
  color: var(--portal-text-soft);
  font-size: 0.84rem;
  line-height: 1.3;
}

.portal-task-entry__meta .portal-task-composer__due-hint {
  min-height: 0;
  margin-top: 1px;
  font-size: 0.72rem;
}

.portal-task-inline-text--secondary .portal-task-inline-text__input--notes {
  min-height: 48px;
  color: var(--portal-text-soft);
  font-size: 0.84rem;
}

.portal-task-inline-text--secondary .portal-task-composer__notes-hint {
  justify-self: end;
  margin-top: -2px;
}

.portal-route-inline-editable--muted .portal-route-inline-editable__input {
  color: var(--portal-text-muted);
}

.portal-task-section {
  display: grid;
  gap: 14px;
}

.portal-task-section--closed {
  margin-top: 10px;
  padding-top: 14px;
  border-top: 1px solid rgba(49, 41, 35, 0.08);
}

.portal-task-section__header--compact {
  display: flex;
  align-items: center;
  justify-content: flex-start;
}

.portal-task-section__toggle {
  gap: 10px;
  padding-right: 12px;
}

.portal-task-section__toggle[data-open="true"] {
  border-color: rgba(143, 122, 88, 0.24);
  background: rgba(255, 251, 245, 0.78);
}

.portal-task-section__count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 7px;
  border-radius: 999px;
  color: var(--portal-text-soft);
  background: rgba(143, 122, 88, 0.1);
  font-size: 0.76rem;
  line-height: 1;
}

.portal-task-list--closed {
  padding-top: 2px;
}

.portal-request-archive .portal-table-wrap {
  margin-top: 2px;
}

.portal-task-section__header h3 {
  margin: 0;
  font-size: 1.05rem;
}

.portal-task-section__header .portal-section-label {
  margin-bottom: 6px;
}

.portal-form__grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.portal-form__grid--stacked {
  grid-template-columns: 1fr;
}

.portal-field span {
  display: block;
  margin-bottom: 8px;
  color: var(--portal-text-soft);
  font-size: 0.88rem;
}

.portal-field input,
.portal-field select,
.portal-field textarea {
  width: 100%;
  border: 1px solid rgba(49, 41, 35, 0.15);
  border-radius: 16px;
  padding: 14px 15px;
  color: var(--portal-text);
  background: linear-gradient(180deg, rgba(255, 252, 247, 0.88), rgba(247, 241, 232, 0.72));
  transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease;
}

.portal-field input:focus,
.portal-field select:focus,
.portal-field textarea:focus {
  outline: none;
  border-color: rgba(143, 116, 72, 0.46);
  background: rgba(255, 252, 247, 0.96);
  box-shadow: 0 0 0 4px rgba(143, 116, 72, 0.09);
}

.portal-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 46px;
  padding: 0 18px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-weight: 700;
  letter-spacing: 0.01em;
  transition: transform 160ms ease, box-shadow 160ms ease, border-color 160ms ease, background 160ms ease, color 160ms ease;
}

.portal-button:hover:not(:disabled),
.portal-button:focus-visible:not(:disabled) {
  transform: translateY(-1px);
  outline: none;
}

.portal-button:disabled {
  opacity: 0.6;
  cursor: not-allowed;
}

@keyframes portal-spin {
  to { transform: rotate(360deg); }
}

.portal-spinner {
  display: inline-block;
  width: 12px;
  height: 12px;
  border: 1.5px solid rgba(255, 247, 230, 0.28);
  border-top-color: rgba(255, 247, 230, 0.88);
  border-radius: 50%;
  animation: portal-spin 0.65s linear infinite;
  vertical-align: middle;
}

.portal-button[aria-disabled="true"] {
  opacity: 0.72;
  pointer-events: none;
  cursor: default;
}

.portal-button--primary {
  color: #f7f0e5;
  background: linear-gradient(180deg, #312824, #231e1a);
  box-shadow: inset 0 1px 0 rgba(255, 247, 230, 0.12);
}

.portal-button--primary:hover:not(:disabled),
.portal-button--primary:focus-visible:not(:disabled) {
  box-shadow: 0 12px 24px rgba(29, 24, 20, 0.14), inset 0 1px 0 rgba(255, 247, 230, 0.16);
}

.portal-button--secondary {
  color: var(--portal-text);
  border-color: rgba(143, 116, 72, 0.18);
  background: linear-gradient(180deg, rgba(255, 252, 247, 0.74), rgba(240, 231, 219, 0.54));
}

.portal-button--secondary:hover:not(:disabled),
.portal-button--secondary:focus-visible:not(:disabled) {
  border-color: rgba(143, 116, 72, 0.32);
  background: rgba(255, 252, 247, 0.88);
}

.portal-button--danger {
  color: #f7f0e5;
  background: linear-gradient(180deg, #b67f72, #9a6558);
  box-shadow: inset 0 1px 0 rgba(255, 247, 230, 0.12);
}

.portal-button--compact {
  min-height: 38px;
  padding: 0 14px;
  font-size: 0.88rem;
}

.portal-table-wrap {
  overflow-x: auto;
  border-radius: 18px;
  border: 1px solid var(--portal-line);
  box-shadow: var(--portal-shadow-soft);
}

.portal-visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.portal-request-filters {
  display: grid;
  gap: 8px;
  padding: 14px 16px 12px;
  background:
    linear-gradient(180deg, rgba(252, 248, 242, 0.84), rgba(239, 230, 218, 0.62));
  border-bottom: 1px solid rgba(49, 41, 35, 0.08);
}

.portal-request-filters__topbar {
  display: flex;
  gap: 10px;
  align-items: center;
}

.portal-request-filters__search {
  flex: 0 1 420px;
  min-width: 0;
}

.portal-request-filters__search input {
  width: 100%;
  min-height: 42px;
  border: 1px solid rgba(143, 116, 72, 0.22);
  border-radius: 999px;
  padding: 0 16px;
  color: var(--portal-text);
  background: rgba(255, 252, 247, 0.92);
}

.portal-request-filters__search input:focus {
  outline: none;
  border-color: rgba(143, 122, 88, 0.42);
  box-shadow: 0 0 0 4px rgba(143, 122, 88, 0.08);
}

.portal-request-filters__actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

.portal-request-filters__toggle {
  gap: 8px;
}

.portal-request-filters__toggle[data-active="true"] {
  border-color: rgba(89, 106, 86, 0.28);
  background: linear-gradient(180deg, rgba(239, 244, 236, 0.92), rgba(229, 237, 225, 0.72));
}

.portal-request-filters__toggle-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 7px;
  border-radius: 999px;
  color: #f7f0e5;
  background: linear-gradient(180deg, #4e5d4c, #3d473c);
  font-size: 0.76rem;
  line-height: 1;
}

.portal-request-filters__panel {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  transform: translateY(-4px);
  pointer-events: none;
  transition:
    max-height 220ms ease,
    opacity 180ms ease,
    transform 180ms ease;
}

.portal-request-filters__panel[data-open="true"] {
  max-height: 420px;
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.portal-request-filters__groups {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  padding-top: 4px;
}

.portal-request-filter-group {
  min-width: 0;
  margin: 0;
  padding: 10px 0 0;
  border: 0;
  border-top: 1px solid rgba(143, 122, 88, 0.12);
}

.portal-request-filter-group legend {
  padding: 0;
  margin-bottom: 8px;
  color: var(--portal-text-soft);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.portal-request-filter-group__options {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.portal-request-filter-option {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 32px;
  padding: 0 11px;
  border: 1px solid rgba(143, 122, 88, 0.16);
  border-radius: 999px;
  color: var(--portal-text);
  background: rgba(255, 251, 245, 0.9);
  font-size: 0.82rem;
  transition:
    border-color 180ms ease,
    background-color 180ms ease,
    color 180ms ease;
}

.portal-request-filter-option:hover,
.portal-request-filter-option:focus-visible {
  border-color: rgba(143, 122, 88, 0.32);
  background: rgba(255, 251, 245, 1);
  outline: none;
}

.portal-request-filter-option[data-selected="true"] {
  border-color: rgba(82, 95, 80, 0.26);
  color: #f7f0e5;
  background: linear-gradient(180deg, #4e5d4c, #3d473c);
  box-shadow: inset 0 1px 0 rgba(255, 247, 230, 0.12);
}

.portal-request-filter-option[data-selected="true"][data-tone="blue"] {
  border-color: rgba(86, 124, 171, 0.3);
  color: #f4f7fb;
  background: linear-gradient(180deg, #587199, #475e81);
}

.portal-request-filter-option[data-selected="true"][data-tone="warm"],
.portal-request-filter-option[data-selected="true"][data-tone="gold"] {
  border-color: rgba(166, 133, 74, 0.3);
  color: #fbf5eb;
  background: linear-gradient(180deg, #917043, #7d6038);
}

.portal-request-filter-option[data-selected="true"][data-tone="green"] {
  border-color: rgba(102, 113, 95, 0.3);
  color: #f4f2ea;
  background: linear-gradient(180deg, #66725f, #56604f);
}

.portal-request-filter-option[data-selected="true"][data-tone="red"] {
  border-color: rgba(182, 127, 114, 0.3);
  color: #fbf2f0;
  background: linear-gradient(180deg, #9a6a60, #84584f);
}

.portal-request-filter-option[data-selected="true"][data-tone="soft"],
.portal-request-filter-option[data-selected="true"][data-tone="neutral"] {
  border-color: rgba(120, 109, 93, 0.24);
  color: #f7f0e5;
  background: linear-gradient(180deg, #706659, #5e564c);
}

.portal-request-filters__active {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}

.portal-request-filters__chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 30px;
  padding: 0 11px;
  border: 1px solid rgba(143, 122, 88, 0.16);
  border-radius: 999px;
  color: var(--portal-text);
  background: rgba(255, 251, 245, 0.88);
  font-size: 0.81rem;
}

.portal-request-filters__chip--neutral {
  border-color: rgba(120, 109, 93, 0.16);
  background: rgba(241, 234, 223, 0.88);
  color: #645b51;
}

.portal-request-filters__chip--soft {
  border-color: rgba(120, 109, 93, 0.14);
  background: rgba(244, 239, 232, 0.92);
  color: #6d645b;
}

.portal-request-filters__chip--blue {
  border-color: rgba(86, 124, 171, 0.24);
  background: rgba(86, 124, 171, 0.14);
  color: #3d5e85;
}

.portal-request-filters__chip--warm,
.portal-request-filters__chip--gold {
  border-color: rgba(166, 133, 74, 0.24);
  background: rgba(166, 133, 74, 0.13);
  color: #7c6030;
}

.portal-request-filters__chip--green {
  border-color: rgba(102, 113, 95, 0.22);
  background: rgba(102, 113, 95, 0.13);
  color: #4f5b4d;
}

.portal-request-filters__chip--red {
  border-color: rgba(182, 127, 114, 0.22);
  background: rgba(182, 127, 114, 0.12);
  color: #85564d;
}

.portal-request-filters__chip:hover,
.portal-request-filters__chip:focus-visible {
  border-color: rgba(143, 122, 88, 0.28);
  background: rgba(255, 251, 245, 0.98);
  outline: none;
}

.portal-request-filters__chip span:last-child {
  color: var(--portal-text-muted);
  font-size: 0.96rem;
  line-height: 1;
}

.portal-table {
  width: 100%;
  min-width: 1340px;
  border-collapse: collapse;
  background: rgba(252, 248, 242, 0.9);
}

.portal-table th,
.portal-table td {
  padding: 14px 16px;
  border-bottom: 1px solid rgba(49, 41, 35, 0.09);
  text-align: left;
  vertical-align: top;
}

.portal-table th {
  position: sticky;
  top: 0;
  background:
    linear-gradient(180deg, rgba(240, 231, 219, 0.98), rgba(231, 220, 205, 0.98));
  color: #5c4f40;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.portal-table td {
  color: var(--portal-text);
  font-size: 0.94rem;
}

.portal-table__empty {
  text-align: center;
  color: var(--portal-text-soft);
}

.portal-table--requests {
  min-width: 1420px;
  border-collapse: separate;
  border-spacing: 0 10px;
}

.portal-table--requests th,
.portal-table--requests td {
  padding-left: 10px;
  padding-right: 10px;
}

.portal-request-row td {
  background: linear-gradient(180deg, rgba(255, 252, 247, 0.9), rgba(248, 242, 234, 0.82));
  border-top: 1px solid rgba(49, 41, 35, 0.1);
  border-bottom: 1px solid rgba(49, 41, 35, 0.1);
}

.portal-request-row td:first-child {
  border-left: 1px solid rgba(143, 116, 72, 0.16);
  border-top-left-radius: 18px;
  border-bottom-left-radius: 18px;
}

.portal-request-row td:last-child {
  border-right: 1px solid rgba(49, 41, 35, 0.1);
  border-top-right-radius: 18px;
  border-bottom-right-radius: 18px;
}

.portal-request-row.is-expanded td:first-child {
  border-bottom-left-radius: 0;
}

.portal-request-row.is-expanded td:last-child {
  border-bottom-right-radius: 0;
}

.portal-table__col--number {
  width: 62px;
  max-width: 62px;
}

.portal-table--requests th:nth-child(2),
.portal-table--requests td:nth-child(2) {
  min-width: 126px;
}

.portal-table--requests th:nth-child(3),
.portal-table--requests td:nth-child(3) {
  min-width: 210px;
}

.portal-table--requests th:nth-child(4),
.portal-table--requests td:nth-child(4) {
  min-width: 116px;
}

.portal-table--requests th:nth-child(5),
.portal-table--requests td:nth-child(5) {
  min-width: 138px;
}

.portal-table--requests th:nth-child(8),
.portal-table--requests td:nth-child(8) {
  min-width: 148px;
}

.portal-table--requests th:nth-child(10),
.portal-table--requests td:nth-child(10) {
  min-width: 136px;
}

.portal-table--requests th:nth-child(11),
.portal-table--requests td:nth-child(11) {
  min-width: 196px;
}

.portal-table__col--toggle {
  width: 74px;
  white-space: nowrap;
}

.portal-chip {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid transparent;
  border-radius: 999px;
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

.portal-chip--neutral {
  border-color: rgba(49, 41, 35, 0.14);
  background: rgba(255, 252, 247, 0.74);
  color: var(--portal-text-soft);
}

.portal-chip--soft {
  border-color: rgba(120, 109, 93, 0.12);
  background: rgba(241, 234, 223, 0.82);
  color: #6d645b;
}

.portal-chip--blue {
  border-color: rgba(81, 111, 136, 0.26);
  background: var(--portal-blue-soft);
  color: #3f6077;
}

.portal-chip--mint {
  border-color: rgba(89, 106, 86, 0.24);
  background: var(--portal-sage-soft);
  color: #4d654c;
}

.portal-chip--warm {
  border-color: rgba(143, 122, 88, 0.22);
  background: rgba(143, 122, 88, 0.12);
  color: #6e5f47;
}

.portal-chip--green {
  border-color: rgba(89, 106, 86, 0.25);
  background: rgba(89, 106, 86, 0.13);
  color: #485b46;
}

.portal-chip--red {
  border-color: rgba(173, 116, 103, 0.24);
  background: var(--portal-clay-soft);
  color: #7d5148;
}

.portal-chip--gold {
  border-color: rgba(143, 116, 72, 0.26);
  background: var(--portal-gold-soft);
  color: #73592f;
}

.portal-requests__meta {
  display: grid;
  gap: 6px;
  justify-items: end;
}

.portal-requests__status[data-tone="error"] {
  color: #9f6257;
}

.portal-request-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 32px;
  min-height: 32px;
  padding: 0 8px;
  border-radius: 14px;
  background: rgba(255, 251, 245, 0.78);
  border: 1px solid rgba(49, 41, 35, 0.08);
  font-weight: 700;
}

.portal-request-link {
  color: inherit;
  text-decoration: underline;
  text-decoration-color: rgba(49, 41, 35, 0.16);
  text-underline-offset: 0.18em;
}

.portal-request-submitted {
  display: grid;
  gap: 0;
}

.portal-request-submitted span {
  color: var(--portal-text-muted);
  font-size: 0.82rem;
}

.portal-workflow-select {
  width: 100%;
  min-height: 40px;
  border: 1px solid transparent;
  border-radius: 14px;
  padding: 9px 34px 9px 10px;
  font-weight: 700;
  font-size: 0.9rem;
  line-height: 1.2;
  background-color: rgba(255, 251, 245, 0.84);
}

.portal-workflow-select--stage,
.portal-workflow-select--payment {
  min-height: 46px;
}

.portal-workflow-select:focus {
  outline: none;
  box-shadow: 0 0 0 4px rgba(143, 122, 88, 0.08);
}

.portal-workflow-select--soft,
.portal-workflow-select--owner {
  border-color: rgba(105, 94, 79, 0.24);
  background: linear-gradient(180deg, rgba(246, 239, 229, 0.98), rgba(229, 218, 203, 0.92));
  color: #554b41;
  box-shadow: inset 3px 0 0 rgba(117, 103, 84, 0.36), inset 0 1px 0 rgba(255, 251, 245, 0.72);
}

.portal-workflow-select--blue {
  border-color: rgba(74, 107, 145, 0.38);
  background: linear-gradient(180deg, rgba(223, 232, 240, 0.98), rgba(198, 214, 227, 0.9));
  color: #284967;
  box-shadow: inset 3px 0 0 rgba(74, 107, 145, 0.62), inset 0 1px 0 rgba(255, 255, 255, 0.58);
}

.portal-workflow-select--mint {
  border-color: rgba(111, 156, 126, 0.22);
  background-color: rgba(111, 156, 126, 0.13);
  color: #48644f;
  box-shadow: inset 3px 0 0 rgba(111, 156, 126, 0.34);
}

.portal-workflow-select--green {
  border-color: rgba(84, 112, 77, 0.36);
  background: linear-gradient(180deg, rgba(225, 235, 220, 0.98), rgba(203, 221, 197, 0.9));
  color: #344f32;
  box-shadow: inset 3px 0 0 rgba(84, 112, 77, 0.58), inset 0 1px 0 rgba(255, 255, 255, 0.55);
}

.portal-workflow-select--gold {
  border-color: rgba(151, 112, 52, 0.34);
  background: linear-gradient(180deg, rgba(240, 229, 207, 0.98), rgba(223, 205, 171, 0.9));
  color: #654716;
  box-shadow: inset 3px 0 0 rgba(151, 112, 52, 0.58), inset 0 1px 0 rgba(255, 255, 255, 0.55);
}

.portal-workflow-select--warm {
  border-color: rgba(151, 112, 52, 0.36);
  background: linear-gradient(180deg, rgba(242, 229, 205, 0.98), rgba(226, 205, 169, 0.9));
  color: #654716;
  box-shadow: inset 3px 0 0 rgba(151, 112, 52, 0.62), inset 0 1px 0 rgba(255, 255, 255, 0.55);
}

.portal-workflow-select--red {
  border-color: rgba(169, 100, 88, 0.36);
  background: linear-gradient(180deg, rgba(241, 224, 220, 0.98), rgba(226, 199, 194, 0.9));
  color: #733f36;
  box-shadow: inset 3px 0 0 rgba(169, 100, 88, 0.58), inset 0 1px 0 rgba(255, 255, 255, 0.54);
}

.portal-request-details-row td {
  padding: 0;
  background: rgba(244, 239, 232, 0.72);
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-top: 0;
  border-radius: 0 0 18px 18px;
  overflow: hidden;
}

.portal-request-details {
  display: grid;
  gap: 14px;
  padding: 14px;
}

.portal-request-comments-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}

.portal-request-details__section {
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 18px;
  background: rgba(255, 251, 245, 0.68);
}

.portal-request-details__label,
.portal-request-details__section-label,
.portal-request-chronology__actor,
.portal-request-chronology__time {
  color: var(--portal-text-muted);
}

.portal-request-details__section-label {
  font-size: 0.78rem;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.portal-request-details__section-label-content {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
}

.portal-request-details__section-label-content svg {
  width: 12px;
  height: 12px;
  flex: 0 0 12px;
  opacity: 0.72;
}

.portal-request-details__section {
  display: grid;
  gap: 10px;
  padding: 14px 15px;
}

.portal-request-details__note {
  margin: 0;
  color: var(--portal-text-soft);
  line-height: 1.7;
  white-space: pre-wrap;
}

.portal-request-stage-cell {
  position: relative;
  display: inline-block;
}

.portal-request-offer-count {
  position: absolute;
  right: 36px;
  bottom: 7px;
  color: var(--portal-text-muted);
  font-size: 0.72rem;
  white-space: nowrap;
  pointer-events: none;
  line-height: 1;
}

.portal-request-booking__value {
  margin: 0;
  color: var(--portal-text);
  font-size: 1.02rem;
  font-weight: 700;
}

.portal-request-booking__hint,
.portal-request-offers__hint {
  margin: 0;
  color: var(--portal-text-muted);
  font-size: 0.86rem;
  line-height: 1.55;
}

.portal-booking-calendar-layer {
  position: fixed;
  inset: 0;
  z-index: 58;
  pointer-events: none;
}

.portal-booking-calendar-popup {
  position: fixed;
  z-index: 59;
  pointer-events: auto;
  display: grid;
  gap: 10px;
  padding: 8px;
  background: var(--portal-surface, #faf7f2);
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 20px;
  box-shadow: 0 14px 38px rgba(29, 24, 20, 0.14);
}

.portal-request-booking__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.portal-request-offers__stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.portal-request-offers__stat {
  display: grid;
  gap: 4px;
  padding: 12px 13px;
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 14px;
  background: rgba(255, 251, 245, 0.7);
}

.portal-request-offers__label {
  color: var(--portal-text-muted);
  font-size: 0.8rem;
}

.portal-request-offers__value {
  color: var(--portal-text);
  font-size: 1.05rem;
}

.portal-request-inline-value {
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
  overflow: visible;
}

.portal-request-inline-value__text {
  min-width: 0;
  color: var(--portal-text);
  line-height: 1.45;
}

.portal-request-inline-value__text a {
  overflow-wrap: anywhere;
}

.portal-request-inline-value__edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 999px;
  color: var(--portal-text-muted);
  background: rgba(255, 251, 245, 0.84);
  transition: color 150ms ease, border-color 150ms ease, background 150ms ease;
}

.portal-request-inline-value__edit:hover,
.portal-request-inline-value__edit:focus-visible {
  color: var(--portal-text);
  border-color: rgba(143, 122, 88, 0.2);
  background: rgba(255, 251, 245, 0.98);
  outline: none;
}

.portal-request-inline-value__edit--active {
  color: #6f5731;
  border-color: rgba(166, 133, 74, 0.22);
  background: rgba(255, 248, 238, 0.98);
}

.portal-request-editor-layer {
  position: fixed;
  inset: 0;
  z-index: 56;
  pointer-events: none;
}

.portal-request-inline-edit {
  position: fixed;
  z-index: 57;
  pointer-events: auto;
  padding: 12px;
  border: 1px solid rgba(143, 122, 88, 0.18);
  border-radius: 18px;
  background:
    linear-gradient(180deg, rgba(255, 252, 247, 0.98), rgba(248, 243, 236, 0.98));
  box-shadow: 0 20px 38px rgba(29, 24, 20, 0.16);
}

.portal-request-inline-edit--above::after,
.portal-request-inline-edit::after {
  content: "";
  position: absolute;
  left: 20px;
  width: 12px;
  height: 12px;
  background: rgba(255, 251, 245, 0.98);
  border-left: 1px solid rgba(143, 122, 88, 0.18);
  border-top: 1px solid rgba(143, 122, 88, 0.18);
  transform: rotate(45deg);
}

.portal-request-inline-edit::after {
  top: -7px;
}

.portal-request-inline-edit--above::after {
  top: auto;
  bottom: -7px;
  transform: rotate(225deg);
}

.portal-request-inline-edit__form {
  display: grid;
  gap: 10px;
}

.portal-request-inline-edit__label {
  margin: 0;
  color: var(--portal-text-soft);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.portal-request-inline-edit__form input,
.portal-request-inline-edit__form textarea {
  width: 100%;
  border: 1px solid rgba(49, 41, 35, 0.12);
  border-radius: 14px;
  padding: 10px 12px;
  color: var(--portal-text);
  background: rgba(255, 251, 245, 0.86);
}

.portal-request-inline-edit__form input:focus,
.portal-request-inline-edit__form textarea:focus {
  outline: none;
  border-color: rgba(143, 122, 88, 0.42);
  box-shadow: 0 0 0 4px rgba(143, 122, 88, 0.08);
}

.portal-request-inline-edit__form textarea {
  min-height: 88px;
  resize: vertical;
}

.portal-request-inline-edit__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}

.portal-request-note-form {
  display: grid;
  gap: 10px;
}

.portal-request-note-form__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.portal-request-note-form__meta {
  margin: 0;
  color: var(--portal-text-muted);
  font-size: 0.8rem;
  line-height: 1.3;
}

.portal-request-note-form__textarea {
  width: 100%;
  min-height: 88px;
  border: 1px solid rgba(49, 41, 35, 0.12);
  border-radius: 14px;
  padding: 12px 13px;
  color: var(--portal-text);
  background: rgba(255, 251, 245, 0.8);
  resize: vertical;
}

.portal-request-note-form__textarea:focus {
  outline: none;
  border-color: rgba(143, 122, 88, 0.42);
  box-shadow: 0 0 0 4px rgba(143, 122, 88, 0.08);
}

.portal-request-details__hint {
  margin: 0;
  color: var(--portal-text-soft);
  font-size: 0.86rem;
  line-height: 1.4;
}

.portal-request-details__section--chronology {
  gap: 6px;
}

.portal-request-details__section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.portal-booking-calendar {
  display: grid;
  gap: 12px;
  padding: 14px;
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 18px;
  background: rgba(255, 251, 245, 0.74);
}

.portal-booking-calendar--large {
  padding: 18px;
}

.portal-booking-calendar--large .portal-booking-calendar__day {
  min-height: 68px;
}

.portal-booking-calendar__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.portal-booking-calendar__month {
  color: var(--portal-text);
  font-size: 1rem;
  text-transform: capitalize;
}

.portal-booking-calendar__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 18px;
}

.portal-booking-calendar__legend-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--portal-text-soft);
  font-size: 0.84rem;
}

.portal-booking-calendar__legend-swatch {
  width: 11px;
  height: 11px;
  border-radius: 999px;
}

.portal-booking-calendar__legend-swatch--available {
  background: rgba(88, 145, 80, 0.84);
}

.portal-booking-calendar__legend-swatch--reserved {
  background: rgba(180, 68, 55, 0.86);
}

.portal-booking-calendar__weekdays,
.portal-booking-calendar__grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 8px;
}

.portal-booking-calendar__weekdays span {
  color: var(--portal-text-muted);
  font-size: 0.75rem;
  font-weight: 700;
  text-align: center;
  text-transform: uppercase;
}

.portal-booking-calendar__day {
  position: relative;
  min-height: 48px;
  display: grid;
  place-items: center;
  gap: 2px;
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 14px;
  color: var(--portal-text);
  background: rgba(88, 145, 80, 0.18);
}

button.portal-booking-calendar__day {
  transition: transform 150ms ease, border-color 150ms ease, background 150ms ease;
}

button.portal-booking-calendar__day:hover:not(:disabled),
button.portal-booking-calendar__day:focus-visible:not(:disabled) {
  transform: translateY(-1px);
  border-color: rgba(92, 112, 67, 0.26);
  outline: none;
}

.portal-booking-calendar__day--reserved {
  background: rgba(180, 68, 55, 0.22);
  color: #8a3a2e;
}

.portal-booking-calendar__day--self {
  background: rgba(184, 148, 84, 0.18);
  color: #7b5d2e;
}

.portal-booking-calendar__day--outside {
  background: rgba(120, 109, 93, 0.06);
  color: rgba(109, 96, 82, 0.55);
}

.portal-booking-calendar__day--selected {
  border-color: rgba(92, 112, 67, 0.38);
  box-shadow: inset 0 0 0 2px rgba(92, 112, 67, 0.18);
}

.portal-booking-calendar__day--today {
  border-style: dashed;
}

.portal-booking-calendar__day:disabled {
  cursor: not-allowed;
}

.portal-booking-calendar__day-number {
  font-weight: 700;
  line-height: 1;
}

.portal-booking-calendar__count {
  color: inherit;
  font-size: 0.72rem;
  opacity: 0.8;
}

.portal-request-chronology {
  display: grid;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.portal-request-chronology__item {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 4px 8px;
  align-items: center;
  padding: 6px 8px;
  border: 1px solid rgba(49, 41, 35, 0.07);
  border-radius: 10px;
  background: rgba(247, 242, 235, 0.78);
}

.portal-request-chronology__item--empty {
  grid-template-columns: 1fr;
}

.portal-request-chronology__text,
.portal-request-chronology__actor,
.portal-request-chronology__meta {
  margin: 0;
}

.portal-request-chronology__text {
  color: var(--portal-text-soft);
  line-height: 1.3;
  font-size: 0.88rem;
}

.portal-request-chronology__meta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  color: var(--portal-text-soft);
}

.portal-request-chronology__time,
.portal-request-chronology__actor {
  font-size: 0.76rem;
}

.portal-request-chronology__toggle {
  flex-shrink: 0;
}

.portal-list__item {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 20px;
  border-radius: 18px;
}

.portal-list__title {
  margin: 0;
  font-weight: 700;
}

.portal-list__meta {
  margin-top: 8px;
  font-size: 0.9rem;
}

.portal-list__summary {
  margin: 10px 0 0;
  color: var(--portal-text-soft);
  line-height: 1.5;
}

.portal-task-card__delete {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 999px;
  background: transparent;
  color: var(--portal-text-muted);
  opacity: 0.86;
  transition: opacity 150ms ease, color 150ms ease, background 150ms ease, border-color 150ms ease;
}

.portal-task-composer--item:hover .portal-task-card__delete,
.portal-list__item:hover .portal-task-card__delete,
.portal-task-card__delete:focus-visible {
  opacity: 1;
}

.portal-task-card__delete:hover {
  color: var(--portal-red);
  background: rgba(182, 127, 114, 0.1);
  border-color: rgba(182, 127, 114, 0.2);
  opacity: 1;
}

.portal-overlay {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 100;
  align-items: center;
  justify-content: center;
  padding: 24px;
  background: rgba(35, 31, 28, 0.42);
  backdrop-filter: blur(6px);
}

.portal-overlay.is-open {
  display: flex;
}

.portal-create-panel {
  width: min(840px, calc(100vw - 56px));
  gap: 18px;
  padding: 24px 26px 22px;
}

.portal-create-panel--simple {
  width: min(720px, calc(100vw - 56px));
}

.portal-create-panel--question {
  width: min(1080px, calc(100vw - 56px));
  gap: 24px;
  padding: 42px 44px 38px;
}

.portal-create-panel--question .portal-form--simple {
  gap: 22px;
}

.portal-create-panel--question textarea[name="question"] {
  min-height: 112px;
}

.portal-create-panel--question textarea[name="summary"] {
  min-height: 228px;
}

.portal-create-panel--route,
.portal-create-panel--risk {
  width: min(980px, calc(100vw - 56px));
}

.portal-create-panel--risk {
  width: min(1060px, calc(100vw - 44px));
}

.portal-confirm-panel {
  width: min(100%, 400px);
  display: grid;
  gap: 18px;
  padding: 28px 28px 24px;
  border: 1px solid var(--portal-line);
  border-radius: var(--portal-radius-md);
  background: linear-gradient(180deg, rgba(250, 247, 241, 0.99), rgba(237, 229, 218, 0.97));
  box-shadow: 0 24px 60px rgba(29, 24, 20, 0.2);
}

.portal-confirm-panel.portal-create-panel--question {
  width: min(600px, calc(100vw - 56px));
}

.portal-confirm-panel.portal-create-panel--risk {
  width: min(1060px, calc(100vw - 44px));
}

.portal-confirm-panel--task-create {
  width: min(480px, calc(100vw - 48px));
  gap: 20px;
  padding: 26px 28px 24px;
  overflow: hidden;
}

.portal-confirm-panel--task-create .portal-task-composer {
  grid-template-columns:
    minmax(0, 1.42fr)
    minmax(138px, 0.48fr)
    minmax(120px, 0.42fr)
    minmax(176px, 0.54fr)
    minmax(0, 1.04fr)
    52px;
  gap: 14px;
  padding-bottom: 0;
}

.portal-confirm-panel--task-create .portal-task-composer__title-input {
  min-height: 74px;
  height: 74px;
}

.portal-confirm-panel--task-create .portal-task-composer__notes textarea {
  min-height: 84px;
  height: 84px;
}

.portal-confirm-panel--task-create .portal-task-composer__actions {
  align-self: start;
  padding-top: 24px;
}

.portal-confirm-panel--task-create .portal-task-composer__actions--create {
  align-self: start;
  padding-top: 24px;
}

.portal-confirm-panel--task-create .portal-task-composer__submit {
  justify-self: center;
}

.portal-confirm-panel--task-create .portal-task-composer__status {
  padding-top: 6px;
}

.portal-confirm-panel__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.portal-overlay__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.portal-overlay__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 999px;
  color: var(--portal-text-soft);
  background: rgba(255, 251, 245, 0.76);
  font-size: 1.2rem;
  line-height: 1;
}

.portal-overlay__close:hover,
.portal-overlay__close:focus-visible {
  color: var(--portal-text);
  border-color: rgba(143, 122, 88, 0.24);
  outline: none;
}

.portal-confirm-panel__title {
  margin: 0;
  font-family: var(--portal-font-display);
  font-size: 1.6rem;
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.1;
}

.portal-confirm-panel__subtitle {
  margin: 3px 0 0;
  font-size: 0.85rem;
  color: var(--portal-text-muted);
  line-height: 1.4;
}

.portal-confirm-panel__body {
  margin: 0;
  color: var(--portal-text-soft);
  line-height: 1.6;
}

.portal-confirm-panel__close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  padding: 0;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 999px;
  color: var(--portal-text-soft);
  background: rgba(255, 251, 245, 0.84);
  font-size: 1.25rem;
  line-height: 1;
}

.portal-confirm-panel__close:hover,
.portal-confirm-panel__close:focus-visible {
  color: var(--portal-text);
  border-color: rgba(143, 122, 88, 0.24);
  background: rgba(255, 251, 245, 0.98);
  outline: none;
}

.portal-confirm-panel__actions {
  display: flex;
  gap: 10px;
  justify-content: flex-end;
  margin-top: 4px;
}

.portal-list__meta-divider {
  color: var(--portal-text-muted);
}

.portal-empty-state {
  padding: 18px 4px 2px;
}

.portal-guides-grid {
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
}

.portal-guide-card {
  overflow: hidden;
  border-radius: 24px;
}

.portal-guide-card__media {
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background:
    linear-gradient(135deg, rgba(143, 122, 88, 0.14), rgba(102, 113, 95, 0.12));
}

.portal-guide-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.portal-guide-card__body {
  display: grid;
  gap: 16px;
  padding: 18px;
}

.portal-guide-card__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

.portal-guide-card__meta {
  color: var(--portal-text-muted);
  font-size: 0.84rem;
}

.portal-metric-card--link {
  position: relative;
  display: block;
  transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.portal-metric-card--link:hover,
.portal-metric-card--link:focus-visible {
  transform: translateY(-1px);
  border-color: rgba(143, 122, 88, 0.2);
  box-shadow: 0 20px 44px rgba(29, 24, 20, 0.1);
  outline: none;
}

.portal-metric-card__cue {
  margin: 10px 0 0;
  color: var(--portal-gold);
  font-size: 0.76rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.portal-metric-card--risk-open {
  border-color: rgba(120, 109, 93, 0.16);
  background:
    linear-gradient(180deg, rgba(249, 245, 239, 0.96), rgba(239, 232, 223, 0.82));
}

.portal-metric-card--risk-open .portal-metric-card__value {
  color: #5e564c;
}

.portal-metric-card--risk-resolved {
  border-color: rgba(102, 113, 95, 0.2);
  background:
    linear-gradient(180deg, rgba(246, 249, 244, 0.96), rgba(232, 238, 229, 0.84));
}

.portal-metric-card--risk-resolved .portal-metric-card__value {
  color: #4f5b4d;
}

.portal-metric-card--risk-overdue {
  border-color: rgba(182, 127, 114, 0.18);
  background:
    linear-gradient(180deg, rgba(250, 244, 242, 0.96), rgba(240, 228, 225, 0.84));
}

.portal-metric-card--risk-overdue .portal-metric-card__value {
  color: #85564d;
}

.portal-knowledge-previews {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 18px;
}

.portal-knowledge-preview {
  gap: 18px;
}

.portal-knowledge-preview__list,
.portal-route-list,
.portal-risk-list,
.portal-library-list {
  display: grid;
  gap: 12px;
}

.portal-knowledge-preview__footer {
  display: flex;
  justify-content: center;
}

.portal-preview-item {
  display: grid;
  grid-template-columns: minmax(132px, 156px) minmax(0, 1fr);
  gap: 16px;
  align-items: center;
  padding: 14px 16px;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 16px;
  background: linear-gradient(180deg, rgba(255, 252, 247, 0.76), rgba(245, 238, 229, 0.62));
  transition: border-color 160ms ease, background-color 160ms ease, transform 160ms ease, box-shadow 160ms ease;
}

.portal-preview-item--text {
  grid-template-columns: minmax(0, 1fr);
}

.portal-preview-item:hover,
.portal-preview-item:focus-visible {
  border-color: rgba(143, 116, 72, 0.24);
  background: rgba(255, 252, 247, 0.9);
  transform: translateY(-1px);
  box-shadow: var(--portal-shadow-soft);
  outline: none;
}

.portal-preview-item__thumb {
  overflow: hidden;
  border-radius: 14px;
  aspect-ratio: 4 / 3;
  background:
    linear-gradient(135deg, rgba(232, 222, 208, 0.92), rgba(244, 238, 229, 0.86));
}

.portal-preview-item__thumb img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.portal-preview-item__thumb--empty {
  display: grid;
  place-items: center;
  color: var(--portal-text-muted);
  font-size: 0.84rem;
  text-align: center;
  padding: 8px;
}

.portal-preview-item__title {
  margin: 0;
  color: var(--portal-text);
  font-size: 1.12rem;
  font-weight: 600;
  line-height: 1.42;
}

.portal-library-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}

.portal-search-field {
  display: grid;
  gap: 7px;
}

.portal-search-field--wide {
  width: min(100%, 520px);
}

.portal-search-field__label {
  color: var(--portal-text-soft);
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

.portal-search-field input {
  min-height: 44px;
  border: 1px solid rgba(49, 41, 35, 0.12);
  border-radius: 16px;
  padding: 11px 14px;
  color: var(--portal-text);
  background: rgba(255, 251, 245, 0.86);
}

.portal-search-field input:focus {
  outline: none;
  border-color: rgba(143, 122, 88, 0.34);
  box-shadow: 0 0 0 4px rgba(143, 122, 88, 0.08);
}

.portal-form--simple,
.portal-form--route,
.portal-form--risk {
  display: grid;
  gap: 16px;
}

.portal-form--risk .portal-form__grid--trio {
  grid-template-columns: minmax(170px, 0.9fr) minmax(150px, 0.72fr) minmax(220px, 1.02fr);
  gap: 14px 18px;
}

.portal-form--embedded {
  padding-top: 14px;
  border-top: 1px solid rgba(49, 41, 35, 0.08);
}

.portal-form__grid--media {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 18px;
}

.portal-form__grid--trio {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.portal-upload-control {
  display: grid;
  gap: 6px;
}

.portal-upload-control__input {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.portal-upload-control__button {
  display: inline-flex;
  align-items: center;
  justify-content: flex-start;
  gap: 10px;
  min-height: 38px;
  width: fit-content;
  padding: 0 14px 0 10px;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 999px;
  color: var(--portal-text-soft);
  background: rgba(255, 251, 245, 0.9);
  font-size: 0.82rem;
  font-weight: 600;
}

.portal-upload-control__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 999px;
  color: rgba(94, 78, 57, 0.86);
  background: rgba(143, 122, 88, 0.1);
}

.portal-upload-control:hover .portal-upload-control__button,
.portal-upload-control:focus-within .portal-upload-control__button {
  border-color: rgba(143, 122, 88, 0.24);
  color: var(--portal-text);
  background: rgba(255, 251, 245, 0.98);
}

.portal-upload-control__summary {
  color: var(--portal-text-muted);
  font-size: 0.8rem;
  line-height: 1.35;
}

.portal-upload-control--inline {
  display: inline-grid;
}

.portal-upload-control--inline .portal-upload-control__button {
  min-height: 34px;
  padding-right: 12px;
  font-size: 0.79rem;
}

.portal-inline-date-control {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
}

.portal-link-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  color: var(--portal-text-muted);
  background: transparent;
  font-size: 0.84rem;
  font-weight: 600;
}

.portal-link-button:hover,
.portal-link-button:focus-visible {
  color: var(--portal-text);
  outline: none;
}

.portal-link-button--danger:hover,
.portal-link-button--danger:focus-visible {
  color: var(--portal-red);
}

.portal-knowledge-card,
.portal-risk-card,
.portal-route-card {
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 22px;
  background: rgba(255, 251, 245, 0.62);
}

.portal-knowledge-card,
.portal-risk-card {
  padding: 16px 18px;
}

.portal-knowledge-card__header,
.portal-route-card__footer {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.portal-knowledge-card__copy,
.portal-risk-card__copy,
.portal-route-card__copy {
  min-width: 0;
  display: grid;
  gap: 8px;
}

.portal-knowledge-card__title,
.portal-risk-card__title,
.portal-route-card__title {
  margin: 0;
  font-size: 1.06rem;
  font-weight: 600;
  line-height: 1.35;
}

.portal-knowledge-card__summary,
.portal-route-card__summary,
.portal-risk-card__preview {
  margin: 0;
  color: var(--portal-text-soft);
  line-height: 1.55;
  white-space: pre-wrap;
}

.portal-knowledge-card__summary--muted {
  color: var(--portal-text-muted);
}

.portal-knowledge-card__actions,
.portal-route-card__actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

.portal-knowledge-card__meta,
.portal-route-card__meta {
  margin-top: 10px;
  color: var(--portal-text-muted);
  font-size: 0.82rem;
}

.portal-filterbar {
  display: flex;
  align-items: flex-end;
  gap: 16px;
}

.portal-filterbar__actions {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.portal-filter-panel {
  display: none;
  gap: 14px;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(49, 41, 35, 0.08);
}

.portal-filter-panel.is-open {
  display: grid;
}

.portal-filter-group {
  display: grid;
  gap: 8px;
}

.portal-filter-group__label {
  margin: 0;
  color: var(--portal-text-soft);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.portal-filter-group__chips,
.portal-active-filters {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.portal-filter-chip,
.portal-active-filter {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 34px;
  padding: 0 12px;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 999px;
  color: var(--portal-text-soft);
  background: rgba(255, 251, 245, 0.88);
  font-size: 0.84rem;
}

.portal-filter-chip.is-active {
  color: var(--portal-text);
  border-color: rgba(143, 122, 88, 0.24);
  background: rgba(255, 249, 239, 0.98);
}

.portal-active-filter {
  gap: 8px;
}

.portal-filter-chip:hover,
.portal-filter-chip:focus-visible,
.portal-active-filter:hover,
.portal-active-filter:focus-visible {
  border-color: rgba(143, 122, 88, 0.26);
  color: var(--portal-text);
  outline: none;
}

.portal-risk-card__summary {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  padding: 0;
  border: 0;
  color: inherit;
  background: transparent;
  text-align: left;
}

.portal-risk-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  color: var(--portal-text-soft);
  font-size: 0.84rem;
}

.portal-risk-card__meta-pill {
  display: inline-flex;
  align-items: center;
  min-height: 30px;
  padding: 0 10px;
  border: 1px solid rgba(120, 109, 93, 0.14);
  border-radius: 999px;
  color: var(--portal-text-soft);
  background: rgba(255, 251, 245, 0.84);
  font-size: 0.8rem;
}

.portal-risk-card__meta-pill--assignee {
  border-color: rgba(86, 124, 171, 0.18);
  background: rgba(86, 124, 171, 0.08);
  color: #4b6480;
}

.portal-risk-card__meta-pill--status {
  font-weight: 600;
}

.portal-risk-card__meta-pill--date {
  border-color: rgba(166, 133, 74, 0.18);
  background: rgba(166, 133, 74, 0.08);
  color: #735d33;
}

.portal-risk-card__meta-pill--soft {
  border-color: rgba(120, 109, 93, 0.14);
  background: rgba(244, 239, 232, 0.92);
  color: #6d645b;
}

.portal-risk-card__meta-pill--gold {
  border-color: rgba(166, 133, 74, 0.22);
  background: rgba(166, 133, 74, 0.12);
  color: #7e6130;
}

.portal-risk-card__meta-pill--green {
  border-color: rgba(102, 113, 95, 0.22);
  background: rgba(102, 113, 95, 0.12);
  color: #4e5a4c;
}

.portal-risk-card__meta-pill--neutral {
  border-color: rgba(49, 41, 35, 0.12);
  background: rgba(255, 251, 245, 0.68);
  color: var(--portal-text-soft);
}

.portal-risk-card__meta-pill--overdue {
  color: #8a5348;
  border-color: rgba(182, 127, 114, 0.18);
  background: rgba(182, 127, 114, 0.1);
}

.portal-risk-card.is-expanded {
  border-color: rgba(143, 122, 88, 0.18);
  background: rgba(255, 251, 245, 0.82);
}

.portal-route-card {
  display: grid;
  grid-template-columns: minmax(220px, 260px) minmax(0, 1fr);
  overflow: hidden;
}

.portal-route-card--expanded,
.portal-route-card--compact {
  align-items: start;
}

.portal-route-card--compact {
  grid-template-columns: minmax(240px, 280px) minmax(0, 1fr);
}

.portal-route-card__media-shell {
  display: grid;
  gap: 12px;
  padding: 18px 0 18px 18px;
}

.portal-route-card__media {
  aspect-ratio: 5 / 6;
  min-height: 100%;
  overflow: hidden;
  border-radius: 18px;
  background: rgba(237, 229, 218, 0.84);
}

.portal-route-card__media img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.portal-route-card__placeholder {
  min-height: 100%;
  display: grid;
  place-items: center;
  color: var(--portal-text-muted);
  font-size: 0.82rem;
}

.portal-route-card__body {
  display: grid;
  gap: 16px;
  padding: 18px;
}

.portal-route-card__body--display {
  gap: 14px;
}

.portal-route-card__section,
.portal-route-display__section {
  display: grid;
  gap: 10px;
}

.portal-route-display__section {
  padding: 14px 15px;
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 18px;
  background: rgba(255, 251, 245, 0.74);
}

.portal-route-card__title-row,
.portal-route-display__header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.portal-route-display__header .portal-section-label {
  margin: 0;
}

.portal-route-display__header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.portal-route-display__text {
  margin: 0;
  color: var(--portal-text-soft);
  line-height: 1.62;
  white-space: pre-wrap;
}

.portal-route-display__text--muted {
  color: var(--portal-text-muted);
}

.portal-route-inline-surface,
.portal-route-title-trigger,
.portal-knowledge-inline-field {
  width: 100%;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 0;
  border: 0;
  color: inherit;
  background: transparent;
  text-align: left;
}

.portal-route-inline-surface__text,
.portal-knowledge-inline-field__text {
  min-width: 0;
  color: var(--portal-text-soft);
  line-height: 1.62;
  white-space: pre-wrap;
}

.portal-route-inline-editable {
  display: grid;
  gap: 6px;
}

.portal-route-inline-editable__input,
.portal-knowledge-inline-field__input {
  width: 100%;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 14px;
  color: var(--portal-text-soft);
  background: transparent;
  line-height: 1.62;
  resize: none;
  transition: border-color 160ms ease, background 160ms ease, box-shadow 160ms ease;
}

.portal-route-inline-editable__input[readonly],
.portal-knowledge-inline-field__input[readonly] {
  cursor: text;
}

.portal-route-inline-editable__input--single {
  min-height: 34px;
  font-size: 1.06rem;
  font-weight: 600;
  line-height: 1.35;
}

.portal-route-inline-editable__input:focus,
.portal-knowledge-inline-field__input:focus {
  padding: 10px 12px;
  border-color: rgba(49, 41, 35, 0.12);
  background: rgba(255, 251, 245, 0.9);
  box-shadow: 0 0 0 4px rgba(143, 122, 88, 0.08);
  outline: none;
}

.portal-route-inline-editable__status,
.portal-knowledge-inline-field__status {
  min-height: 0;
}

.portal-route-inline-surface--muted .portal-route-inline-surface__text,
.portal-knowledge-inline-field--muted .portal-knowledge-inline-field__text {
  color: var(--portal-text-muted);
}

.portal-route-inline-surface__hint,
.portal-knowledge-inline-field__hint {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 999px;
  color: var(--portal-text-muted);
  background: rgba(255, 251, 245, 0.84);
}

.portal-route-inline-surface:hover .portal-route-inline-surface__hint,
.portal-route-inline-surface:focus-visible .portal-route-inline-surface__hint,
.portal-route-title-trigger:hover .portal-route-inline-surface__hint,
.portal-route-title-trigger:focus-visible .portal-route-inline-surface__hint,
.portal-knowledge-inline-field:hover .portal-knowledge-inline-field__hint,
.portal-knowledge-inline-field:focus-visible .portal-knowledge-inline-field__hint {
  color: var(--portal-text);
  border-color: rgba(143, 122, 88, 0.22);
}

.portal-route-inline-surface:hover,
.portal-route-inline-surface:focus-visible,
.portal-route-title-trigger:hover,
.portal-route-title-trigger:focus-visible,
.portal-knowledge-inline-field:hover,
.portal-knowledge-inline-field:focus-visible {
  outline: none;
}

.portal-route-title-trigger {
  align-items: center;
}

.portal-route-card__media-actions {
  display: flex;
  justify-content: flex-end;
}

.portal-inline-edit-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  padding: 0;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 999px;
  color: var(--portal-text-muted);
  background: rgba(255, 251, 245, 0.84);
}

.portal-inline-edit-button:hover,
.portal-inline-edit-button:focus-visible {
  color: var(--portal-text);
  border-color: rgba(143, 122, 88, 0.22);
  background: rgba(255, 251, 245, 0.98);
  outline: none;
}

.portal-route-inline-form {
  display: grid;
  gap: 10px;
  padding-top: 10px;
  border-top: 1px solid rgba(49, 41, 35, 0.08);
}

.portal-route-inline-form input,
.portal-route-inline-form textarea {
  width: 100%;
  border: 1px solid rgba(49, 41, 35, 0.12);
  border-radius: 14px;
  padding: 10px 12px;
  color: var(--portal-text);
  background: rgba(255, 251, 245, 0.86);
}

.portal-route-inline-form input:focus,
.portal-route-inline-form textarea:focus {
  outline: none;
  border-color: rgba(143, 122, 88, 0.42);
  box-shadow: 0 0 0 4px rgba(143, 122, 88, 0.08);
}

.portal-route-inline-form__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: flex-end;
}

.portal-page__intro--with-backlink {
  align-items: flex-start;
}

.portal-backlink {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 10px;
  color: var(--portal-text-soft);
  font-size: 0.9rem;
  font-weight: 600;
}

.portal-backlink:hover,
.portal-backlink:focus-visible {
  color: var(--portal-text);
  outline: none;
}

.portal-page__intro-actions {
  display: grid;
  gap: 12px;
  justify-items: end;
}

.portal-panel--route-detail {
  display: grid;
  gap: 18px;
}

.portal-route-hero {
  width: 100%;
  overflow: hidden;
  padding: 0;
  border: 0;
  border-radius: 22px;
  background: rgba(237, 229, 218, 0.84);
  aspect-ratio: 16 / 7;
}

.portal-route-hero img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.portal-route-hero--empty {
  min-height: 220px;
  display: grid;
  place-items: center;
  color: var(--portal-text-muted);
}

.portal-route-detail__sections {
  display: grid;
  gap: 14px;
}

.portal-route-detail__title {
  margin: 0;
  font-family: var(--portal-font-display);
  font-size: clamp(1.7rem, 3vw, 2.2rem);
  font-weight: 600;
  line-height: 1.02;
  letter-spacing: -0.025em;
}

.portal-route-detail__section {
  display: grid;
  gap: 10px;
  padding: 16px 18px;
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 18px;
  background: rgba(255, 251, 245, 0.7);
}

.portal-route-detail__text {
  margin: 0;
  color: var(--portal-text-soft);
  line-height: 1.65;
  white-space: pre-wrap;
}

.portal-gallery-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(76px, 100px));
  gap: 8px;
}

.portal-gallery-grid__cell {
  position: relative;
}

.portal-gallery-grid__item {
  overflow: hidden;
  padding: 0;
  border: 0;
  border-radius: 12px;
  background: rgba(237, 229, 218, 0.84);
  aspect-ratio: 1;
  width: 100%;
}

.portal-gallery-grid__item img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: cover;
}

.portal-gallery-grid__remove {
  position: absolute;
  top: 5px;
  right: 5px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  padding: 0;
  border: 1px solid rgba(49, 41, 35, 0.12);
  border-radius: 999px;
  color: var(--portal-text);
  background: rgba(255, 251, 245, 0.92);
  font-size: 0.92rem;
  line-height: 1;
  box-shadow: 0 6px 12px rgba(29, 24, 20, 0.08);
}

.portal-gallery-grid__remove:hover,
.portal-gallery-grid__remove:focus-visible {
  color: var(--portal-red);
  border-color: rgba(154, 79, 69, 0.2);
  outline: none;
}

.portal-lightbox {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 120;
}

.portal-lightbox.is-open {
  display: block;
}

.portal-lightbox__backdrop {
  position: absolute;
  inset: 0;
  border: 0;
  background: rgba(23, 18, 14, 0.72);
}

.portal-lightbox__content {
  position: relative;
  z-index: 1;
  width: min(92vw, 1100px);
  margin: 6vh auto 0;
}

.portal-lightbox__content img {
  width: 100%;
  max-height: 86vh;
  object-fit: contain;
  border-radius: 22px;
  box-shadow: 0 28px 70px rgba(0, 0, 0, 0.32);
}

.portal-lightbox__close {
  position: absolute;
  top: -12px;
  right: -12px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  color: #231f1c;
  background: rgba(255, 251, 245, 0.98);
  font-size: 1.4rem;
  line-height: 1;
}

.portal-chart {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 16px;
  align-items: end;
  min-height: 260px;
  padding-top: 10px;
}

.portal-chart__bar {
  display: grid;
  gap: 10px;
  align-items: end;
}

.portal-chart__column {
  min-height: 24px;
  border: 1px solid rgba(143, 122, 88, 0.22);
  border-radius: 18px 18px 8px 8px;
  background:
    linear-gradient(180deg, rgba(143, 122, 88, 0.5), rgba(102, 113, 95, 0.3));
}

.portal-chart__label,
.portal-chart__value {
  color: var(--portal-text-soft);
  font-size: 0.86rem;
}

.portal-chart__value {
  color: var(--portal-text);
  font-weight: 700;
}

.portal-stats-segment {
  display: grid;
  gap: 18px;
}

.portal-stats-grid {
  display: grid;
  gap: 18px;
}

.portal-stats-grid--overview {
  grid-template-columns: minmax(0, 1.4fr) minmax(320px, 0.9fr);
}

.portal-stats-grid--duo {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.portal-funnel {
  display: grid;
  gap: 12px;
}

.portal-funnel__row {
  display: grid;
  grid-template-columns: minmax(140px, 0.8fr) minmax(0, 1fr) auto auto;
  gap: 12px;
  align-items: center;
}

.portal-funnel__label,
.portal-funnel__share {
  color: var(--portal-text-soft);
  font-size: 0.85rem;
}

.portal-funnel__track {
  position: relative;
  overflow: hidden;
  min-height: 12px;
  border-radius: 999px;
  background: rgba(143, 122, 88, 0.1);
}

.portal-funnel__fill {
  position: absolute;
  inset: 0 auto 0 0;
  border-radius: inherit;
}

.portal-funnel__fill--soft {
  background: linear-gradient(90deg, rgba(120, 109, 93, 0.5), rgba(120, 109, 93, 0.22));
}

.portal-funnel__fill--warm {
  background: linear-gradient(90deg, rgba(164, 129, 86, 0.72), rgba(164, 129, 86, 0.28));
}

.portal-funnel__fill--confirmed {
  background: linear-gradient(90deg, rgba(101, 124, 97, 0.76), rgba(101, 124, 97, 0.3));
}

.portal-funnel__fill--closed {
  background: linear-gradient(90deg, rgba(108, 123, 84, 0.9), rgba(108, 123, 84, 0.4));
}

.portal-funnel__fill--canceled {
  background: linear-gradient(90deg, rgba(161, 96, 82, 0.72), rgba(161, 96, 82, 0.28));
}

.portal-funnel__count {
  min-width: 20px;
  color: var(--portal-text);
  font-size: 0.95rem;
  text-align: right;
}

.portal-stats-summary {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.portal-stats-summary--booking {
  margin-bottom: 16px;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

.portal-stats-overview {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(250px, 0.64fr);
  gap: 18px;
  align-items: start;
}

.portal-stats-kpis {
  display: grid;
  gap: 12px;
}

.portal-stats-kpi {
  display: grid;
  gap: 8px;
  padding: 16px 18px;
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 18px;
  background: rgba(255, 251, 245, 0.72);
}

.portal-stats-kpi__label {
  margin: 0;
  color: var(--portal-text-soft);
  font-size: 0.84rem;
}

.portal-stats-kpi__value {
  color: var(--portal-text);
  font-size: 1.7rem;
  font-weight: 700;
  line-height: 1.1;
}

.portal-stats-kpi__caption {
  margin: 0;
  color: var(--portal-text-muted);
  font-size: 0.88rem;
  line-height: 1.45;
}

.portal-stats-summary__card {
  display: grid;
  gap: 8px;
  padding: 16px 18px;
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 18px;
  background: rgba(255, 251, 245, 0.72);
}

.portal-stats-summary__card--wide {
  grid-column: 1 / -1;
}

.portal-stats-summary__label {
  margin: 0;
  color: var(--portal-text-soft);
  font-size: 0.84rem;
}

.portal-stats-summary__value {
  color: var(--portal-text);
  font-size: 1.55rem;
  font-weight: 700;
  line-height: 1.15;
}

.portal-stats-summary__value--compact {
  font-size: 1.12rem;
  line-height: 1.35;
}

.portal-stats-calendar-wrap {
  display: grid;
  max-width: 100%;
}

.portal-panel--booking-overview {
  padding: 16px 18px;
}

.portal-panel--booking-overview .portal-panel__header {
  gap: 10px;
}

.portal-panel--booking-overview .portal-panel__caption {
  font-size: 0.9rem;
}

.portal-panel--booking-overview .portal-stats-summary__card {
  gap: 6px;
  padding: 13px 14px;
  border-radius: 16px;
}

.portal-panel--booking-overview .portal-stats-summary__label {
  font-size: 0.79rem;
}

.portal-panel--booking-overview .portal-stats-summary__value {
  font-size: 1.34rem;
}

.portal-panel--booking-overview .portal-stats-overview {
  grid-template-columns: minmax(0, 1fr) minmax(220px, 0.56fr);
  gap: 14px;
}

.portal-panel--booking-overview .portal-stats-kpis {
  gap: 10px;
}

.portal-panel--booking-overview .portal-stats-kpi {
  gap: 6px;
  padding: 13px 14px;
  border-radius: 16px;
}

.portal-panel--booking-overview .portal-stats-kpi__label {
  font-size: 0.79rem;
}

.portal-panel--booking-overview .portal-stats-kpi__value {
  font-size: 1.46rem;
}

.portal-panel--booking-overview .portal-stats-kpi__caption {
  font-size: 0.82rem;
  line-height: 1.35;
}

.portal-panel--booking-overview .portal-booking-calendar {
  gap: 10px;
  padding: 14px;
  border-radius: 16px;
}

.portal-panel--booking-overview .portal-booking-calendar--large {
  padding: 14px;
}

.portal-panel--booking-overview .portal-booking-calendar--large .portal-booking-calendar__day {
  min-height: 54px;
}

.portal-panel--booking-overview .portal-booking-calendar__legend {
  gap: 8px 14px;
}

.portal-panel--booking-overview .portal-booking-calendar__legend-item {
  font-size: 0.8rem;
}

.portal-panel--booking-overview .portal-booking-calendar__weekdays,
.portal-panel--booking-overview .portal-booking-calendar__grid {
  gap: 6px;
}

.portal-panel--booking-overview .portal-booking-calendar__weekdays span {
  font-size: 0.7rem;
}

.portal-panel--booking-overview .portal-booking-calendar__day {
  min-height: 42px;
  border-radius: 12px;
}

.portal-panel--booking-overview .portal-booking-calendar__day-number {
  font-size: 0.92rem;
}

.portal-panel--booking-overview .portal-booking-calendar__count {
  font-size: 0.66rem;
}

.portal-stack-chart__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 18px;
  margin-bottom: 14px;
}

.portal-stack-chart__legend-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--portal-text-soft);
  font-size: 0.84rem;
}

.portal-stack-chart__legend-swatch {
  display: inline-block;
  width: 12px;
  height: 12px;
  border-radius: 999px;
}

.portal-stack-chart__legend-swatch--base {
  background: rgba(148, 122, 88, 0.42);
}

.portal-stack-chart__legend-swatch--confirmed {
  background: rgba(102, 124, 98, 0.58);
}

.portal-stack-chart__legend-swatch--closed {
  background: rgba(89, 108, 66, 0.8);
}

.portal-stack-chart {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(72px, 1fr));
  gap: 14px;
  align-items: end;
  min-height: 280px;
}

.portal-stack-chart__bar {
  display: grid;
  gap: 10px;
  justify-items: center;
  align-items: end;
}

.portal-stack-chart__value {
  color: var(--portal-text);
  font-size: 0.88rem;
  font-weight: 700;
}

.portal-stack-chart__stack {
  width: 100%;
  max-width: 58px;
  display: flex;
  flex-direction: column-reverse;
  justify-content: flex-start;
  overflow: hidden;
  border: 1px solid rgba(49, 41, 35, 0.08);
  border-radius: 18px 18px 10px 10px;
  background: rgba(247, 241, 233, 0.82);
}

.portal-stack-chart__stack.is-empty {
  min-height: 18px;
  border-style: dashed;
  background: rgba(247, 241, 233, 0.44);
}

.portal-stack-chart__segment {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.28);
}

.portal-stack-chart__segment--base {
  background: linear-gradient(180deg, rgba(173, 140, 99, 0.62), rgba(173, 140, 99, 0.42));
}

.portal-stack-chart__segment--confirmed {
  background: linear-gradient(180deg, rgba(111, 135, 105, 0.76), rgba(111, 135, 105, 0.52));
}

.portal-stack-chart__segment--closed {
  background: linear-gradient(180deg, rgba(92, 112, 67, 0.92), rgba(92, 112, 67, 0.66));
}

.portal-stack-chart__segment-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  padding: 4px 2px;
  color: rgba(255, 251, 245, 0.94);
  font-size: 0.74rem;
  font-weight: 700;
  text-align: center;
  line-height: 1;
}

.portal-stack-chart__label {
  color: var(--portal-text-soft);
  font-size: 0.82rem;
  text-align: center;
  line-height: 1.3;
}

.portal-distribution-chart {
  display: grid;
  gap: 14px;
}

.portal-distribution-chart__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(120px, 1.3fr) auto;
  gap: 12px;
  align-items: center;
}

.portal-distribution-chart__copy {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.portal-distribution-chart__label,
.portal-distribution-chart__share {
  margin: 0;
  color: var(--portal-text-soft);
  font-size: 0.86rem;
}

.portal-distribution-chart__track {
  position: relative;
  overflow: hidden;
  min-height: 12px;
  border-radius: 999px;
  background: rgba(143, 122, 88, 0.1);
}

.portal-distribution-chart__fill {
  position: absolute;
  inset: 0 auto 0 0;
  border-radius: inherit;
}

.portal-distribution-chart__fill--soft {
  background: linear-gradient(90deg, rgba(120, 109, 93, 0.58), rgba(120, 109, 93, 0.24));
}

.portal-distribution-chart__fill--gold {
  background: linear-gradient(90deg, rgba(164, 129, 86, 0.72), rgba(164, 129, 86, 0.28));
}

.portal-distribution-chart__fill--green {
  background: linear-gradient(90deg, rgba(99, 123, 95, 0.78), rgba(99, 123, 95, 0.3));
}

.portal-distribution-chart__value {
  color: var(--portal-text);
  font-size: 0.92rem;
  font-weight: 700;
}

@media (max-width: 980px) {
  .portal-task-entry__summary {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .portal-task-entry__content {
    grid-template-columns: 1fr;
  }

  .portal-stats-grid--overview,
  .portal-stats-grid--duo,
  .portal-stats-summary {
    grid-template-columns: 1fr;
  }

  .portal-funnel__row,
  .portal-distribution-chart__row {
    grid-template-columns: 1fr;
  }

  .portal-funnel__count,
  .portal-funnel__share {
    text-align: left;
  }

  .portal-task-composer {
    grid-template-columns: minmax(0, 1.3fr) repeat(2, minmax(120px, 0.72fr));
    align-items: start;
  }

  .portal-task-composer__title {
    grid-column: 1 / -1;
  }

  .portal-task-composer__notes {
    grid-column: 1 / span 2;
  }

  .portal-task-composer__actions {
    justify-content: flex-start;
    padding-top: 0;
    align-self: end;
  }

  .portal-task-composer__status {
    grid-column: 1 / -1;
  }

  .portal-request-filters__search {
    flex: 1 1 0;
  }

  .portal-request-filters__groups {
    grid-template-columns: 1fr;
  }

  .portal-request-filters__panel[data-open="true"] {
    max-height: 620px;
  }

  .portal-request-comments-grid {
    grid-template-columns: 1fr;
  }

  .portal-request-offers__stats {
    grid-template-columns: 1fr;
  }

  .portal-booking-calendar__weekdays,
  .portal-booking-calendar__grid {
    gap: 6px;
  }

  .portal-booking-calendar__day {
    min-height: 42px;
  }

  .portal-knowledge-previews,
  .portal-form__grid--media,
  .portal-form__grid--trio,
  .portal-route-card {
    grid-template-columns: 1fr;
  }

  .portal-filterbar,
  .portal-knowledge-card__header,
  .portal-route-card__footer,
  .portal-route-card__title-row,
  .portal-route-display__header {
    flex-direction: column;
    align-items: flex-start;
  }

  .portal-page__intro--with-backlink {
    gap: 14px;
  }

  .portal-page__intro-actions {
    justify-items: start;
  }

  .portal-header__top,
  .portal-page__intro,
  .portal-panel__header,
  .portal-form__actions,
  .portal-list__item,
  .portal-guide-card__footer {
    flex-direction: column;
    align-items: flex-start;
  }

  .portal-metrics--trio,
  .portal-metrics--quad,
  .portal-form__grid {
    grid-template-columns: 1fr;
  }

}

@media (max-width: 720px) {
  .portal-task-entry {
    padding: 12px 14px;
    border-radius: 18px;
  }

  .portal-task-entry__meta {
    grid-template-columns: 1fr;
  }

  .portal-app,
  .portal-login {
    width: min(100%, calc(100% - 24px));
  }

  .portal-header {
    padding-top: 14px;
  }

  .portal-header__inner,
  .portal-panel,
  .portal-login__panel {
    padding: 18px;
    border-radius: 22px;
  }

  .portal-nav {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .portal-nav__link {
    width: 100%;
  }

  .portal-task-composer {
    grid-template-columns: 1fr;
  }

  .portal-task-composer__title,
  .portal-task-composer__notes {
    grid-column: auto;
  }

  .portal-preview-item {
    grid-template-columns: 72px minmax(0, 1fr);
  }

  .portal-risk-card__summary {
    grid-template-columns: 1fr;
    align-items: start;
  }

  .portal-lightbox__content {
    width: min(94vw, 960px);
    margin-top: 12vh;
  }

  .portal-route-card__media-shell {
    padding: 18px 18px 0;
  }

  .portal-request-filters__topbar {
    grid-template-columns: 1fr;
  }

  .portal-request-filters__actions {
    justify-content: flex-start;
    flex-wrap: wrap;
  }

  .portal-request-filters__panel[data-open="true"] {
    max-height: 720px;
  }
}

@media (max-width: 960px) {
  .portal-stats-overview {
    grid-template-columns: 1fr;
  }

  .portal-stats-summary--booking {
    grid-template-columns: 1fr;
  }

  .portal-task-entry__content,
  .portal-task-entry__meta {
    grid-template-columns: 1fr;
  }
}

/* =========================================
   Task UI Refinements — compact, minimal
   ========================================= */

/* -- Card baseline: tighter, less form-like -- */
.portal-task-entry {
  padding: 7px 10px 8px;
  border-radius: 12px;
  gap: 0;
  border-color: rgba(49, 41, 35, 0.07);
}

/* -- Summary: vertically centered -- */
.portal-task-entry .portal-task-entry__summary {
  align-items: center;
}

/* -- Content: title+comment left, controls right, controls vertically centered -- */
.portal-task-entry .portal-task-entry__content {
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0 14px;
  align-items: center;
}

/* -- Primary: title on top, comment below -- */
.portal-task-entry .portal-task-entry__primary {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.portal-task-entry .portal-task-inline-text--primary {
  min-width: 0;
}

/* -- Right zone: controls only, no extra layout -- */
.portal-task-entry .portal-task-entry__right {
  flex-shrink: 0;
}

/* -- Hide the "Uzdevums" label (title field label stays hidden) -- */
.portal-task-entry .portal-task-inline-text__label {
  display: none;
}

/* -- Show compact inline labels: "Atbildīgais: X" style -- */
.portal-task-entry .portal-task-entry__meta-control > span {
  display: inline;
  color: rgba(79, 72, 62, 0.5);
  font-size: 0.74rem;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
  white-space: nowrap;
}
.portal-task-entry .portal-task-entry__meta-control > span::after {
  content: ":";
  margin-right: 3px;
}

.portal-task-entry .portal-task-entry__meta-control--date .portal-task-composer__date-field > span {
  display: inline;
  color: rgba(79, 72, 62, 0.5);
  font-size: 0.74rem;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
  white-space: nowrap;
}
.portal-task-entry .portal-task-entry__meta-control--date .portal-task-composer__date-field > span::after {
  content: ":";
  margin-right: 3px;
}

/* -- Title: looks like plain text in read mode -- */
.portal-task-entry .portal-task-inline-text__input--title {
  min-height: 30px;
  padding: 5px 7px;
  font-size: 0.97rem;
}

.portal-task-entry .portal-task-inline-text__input--title[readonly] {
  border-color: transparent;
  background: transparent;
  box-shadow: none;
  padding: 3px 5px;
}

.portal-task-entry .portal-task-inline-text__input--title[readonly]:hover {
  border-color: rgba(143, 122, 88, 0.13);
  background: rgba(255, 251, 245, 0.7);
}

/* -- Meta row: all 3 columns fixed so values align across every row -- */
.portal-task-entry .portal-task-entry__meta {
  display: grid;
  grid-template-columns: 158px 152px 130px;
  align-items: center;
  gap: 0 6px;
}

/* -- Status select: compact workflow pill -- */
.portal-task-entry .portal-workflow-select {
  min-height: 30px;
  height: 30px;
  padding: 0 26px 0 8px;
  font-size: 0.85rem;
  border-radius: 9px;
  line-height: 30px;
}

/* -- Assignee select: compact, quiet -- */
.portal-task-entry .portal-task-entry__meta-control--structured select:not([class*="portal-workflow-select"]) {
  min-height: 30px;
  height: 30px;
  padding: 0 8px;
  border-radius: 9px;
  font-size: 0.85rem;
  border-color: rgba(49, 41, 35, 0.1);
  background: rgba(255, 252, 247, 0.66);
  color: var(--portal-text-soft);
}

/* -- Date field: flex row so "Termiņš: Šodien 📅" fits one line -- */
.portal-task-entry .portal-task-entry__meta-control--date .portal-task-composer__date-field {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 3px;
}

/* -- Hide dd/mm/yyyy input; show relative date hint as the value -- */
.portal-task-entry .portal-task-entry__meta-control--date .portal-task-composer__date-display {
  display: none;
}

.portal-task-entry .portal-task-entry__meta-control--date .portal-task-composer__date-control {
  display: flex;
  align-items: center;
  gap: 4px;
}

.portal-task-entry .portal-task-entry__meta-control--date .portal-task-composer__date-trigger {
  width: 28px;
  min-width: 28px;
  height: 28px;
  border-radius: 8px;
}

/* -- Due hint: shown as the date value ("Šodien", "Rīt" …) -- */
.portal-task-entry .portal-task-composer__due-hint {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--portal-text);
  margin-top: 0;
  line-height: 1;
}

/* -- Notes: compact comment field, always visible below controls -- */
.portal-task-entry .portal-task-entry__secondary {
  width: 100%;
}

.portal-task-entry .portal-task-inline-text--secondary {
  padding-top: 0;
}

.portal-task-entry .portal-task-inline-text--secondary .portal-task-inline-text__input--notes {
  min-height: 69px;
  font-size: 0.85rem;
}

.portal-task-entry .portal-task-inline-text__input--notes[readonly] {
  border-color: transparent;
  background: transparent;
  box-shadow: none;
  padding: 1px 5px;
  color: var(--portal-text-muted);
  font-size: 0.84rem;
}

.portal-task-entry .portal-task-inline-text__input--notes[readonly]:hover {
  border-color: rgba(143, 122, 88, 0.1);
  background: rgba(255, 251, 245, 0.54);
}

/* -- Character counter: hidden at rest, revealed on focus -- */
.portal-task-entry .portal-task-composer__notes-hint {
  opacity: 0;
  transition: opacity 160ms ease;
  margin-top: 1px;
}

.portal-task-entry .portal-task-inline-text:focus-within .portal-task-composer__notes-hint {
  opacity: 1;
}

/* -- Delete button: revealed on row hover only -- */
.portal-task-entry .portal-task-entry__utility {
  align-self: center;
  padding-top: 0;
}

.portal-task-entry .portal-task-card__delete {
  opacity: 0;
}

.portal-task-entry:hover .portal-task-card__delete,
.portal-task-entry .portal-task-card__delete:focus-visible {
  opacity: 0.55;
}

.portal-task-entry .portal-task-card__delete:hover {
  opacity: 1;
}

/* -- Create-task modal size: 50% bigger than base -- */
.portal-confirm-panel--task-create {
  padding: 44px 48px 42px;
  gap: 28px;
}

/* -- Create-task modal: matches task-row layout (title → controls → notes → button) -- */
.portal-confirm-panel--task-create .portal-task-composer {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 16px 12px;
  padding-bottom: 0;
}

/* Title: own full-width row */
.portal-confirm-panel--task-create .portal-task-composer__title {
  flex: 0 0 100%;
}

/* Controls: auto-width, flow onto the same row together */
.portal-confirm-panel--task-create .portal-task-composer__assignee,
.portal-confirm-panel--task-create .portal-task-composer__status-field,
.portal-confirm-panel--task-create .portal-task-composer__date-field {
  flex: 0 0 auto;
}

/* Notes: own full-width row */
.portal-confirm-panel--task-create .portal-task-composer .portal-task-composer__notes {
  flex: 0 0 100%;
}

/* Status message: own full-width row */
.portal-confirm-panel--task-create .portal-task-composer .portal-task-composer__status {
  flex: 0 0 100%;
}

/* Submit: own full-width row, centered */
.portal-confirm-panel--task-create .portal-task-composer__actions,
.portal-confirm-panel--task-create .portal-task-composer__actions--create {
  flex: 0 0 100%;
  display: flex;
  justify-content: center;
  padding-top: 2px;
  padding-bottom: 0;
}

/* Title: full width */
.portal-confirm-panel--task-create .portal-task-composer__title-input {
  min-height: 69px;
  height: 69px;
  font-size: 1rem;
  resize: none;
}

/* Controls row: assignee + status + date side by side, like task rows */
.portal-confirm-panel--task-create .portal-task-composer__assignee,
.portal-confirm-panel--task-create .portal-task-composer__status-field,
.portal-confirm-panel--task-create .portal-task-composer__date-field {
  display: inline-flex;
  flex-direction: row;
  align-items: center;
  gap: 4px;
}

/* Pull the three controls onto one visual row */
.portal-confirm-panel--task-create .portal-task-composer__assignee {
  margin-right: 4px;
}
.portal-confirm-panel--task-create .portal-task-composer__status-field {
  margin-right: 4px;
}

/* Labels: same style as task rows */
.portal-confirm-panel--task-create .portal-task-composer__assignee > span,
.portal-confirm-panel--task-create .portal-task-composer__status-field > span {
  display: inline;
  color: rgba(79, 72, 62, 0.5);
  font-size: 0.95rem;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
  white-space: nowrap;
  margin-bottom: 0;
}
.portal-confirm-panel--task-create .portal-task-composer__assignee > span::after,
.portal-confirm-panel--task-create .portal-task-composer__status-field > span::after {
  content: ":";
  margin-right: 3px;
}

/* Selects: styled like task-row selects, auto width (not stretched) */
.portal-confirm-panel--task-create .portal-task-composer__assignee select,
.portal-confirm-panel--task-create .portal-task-composer__status-field select {
  min-height: 42px;
  height: 42px;
  padding: 0 32px 0 12px;
  border-radius: 9px;
  font-size: 1rem;
  border: 1px solid rgba(49, 41, 35, 0.1);
  background: rgba(255, 252, 247, 0.66) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%234F483E' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E") no-repeat right 10px center;
  color: var(--portal-text-soft);
  width: auto;
  max-width: 220px;
  -webkit-appearance: none;
  appearance: none;
  cursor: pointer;
}

/* Date field: "Termiņš: Vakar 📅" inline */
.portal-confirm-panel--task-create .portal-task-composer__date-field > span {
  display: inline;
  color: rgba(79, 72, 62, 0.5);
  font-size: 0.95rem;
  font-weight: 600;
  text-transform: none;
  letter-spacing: 0;
  white-space: nowrap;
}
.portal-confirm-panel--task-create .portal-task-composer__date-field > span::after {
  content: ":";
  margin-right: 3px;
}
.portal-confirm-panel--task-create .portal-task-composer__date-display {
  display: none;
}
.portal-confirm-panel--task-create .portal-task-composer__date-control {
  display: flex;
  align-items: center;
  gap: 4px;
}
.portal-confirm-panel--task-create .portal-task-composer__due-hint {
  font-size: 1rem;
  font-weight: 500;
  color: var(--portal-text);
}
.portal-confirm-panel--task-create .portal-task-composer__date-trigger {
  width: 38px;
  min-width: 38px;
  height: 38px;
  border-radius: 8px;
  font-size: 1.1rem;
}

/* Notes textarea height */
.portal-confirm-panel--task-create .portal-task-composer__notes textarea {
  min-height: 81px;
  height: 81px;
  font-size: 1rem;
  resize: none;
}

/* ── Uzdevums row: labeled controls as inline "Label: Value" rows ── */
.portal-task-entry .portal-task-entry__meta-control--structured {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 0;
}

/* ── Panel header spacing: prevent button touching the task list ── */
.portal-panel__header--taskbar {
  margin-bottom: 14px;
}

/* ── Maršruti: 2x larger gallery thumbnails ── */
.portal-gallery-grid {
  grid-template-columns: repeat(auto-fit, minmax(148px, 200px));
}

/* ── Maršruti: stronger card borders, more breathing room ── */
.portal-route-list {
  gap: 18px;
}

.portal-route-card {
  border-color: rgba(49, 41, 35, 0.16);
}

/* ── Pievienot risku: stack inline date control so input isn't squashed ── */
.portal-form--risk .portal-inline-date-control {
  grid-template-columns: 1fr;
  gap: 5px;
}

.portal-form--risk .portal-link-button[data-clear-risk-date] {
  justify-self: start;
  font-size: 0.79rem;
}

.portal-form--risk .portal-inline-date-control input[type="date"] {
  width: 100%;
}

/* ── Pieteikums expanded detail redesign ────────────────────────────────── */

/* Merged Komentāri block — overrides default section padding/gap */
/* Comments block — wider internal notes column, no shared header */
.portal-request-comments-block {
  display: grid;
  grid-template-columns: minmax(0, 0.72fr) minmax(0, 1fr);
  grid-template-areas: "client notes";
  padding: 0;
  gap: 0;
  overflow: hidden;
}

.portal-request-comments-block__title {
  display: none;
}

/* Client comment — read-only, tinted */
.portal-request-client-comment {
  grid-area: client;
  display: grid;
  gap: 6px;
  min-height: 106px;
  padding: 12px 16px 14px;
  background: rgba(242, 237, 228, 0.5);
  border-right: 1px solid rgba(49, 41, 35, 0.07);
}

.portal-request-client-comment__source {
  margin: 0;
  font-size: 0.71rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--portal-text-muted);
}

.portal-request-client-comment__text {
  margin: 0;
  min-height: 106px;
  color: var(--portal-text-soft);
  font-size: 0.91rem;
  line-height: 1.55;
  white-space: pre-wrap;
}

/* Internal notes — editable */
.portal-request-internal-notes {
  grid-area: notes;
  display: grid;
  gap: 8px;
  min-height: 106px;
  padding: 12px 16px 14px;
}

.portal-request-internal-notes__header {
  display: flex;
  align-items: center;
  gap: 8px;
}

.portal-request-internal-notes__badge {
  font-size: 0.71rem;
  color: var(--portal-text-muted);
  font-style: italic;
}

/* Textarea fills the available height of the right column */
.portal-request-internal-notes .portal-request-note-form {
  height: 100%;
}

.portal-request-internal-notes .portal-request-note-form__textarea {
  min-height: 106px;
  height: 100%;
  resize: none;
}

/* Operational 3-col row: date | pavadzīme | compact offers */
.portal-request-ops-row {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  align-items: stretch;
}

/* Pavadzīme section */
.portal-request-invoice {
  display: grid;
  gap: 10px;
}

.portal-request-invoice__state {
  display: grid;
  gap: 8px;
}

.portal-request-invoice__empty-label {
  margin: 0;
  color: var(--portal-text-muted);
  font-size: 0.87rem;
  font-style: italic;
}

.portal-request-invoice__upload-btn {
  cursor: pointer;
  width: fit-content;
}

/* Future: uploaded file state elements */
.portal-request-invoice__file {
  display: grid;
  gap: 8px;
}

.portal-request-invoice__file-name {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--portal-text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.portal-request-invoice__file-link {
  font-size: 0.85rem;
  color: var(--portal-accent, #8a7356);
}

.portal-request-invoice__preview {
  min-height: 120px;
  border: 1px solid rgba(49, 41, 35, 0.1);
  border-radius: 10px;
  overflow: hidden;
  background: rgba(244, 240, 233, 0.5);
}

/* Ops-row: flat single-line strips — label · value · button all inline */
.portal-request-ops-row .portal-request-details__section {
  display: flex;
  flex-direction: row;
  align-items: center;
  flex-wrap: nowrap;
  align-content: center;
  gap: 8px;
  min-width: 0;
  min-height: 78px;
  padding: 12px 16px;
  overflow: hidden;
}

.portal-request-ops-row .portal-request-details__section-label {
  margin: 0;
  font-size: 0.78rem;
  line-height: 1;
  flex: 0 0 auto;
  white-space: nowrap;
}

.portal-request-ops-row .portal-request-details__section-label-content {
  gap: 8px;
  white-space: nowrap;
}

.portal-request-ops-row .portal-request-details__section-label-content svg {
  box-sizing: border-box;
  width: 38px;
  height: 38px;
  flex: 0 0 38px;
  padding: 9px;
  border-radius: 999px;
  background: rgba(143, 122, 88, 0.13);
  opacity: 0.82;
}

.portal-request-ops-row .portal-button--compact {
  flex: 0 0 auto;
  min-height: 38px;
  padding-inline: 12px;
  font-size: 0.88rem;
  white-space: nowrap;
}

/* Section head flows inline: label + button on same axis as siblings */
.portal-request-ops-row .portal-request-details__section-head {
  display: contents;
}

.portal-request-ops-row .portal-request-booking__hint,
.portal-request-ops-row .portal-request-invoice__empty-label,
.portal-request-ops-row .portal-request-offers__hint {
  display: none;
}

/* Booking value: compact inline */
.portal-request-ops-row .portal-request-booking__value {
  margin: 0;
  flex: 0 0 auto;
  min-width: max-content;
  font-size: 0.88rem;
  font-weight: 600;
  white-space: nowrap;
}

/* Compact offers strip */
.portal-request-offers--compact {
  display: contents;
}

.portal-request-ops-row .portal-request-offers--compact {
  overflow: visible;
}

.portal-request-offers--compact .portal-request-offers__stats {
  display: contents;
}

.portal-request-offers--compact .portal-request-offers__hint {
  display: none;
}

.portal-request-offers__action {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
}

.portal-request-offers__action--disabled:focus {
  outline: none;
}

.portal-request-offers__action--disabled .portal-button:disabled {
  pointer-events: none;
}

.portal-request-offers__action--disabled::after {
  position: absolute;
  right: 0;
  bottom: calc(100% + 8px);
  z-index: 4;
  width: max-content;
  max-width: 260px;
  padding: 7px 9px;
  border: 1px solid rgba(49, 41, 35, 0.12);
  border-radius: 9px;
  color: var(--portal-text);
  background: rgba(255, 251, 245, 0.98);
  box-shadow: 0 12px 28px rgba(29, 24, 20, 0.14);
  content: attr(data-tooltip);
  font-size: 0.78rem;
  font-weight: 600;
  line-height: 1.3;
  opacity: 0;
  pointer-events: none;
  transform: translateY(4px);
  transition:
    opacity 140ms ease,
    transform 140ms ease;
}

.portal-request-offers__action--disabled:hover::after,
.portal-request-offers__action--disabled:focus::after,
.portal-request-offers__action--disabled:focus-within::after {
  opacity: 1;
  transform: translateY(0);
}

/* Stat sub-boxes: strip borders/background, show as inline label+value pairs */
.portal-request-ops-row .portal-request-offers__stat {
  display: flex;
  flex-direction: row;
  align-items: baseline;
  flex: 0 0 auto;
  gap: 3px;
  padding: 0;
  border: none;
  background: none;
  border-radius: 0;
  white-space: nowrap;
}

.portal-request-ops-row .portal-request-offers__value {
  font-size: 0.88rem;
  font-weight: 700;
}

.portal-request-ops-row .portal-request-offers__label {
  font-size: 0.76rem;
  color: var(--portal-text-muted);
}

/* Separator dot between stats */
.portal-request-ops-row .portal-request-offers__stat + .portal-request-offers__stat::before {
  content: "·";
  color: var(--portal-text-muted);
  margin-right: 3px;
  font-size: 0.85rem;
}

/* Chronology — subdued surface, slimmer feel */
.portal-request-details__section--chronology {
  gap: 4px;
  padding: 5px 10px 8px;
  background: rgba(241, 237, 229, 0.4);
  border-color: rgba(49, 41, 35, 0.06);
}

.portal-request-details__section--chronology .portal-request-details__section-head {
  min-height: 0;
  line-height: 1;
}

.portal-request-details__section--chronology .portal-request-details__section-label {
  margin: 0;
  font-size: 0.7rem;
  line-height: 1;
}

.portal-request-details__section--chronology .portal-request-details__section-label-content {
  gap: 5px;
}

.portal-request-details__section--chronology .portal-request-details__section-label-content svg {
  box-sizing: border-box;
  width: 18px;
  height: 18px;
  flex: 0 0 18px;
  padding: 4px;
  border-radius: 999px;
  background: rgba(143, 122, 88, 0.12);
  opacity: 0.82;
}

.portal-request-chronology__item {
  padding: 5px 9px;
  border-radius: 9px;
  background: rgba(255, 253, 249, 0.55);
}

.portal-request-chronology__text {
  font-size: 0.87rem;
}

/* Overall expanded area: tighter gap and padding */
.portal-request-details {
  gap: 10px;
  padding: 10px;
}

/* Section-head (label + button row): less vertical space */
.portal-request-ops-row .portal-request-details__section-head {
  gap: 6px;
}

/* Responsive: ops-row collapses gracefully */
@media (max-width: 900px) {
  .portal-request-ops-row {
    grid-template-columns: 1fr 1fr;
  }
}

@media (max-width: 640px) {
  .portal-request-ops-row {
    grid-template-columns: 1fr;
  }

  .portal-request-comments-block {
    grid-template-columns: 1fr;
    grid-template-areas: "client" "notes";
  }

  .portal-request-client-comment {
    border-right: none;
    border-bottom: 1px solid rgba(49, 41, 35, 0.07);
  }
}

/* =========================================================
   Noticis modal
   ========================================================= */

.portal-confirm-panel--noticis {
  width: min(640px, calc(100vw - 44px));
  max-height: calc(100dvh - 48px);
  overflow-y: auto;
}

.portal-noticis-form__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px 20px;
}

.portal-noticis-form__checkbox-row {
  flex-direction: row;
  align-items: center;
  gap: 10px;
  cursor: pointer;
}

.portal-noticis-form__checkbox-row input[type="checkbox"] {
  width: 16px;
  height: 16px;
  accent-color: var(--portal-green);
  cursor: pointer;
}

/* =========================================================
   Rēķins generation modal
   ========================================================= */

.portal-create-panel--rekins {
  width: min(1060px, calc(100vw - 44px));
  max-height: calc(100dvh - 48px);
  overflow-y: auto;
  gap: 0;
  padding: 0;
}

.portal-create-panel--rekins .portal-confirm-panel__header {
  padding: 28px 32px 20px;
  border-bottom: 1px solid var(--portal-line);
}

.portal-create-panel--rekins .portal-confirm-panel__actions {
  padding: 16px 32px 22px;
  border-top: 1px solid var(--portal-line);
  display: flex;
  align-items: center;
  gap: 10px;
}

.portal-rekins-modal-body {
  display: grid;
  grid-template-columns: 300px 1fr;
  min-height: 0;
  overflow: hidden;
}

.portal-rekins-source {
  padding: 24px 28px;
  background: rgba(230, 220, 207, 0.42);
  border-right: 1px solid var(--portal-line);
  overflow-y: auto;
}

.portal-rekins-source__title {
  margin: 0 0 14px;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--portal-text-muted);
}

.portal-rekins-source__list {
  margin: 0;
  display: grid;
  gap: 8px;
}

.portal-rekins-source__row {
  display: grid;
  grid-template-columns: 80px 1fr 28px;
  gap: 6px;
  align-items: center;
  font-size: 0.9375rem;
  padding: 7px 6px;
  border-radius: 6px;
}

.portal-rekins-source__row:hover {
  background: rgba(133, 109, 72, 0.07);
}

.portal-rekins-source__row dt {
  color: var(--portal-text-muted);
}

.portal-rekins-source__row dd {
  margin: 0;
  color: var(--portal-text);
  word-break: break-word;
}

.portal-rekins-source__copy {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: none;
  border-radius: 6px;
  background: transparent;
  color: var(--portal-text-muted);
  cursor: pointer;
  opacity: 0.5;
  transition: opacity 0.12s, background 0.12s, color 0.12s;
  flex-shrink: 0;
}

.portal-rekins-source__copy:hover {
  background: rgba(133, 109, 72, 0.14);
  color: var(--portal-accent, #856d48);
}

.portal-rekins-source__copy.is-copied {
  opacity: 1;
  color: var(--portal-green, #596a56);
  background: rgba(89, 106, 86, 0.12);
}

.portal-rekins-form {
  padding: 24px 28px;
  overflow-y: auto;
  display: grid;
  gap: 14px;
  align-content: start;
}

.portal-rekins-form__header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.portal-rekins-refresh {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 10px;
  border: 1px solid var(--portal-line);
  border-radius: 6px;
  background: transparent;
  color: var(--portal-text-muted);
  font-size: 0.78rem;
  cursor: pointer;
  transition: background 0.12s, color 0.12s;
  white-space: nowrap;
}

.portal-rekins-refresh:hover {
  background: rgba(133, 109, 72, 0.08);
  color: var(--portal-accent, #856d48);
  border-color: rgba(133, 109, 72, 0.3);
}

.portal-rekins-form__section-label {
  margin: 4px 0 -4px;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--portal-text-muted);
}

.portal-rekins-form__group {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 10px 16px;
}

.portal-rekins-form__group--pricing {
  grid-column: 1 / -1;
  grid-template-columns: 1fr 1fr 1fr 1fr;
}

.portal-rekins-pvn-note {
  margin: -6px 0 0;
  font-size: 0.8rem;
  font-style: italic;
  color: var(--portal-text-muted);
}

.portal-rekins-issuer-line {
  margin: 0;
  font-size: 0.82rem;
  color: var(--portal-text-muted);
}

.portal-rekins-issuer-line strong {
  color: var(--portal-text);
  font-weight: 600;
}

.portal-rekins-actions-hint {
  flex: 1;
  margin: 0;
  font-size: 0.78rem;
  color: var(--portal-text-muted);
  line-height: 1.4;
}

.portal-rekins-form__error {
  margin: 0;
  padding: 10px 12px;
  border: 1px solid rgba(169, 100, 88, 0.32);
  border-radius: 12px;
  background: rgba(241, 224, 220, 0.8);
  color: #733f36;
  font-size: 0.88rem;
  line-height: 1.45;
}

/* =========================================================
   Rēķins PDF preview modal
   ========================================================= */

.portal-confirm-panel--rekins-preview {
  width: min(900px, calc(100vw - 44px));
  height: calc(100dvh - 80px);
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 0;
  padding: 0;
}

.portal-confirm-panel--rekins-preview .portal-confirm-panel__header {
  padding: 24px 28px 18px;
  border-bottom: 1px solid var(--portal-line);
}

.portal-confirm-panel--rekins-preview .portal-confirm-panel__actions {
  padding: 16px 28px 20px;
  border-top: 1px solid var(--portal-line);
  display: flex;
  gap: 10px;
  justify-content: flex-end;
}

.portal-rekins-preview-body {
  overflow: hidden;
  padding: 0;
}

.portal-rekins-preview-frame {
  width: 100%;
  height: 100%;
  border: none;
}

/* =========================================================
   Post-event summary (Noticis expanded view)
   ========================================================= */

.portal-request-event-summary {
  background: rgba(89, 106, 86, 0.05);
  border: 1px solid rgba(89, 106, 86, 0.14);
  border-radius: var(--portal-radius-sm);
  padding: 20px 22px;
}

.portal-request-event-summary--empty {
  background: transparent;
  border-color: var(--portal-line);
}

.portal-event-summary {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 18px;
  align-items: start;
  margin-top: 14px;
}

.portal-event-summary__fields {
  display: grid;
  gap: 8px;
}

.portal-event-summary__row {
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 6px;
  font-size: 0.85rem;
}

.portal-event-summary__label {
  color: var(--portal-text-muted);
}

.portal-event-summary__value {
  color: var(--portal-text);
}

.portal-event-summary__value--warning {
  color: var(--portal-clay);
  font-weight: 500;
}

.portal-event-summary__row--note .portal-event-summary__value {
  font-style: italic;
}

.portal-event-summary__photo {
  position: relative;
  width: 108px;
  flex-shrink: 0;
}

.portal-event-summary__photo-img {
  width: 108px;
  height: 80px;
  object-fit: cover;
  border-radius: 10px;
  border: 1px solid var(--portal-line);
  display: block;
}

.portal-event-summary__photo-count {
  position: absolute;
  bottom: 6px;
  right: 6px;
  background: rgba(35, 31, 28, 0.65);
  color: #fff;
  font-size: 0.72rem;
  padding: 2px 6px;
  border-radius: 6px;
}

.portal-request-comments-block--secondary {
  opacity: 0.8;
}

.portal-request-comments-toggle {
  display: flex;
  padding: 0 2px 4px;
}

/* =========================================================
   Rēķins invoice state
   ========================================================= */

.portal-request-invoice__exists {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}

.portal-request-invoice__number {
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--portal-text);
}

.portal-request-invoice__date {
  font-size: 0.78rem;
  color: var(--portal-text-muted);
}

/* =========================================================
   Form fields (shared for new modals)
   ========================================================= */

.portal-form-field {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

.portal-form-field--wide {
  grid-column: 1 / -1;
}

.portal-form-field__label {
  font-size: 0.78rem;
  font-weight: 600;
  color: var(--portal-text-soft);
  letter-spacing: 0.01em;
}

.portal-form-field__hint {
  font-size: 0.75rem;
  color: var(--portal-text-muted);
  margin-top: 2px;
}

.portal-form-field input[type="text"],
.portal-form-field input[type="number"],
.portal-form-field input[type="email"],
.portal-form-field textarea {
  padding: 8px 10px;
  border: 1px solid rgba(49, 41, 35, 0.18);
  border-radius: 8px;
  background: rgba(255, 252, 247, 0.9);
  font-family: var(--portal-font-body);
  font-size: 0.88rem;
  color: var(--portal-text);
  transition: border-color 100ms;
  width: 100%;
}

.portal-form-field input[readonly] {
  background: rgba(230, 220, 207, 0.5);
  color: var(--portal-text-soft);
}

.portal-form-field input:focus,
.portal-form-field textarea:focus {
  outline: none;
  border-color: rgba(81, 111, 136, 0.48);
}

.portal-form-field input[type="file"] {
  font-size: 0.82rem;
  color: var(--portal-text-muted);
}

@media (max-width: 680px) {
  .portal-rekins-modal-body {
    grid-template-columns: 1fr;
  }

  .portal-rekins-source {
    border-right: none;
    border-bottom: 1px solid var(--portal-line);
  }

  .portal-rekins-form__group,
  .portal-rekins-form__group--pricing,
  .portal-noticis-form__grid {
    grid-template-columns: 1fr;
  }

  .portal-form-field--wide {
    grid-column: span 1;
  }
}
