@import url("https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,500..800&family=Figtree:ital,wght@0,400..700;1,400..700&family=Newsreader:ital,opsz,wght@0,6..72,400;1,6..72,400;1,6..72,500&display=swap");

/* Klara Kompetenser. Komponentstilar. Alla värden kommer från tokens.css. */
.kk, .kk * { box-sizing: border-box; }
body { background: var(--papper); color: var(--ink); font-family: var(--font-sans); }
.kk-focus:focus-visible, .kk-btn:focus-visible, .kk-nav a:focus-visible, .kk-card-link:focus-visible {
  outline: 2px solid var(--fokus); outline-offset: 2px;
}

/* Logo */
.kk-logo { display: inline-flex; align-items: center; gap: var(--space-3); color: var(--ink); text-decoration: none; }
.kk-logo svg { display: block; flex: none; }
.kk-logo-name { font-family: var(--font-display); font-weight: 700; letter-spacing: -0.02em; line-height: 0.95; }
.kk-logo-name span { display: block; }
.kk-logo .r-sol { fill: var(--sol); } .kk-logo .r-alv { fill: var(--alv); } .kk-logo .r-tegel { fill: var(--tegel); }
.kk-logo .r-mossa { fill: var(--mossa); } .kk-logo .r-ljung { fill: var(--ljung); } .kk-logo .r-ink { fill: var(--ink); }
.kk-logo.is-mono rect { fill: var(--ink); }

/* Button */
.kk-btn { white-space: nowrap; display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-height: 48px; padding: 0 var(--space-5); border-radius: var(--radius-pill); border: 2px solid transparent;
  font-family: var(--font-sans); font-size: 16px; font-weight: 600; line-height: 1; text-decoration: none; cursor: pointer;
  transition: transform .15s ease, background-color .15s ease; }
.kk-btn:hover { transform: translateY(-1px); }
.kk-btn:active { transform: translateY(0); }
.kk-btn-primar { background: var(--ink); color: var(--on-ink); }
.kk-btn-sol { background: var(--sol); color: var(--on-sol); }
.kk-btn-sekundar { background: transparent; color: var(--ink); border-color: var(--linje); }
.kk-btn-sekundar:hover { border-color: var(--ink); }
.kk-btn-lank { background: transparent; color: var(--alv-text); padding: 0 var(--space-1); min-height: 40px; text-decoration: underline; text-underline-offset: 4px; }
.kk-btn-liten { min-height: 40px; padding: 0 var(--space-4); font-size: 15px; }
.kk-btn[disabled] { opacity: .45; cursor: not-allowed; transform: none; }
.kk-btn .kk-arrow { transition: transform .15s ease; }
.kk-btn:hover .kk-arrow { transform: translateX(3px); }

/* Tag */
.kk-tag { display: inline-flex; align-items: center; gap: var(--space-2); padding: 6px var(--space-3);
  border-radius: var(--radius-sm); font-family: var(--font-sans); font-size: 14px; font-weight: 600; line-height: 1.2; color: var(--ink); }
.kk-tag::before { content: ""; width: 8px; height: 8px; border-radius: 2px; background: currentColor; flex: none; }
.kk-tag-sol { background: var(--sol-ton); } .kk-tag-sol::before { background: var(--sol); }
.kk-tag-alv { background: var(--alv-ton); } .kk-tag-alv::before { background: var(--alv); }
.kk-tag-tegel { background: var(--tegel-ton); } .kk-tag-tegel::before { background: var(--tegel); }
.kk-tag-mossa { background: var(--mossa-ton); } .kk-tag-mossa::before { background: var(--mossa); }
.kk-tag-ljung { background: var(--ljung-ton); } .kk-tag-ljung::before { background: var(--ljung); }
.kk-tag-neutral { background: var(--papper-djup); } .kk-tag-neutral::before { background: var(--ink-dampad); }

