/*
 * Fortuora functional chromatic language
 * --------------------------------------
 * Colour communicates role identity, access and governed state. It never
 * grants access, proves completion or replaces a written label and symbol.
 */

:root {
  --ft-private-ink: #050806;
  --ft-private-graphite: #454946;
  --ft-content-ivory: #f3f0e9;
  --ft-heritage-gold: #c6a66a;
  --ft-access-bronze: #8a6e45;
  --ft-decision-champagne: #d2b876;
  --ft-validation-gold: #b89b5e;
  --ft-state-normal: #405e4e;
  --ft-state-attention: #b47a3c;
  --ft-state-incident: #5a252b;
  --ft-state-archived: #77776f;
  --ft-role-primary: var(--ft-heritage-gold);
  --ft-role-secondary: #ded1b8;
  --ft-role-normal: #31483d;
  --ft-role-watch: var(--ft-role-secondary);
  --ft-role-alert: var(--ft-state-incident);
  --ft-role-validation: var(--ft-validation-gold);
  --ft-role-surface: #0f1511;
  --ft-role-border: #6d5a38;
}

:is([data-chromatic-role="owner"], [data-wing="owner"], [data-space="owner"]) {
  --ft-role-primary: #c6a66a;
  --ft-role-secondary: #ded1b8;
  --ft-role-normal: #31483d;
  --ft-role-surface: #0f1511;
  --ft-role-border: #6d5a38;
  --ft-role-accent: #dfc182;
}

:is([data-chromatic-role="asset-manager"], [data-wing="asset-manager"], [data-space="asset-manager"]) {
  --ft-role-primary: #183d31;
  --ft-role-secondary: #b7bd90;
  --ft-role-normal: #53677c;
  --ft-role-surface: #0e1913;
  --ft-role-border: #647d57;
  --ft-role-accent: #b6cb9b;
}

:is([data-chromatic-role="estate-manager"], [data-wing="estate-manager"], [data-space="estate-manager"]) {
  --ft-role-primary: #493020;
  --ft-role-secondary: #c4a27b;
  --ft-role-normal: #405e4e;
  --ft-role-surface: #19110d;
  --ft-role-border: #8b6546;
  --ft-role-accent: #d4ad7b;
}

:is([data-chromatic-role="house-manager"], [data-wing="house-manager"], [data-space="house-manager"]) {
  --ft-role-primary: #756148;
  --ft-role-secondary: #e2d1ad;
  --ft-role-normal: #4d6557;
  --ft-role-surface: #16120f;
  --ft-role-border: #aa9472;
  --ft-role-accent: #e2d1ad;
}

:is([data-chromatic-role="guardian"], [data-chromatic-role="security"], [data-capability="security"], [data-wing="guardian"], [data-space="guardian"]) {
  --ft-role-primary: #172c25;
  --ft-role-secondary: #899c91;
  --ft-role-normal: #3e5d65;
  --ft-role-surface: #111516;
  --ft-role-border: #547666;
  --ft-role-accent: #93af9a;
}

:is([data-chromatic-role="academy"], [data-wing="academy"], [data-space="academy"]) {
  --ft-role-primary: #ddd0ae;
  --ft-role-secondary: #e7d8af;
  --ft-role-normal: #685a72;
  --ft-role-surface: #1c1a14;
  --ft-role-border: #af9870;
  --ft-role-accent: #eadcba;
}

:is([data-chromatic-role="administration"], [data-wing="administration"], [data-space="private-admin"]) {
  --ft-role-primary: #20272b;
  --ft-role-secondary: #b8b4a8;
  --ft-role-normal: #435a51;
  --ft-role-surface: #0f1315;
  --ft-role-border: #807e71;
  --ft-role-accent: #d0c9b2;
}

:is([data-chromatic-role="house-team"], [data-wing="staff"], [data-space="staff"]) {
  --ft-role-primary: #333634;
  --ft-role-secondary: #c7b69b;
  --ft-role-normal: #3f5b4b;
  --ft-role-surface: #151613;
  --ft-role-border: #807966;
  --ft-role-accent: #c7b69b;
}

:is([data-chromatic-role="providers"], [data-wing="providers"], [data-space="providers"]) {
  --ft-role-primary: #2b2e2c;
  --ft-role-secondary: #b7b7ad;
  --ft-role-normal: #4f5c54;
  --ft-role-surface: #131513;
  --ft-role-border: #737872;
  --ft-role-accent: #b7b7ad;
}

