/* roma73c.css — Gorvansi Design System Components */


.studio-sidebar {
   width:var(--sidebar-w);
   flex:0 0 var(--sidebar-w);
   background-color:var(--ground-deep);
   border-right:1px solid var(--ground-border);
   height:100vh;
   position:sticky;
   top:0;
   display:flex;
   flex-direction:column;
   justify-content:space-between;
   padding:var(--space-l) var(--space-m);
   z-index:100;
   overflow-y:auto;
   overscroll-behavior:contain;
}

.studio-sidebar__top {
   display:flex;
   flex-direction:column;
   gap:var(--space-s);
}

.brand {
   display:inline-flex;
   align-items:center;
   text-decoration:none;
   border-bottom:none;
   min-height:44px;
}

.brand img {
   height:2.1rem;
   width:auto;
   aspect-ratio:5.262 / 1;
   display:block;
}

.brand:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:4px;
}

.studio-badge {
   display:flex;
   flex-direction:column;
   gap:0.15rem;
   padding:var(--space-2xs) var(--space-xs);
   background-color:var(--ground);
   border:1px solid var(--ground-border);
   border-radius:2px;
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--chalk-muted);
   line-height:1.35;
}

.studio-badge__location {
   color:var(--chalk);
   font-weight:500;
}

.studio-badge__meta { color:var(--chalk-subtle); }

.studio-nav {
   margin:var(--space-m) 0;
   display:flex;
   flex-direction:column;
}

.studio-nav__list {
   list-style:none;
   padding:0;
   margin:0;
   display:flex;
   flex-direction:column;
   gap:2px;
}

.studio-nav__item { margin:0; }

.studio-nav__link {
   display:flex;
   align-items:center;
   justify-content:space-between;
   padding:0.55rem 0.75rem;
   min-height:44px;
   color:var(--chalk-muted);
   font-family:var(--lugu-047);
   font-size:var(--lugu-36f);
   text-decoration:none;
   border-radius:2px;
   border-left:2px solid transparent;
   transition:color var(--dur-fast) var(--ease-refine),
                     background-color var(--dur-fast) var(--ease-refine),
                     border-color var(--dur-fast) var(--ease-refine);
}

.studio-nav__link .nav-rate {
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--chalk-subtle);
   transition:color var(--dur-fast) var(--ease-refine);
}

.studio-nav__link:hover {
   color:var(--chalk);
   background-color:var(--ground-elevated);
   border-left-color:var(--chalk-subtle);
   text-decoration:none;
}

.studio-nav__link:hover .nav-rate { color:var(--accent); }

.studio-nav__link:active {
   background-color:var(--ground);
   border-left-color:var(--accent);
   color:var(--chalk);
}

.studio-nav__link:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:-2px;
   color:var(--chalk);
}

.studio-nav__link[aria-current="page"],
.studio-nav__link.is-active {
   color:var(--chalk);
   font-weight:500;
   background-color:var(--ground);
   border-left-color:var(--accent);
}

.studio-nav__link[aria-current="page"] .nav-rate,
.studio-nav__link.is-active .nav-rate { color:var(--accent); }

.studio-sidebar__meta {
   padding-top:var(--space-m);
   border-top:1px solid var(--ground-border);
   display:flex;
   flex-direction:column;
   gap:var(--space-2xs);
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--chalk-subtle);
}

.studio-sidebar__meta address {
   font-style:normal;
   line-height:1.45;
   color:var(--chalk-muted);
}

.studio-sidebar__contact-links {
   display:flex;
   flex-direction:column;

   gap:0.25rem;
   margin-top:0.35rem;
}

.studio-sidebar__contact-links a {
   display:inline-flex;
   align-items:center;
   gap:0.4rem;
   color:var(--chalk-muted);
   text-decoration:none;
   min-height:44px;
   padding:0.2rem 0;
   transition:color var(--dur-fast) var(--ease-refine);
}

.studio-sidebar__contact-links a:hover { color:var(--accent); }

.studio-sidebar__contact-links a:active { color:var(--chalk); }

.studio-sidebar__contact-links a:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:2px;
}