/* MemberCard */
.kk-member { position: relative; display: flex; flex-direction: column; background: var(--papper-lyft); border-radius: var(--radius-md);
  overflow: hidden; color: var(--ink); text-decoration: none; transition: box-shadow .2s ease, transform .2s ease; max-width: 320px; }
a.kk-member:hover { box-shadow: var(--skugga-kort); transform: translateY(-2px); }
.kk-member-photo { position: relative; aspect-ratio: 4 / 5; background: var(--kk-c); }
.kk-member-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.kk-member-door { position: absolute; left: 0; bottom: 0; width: 56px; height: 56px; background: var(--papper-lyft); border-top-right-radius: 56px; }
.kk-member-initials { position: absolute; inset: 0; display: grid; place-items: center; font-family: var(--font-display); font-weight: 700; font-size: 72px; letter-spacing: -0.03em; color: var(--kk-on); }
.kk-member-body { padding: var(--space-4) var(--space-5) var(--space-5); display: grid; gap: var(--space-1); }
.kk-member-name { font-family: var(--font-display); font-size: 21px; line-height: 1.25; font-weight: 600; margin: 0; }
.kk-member-meta { font-size: 15px; line-height: 1.5; color: var(--ink-dampad); margin: 0; }
.kk-member-room { margin-top: var(--space-2); font-size: 13px; font-weight: 700; letter-spacing: .08em; color: var(--ink-dampad); }

/* RoomCard */
.kk-room { display: grid; grid-template-columns: 112px 1fr; gap: var(--space-5); align-items: center; padding: var(--space-5);
  background: var(--papper-lyft); border-radius: var(--radius-md); color: var(--ink); max-width: 520px; }
.kk-room-plan { position: relative; width: 112px; height: 112px; display: grid; place-items: end start; }
.kk-room-box { background: var(--kk-c); border-radius: var(--radius-sm); position: relative; }
.kk-room.is-ledigt .kk-room-box { background: transparent; border: 2px dashed var(--linje); }
.kk-room-box::after { content: ""; position: absolute; left: 6px; bottom: 0; width: 22px; height: 22px; background: var(--papper-lyft); border-top-right-radius: 22px; }
.kk-room.is-ledigt .kk-room-box::after { left: 4px; bottom: -2px; width: 20px; height: 20px; background: var(--papper-lyft); border-top: 2px solid var(--linje); border-right: 2px solid var(--linje); }
.kk-room-name { font-family: var(--font-display); font-size: 21px; font-weight: 600; line-height: 1.25; margin: 0 0 var(--space-1); }
.kk-room-meta { margin: 0; font-size: 15px; line-height: 1.5; color: var(--ink-dampad); }
.kk-room-status { display: inline-flex; margin-top: var(--space-3); padding: 4px var(--space-3); border-radius: var(--radius-sm); font-size: 13px; font-weight: 700; letter-spacing: .06em; }
.kk-room.is-ledigt .kk-room-status { background: var(--sol); color: var(--on-sol); }
.kk-room.is-upptaget .kk-room-status { background: var(--papper-djup); color: var(--ink-dampad); }

/* StoryQuote */
.kk-quote { margin: 0; max-width: 680px; color: var(--ink); }
.kk-quote blockquote { margin: 0; font-family: var(--font-serif); font-style: italic; font-size: 28px; line-height: 1.35; }
.kk-quote blockquote p { margin: 0 0 var(--space-3); }
.kk-quote-mark { display: block; width: 48px; height: 8px; border-radius: var(--radius-pill); background: var(--kk-c, var(--tegel)); margin-bottom: var(--space-5); }
.kk-quote figcaption { margin-top: var(--space-4); font-size: 15px; line-height: 1.5; color: var(--ink-dampad); }
.kk-quote figcaption strong { color: var(--ink); font-weight: 600; }

/* FactRow */
.kk-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--space-2); max-width: 960px; }
.kk-fact { padding: var(--space-5); border-radius: var(--radius-sm); background: var(--kk-c); color: var(--kk-on); min-height: 152px; display: flex; flex-direction: column; justify-content: space-between; }
.kk-fact-value { font-family: var(--font-display); font-weight: 700; font-size: 56px; line-height: 1; letter-spacing: -0.03em; }
.kk-fact-label { font-size: 15px; line-height: 1.4; font-weight: 600; }