:is([data-chromatic-role="hospitality"], [data-capability="hospitality"], [data-wing="hospitality"], [data-space="hospitality"]) {
  --ft-role-primary: #552b33;
  --ft-role-secondary: #d3a8a0;
  --ft-role-normal: #6b5b66;
  --ft-role-surface: #181215;
  --ft-role-border: #8f5d61;
  --ft-role-accent: #dfa9a4;
}

:is([data-chromatic-role="nautical"], [data-capability="nautical"], [data-capability="marine"], [data-wing="nautical"], [data-space="nautical"]) {
  --ft-role-primary: #0d2a35;
  --ft-role-secondary: #b2c4bd;
  --ft-role-normal: #3d6b64;
  --ft-role-surface: #0b171a;
  --ft-role-border: #637e80;
  --ft-role-accent: #a9c5c4;
}

:is([data-chromatic-role="aviation"], [data-capability="aviation"], [data-wing="aviation"], [data-space="aviation"]) {
  --ft-role-primary: #182638;
  --ft-role-secondary: #becad0;
  --ft-role-normal: #526d7b;
  --ft-role-surface: #10151b;
  --ft-role-border: #718998;
  --ft-role-accent: #c1d0d8;
}

/* Portraits and windows share the same restrained role signatures. */
:is([data-profile-role="owner"], [data-space="owner"]) { --ft-role-accent:#dfc182; --ft-role-primary:#574225; --ft-role-border:#967445; }
:is([data-profile-role="asset-manager"], [data-space="asset-manager"]) { --ft-role-accent:#b6cb9b; --ft-role-primary:#183d31; --ft-role-border:#647d57; }
:is([data-profile-role="estate-manager"], [data-space="estate-manager"]) { --ft-role-accent:#d4ad7b; --ft-role-primary:#493020; --ft-role-border:#8b6546; }
:is([data-profile-role="house-manager"], [data-space="house-manager"]) { --ft-role-accent:#e2d1ad; --ft-role-primary:#756148; --ft-role-border:#aa9472; }
:is([data-profile-role="guardian"], [data-space="guardian"]) { --ft-role-accent:#93af9a; --ft-role-primary:#172c25; --ft-role-border:#547666; }
:is([data-profile-role="staff"], [data-space="staff"]) { --ft-role-accent:#c7b69b; --ft-role-primary:#333634; --ft-role-border:#807966; }
:is([data-profile-role="providers"], [data-space="providers"]) { --ft-role-accent:#b7b7ad; --ft-role-primary:#2b2e2c; --ft-role-border:#737872; }
:is([data-profile-role="hospitality"], [data-space="hospitality"]) { --ft-role-accent:#dfa9a4; --ft-role-primary:#552b33; --ft-role-border:#8f5d61; }
:is([data-profile-role="academy"], [data-space="academy"]) { --ft-role-accent:#eadcba; --ft-role-primary:#55462e; --ft-role-border:#af9870; }
:is([data-profile-role="nautical"], [data-space="nautical"]) { --ft-role-accent:#a9c5c4; --ft-role-primary:#0d2a35; --ft-role-border:#637e80; }
:is([data-profile-role="aviation"], [data-space="aviation"]) { --ft-role-accent:#c1d0d8; --ft-role-primary:#182638; --ft-role-border:#718998; }
:is([data-profile-role="private-admin"], [data-space="private-admin"]) { --ft-role-accent:#d0c9b2; --ft-role-primary:#393b38; --ft-role-border:#807e71; }

/* The same role signature follows the person into its working space. */
:is([data-chromatic-role="audit"], [data-profile-role="audit"]) { --ft-role-primary:#4c3821; --ft-role-surface:#19150e; --ft-role-border:#9f7541; --ft-role-accent:#d2ab69; }
:is([data-chromatic-role="bim"], [data-profile-role="bim"]) { --ft-role-primary:#1f3c2d; --ft-role-surface:#101a15; --ft-role-border:#5c8065; --ft-role-accent:#9fbea5; }
:is([data-chromatic-role="protocols"], [data-chromatic-role="contracts"]) { --ft-role-primary:#393b38; --ft-role-surface:#0f1315; --ft-role-border:#807e71; --ft-role-accent:#d0c9b2; }
:is([data-chromatic-role="integrations"], [data-profile-role="integrations"]) { --ft-role-primary:#214039; --ft-role-surface:#0d1917; --ft-role-border:#729688; --ft-role-accent:#a6c6b7; }
:is([data-chromatic-role="nautical"], [data-chromatic-role="aviation"], [data-chromatic-role="hospitality"]) { --ft-role-gold:#c6a66a; }

:is([data-chromatic-role="landscape"], [data-capability="landscape"]) {
  --ft-role-primary: #1f3a2d;
  --ft-role-secondary: #5a4634;
  --ft-role-normal: #1f3a2d;
  --ft-role-watch: #3f4a2e;
  --ft-role-surface: #101712;
  --ft-role-border: #7d8a74;
}

:is([data-chromatic-role="housekeeping"], [data-capability="housekeeping"]) {
  --ft-role-primary: #a79c88;
  --ft-role-secondary: #c8c2b5;
  --ft-role-normal: #69766b;
  --ft-role-surface: #171713;
  --ft-role-border: #6b685f;
}

:is([data-chromatic-role="culinary"], [data-capability="culinary"]) {
  --ft-role-primary: #4b292b;
  --ft-role-secondary: #9a6546;
  --ft-role-normal: #435444;
  --ft-role-surface: #181110;
  --ft-role-border: #714b3a;
}

:is([data-chromatic-role="transportation"], [data-capability="transportation"]) {
  --ft-role-primary: #172636;
  --ft-role-secondary: #515a63;
  --ft-role-normal: #526a7a;
  --ft-role-surface: #10151b;
  --ft-role-border: #4b5b68;
}

:is([data-chromatic-role="maintenance"], [data-capability="maintenance"], [data-capability="technical"]) {
  --ft-role-primary: #163638;
  --ft-role-secondary: #7b5740;
  --ft-role-normal: #426668;
  --ft-role-surface: #0e1718;
  --ft-role-border: #426164;
}

:is([data-chromatic-role="pool-spa"], [data-capability="pool-spa"]) {
  --ft-role-primary: #163c40;
  --ft-role-secondary: #718a84;
  --ft-role-normal: #3e6967;
  --ft-role-surface: #0d1819;
  --ft-role-border: #496a68;
}

/* Role identity remains a local accent; it never colours the whole screen. */
body[data-chromatic-role] {
  accent-color: var(--ft-role-primary);
  caret-color: var(--ft-role-secondary);
  box-shadow: inset 0 2px 0 color-mix(in srgb, var(--ft-role-border) 72%, transparent);
}

body[data-chromatic-role] :is(.eyebrow, [data-chromatic-label="role"]) {
  color: var(--ft-role-accent, var(--ft-role-secondary));
}

/* Navigation and headings carry the role; status and access colours remain independent. */
body[data-chromatic-role] .professional-wing-nav {
  border-right-color: color-mix(in srgb, var(--ft-role-border) 62%, transparent);
  background: radial-gradient(circle at 12% 3%, color-mix(in srgb, var(--ft-role-primary) 20%, transparent), transparent 25rem), linear-gradient(145deg,#070c09f0,#020504e8);
}
body[data-chromatic-role] .professional-wing-nav > header > span,
body[data-chromatic-role] .professional-wing-nav > nav button[aria-current="location"] > span {
  border-color: var(--ft-role-border);
  color: var(--ft-role-accent, var(--ft-role-secondary));
  box-shadow: 0 0 20px color-mix(in srgb, var(--ft-role-primary) 26%, transparent);
}
body[data-chromatic-role] .professional-wing-nav > nav button[aria-current="location"] {
  border-color: color-mix(in srgb, var(--ft-role-border) 54%, transparent);
  background: linear-gradient(90deg,color-mix(in srgb,var(--ft-role-primary) 33%,#111814),#101a14e8);
}
body[data-chromatic-role] .professional-wing-nav > nav button[aria-current="location"]::before { background:var(--ft-role-accent, var(--ft-role-secondary)); }
body[data-chromatic-role] .professional-wing-nav > header strong { color:var(--ft-role-accent, var(--ft-role-secondary)); }
body[data-chromatic-role] :is(.owner-hero, .asset-hero, .estate-hero, .manager-hero, .guardian-hero, .team-hero, .provider-hero, .academy-hero, .admin-hero) h1 {
  text-shadow:0 0 48px color-mix(in srgb,var(--ft-role-primary) 24%,transparent);
}
body.hotel-preview[data-chromatic-role="hospitality"] .scene-copy > small { color:var(--ft-role-accent); }
body.hotel-preview[data-chromatic-role="hospitality"] .progress-rail i { background:linear-gradient(90deg,var(--ft-role-border),var(--ft-role-accent)); }

.hall-wing[data-profile-role] {
  --wing-accent:var(--ft-role-accent);
  border-top-color:var(--ft-role-border);
  background:radial-gradient(circle at 50% 0,color-mix(in srgb,var(--ft-role-primary) 25%,transparent),transparent 67%),linear-gradient(155deg,#292d22d1,#0a0f0ced);
}
.hall-wing[data-profile-role][aria-pressed="true"] { border-color:var(--ft-role-accent); }
.locked-dialog[data-profile-role] {
  border-color:var(--ft-role-border);
  background:radial-gradient(circle at 0 0,color-mix(in srgb,var(--ft-role-primary) 34%,transparent),transparent 22rem),#101710;
}
.locked-dialog[data-profile-role] .dialog-seal { border-color:var(--ft-role-border);color:var(--ft-role-accent); }
.locked-dialog[data-profile-role] .panel-grid > div { border-color:color-mix(in srgb,var(--ft-role-border) 43%,transparent); }
.locked-dialog[data-profile-role] .panel-grid small { color:var(--ft-role-accent); }

body[data-chromatic-role] :is(a, button, input, select, textarea):focus-visible {
  outline-color: var(--ft-role-border);
}

/* Accent only: operational states and access still use their own semantic colours. */
body[data-chromatic-role] :is(.section-heading, .heading) h2 {
  text-decoration:underline;
  text-decoration-color:color-mix(in srgb,var(--ft-role-accent,#c6a66a) 44%,transparent);
  text-decoration-thickness:1px;
  text-underline-offset:.34em;
}
body[data-chromatic-role] :is(.subnav,.tabbar) {
  border-bottom-color:color-mix(in srgb,var(--ft-role-border) 65%,transparent);
}
body[data-chromatic-role] :is(.subnav,.tabbar) a:is(:hover,:focus-visible,[aria-current="location"]) {
  color:var(--ft-role-accent,#ded1b8);
  border-color:var(--ft-role-border);
  background:color-mix(in srgb,var(--ft-role-primary) 24%,transparent);
}
body[data-chromatic-role] :is(.metric,.record-card,.panel,.room-panel,.protocol-grid article) {
  border-top-color:color-mix(in srgb,var(--ft-role-border) 56%,transparent);
}
body[data-chromatic-role] :is(.topbar,.bar) .seal,
body[data-chromatic-role] :is(.topbar,.bar) .monogram {
  border-color:var(--ft-role-border);
  box-shadow:0 0 19px color-mix(in srgb,var(--ft-role-primary) 23%,transparent);
}
body[data-chromatic-role] :is(.btn.primary,button.primary,.room-action) {
  border-color:color-mix(in srgb,var(--ft-role-border) 64%,#c6a66a);
  box-shadow:inset 0 1px 0 color-mix(in srgb,var(--ft-role-accent) 28%,transparent);
}

/* Access is independent from the role pigment. */
[data-chromatic-access="authorized"] {
  --ft-access-color: var(--ft-access-bronze);
  --ft-access-symbol: "◇";
}

[data-chromatic-access="temporary"] {
  --ft-access-color: var(--ft-state-attention);
  --ft-access-symbol: "◷";
}

[data-chromatic-access="demonstration"] {
  --ft-access-color: var(--ft-state-archived);
  --ft-access-symbol: "◌";
}

[data-chromatic-access="locked"],
[data-chromatic-access="expired"],
[data-chromatic-access="revoked"] {
  --ft-access-color: var(--ft-private-graphite);
  --ft-access-symbol: "◇";
}

/* State helpers require a written label in the component using them. */
[data-chromatic-state="normal"] {
  --ft-state-color: var(--ft-role-normal, var(--ft-state-normal));
  --ft-state-symbol: "●";
}
[data-chromatic-state="planned"],
[data-chromatic-state="waiting"],
[data-chromatic-state="review"] {
  --ft-state-color: var(--ft-state-attention);
  --ft-state-symbol: "◷";
}
[data-chromatic-state="watch"] {
  --ft-state-color: var(--ft-role-watch, var(--ft-role-secondary));
  --ft-state-symbol: "◇";
}
[data-chromatic-state="decision"] {
  --ft-state-color: var(--ft-decision-champagne);
  --ft-state-symbol: "◇";
}
[data-chromatic-state="incident"] {
  --ft-state-color: var(--ft-state-incident);
  --ft-state-symbol: "△";
}
[data-chromatic-state="validated"] {
  --ft-state-color: var(--ft-validation-gold);
  --ft-state-symbol: "✓";
}
[data-chromatic-state="archived"] {
  --ft-state-color: var(--ft-state-archived);
  --ft-state-symbol: "●";
}

@media (forced-colors: active) {
  body[data-chromatic-role] { box-shadow: inset 0 2px 0 CanvasText; }
  [data-chromatic-access], [data-chromatic-state] { forced-color-adjust: auto; }
}