/* Mobile Header Bar */
.mobile-top-bar {
   display:none;
   position:fixed;
   top:0;
   left:0;
   right:0;
   height:var(--header-mobile-h);
   background-color:var(--ground-deep);
   border-bottom:1px solid var(--ground-border);
   padding:0 var(--space-s);
   z-index:200;
   align-items:center;
   justify-content:space-between;

}

.mobile-top-bar .brand img { height:1.85rem; }

.mobile-actions {
   display:flex;
   align-items:center;
   gap:var(--space-2xs);
}

.mobile-action-btn {
   display:inline-flex;
   align-items:center;
   justify-content:center;
   width:44px;
   height:44px;
   background-color:var(--ground);
   border:1px solid var(--ground-border);
   border-radius:2px;
   color:var(--chalk);
   text-decoration:none;
   cursor:pointer;
   transition:background-color var(--dur-fast) var(--ease-refine),
                     border-color var(--dur-fast) var(--ease-refine),
                     color var(--dur-fast) var(--ease-refine);
}

.mobile-action-btn:hover {
   background-color:var(--ground-elevated);
   border-color:var(--chalk-subtle);
   color:var(--accent);
}

.mobile-action-btn:active {
   background-color:var(--ground-deep);
   border-color:var(--accent);
   transform:translateY(1px);
}

.mobile-action-btn:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:2px;
}

.drawer-overlay {
   display:none;
   position:fixed;
   top:0;
   left:0;
   right:0;
   bottom:0;
   background-color:rgba(20, 24, 22, 0.75);
   backdrop-filter:blur(4px);
   -webkit-backdrop-filter:blur(4px);
   z-index:150;
   opacity:0;
   transition:opacity var(--dur-base) var(--ease-refine);
   pointer-events:none;
}

.drawer-overlay.is-visible {
   opacity:1;
   pointer-events:auto;
}

@media (max-width: 1023px) {
   .mobile-top-bar { display:flex; }
   .drawer-overlay { display:block; }
   .studio-sidebar {
      display:none;
      position:fixed;
      top:0;
      left:0;
      bottom:0;
      width:min(320px, 85vw);
      height:100vh;
      transform:translateX(-100%);
      transition:transform var(--dur-deliberate) var(--ease-refine);
      box-shadow:20px 0 40px rgba(0, 0, 0, 0.45);
      z-index:210;
   }
   .studio-sidebar.is-open {
      display:flex;
      transform:translateX(0);
   }
}

@media (min-width: 1024px) {
   .mobile-top-bar { display:none !important; }
   .studio-sidebar {
      display:flex !important;
      position:sticky !important;
      transform:none !important;
   }
}


.btn {
   display:inline-flex;
   align-items:center;
   justify-content:center;
   gap:0.5rem;
   padding:0.75rem 1.4rem;
   min-height:44px;
   font-family:var(--lugu-43e);
   font-size:var(--step--1);

   font-weight:500;
   letter-spacing:0.02em;
   text-decoration:none;
   border-radius:2px;
   cursor:pointer;
   border:1px solid transparent;
   transition:background-color var(--dur-fast) var(--ease-refine),
                     border-color var(--dur-fast) var(--ease-refine),
                     color var(--dur-fast) var(--ease-refine),
                     box-shadow var(--dur-fast) var(--ease-refine),
                     transform var(--dur-fast) var(--ease-refine);
   white-space:normal;
   text-align:center;
   line-height:1.25;
}

.btn:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:3px;
}

.btn--primary {
   background-color:var(--accent);
   color:var(--ground-deep);
   border-color:var(--accent);
}

.btn--primary:hover {
   background-color:#f2e7ad;
   border-color:#f2e7ad;
   color:#1a1e1b;
   box-shadow:0 4px 12px rgba(232, 217, 140, 0.22);
}

.btn--primary:active {
   background-color:#dfcd75;
   border-color:#dfcd75;
   transform:translateY(1px);
}

.btn--secondary {
   background-color:var(--ground-elevated);
   color:var(--chalk);
   border-color:var(--ground-border);
}

.btn--secondary:hover {
   background-color:#636f67;
   border-color:var(--chalk-subtle);
   color:var(--chalk);
}

.btn--secondary:active {
   background-color:var(--ground-deep);
   border-color:var(--accent);
   transform:translateY(1px);
}

.btn--outline {
   background-color:transparent;
   color:var(--chalk);
   border-color:var(--ground-border-strong);
}