/* VacancyBanner */
.kk-vacancy { position: relative; overflow: hidden; display: grid; grid-template-columns: 1fr auto; gap: var(--space-6); align-items: center;
  padding: var(--space-7) var(--space-7); border-radius: var(--radius-lg); background: var(--sol); color: var(--on-sol); max-width: 1200px; }
.kk-vacancy-eyebrow { font-size: 13px; font-weight: 700; letter-spacing: .1em; margin: 0 0 var(--space-3); }
.kk-vacancy-title { font-family: var(--font-display); font-weight: 700; font-size: 40px; line-height: 1.05; letter-spacing: -0.02em; margin: 0 0 var(--space-3); }
.kk-vacancy-text { font-size: 17px; line-height: 1.6; margin: 0; max-width: 560px; }
.kk-vacancy-door { position: absolute; right: -32px; top: -32px; width: 112px; height: 112px; border-radius: 0 0 0 112px; background: var(--tegel); opacity: .9; pointer-events: none; }
.kk-vacancy .kk-btn { position: relative; }
@media (max-width: 720px) { .kk-vacancy { grid-template-columns: 1fr; padding: var(--space-6) var(--space-5); } .kk-vacancy-title { font-size: 32px; } }

/* NavBar */
.kk-nav { display: flex; align-items: center; justify-content: space-between; gap: var(--space-5); padding: var(--space-4) var(--space-6);
  background: var(--papper); border-bottom: 1px solid var(--linje-mjuk); }
.kk-nav ul { display: flex; gap: var(--space-5); list-style: none; margin: 0; padding: 0; }
.kk-nav ul a { white-space: nowrap;  color: var(--ink); text-decoration: none; font-weight: 600; font-size: 16px; padding: var(--space-2) 0; border-bottom: 2px solid transparent; }
.kk-nav ul a:hover { border-bottom-color: var(--sol); }
.kk-nav ul a[aria-current="page"] { border-bottom-color: var(--ink); }
.kk-nav-right { display: flex; align-items: center; gap: var(--space-5); }
@media (max-width: 940px) { .kk-nav ul { display: none; } .kk-nav { padding: var(--space-3) var(--space-4); } }

/* FloorPlan, Knacka på */
.kk-korridor { position: relative; width: 100%; }
.kk-plan { width: 100%; display: block; overflow: visible; }
.kk-plan .p-sol { fill: var(--sol); } .kk-plan .p-alv { fill: var(--alv); } .kk-plan .p-tegel { fill: var(--tegel); }
.kk-plan .p-mossa { fill: var(--mossa); } .kk-plan .p-ljung { fill: var(--ljung); } .kk-plan .p-ink { fill: var(--ink); }
.kk-plan .p-skal { fill: none; stroke: var(--linje); stroke-width: 2; }
.kk-plan .p-korridor { font-family: var(--font-sans); font-size: 9px; font-weight: 700; letter-spacing: .2em; fill: var(--linje); }
.kk-plan .p-door { fill: var(--papper); transition: transform .35s cubic-bezier(.3,1.4,.5,1); }
.kk-plan .p-ledigt { fill: none; stroke: var(--linje); stroke-width: 2; stroke-dasharray: 6 5; transition: fill .2s ease, stroke .2s ease; }
.kk-plan .p-ledigt-door { fill: none; stroke: var(--linje); stroke-width: 2; }
.kk-plan .p-konferens, .kk-plan .p-kok rect { fill: var(--papper-djup); }
.kk-plan .p-label { font-family: var(--font-sans); font-size: 11px; font-weight: 700; letter-spacing: .1em; fill: var(--ink-dampad); }
.kk-plan .p-room { transition: opacity .25s ease; outline: none; }
.kk-plan .p-room[tabindex] { cursor: pointer; }
.kk-plan .p-room:focus-visible rect { stroke: var(--fokus); stroke-width: 3; }
.kk-korridor.has-open .p-room:not(.is-open):not(.is-konferens) { opacity: .6; }
.kk-plan .p-room.is-open .p-door { transform: scale(1.55); }
.kk-plan .p-room.is-ledigt.is-open .p-ledigt, .kk-plan .p-room.is-ledigt:hover .p-ledigt { fill: var(--sol-ton); stroke: var(--sol); }
.kk-knock { position: absolute; z-index: 2; width: 264px; box-sizing: border-box; display: grid; grid-template-columns: auto 1fr; gap: var(--space-2) var(--space-3); align-items: center;
  padding: 10px var(--space-3); background: var(--papper-lyft); border-radius: var(--radius-md); box-shadow: 0 0 0 1px rgba(30,43,47,.06), 0 16px 32px -12px rgba(30,43,47,.35);
  animation: kk-knock-ut .35s cubic-bezier(.3,1.3,.5,1); }