.btn--outline:hover {
   border-color:var(--accent);
   color:var(--accent);
   background-color:var(--accent-subtle);
}

.btn--outline:active {
   background-color:rgba(232, 217, 140, 0.22);
   border-color:var(--accent);
   color:var(--accent);
   transform:translateY(1px);
}

.btn--block {
   display:flex;
   width:100%;
}

.chip {
   display:inline-flex;
   align-items:center;
   gap:0.35rem;
   padding:0.35rem 0.75rem;
   min-height:44px;
   border:1px solid var(--ground-border);
   background-color:var(--ground-deep);
   border-radius:2px;
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--chalk-muted);
   text-decoration:none;
   cursor:pointer;
   transition:border-color var(--dur-fast) var(--ease-refine),
                     background-color var(--dur-fast) var(--ease-refine),
                     color var(--dur-fast) var(--ease-refine);
   white-space:nowrap;
}

.chip:hover {
   border-color:var(--chalk-subtle);
   background-color:var(--ground-elevated);
   color:var(--chalk);
   text-decoration:none;
}

.chip:active {
   background-color:var(--ground);
   border-color:var(--accent);
   color:var(--chalk);
}

.chip:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:2px;
}

.chip[aria-current="true"],
.chip.is-active {
   border-color:var(--accent);
   background-color:var(--accent);
   color:var(--ground-deep);
   font-weight:600;
}


.fact-box {
   margin:var(--space-xl) 0;
   padding:var(--space-m);
   background-color:var(--ground-deep);
   border:1px solid var(--ground-border);
   border-left:3px solid var(--accent);
   border-radius:2px;
   position:relative;
}

.fact-box__title {
   font-family:var(--lugu-43e);
   font-size:var(--step--1);
   letter-spacing:0.05em;
   text-transform:uppercase;
   color:var(--accent);
   margin-bottom:var(--space-s);
   display:flex;
   align-items:center;
   justify-content:space-between;
   gap:var(--space-2xs);
}

.fact-box__title { flex-wrap:wrap; }

.fact-box__title-meta {
   font-size:var(--step--2);
   color:var(--chalk-subtle);
   text-transform:none;
   letter-spacing:0;
   display:inline-block;
   min-width:0;
   white-space:normal;
}

.fact-grid {
   display:grid;
   grid-template-columns:repeat(auto-fit, minmax(210px, 1fr));
   gap:var(--space-s);
}

.fact-item {
   display:flex;
   flex-direction:column;
   gap:0.2rem;
}

.fact-item__label {
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--chalk-subtle);
   text-transform:uppercase;
   letter-spacing:0.04em;
}

.fact-item__value {
   font-family:var(--lugu-43e);
   font-size:var(--lugu-ddd);
   font-weight:500;
   color:var(--chalk);
}

.fact-item__note {
   font-family:var(--lugu-047);
   font-size:var(--step--1);
   color:var(--chalk-muted);
   line-height:1.4;
}

/* Editorial Figure & Photographic Spread */
.figure-editorial {
   margin:var(--space-xl) 0;
   padding:0;
   position:relative;
}

.figure-editorial img {
   width:100%;
   height:auto;
   border-radius:2px;
   border:1px solid var(--ground-border);
   background-color:var(--ground-deep);
}

.figure-editorial figcaption {
   margin-top:var(--space-xs);
   padding:0 var(--space-2xs);
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--chalk-muted);
   display:flex;
   justify-content:space-between;
   align-items:baseline;
   gap:var(--space-s);
   flex-wrap:wrap;
}

.figure-editorial figcaption .caption-text {
   flex:1 1 280px;
   font-family:var(--lugu-047);
   font-style:italic;
   font-size:var(--step--1);
   color:var(--chalk-muted);
}

.figure-editorial figcaption .caption-meta {
   font-family:var(--lugu-43e);
   color:var(--chalk-subtle);
   white-space:nowrap;
}


.table-wrapper {
   width:100%;
   overflow-x:auto;
   margin:var(--space-l) 0;
   border:1px solid var(--ground-border);
   border-radius:2px;
   background-color:var(--ground-deep);
   -webkit-overflow-scrolling:touch;
}

.data-table {
   width:100%;
   border-collapse:collapse;
   text-align:left;
   font-size:var(--step--1);
}

.data-table th,
.data-table td {
   padding:0.75rem 1rem;
   border-bottom:1px solid var(--ground-border);
   vertical-align:top;
   min-width:90px;
}

.data-table th {
   background-color:var(--ground);
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   text-transform:uppercase;
   letter-spacing:0.04em;
   color:var(--chalk);
   font-weight:500;
   border-bottom:2px solid var(--ground-border-strong);
}

.data-table tr:last-child td { border-bottom:none; }

.data-table tr:hover td { background-color:rgba(244, 246, 244, 0.02); }

.data-table .cell-mono {
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--accent);
}

.data-table .cell-muted { color:var(--chalk-muted); }


.inquiry-form {
   background-color:var(--ground-deep);
   border:1px solid var(--ground-border);
   border-radius:2px;
   padding:var(--space-m);
   margin:var(--space-xl) 0;
}

.form-grid {
   display:grid;
   grid-template-columns:repeat(2, 1fr);
   gap:var(--space-s);
}

.form-group {
   display:flex;
   flex-direction:column;
   gap:0.35rem;
   margin-bottom:var(--space-s);
}

.form-group--full { grid-column:1 / -1; }

.form-label {
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--chalk-muted);
   display:flex;
   justify-content:space-between;
   align-items:baseline;
}

.form-label .label-note {
   font-size:var(--step--2);
   color:var(--chalk-subtle);
   font-weight:400;
}

.form-control {
   width:100%;
   min-height:44px;
   background-color:var(--ground);
   border:1px solid var(--ground-border);
   border-radius:2px;
   padding:0.65rem 0.85rem;
   color:var(--chalk);
   font-family:var(--lugu-047);
   font-size:var(--lugu-36f);
   transition:border-color var(--dur-fast) var(--ease-refine),
                     background-color var(--dur-fast) var(--ease-refine),
                     box-shadow var(--dur-fast) var(--ease-refine);
}

.form-control:hover {
   border-color:var(--chalk-subtle);
   background-color:var(--ground-elevated);
}

.form-control:focus {
   outline:none;
   border-color:var(--accent);
   background-color:var(--ground);
   box-shadow:0 0 0 2px var(--accent-subtle);
}

.form-control.is-invalid {
   border-color:#ff8c82;
   background-color:rgba(255, 140, 130, 0.08);
}

.form-error {
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:#ff9d94;
   margin-top:0.25rem;
   display:none;
}

.form-control.is-invalid + .form-error,
.form-error.is-visible { display:block; }

textarea.form-control {
   min-height:120px;
   resize:vertical;
}

.checkbox-group {
   display:flex;
   align-items:flex-start;
   gap:0.75rem;
   margin:var(--space-s) 0;
}

.checkbox-group input[type="checkbox"] {
   width:20px;
   height:20px;
   min-height:20px;
   margin-top:0.2rem;
   accent-color:var(--accent);
   flex-shrink:0;
   cursor:pointer;
}

.checkbox-group input[type="checkbox"]:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:2px;
}

.checkbox-group label {
   font-family:var(--lugu-047);
   font-size:var(--step--1);
   color:var(--chalk-muted);
   line-height:1.45;
   cursor:pointer;
}

.form-alert {
   padding:var(--space-s);
   border-radius:2px;
   margin-bottom:var(--space-m);
   font-family:var(--lugu-43e);
   font-size:var(--step--1);
   display:none;
}

.form-alert--success {
   background-color:rgba(232, 217, 140, 0.15);
   border:1px solid var(--accent);
   color:var(--chalk);
}

.form-alert--error {
   background-color:rgba(255, 140, 130, 0.12);
   border:1px solid #ff8c82;
   color:#ffc4bf;
}

.form-alert.is-visible { display:block; }

@media (max-width: 640px) {
   .form-grid { grid-template-columns:1fr; }
}


.studio-footer {
   margin-top:var(--space-3xl);
   background-color:var(--ground-deep);
   border-top:1px solid var(--ground-border);
   padding:var(--space-2xl) 0 var(--space-xl) 0;
}

.footer-top {
   display:grid;
   grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
   gap:var(--space-l);
   margin-bottom:var(--space-xl);
}