.kk-knock[hidden] { display: none; }
.kk-knock.is-top { --kk-from: -12px; transform-origin: 22px 0; } .kk-knock.is-bottom { --kk-from: 12px; transform-origin: 22px 100%; }
.kk-knock.is-right.is-top { transform-origin: calc(100% - 22px) 0; } .kk-knock.is-right.is-bottom { transform-origin: calc(100% - 22px) 100%; }
@keyframes kk-knock-ut { from { opacity: 0; transform: translateY(var(--kk-from, -12px)) scale(.86); } to { opacity: 1; transform: none; } }
.kk-knock-faces { display: flex; }
.kk-knock-faces img { width: 48px; height: 60px; object-fit: cover; border-radius: 8px; display: block; background: var(--kk-c); }
.kk-knock-faces img + img { margin-left: -16px; box-shadow: -2px 0 0 var(--papper-lyft); }
.kk-knock-frame { width: 48px; height: 60px; box-sizing: border-box; border: 2px dashed var(--linje); border-radius: 8px; display: grid; place-items: center;
  font-family: var(--font-display); font-weight: 700; font-size: 26px; color: var(--linje); }
.kk-knock-id { min-width: 0; }
.kk-knock-who { margin: 0; font-family: var(--font-display); font-weight: 700; font-size: 17px; line-height: 1.15; }
.kk-knock-co { margin: 2px 0 0; font-size: 14px; line-height: 1.35; color: var(--ink-dampad); }
.kk-knock-om { grid-column: 1 / -1; margin: 0; padding-top: var(--space-2); border-top: 1px solid var(--linje-mjuk); font-family: var(--font-serif); font-style: italic; font-size: 18px; line-height: 1.25; }
.kk-knock-om span { display: block; margin-bottom: 2px; font-family: var(--font-sans); font-style: normal; font-size: 12px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-dampad); }
.kk-knock.is-ledigt { background: var(--sol-ton); box-shadow: 0 16px 32px -12px rgba(30,43,47,.35); }
.kk-knock.is-ledigt .kk-knock-om { border-top-color: rgba(30,43,47,.15); }
.kk-knock-cta { grid-column: 1 / -1; font-weight: 700; font-size: 14px; color: var(--ink); text-underline-offset: 4px; }
@media (prefers-reduced-motion: reduce) { .kk-knock { animation: none; } .kk-plan .p-door { transition: none; } }

/* Dog */
.kk-dog { display: inline-block; vertical-align: bottom; overflow: visible; flex: none; }
.kk-dog-sol { fill: var(--sol); stroke: var(--sol); } .kk-dog-alv { fill: var(--alv); stroke: var(--alv); }
.kk-dog-tegel { fill: var(--tegel); stroke: var(--tegel); } .kk-dog-mossa { fill: var(--mossa); stroke: var(--mossa); }
.kk-dog-ljung { fill: var(--ljung); stroke: var(--ljung); } .kk-dog-ink { fill: var(--ink); stroke: var(--ink); }