.footer-links a {
   word-break:normal;
   overflow-wrap:break-word;
}

.footer-identity {
   display:flex;
   flex-direction:column;
   gap:var(--space-xs);
}

.footer-identity .brand img {
   height:2.3rem;
   width:auto;
}

.footer-identity p {
   color:var(--chalk-muted);
   font-size:var(--step--1);
   line-height:1.5;
   max-width:420px;
}

.footer-col {
   display:flex;
   flex-direction:column;
   gap:var(--space-2xs);
}

.footer-heading {
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   letter-spacing:0.06em;
   text-transform:uppercase;
   color:var(--accent);
   margin-bottom:var(--space-2xs);
}

.footer-links {
   list-style:none;
   padding:0;
   margin:0;
   display:flex;
   flex-direction:column;
   gap:0.35rem;
}

.footer-links a {
   font-family:var(--lugu-047);
   font-size:var(--step--1);
   color:var(--chalk-muted);
   text-decoration:none;
   min-height:44px;
   display:inline-block;
   padding:0.35rem 0;
   line-height:1.35;
   transition:color var(--dur-fast) var(--ease-refine);
}

.footer-links a:hover {
   color:var(--accent);
   text-decoration:underline;
}

.footer-links a:active { color:var(--chalk); }

.footer-links a:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:2px;
}

.footer-operator-panel {
   padding:var(--space-m);
   background-color:var(--ground);
   border:1px solid var(--ground-border);
   border-radius:2px;
   margin-bottom:var(--space-xl);
   display:grid;
   grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
   gap:var(--space-s);
}

.operator-fact {
   display:flex;
   flex-direction:column;
   gap:0.2rem;
}

.operator-fact__label {
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   text-transform:uppercase;
   letter-spacing:0.04em;
   color:var(--chalk-subtle);
}

.operator-fact__val {
   font-family:var(--lugu-43e);
   font-size:var(--step--1);
   color:var(--chalk);
   word-break:break-word;
}

.operator-fact__val a {
   color:var(--chalk);
   text-decoration:none;
}

.operator-fact__val a:hover { color:var(--accent); }

.operator-fact__val a:active { color:var(--chalk-muted); }

.operator-fact__val a:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:2px;
}

.footer-bottom {
   padding-top:var(--space-m);
   border-top:1px solid var(--ground-border);
   display:flex;
   align-items:center;
   justify-content:space-between;
   flex-wrap:wrap;
   gap:var(--space-s);
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--chalk-subtle);
}

.footer-legal-nav {
   display:flex;
   gap:var(--space-m);
   flex-wrap:wrap;
}

.footer-legal-nav a {
   color:var(--chalk-muted);
   text-decoration:none;
   min-height:44px;
   display:inline-flex;
   align-items:center;
}

.footer-legal-nav a:hover {
   color:var(--accent);
   text-decoration:underline;
}

.footer-legal-nav a:active { color:var(--chalk); }

.footer-legal-nav a:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:2px;
}

.footer-consent-trigger {
   background:none;
   border:none;
   padding:0;
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   color:var(--chalk-muted);
   cursor:pointer;
   min-height:44px;
   display:inline-flex;
   align-items:center;
   text-decoration:underline;
   text-underline-offset:3px;
   transition:color var(--dur-fast) var(--ease-refine);
}

.footer-consent-trigger:hover { color:var(--accent); }

.footer-consent-trigger:active { color:var(--chalk); }

.footer-consent-trigger:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:2px;
}

@media (max-width: 768px) {
   .footer-top { grid-template-columns:1fr; }
}


.cookie-dock {
   position:fixed;
   bottom:0;
   left:0;
   right:0;
   background-color:var(--ground-deep);
   border-top:2px solid var(--accent);
   padding:0.75rem var(--gutter);
   z-index:1000;
   box-shadow:0 -8px 24px rgba(0, 0, 0, 0.4);
   display:flex;
   align-items:center;
   justify-content:space-between;
   gap:var(--space-m);
   font-family:var(--lugu-43e);
   font-size:var(--step--1);
   transform:translateY(0);
   transition:transform var(--dur-base) var(--ease-refine), opacity var(--dur-base) var(--ease-refine);
}

.cookie-dock[hidden] { display:none !important; }

.cookie-dock__content {
   flex:1 1 auto;
   display:flex;
   align-items:center;
   gap:var(--space-xs);
   color:var(--chalk);
   font-size:var(--step--1);
   line-height:1.4;
}

.cookie-dock__content p {
   margin:0;
   font-size:inherit;
   color:inherit;
}

.cookie-dock__content a {
   color:var(--accent);
   text-decoration:underline;
   white-space:nowrap;
}

.cookie-dock__actions {
   display:flex;
   align-items:center;
   gap:var(--space-2xs);
   flex-shrink:0;
}

.cookie-dock__btn {
   padding:0.5rem 1rem;
   min-height:44px;
   font-family:var(--lugu-43e);
   font-size:var(--step--2);
   font-weight:500;
   border-radius:2px;
   cursor:pointer;
   white-space:nowrap;
   display:inline-flex;
   align-items:center;
   justify-content:center;
   transition:background-color var(--dur-fast) var(--ease-refine),
                     border-color var(--dur-fast) var(--ease-refine),
                     color var(--dur-fast) var(--ease-refine),
                     transform var(--dur-fast) var(--ease-refine);
}

.cookie-dock__btn--allow {
   background-color:var(--accent);
   border:1px solid var(--accent);
   color:var(--ground-deep);
}

.cookie-dock__btn--allow:hover {
   background-color:#f2e7ad;
   border-color:#f2e7ad;
   color:#1a1e1b;
}

.cookie-dock__btn--allow:active {
   background-color:#dfcd75;
   border-color:#dfcd75;
   transform:translateY(1px);
}

.cookie-dock__btn--allow:focus-visible {
   outline:2px solid var(--chalk);
   outline-offset:2px;
}

.cookie-dock__btn--deny {
   background-color:var(--ground);
   border:1px solid var(--ground-border);
   color:var(--chalk-muted);
}

.cookie-dock__btn--deny:hover {
   background-color:var(--ground-elevated);
   border-color:var(--chalk-subtle);
   color:var(--chalk);
}

.cookie-dock__btn--deny:active {
   background-color:var(--ground-deep);
   border-color:var(--accent);
   transform:translateY(1px);
}

.cookie-dock__btn--deny:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:2px;
}

@media (max-width: 768px) {
   .cookie-dock {
      flex-direction:column;
      align-items:stretch;
      padding:0.85rem var(--gutter);
   }
   .cookie-dock__actions { justify-content:stretch; }
   .cookie-dock__btn { flex:1 1 50%; }
}


.chat-launcher {
   position:fixed;
   bottom:1.5rem;
   right:1.5rem;
   width:52px;
   height:52px;
   min-height:44px;
   border-radius:2px;
   background-color:var(--accent);
   border:1px solid var(--accent);
   color:var(--ground-deep);
   display:inline-flex;
   align-items:center;
   justify-content:center;
   cursor:pointer;
   box-shadow:0 4px 16px rgba(0, 0, 0, 0.35);
   z-index:900;
   transition:transform var(--dur-fast) var(--ease-refine),
                     background-color var(--dur-fast) var(--ease-refine),
                     border-color var(--dur-fast) var(--ease-refine),
                     box-shadow var(--dur-fast) var(--ease-refine);
}

.chat-launcher .icon {
   width:24px;
   height:24px;
   fill:currentColor;
}

.chat-launcher:hover {
   background-color:#f2e7ad;
   border-color:#f2e7ad;
   transform:translateY(-2px);
   box-shadow:0 6px 20px rgba(0, 0, 0, 0.45);
}

.chat-launcher:active {
   background-color:#dfcd75;
   border-color:#dfcd75;
   transform:translateY(1px);
}

.chat-launcher:focus-visible {
   outline:2px solid var(--chalk);
   outline-offset:3px;
}

.chat-launcher__badge {
   position:absolute;
   top:-4px;
   right:-4px;
   background-color:#e04f44;
   color:#fff;
   font-family:var(--lugu-43e);
   font-size:11px;
   font-weight:700;
   width:20px;
   height:20px;
   border-radius:50%;
   display:flex;
   align-items:center;
   justify-content:center;
   border:2px solid var(--ground-deep);
}

body.cookie-banner-active .chat-launcher { bottom:clamp(4.5rem, 4rem + 4vw, 5.5rem); }

.chat-panel {
   position:fixed;
   bottom:5.5rem;
   right:1.5rem;
   width:min(380px, calc(100vw - 3rem));
   height:min(520px, calc(100vh - 7rem));
   background-color:var(--ground-deep);
   border:1px solid var(--ground-border);
   border-radius:2px;
   box-shadow:0 16px 36px rgba(0, 0, 0, 0.5);
   z-index:950;
   display:flex;
   flex-direction:column;
   overflow:hidden;
   opacity:0;
   pointer-events:none;
   transform:translateY(12px) scale(0.98);
   transition:opacity var(--dur-base) var(--ease-refine),
                     transform var(--dur-base) var(--ease-refine);
}

.chat-panel.is-open {
   opacity:1;
   pointer-events:auto;
   transform:translateY(0) scale(1);
}

.chat-panel__header {
   padding:0.85rem 1rem;
   background-color:var(--ground);
   border-bottom:1px solid var(--ground-border);
   display:flex;
   align-items:center;
   justify-content:space-between;
}

.chat-panel__title {
   font-family:var(--lugu-43e);
   font-size:var(--step--1);
   color:var(--chalk);
   display:flex;
   align-items:center;
   gap:0.4rem;
}

.chat-panel__title::before {
   content:'';
   width:8px;
   height:8px;
   border-radius:50%;
   background-color:#58d68d;
}

.chat-panel__close {
   width:36px;
   height:36px;
   min-height:36px;
   background:transparent;
   border:1px solid transparent;
   border-radius:2px;
   color:var(--chalk-muted);
   cursor:pointer;
   display:inline-flex;
   align-items:center;
   justify-content:center;
   transition:color var(--dur-fast) var(--ease-refine),
                     border-color var(--dur-fast) var(--ease-refine);
}

.chat-panel__close:hover {
   color:var(--accent);
   border-color:var(--ground-border);
}

.chat-panel__close:active { color:var(--chalk); }

.chat-panel__close:focus-visible {
   outline:2px solid var(--accent);
   outline-offset:1px;
}

.chat-panel__body {
   flex:1 1 auto;
   overflow-y:auto;
   padding:1rem;
   display:flex;
   flex-direction:column;
   gap:0.75rem;
}

.chat-msg {
   padding:0.65rem 0.85rem;
   border-radius:2px;
   font-size:var(--step--1);
   line-height:1.45;
   max-width:85%;
   word-wrap:break-word;
}

.chat-msg--bot {
   align-self:flex-start;
   background-color:var(--ground);
   border:1px solid var(--ground-border);
   color:var(--chalk);
}

.chat-msg--user {
   align-self:flex-end;
   background-color:var(--accent-subtle);
   border:1px solid var(--accent);
   color:var(--chalk);
}

.chat-msg__time {
   display:block;
   font-family:var(--lugu-43e);
   font-size:10px;
   color:var(--chalk-subtle);
   margin-top:0.25rem;
   text-align:right;
}

.chat-panel__footer {
   padding:0.75rem;
   background-color:var(--ground);
   border-top:1px solid var(--ground-border);
}

.chat-input-row {
   display:flex;
   gap:0.35rem;
}

.chat-input {
   flex:1 1 auto;
   min-height:44px;
   background-color:var(--ground-deep);
   border:1px solid var(--ground-border);
   border-radius:2px;
   padding:0.5rem 0.75rem;
   color:var(--chalk);
   font-family:var(--lugu-047);
   font-size:var(--step--1);
}

.chat-input:focus {
   outline:none;
   border-color:var(--accent);
}

.chat-send-btn {
   width:44px;
   height:44px;
   min-height:44px;
   background-color:var(--accent);
   border:1px solid var(--accent);
   border-radius:2px;
   color:var(--ground-deep);
   cursor:pointer;
   display:inline-flex;
   align-items:center;
   justify-content:center;
   transition:background-color var(--dur-fast) var(--ease-refine);
}

.chat-send-btn:hover { background-color:#f2e7ad; }

.chat-send-btn:active { background-color:#dfcd75; }

.chat-send-btn:focus-visible {
   outline:2px solid var(--chalk);
   outline-offset:2px;
}
