@import url('https://fonts.googleapis.com/css2?family=Almendra:ital,wght@0,400;0,700;1,400&family=Inter:wght@300;400;500;600&display=swap');
:root{--bg:#05080b;--text:#f5f3ef;--muted:#b6bec8;--line:rgba(205,224,241,.17);--panel:rgba(7,12,18,.68);--panel2:rgba(4,9,14,.82);--orange:#ff6a27;--orange2:#ff9c54;--blue:#4ba8ff;--blue2:#80c9ff;--green:#52e476;--green2:#8ff59f;--gold:#e7c56e;--max:1500px;--header:46px;--footer:44px;--shadow:0 20px 55px rgba(0,0,0,.43)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--text);font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;background:#05080b;min-height:100vh;padding-top:var(--header);padding-bottom:var(--footer)}body::before{content:"";position:fixed;inset:0;z-index:-3;background:url('/assets/img/uppsala-bg.webp') center center/cover no-repeat}body::after{content:"";position:fixed;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(2,5,8,.72) 0%,rgba(2,5,8,.41) 44%,rgba(2,5,8,.18) 72%,rgba(2,5,8,.35) 100%),linear-gradient(180deg,rgba(3,6,9,.32),rgba(3,6,9,.15) 55%,rgba(3,6,9,.48));pointer-events:none}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.container{width:min(calc(100% - 56px),var(--max));margin:auto}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:10px;top:10px;z-index:9999;background:white;color:black;padding:10px}
.i{width:1.2em;height:1.2em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.15em}.site-header{position:fixed;left:0;right:0;top:0;z-index:100;height:var(--header);background:rgba(4,8,12,.60);border-bottom:1px solid rgba(116,184,235,.20);backdrop-filter:blur(12px) saturate(118%)}.header-inner{height:100%;display:flex;align-items:center;gap:30px}.brand{width:118px;align-self:stretch;display:flex;align-items:center}.brand img{height:34px;width:auto;max-width:114px;object-fit:contain;filter:drop-shadow(0 3px 10px rgba(0,0,0,.72))}.desktop-nav{display:flex;align-items:center;gap:34px}.desktop-nav a{font-family:Almendra,Georgia,serif;font-size:.83rem;letter-spacing:.035em;color:#e1e6ea;position:relative}.desktop-nav a::after{content:"";height:1px;position:absolute;left:0;right:100%;bottom:-9px;background:var(--blue);transition:.2s}.desktop-nav a:hover::after,.desktop-nav a[aria-current="page"]::after{right:0}.header-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.menu-button{display:none;margin-left:auto;width:38px;height:34px;border:1px solid var(--line);border-radius:9px;background:rgba(5,11,18,.7)}.menu-button::before,.menu-button::after,.menu-button span{content:"";display:block;width:18px;height:2px;background:white;margin:4px auto;border-radius:2px}.mobile-nav{display:none}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:40px;padding:0 20px;border-radius:13px;border:1px solid rgba(255,255,255,.2);font-family:Almendra,Georgia,serif;font-weight:600;font-size:.81rem;letter-spacing:.025em;background:rgba(8,13,20,.54);backdrop-filter:blur(10px);transition:.2s;box-shadow:inset 0 1px 0 rgba(255,255,255,.04)}.btn:hover{transform:translateY(-1px);filter:brightness(1.08)}.btn svg{font-size:1.1rem}.btn-primary{color:#fff7ef;border-color:rgba(255,104,39,.9);background:linear-gradient(180deg,rgba(72,23,9,.76),rgba(30,9,3,.72));box-shadow:0 0 17px rgba(255,80,21,.38),inset 0 0 15px rgba(255,95,31,.12)}.btn-blue{border-color:rgba(74,168,255,.78);background:linear-gradient(180deg,rgba(10,32,58,.72),rgba(6,16,29,.66));box-shadow:0 0 16px rgba(40,136,255,.22),inset 0 0 14px rgba(81,175,255,.08)}.btn-green{border-color:rgba(82,228,118,.5);box-shadow:0 0 13px rgba(82,228,118,.12)}.btn-ghost{background:rgba(5,11,17,.42);border-color:rgba(213,226,237,.26)}.btn-lg{min-height:58px;padding:0 28px;font-size:1rem;border-radius:15px}.btn-sm{min-height:36px;padding:0 16px}.gold{color:var(--gold)}.blue{color:var(--blue2)}.green{color:var(--green2)}.muted{color:var(--muted)}
.hero{min-height:auto;display:flex;align-items:flex-start;padding:22px 0 24px}.hero-content{width:min(800px,60vw);padding:10px 0}.hero-logo{width:min(670px,58vw);margin:0 0 4px -14px;filter:drop-shadow(0 18px 19px rgba(0,0,0,.65))}.hero-kicker{font-family:Almendra,Georgia,serif;letter-spacing:.42em;font-size:1.22rem;margin:-18px 0 10px 200px;color:#f5f7f8;text-shadow:0 2px 10px #000}.hero h1{font-family:Almendra,Georgia,serif;font-size:clamp(2rem,3.35vw,4rem);line-height:1.05;margin:0 0 10px;text-shadow:0 3px 18px rgba(0,0,0,.8)}.hero-copy{font-family:Almendra,Georgia,serif;font-size:clamp(1rem,1.25vw,1.4rem);line-height:1.55;color:#e2e5e6;text-shadow:0 2px 10px #000;max-width:790px;margin:0 0 18px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.manual-download{font-family:Almendra,Georgia,serif;font-size:.86rem;color:#e6e6e6;margin:13px 0 15px;text-shadow:0 2px 8px #000}.manual-download a{color:var(--orange2);text-decoration:underline;text-underline-offset:3px}.status-row{display:flex;gap:10px;flex-wrap:wrap}.status-pill{display:inline-flex;align-items:center;gap:10px;padding:10px 17px;border:1px solid rgba(137,184,217,.28);border-radius:13px;background:rgba(5,13,20,.50);box-shadow:0 8px 20px rgba(0,0,0,.2);backdrop-filter:blur(11px);font-family:Almendra,Georgia,serif;font-size:.88rem}.dot{width:10px;height:10px;border-radius:50%;background:var(--green);box-shadow:0 0 12px var(--green)}.feature-strip{padding:0 0 48px}.feature-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:11px}.feature-card{grid-column:span 2;min-height:102px;padding:16px 17px;display:flex;gap:14px;align-items:center;border:1px solid rgba(150,195,226,.19);border-radius:15px;background:linear-gradient(115deg,rgba(5,12,19,.61),rgba(8,15,22,.42));backdrop-filter:blur(10px);box-shadow:0 12px 28px rgba(0,0,0,.25);overflow:hidden;position:relative}.feature-card:nth-child(n+6){grid-column:span 2}.feature-card:nth-child(6){grid-column:2/span 2}.feature-card:nth-child(7){grid-column:4/span 2}.feature-card:nth-child(8){grid-column:6/span 2}.feature-card:nth-child(9){grid-column:8/span 2}.feature-card::after{content:"";position:absolute;inset:auto -30px -45px auto;width:120px;height:90px;background:radial-gradient(circle,var(--accent,rgba(75,168,255,.18)),transparent 70%);opacity:.55}.feature-icon{width:48px;flex:0 0 48px;font-size:2rem;color:var(--accent-color,var(--blue2));filter:drop-shadow(0 0 12px color-mix(in srgb,var(--accent-color,var(--blue2)) 50%,transparent))}.feature-card h3{font-family:Almendra,Georgia,serif;margin:0 0 4px;font-size:1rem}.feature-card p{margin:0;color:#bdc5ce;font-size:.78rem;line-height:1.35}.a-blue{--accent-color:#66bdff;--accent:rgba(70,170,255,.5)}.a-green{--accent-color:#6eee7c;--accent:rgba(77,229,109,.45)}.a-orange{--accent-color:#ff7a35;--accent:rgba(255,98,36,.45)}.a-gold{--accent-color:#f1c759;--accent:rgba(239,196,72,.4)}
.glass-section{padding:70px 0}.glass-panel{border:1px solid rgba(165,199,225,.2);border-radius:20px;background:linear-gradient(135deg,rgba(5,11,17,.66),rgba(6,12,18,.49));backdrop-filter:blur(14px);box-shadow:var(--shadow);padding:38px}.section-head{display:flex;justify-content:space-between;gap:40px;align-items:end;margin-bottom:28px}.section-head h2,.glass-panel h2{font-family:Almendra,Georgia,serif;font-size:clamp(2rem,4.5vw,3.5rem);margin:5px 0}.eyebrow{font-size:.71rem;letter-spacing:.18em;text-transform:uppercase;font-weight:800;color:var(--blue2)}.section-head p{max-width:620px;color:var(--muted);line-height:1.7}.columns{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.mini-panel{padding:24px;border:1px solid rgba(160,198,224,.16);border-radius:15px;background:rgba(5,11,17,.49)}.mini-panel h3,.card h3{font-family:Almendra,Georgia,serif;margin:0 0 9px}.mini-panel p,.card p,.prose p,.prose li{color:#c6cdd4;line-height:1.75}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}.card{border:1px solid rgba(160,198,224,.17);border-radius:16px;background:rgba(5,11,17,.54);backdrop-filter:blur(10px);padding:24px}.card a:not(.btn){color:var(--blue2);font-weight:700}.tag{display:inline-flex;padding:5px 9px;border-radius:999px;border:1px solid rgba(76,169,255,.36);background:rgba(15,54,89,.35);color:#a8d9ff;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-bottom:13px}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.step{border:1px solid rgba(160,198,224,.17);border-radius:16px;background:rgba(5,11,17,.54);padding:24px}.step-num{font-family:Almendra,Georgia,serif;color:var(--green2);font-size:.75rem;letter-spacing:.14em}.step h3{font-family:Almendra,Georgia,serif;margin:8px 0}.step p{color:#c4ccd4;line-height:1.65}.page-hero{padding:34px 0 22px}.page-hero .glass-panel{padding:35px 38px}.breadcrumbs{font-size:.78rem;color:#b1bac4;margin-bottom:12px}.breadcrumbs a{color:var(--blue2)}.page-hero h1{font-family:Almendra,Georgia,serif;font-size:clamp(2.5rem,6vw,5.2rem);line-height:1.04;margin:6px 0 10px;max-width:1050px}.page-hero p{font-size:1.05rem;line-height:1.7;color:#c7ced5;max-width:850px;margin:0}.content-grid{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px}.prose{padding:34px}.prose h2,.prose h3{font-family:Almendra,Georgia,serif}.prose h2{font-size:1.75rem;margin:38px 0 9px}.prose h2:first-child{margin-top:0}.prose h3{margin-top:28px}.prose a{color:var(--blue2)}.sidebar-card{position:sticky;top:72px;padding:26px;height:max-content;border:1px solid rgba(160,198,224,.18);border-radius:16px;background:rgba(5,11,17,.61);backdrop-filter:blur(12px)}.sidebar-card h3{font-family:Almendra,Georgia,serif;margin-top:0}.sidebar-card>a:not(.btn){display:block;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.06);color:#c6d1db}.warning{margin:22px 0;padding:17px 19px;border-left:3px solid var(--orange);border-radius:0 12px 12px 0;background:rgba(80,30,10,.38);color:#e8d7ce}.download-box{display:grid;grid-template-columns:1fr auto;gap:28px;align-items:center;padding:30px;border:1px solid rgba(74,168,255,.28);border-radius:18px;background:linear-gradient(120deg,rgba(5,15,26,.68),rgba(6,12,18,.52));box-shadow:0 0 28px rgba(58,144,231,.09)}.download-box h2{font-family:Almendra,Georgia,serif;margin:0 0 8px}.download-meta{display:flex;gap:22px;flex-wrap:wrap;color:#aeb9c4;font-size:.84rem}.download-meta b{color:white}.manual-box{margin-top:18px;border-color:rgba(231,197,110,.25)}.faq-list{display:grid;gap:10px}.faq-item{border:1px solid rgba(160,198,224,.15);border-radius:14px;background:rgba(5,11,17,.68);backdrop-filter:blur(9px);overflow:hidden}.faq-question{width:100%;padding:19px 22px;display:flex;justify-content:space-between;gap:20px;border:0;background:transparent;color:white;text-align:left;font-family:Almendra,Georgia,serif;font-weight:600;cursor:pointer}.faq-question::after{content:'+';color:var(--blue2);font-size:1.2rem}.faq-item.is-open .faq-question::after{content:'−'}.faq-answer{display:grid;grid-template-rows:0fr;transition:.25s}.faq-answer>div{overflow:hidden}.faq-answer p{margin:0;padding:0 22px 20px;color:#c4ccd4;line-height:1.65}.faq-item.is-open .faq-answer{grid-template-rows:1fr}.news-list{display:grid;gap:12px}.news-item{display:grid;grid-template-columns:150px 1fr auto;gap:20px;align-items:center;padding:22px;border:1px solid rgba(160,198,224,.15);border-radius:15px;background:rgba(5,11,17,.68)}.news-date{color:var(--green2);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.news-item h2{font-family:Almendra,Georgia,serif;margin:0 0 6px;font-size:1.15rem}.news-item p{margin:0;color:#bfc8d0;line-height:1.5}.news-item>a{color:var(--blue2);font-weight:700}
.site-footer{position:fixed;z-index:100;left:0;right:0;bottom:0;height:var(--footer);border-top:1px solid rgba(156,187,211,.16);background:linear-gradient(180deg,rgba(16,14,20,.68),rgba(6,9,13,.77));backdrop-filter:blur(12px) saturate(112%)}.footer-inner{height:100%;display:grid;grid-template-columns:1fr auto 1fr;align-items:center}.footer-copy{font-size:.72rem;font-weight:700;color:#f0f0f0}.footer-logo{position:relative;width:178px;align-self:end;margin-bottom:0}.footer-logo img{width:178px;filter:drop-shadow(0 -7px 15px rgba(0,0,0,.76));transform:translateY(-14px)}.footer-right{justify-self:end;display:flex;align-items:center;gap:16px}.socials{display:flex;gap:7px}.social{width:28px;height:28px;border:1px solid rgba(255,255,255,.18);border-radius:9px;background:rgba(255,255,255,.08);display:grid;place-items:center;color:white}.social:hover{border-color:var(--blue)}.signature{font-family:Georgia,serif;font-size:.78rem;font-style:italic;white-space:nowrap}.reveal{opacity:0;transform:translateY(12px);transition:opacity .55s ease,transform .55s ease}.reveal.in-view{opacity:1;transform:none}
@media(max-width:1120px){.desktop-nav{gap:20px}.hero-content{width:min(820px,80vw)}.hero-logo{width:min(620px,72vw)}.feature-grid{grid-template-columns:repeat(6,1fr)}.feature-card,.feature-card:nth-child(n+6){grid-column:span 2}.feature-card:nth-child(6){grid-column:span 2}.feature-card:nth-child(9){grid-column:8/span 2}.content-grid{grid-template-columns:1fr}.sidebar-card{position:static}.cards{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){:root{--header:44px;--footer:40px}.container{width:min(calc(100% - 28px),var(--max))}.desktop-nav,.header-actions{display:none}.menu-button{display:block}.mobile-nav{position:fixed;z-index:99;display:flex;flex-direction:column;top:var(--header);left:0;right:0;padding:16px;background:rgba(4,9,14,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(15px);transform:translateY(-125%);visibility:hidden;transition:.22s}.mobile-nav.is-open{transform:none;visibility:visible}.mobile-nav a{padding:12px 6px;border-bottom:1px solid rgba(255,255,255,.06)}.hero{align-items:flex-start;padding-top:20px;min-height:auto}.hero-content{width:100%}.hero-logo{width:min(630px,92vw);margin-left:-8px}.hero-kicker{margin:-13px 0 12px 120px;font-size:.95rem}.hero h1{font-size:clamp(2.1rem,9vw,3.6rem)}.hero-copy{font-size:.95rem}.btn-lg{min-height:50px;padding:0 20px}.status-pill{padding:9px 13px;font-size:.77rem}.feature-strip{padding-bottom:26px}.feature-grid{grid-template-columns:1fr 1fr}.feature-card,.feature-card:nth-child(n+6),.feature-card:nth-child(6),.feature-card:nth-child(7),.feature-card:nth-child(8),.feature-card:nth-child(9){grid-column:auto}.feature-card{min-height:90px}.columns,.steps{grid-template-columns:1fr}.cards{grid-template-columns:1fr}.section-head{display:block}.section-head p{margin-top:12px}.glass-section{padding:45px 0}.glass-panel{padding:27px}.page-hero{padding-top:24px}.page-hero .glass-panel{padding:27px}.download-box{grid-template-columns:1fr}.news-item{grid-template-columns:1fr}.footer-copy{font-size:.58rem}.footer-logo,.footer-logo img{width:132px}.footer-logo img{transform:translateY(-10px)}.footer-right{gap:8px}.social{width:25px;height:25px}.signature{font-size:.62rem}}
@media(max-width:560px){body::before{background-position:58% center}.container{width:min(calc(100% - 20px),var(--max))}.brand{width:104px}.brand img{height:30px;width:auto;max-width:100px}.hero{padding-top:14px}.hero-logo{width:100%}.hero-kicker{margin:-8px 0 10px 60px;letter-spacing:.32em}.hero-actions{display:grid;grid-template-columns:1fr 1fr}.hero-actions .btn:first-child{grid-column:1/-1}.hero-actions .btn{width:100%}.manual-download{font-size:.74rem}.status-row{display:grid;grid-template-columns:1fr 1fr}.status-pill{justify-content:center}.feature-grid{grid-template-columns:1fr}.feature-card{padding:14px}.feature-icon{width:40px;flex-basis:40px}.glass-panel{padding:22px 18px}.page-hero h1{font-size:2.45rem}.cards,.steps{grid-template-columns:1fr}.footer-copy{display:none}.footer-inner{grid-template-columns:1fr auto 1fr}.footer-logo{grid-column:2}.footer-right{grid-column:3}.socials .social:nth-child(n+2){display:none}.signature{display:none}}

/* ===== Uppsala v3 visual tuning ===== */
/* More transparent glass, larger protruding wordmarks, edge-aligned footer. */
.site-header{
  background:rgba(4,8,12,.40);
  border-bottom-color:rgba(116,184,235,.16);
  backdrop-filter:blur(10px) saturate(116%);
  -webkit-backdrop-filter:blur(10px) saturate(116%);
  overflow:visible;
}
.header-inner{overflow:visible}
.brand{
  width:184px;
  min-width:184px;
  align-self:stretch;
  position:relative;
  overflow:visible;
  z-index:3;
}
.brand img{
  width:176px;
  height:auto;
  max-width:none;
  object-fit:contain;
  transform:translateY(7px);
  filter:drop-shadow(0 6px 13px rgba(0,0,0,.82));
}
.btn{background:rgba(8,13,20,.39)}
.btn-primary{
  background:linear-gradient(180deg,rgba(72,23,9,.64),rgba(30,9,3,.54));
}
.btn-blue{
  background:linear-gradient(180deg,rgba(10,32,58,.51),rgba(6,16,29,.43));
}
.btn-ghost{background:rgba(5,11,17,.30)}
.status-pill{
  background:rgba(5,13,20,.34);
  border-color:rgba(137,184,217,.25);
  backdrop-filter:blur(9px);
  -webkit-backdrop-filter:blur(9px);
}
.feature-card{
  background:linear-gradient(115deg,rgba(5,12,19,.44),rgba(8,15,22,.28));
  border-color:rgba(150,195,226,.17);
  backdrop-filter:blur(9px);
  -webkit-backdrop-filter:blur(9px);
}
.mini-panel,.card,.step{background:rgba(5,11,17,.42)}
.site-footer{
  background:linear-gradient(180deg,rgba(16,14,20,.46),rgba(6,9,13,.54));
  border-top-color:rgba(156,187,211,.14);
  backdrop-filter:blur(10px) saturate(110%);
  -webkit-backdrop-filter:blur(10px) saturate(110%);
  overflow:visible;
}
.site-footer .footer-inner{
  width:100%;
  max-width:none;
  margin:0;
  padding-left:12px;
  padding-right:12px;
  overflow:visible;
}
.footer-copy{
  justify-self:start;
  text-align:left;
  font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:.73rem;
  line-height:1;
  font-weight:650;
  letter-spacing:.005em;
  color:#f4f4f4;
  white-space:nowrap;
}
.footer-logo{
  width:232px;
  overflow:visible;
  align-self:end;
}
.footer-logo img{
  width:232px;
  max-width:none;
  transform:translateY(-22px);
  filter:drop-shadow(0 -8px 17px rgba(0,0,0,.82));
}
.footer-right{
  justify-self:end;
  width:max-content;
}
.signature{
  font-family:Georgia,"Times New Roman",serif;
  font-size:.80rem;
  font-style:italic;
  font-weight:600;
  letter-spacing:.01em;
  white-space:nowrap;
}

@media(max-width:1120px){
  .brand{width:156px;min-width:156px}
  .brand img{width:150px;transform:translateY(6px)}
  .footer-logo,.footer-logo img{width:205px}
  .footer-logo img{transform:translateY(-19px)}
}
@media(max-width:820px){
  .brand{width:142px;min-width:142px}
  .brand img{width:138px;transform:translateY(5px)}
  .site-footer .footer-inner{padding-left:8px;padding-right:8px}
  .footer-copy{font-size:.57rem}
  .footer-logo,.footer-logo img{width:158px}
  .footer-logo img{transform:translateY(-14px)}
  .signature{font-size:.62rem}
}
@media(max-width:560px){
  .brand{width:132px;min-width:132px}
  .brand img{width:128px;height:auto;max-width:none;transform:translateY(5px)}
  .footer-logo,.footer-logo img{width:148px}
  .footer-logo img{transform:translateY(-13px)}
}

/* ===== Uppsala v5 footer vertical alignment fix ===== */
@media (min-width: 821px){
  .site-footer .footer-inner{
    padding-left:8px;
    padding-right:8px;
  }
  .footer-copy{
    font-size:.76rem;
    font-weight:700;
    transform:translateY(-6px);
  }
  .footer-right{
    transform:translateY(-6px);
  }
  .signature{
    font-size:.82rem;
    font-weight:600;
  }
  .social{
    width:27px;
    height:27px;
  }
}

/* ===== Uppsala v6: visit counter + launcher dock ===== */
.nav-visits{
  height:36px;
  padding:0 11px;
  display:grid;
  grid-template-columns:auto auto;
  grid-template-rows:1fr 1fr;
  column-gap:7px;
  align-items:center;
  border-left:1px solid rgba(120,190,238,.24);
  color:#dcebf6;
  font-family:Inter,system-ui,sans-serif;
  line-height:1;
  min-width:92px;
}
.nav-visits .i{grid-row:1/3;width:16px;height:16px;color:var(--blue2);filter:drop-shadow(0 0 7px rgba(75,168,255,.4))}
.nav-visits span{align-self:end;font-size:.48rem;letter-spacing:.13em;color:#94a9ba;font-weight:800}
.nav-visits strong{align-self:start;font-size:.72rem;letter-spacing:.02em;color:#fff;font-weight:800}
.nav-visits:hover strong{color:var(--blue2)}
.mobile-visits{display:flex;align-items:center;gap:7px;padding:12px 6px;color:#a8bed0;font-size:.78rem}
.mobile-visits .i{color:var(--blue2)}
.mobile-visits strong{color:#fff}

.hero>.container{position:relative}
.launcher-dock{
  position:absolute;
  top:10px;
  right:0;
  width:318px;
  padding:13px 14px 10px;
  border:1px solid rgba(79,169,244,.32);
  border-radius:16px;
  background:linear-gradient(120deg,rgba(5,13,20,.24),rgba(8,19,29,.16));
  backdrop-filter:blur(8px) saturate(108%);
  -webkit-backdrop-filter:blur(8px) saturate(108%);
  box-shadow:0 10px 28px rgba(0,0,0,.16),inset 0 1px 0 rgba(255,255,255,.035);
  z-index:5;
}
.launcher-dock::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:inherit;
  background:linear-gradient(100deg,rgba(75,168,255,.06),transparent 48%);
  pointer-events:none;
}
.launcher-dock-head{display:flex;align-items:center;gap:10px;position:relative}
.launcher-dock-icon{width:31px;height:31px;display:grid;place-items:center;border-radius:10px;border:1px solid rgba(95,184,255,.30);background:rgba(17,53,79,.18);color:var(--blue2)}
.launcher-dock-icon .i{width:18px;height:18px}
.launcher-dock-title{display:flex;align-items:baseline;gap:8px;min-width:0}
.launcher-dock-title span{font-family:Almendra,Georgia,serif;font-weight:700;font-size:.78rem;letter-spacing:.06em;white-space:nowrap}
.launcher-dock-title strong{font-family:Inter,system-ui,sans-serif;color:#9ccfff;font-size:.68rem;white-space:nowrap}
.launcher-dock-download{
  position:relative;
  margin-top:10px;
  min-height:38px;
  padding:0 12px;
  border:1px solid rgba(75,168,255,.48);
  border-radius:11px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  background:rgba(4,17,28,.22);
  transition:.2s;
}
.launcher-dock-download:hover{border-color:rgba(101,190,255,.8);background:rgba(7,27,44,.33);transform:translateY(-1px)}
.launcher-dock-download>span{font-family:Almendra,Georgia,serif;font-size:.78rem;font-weight:700;color:#eef8ff}
.launcher-dock-download>strong{font-family:Inter,system-ui,sans-serif;font-size:.68rem;font-weight:700;color:#7fc7ff;white-space:nowrap}
.launcher-dock-manual{position:relative;display:block;width:max-content;margin:8px 0 0 auto;color:#9aa9b5;font-size:.64rem;font-weight:600}
.launcher-dock-manual:hover{color:#d4e9f9}

/* Keep the majestic right side open: hero text remains left-weighted. */
@media(min-width:1121px){
  .hero-content{width:min(790px,57vw)}
}
@media(max-width:1260px){
  .launcher-dock{width:285px;right:0}
  .launcher-dock-title span{font-size:.70rem}
  .launcher-dock-download>strong{font-size:.62rem}
  .nav-visits span{display:none}
  .nav-visits{grid-template-columns:auto auto;grid-template-rows:1fr;min-width:auto;padding:0 8px}
  .nav-visits .i{grid-row:auto}
  .nav-visits strong{align-self:center;font-size:.68rem}
}
@media(max-width:1120px){
  .launcher-dock{position:relative;top:auto;right:auto;width:min(100%,520px);margin:0 0 12px auto}
  .hero-content{width:100%}
}
@media(max-width:820px){
  .launcher-dock{margin:4px 0 15px;width:100%;padding:11px 12px 9px}
  .launcher-dock-download{min-height:40px}
}
@media(max-width:560px){
  .launcher-dock-title{gap:6px}
  .launcher-dock-title span{font-size:.67rem}
  .launcher-dock-download>span{font-size:.72rem}
  .launcher-dock-download>strong{font-size:.60rem}
  .hero-actions{grid-template-columns:1fr 1fr}
  .hero-actions .btn:first-child{grid-column:auto}
}

/* ===== Uppsala v7: edge-floating launcher, no nested card ===== */
/* Restore hero proportions: the floating launcher never participates in the central content grid. */
.hero>.container{position:static}
@media(min-width:1121px){
  .hero-content{width:min(840px,62vw)}
}

.launcher-dock{display:none!important}
.launcher-float{
  position:fixed;
  z-index:88;
  top:calc(var(--header) + 18px);
  right:12px;
  width:236px;
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:7px;
  pointer-events:none;
  filter:drop-shadow(0 12px 24px rgba(0,0,0,.20));
}
.launcher-float>*{pointer-events:auto}
.launcher-main-pill{
  width:236px;
  min-height:48px;
  padding:0 12px 0 13px;
  display:grid;
  grid-template-columns:26px 1fr auto;
  align-items:center;
  gap:8px;
  border:1px solid rgba(79,169,244,.40);
  border-radius:14px;
  background:linear-gradient(110deg,rgba(5,17,27,.25),rgba(9,25,38,.14));
  backdrop-filter:blur(7px) saturate(110%);
  -webkit-backdrop-filter:blur(7px) saturate(110%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 0 18px rgba(48,142,222,.08);
  color:#eef8ff;
  transition:.2s ease;
}
.launcher-main-pill:hover{
  border-color:rgba(105,193,255,.72);
  background:linear-gradient(110deg,rgba(5,25,41,.34),rgba(9,31,49,.20));
  transform:translateX(-2px);
  box-shadow:0 0 22px rgba(55,155,240,.13),inset 0 1px 0 rgba(255,255,255,.05);
}
.launcher-main-pill .i{
  width:19px;height:19px;color:var(--blue2);
  filter:drop-shadow(0 0 8px rgba(75,168,255,.32));
}
.launcher-main-pill>span{
  font-family:Almendra,Georgia,serif;
  font-size:.69rem;
  font-weight:700;
  letter-spacing:.045em;
  white-space:nowrap;
}
.launcher-main-pill>strong{
  font-family:Inter,system-ui,sans-serif;
  font-size:.60rem;
  letter-spacing:.075em;
  color:#9ed3ff;
}
.launcher-float-meta{
  display:flex;
  justify-content:flex-end;
  gap:6px;
}
.launcher-meta-pill{
  min-height:27px;
  padding:0 9px;
  display:inline-flex;
  align-items:center;
  gap:6px;
  border:1px solid rgba(136,190,229,.24);
  border-radius:999px;
  background:rgba(5,14,22,.22);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
  color:#a8b9c7;
  font-family:Inter,system-ui,sans-serif;
  font-size:.58rem;
  line-height:1;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
}
.launcher-meta-pill b{
  color:#758a9b;
  font-size:.48rem;
  letter-spacing:.09em;
}
.launcher-meta-pill strong{color:#dceeff;font-size:.63rem}
.launcher-meta-pill.downloads strong{color:#86caff}
.launcher-float-manual{
  margin-right:5px;
  color:rgba(194,207,217,.68);
  font-size:.59rem;
  font-weight:600;
  text-shadow:0 2px 8px #000;
}
.launcher-float-manual:hover{color:#eef8ff}

/* On medium screens keep it floating, but slimmer so it does not intrude on the hero. */
@media(max-width:1260px) and (min-width:821px){
  .launcher-float{right:8px;width:210px;top:calc(var(--header) + 14px)}
  .launcher-main-pill{width:210px;grid-template-columns:23px 1fr auto;padding-left:10px;padding-right:10px}
  .launcher-main-pill>span{font-size:.62rem}
  .launcher-main-pill>strong{font-size:.54rem}
  .launcher-meta-pill{padding:0 7px;font-size:.54rem}
  .launcher-meta-pill b{display:none}
}

/* Mobile: a single compact floating launcher pill; metadata moves into the download page. */
@media(max-width:820px){
  .launcher-float{
    top:calc(var(--header) + 9px);
    right:8px;
    width:auto;
    gap:4px;
  }
  .launcher-main-pill{
    width:auto;
    min-width:174px;
    min-height:40px;
    grid-template-columns:21px 1fr auto;
    border-radius:12px;
    padding:0 9px;
  }
  .launcher-main-pill>span{font-size:.58rem}
  .launcher-main-pill>strong{font-size:.50rem}
  .launcher-float-meta,.launcher-float-manual{display:none}
}
@media(max-width:560px){
  .hero-content{padding-top:52px}
  .launcher-main-pill{min-width:160px}
  .launcher-main-pill>span{font-size:.54rem}
}


/* ===== Uppsala 0.7.1: compact chrome + launcher polish ===== */
:root{
  --header:38px;
  --footer:34px;
}

.site-header{
  background:rgba(4,8,12,.31);
  border-bottom-color:rgba(116,184,235,.12);
  backdrop-filter:blur(8px) saturate(112%);
  -webkit-backdrop-filter:blur(8px) saturate(112%);
}
.header-inner{gap:26px}
.brand{
  width:176px;
  min-width:176px;
}
.brand img{
  width:170px;
  transform:translateY(8px);
}
.header-actions{gap:8px}
.btn.btn-sm{
  min-height:34px;
  padding:0 16px;
  border-radius:12px;
  font-size:.76rem;
}
.nav-visits{
  height:32px;
  min-width:86px;
  padding:0 9px;
}
.nav-visits strong{font-size:.69rem}
.nav-visits span{font-size:.45rem}
.desktop-nav a{font-size:.79rem}
.desktop-nav a::after{bottom:-7px}

.site-footer{
  background:linear-gradient(180deg,rgba(16,14,20,.34),rgba(6,9,13,.42));
  border-top-color:rgba(156,187,211,.11);
  backdrop-filter:blur(8px) saturate(108%);
  -webkit-backdrop-filter:blur(8px) saturate(108%);
}
.site-footer .footer-inner{
  padding-left:8px;
  padding-right:8px;
}
.footer-copy,
.footer-right{
  transform:translateY(-4px);
}
.footer-copy{
  font-size:.72rem;
}
.footer-logo{width:228px}
.footer-logo img{
  width:228px;
  transform:translateY(-18px);
}
.social{width:26px;height:26px}
.signature{font-size:.79rem}

.launcher-float{
  top:calc(var(--header) + 12px);
  right:10px;
  width:236px;
  gap:8px;
}
.launcher-main-pill{
  width:236px;
  min-height:46px;
  background:linear-gradient(110deg,rgba(4,18,33,.21),rgba(8,26,41,.11));
  border-color:rgba(85,178,248,.36);
  backdrop-filter:blur(6px) saturate(108%);
  -webkit-backdrop-filter:blur(6px) saturate(108%);
}
.launcher-main-pill>strong{
  color:#8fd0ff;
}
.launcher-float-meta{
  width:236px;
  justify-content:center;
  gap:8px;
}
.launcher-meta-pill{
  min-height:28px;
  padding:0 10px;
  justify-content:center;
  background:rgba(5,14,22,.16);
  border-color:rgba(136,190,229,.22);
}
.launcher-meta-pill b{font-size:.47rem}
.launcher-meta-pill strong{font-size:.64rem}
.launcher-meta-pill:first-child{
  border-color:rgba(79,169,244,.32);
  background:linear-gradient(180deg,rgba(10,34,58,.20),rgba(5,14,22,.12));
  color:#b8cde0;
}
.launcher-meta-pill:first-child strong{
  color:#d7efff;
}
.launcher-meta-pill.downloads{
  border-color:rgba(255,125,66,.34);
  background:linear-gradient(180deg,rgba(72,23,9,.20),rgba(24,11,7,.12));
  color:#d9c4ba;
}
.launcher-meta-pill.downloads strong{
  color:#ffb36f;
}
.launcher-float-manual{
  margin-right:6px;
  color:rgba(194,207,217,.78);
}

@media(max-width:1260px) and (min-width:821px){
  .launcher-float{top:calc(var(--header) + 10px)}
  .site-header{background:rgba(4,8,12,.33)}
}
@media(max-width:820px){
  :root{--header:42px;--footer:36px}
  .site-header{background:rgba(4,8,12,.42)}
  .site-footer{background:linear-gradient(180deg,rgba(16,14,20,.44),rgba(6,9,13,.52))}
}
@media(max-width:560px){
  :root{--header:40px;--footer:34px}
}


/* ===== Uppsala 0.7.2: typography, spacing and micro-interactions ===== */
:root{
  --ease-out:cubic-bezier(.2,.72,.22,1);
  --ease-soft:cubic-bezier(.22,.61,.36,1);
}

body{
  font-weight:400;
  letter-spacing:.002em;
}

/* Display typography: lighter, less blocky, closer to the Uppsala lettering mood. */
.desktop-nav a,
.btn,
.hero-kicker,
.hero h1,
.hero-copy,
.status-pill,
.feature-card h3,
.section-head h2,
.glass-panel h2,
.mini-panel h3,
.card h3,
.step h3,
.page-hero h1,
.prose h2,
.prose h3,
.sidebar-card h3,
.launcher-main-pill>span{
  font-family:Almendra,Georgia,serif;
}
.desktop-nav a{font-weight:400;letter-spacing:.055em}
.btn{font-weight:400;letter-spacing:.035em}
.hero-kicker{font-weight:400;letter-spacing:.40em}
.hero h1{font-weight:400;letter-spacing:.012em}
.hero-copy{font-weight:400;letter-spacing:.01em}
.status-pill{font-weight:400;letter-spacing:.015em}
.feature-card h3{font-weight:400;letter-spacing:.018em}
.section-head h2,.glass-panel h2,.page-hero h1{font-weight:400;letter-spacing:.01em}
.mini-panel h3,.card h3,.step h3,.prose h2,.prose h3,.sidebar-card h3{font-weight:400}
.launcher-main-pill>span{font-weight:400;letter-spacing:.075em}
.launcher-main-pill>strong{font-weight:500}
.footer-copy{font-weight:500}
.signature{font-weight:400}
.nav-visits strong{font-weight:600}
.nav-visits span{font-weight:600}

/* Tighter, more deliberate rhythm. */
.hero{padding-top:18px;padding-bottom:20px}
.hero-content{padding-top:7px}
.hero-logo{margin-bottom:2px}
.hero-kicker{margin-top:-16px;margin-bottom:7px}
.hero h1{margin-bottom:8px}
.hero-copy{margin-bottom:14px;line-height:1.48}
.hero-actions{gap:10px}
.status-row{gap:8px;margin-top:10px}
.status-pill{padding:8px 14px}
.feature-grid{gap:9px}
.feature-card{min-height:96px;padding:14px 16px;gap:12px}
.feature-card h3{margin-bottom:3px}
.feature-card p{line-height:1.32}
.glass-section{padding:58px 0}
.section-head{margin-bottom:23px}
.cards,.steps{gap:14px}

/* Pills: quiet at rest, alive only on interaction. */
.btn,
.status-pill,
.feature-card,
.launcher-main-pill,
.launcher-meta-pill,
.social{
  transition:
    transform .18s var(--ease-out),
    border-color .22s var(--ease-soft),
    background-color .22s var(--ease-soft),
    box-shadow .24s var(--ease-soft),
    filter .22s var(--ease-soft),
    color .18s ease;
  will-change:transform;
}

.btn{
  position:relative;
  overflow:hidden;
}
.btn::after{
  content:"";
  position:absolute;
  top:0;bottom:0;
  left:-42%;
  width:28%;
  opacity:0;
  background:linear-gradient(105deg,transparent,rgba(255,255,255,.11),transparent);
  transform:skewX(-18deg);
  transition:left .42s var(--ease-out),opacity .18s ease;
  pointer-events:none;
}
.btn:hover{
  transform:translateY(-2px);
  filter:brightness(1.055);
}
.btn:hover::after{left:118%;opacity:1}
.btn:active{transform:translateY(0) scale(.988)}

.btn-primary:hover{
  border-color:rgba(255,126,66,.96);
  box-shadow:0 0 20px rgba(255,80,21,.31),inset 0 0 14px rgba(255,95,31,.10);
}
.btn-blue:hover{
  border-color:rgba(104,190,255,.88);
  box-shadow:0 0 18px rgba(40,136,255,.18),inset 0 0 12px rgba(81,175,255,.07);
}

.status-pill:hover{
  transform:translateY(-1px);
  border-color:rgba(137,184,217,.40);
  background:rgba(7,17,25,.40);
  box-shadow:0 8px 22px rgba(0,0,0,.24),inset 0 1px 0 rgba(255,255,255,.035);
}
.status-pill:hover .i{transform:translateY(-1px)}
.status-pill .i{transition:transform .18s var(--ease-out),color .18s ease}

.feature-card:hover{
  transform:translateY(-3px);
  border-color:color-mix(in srgb,var(--accent-color,#66bdff) 40%,rgba(150,195,226,.22));
  background:linear-gradient(115deg,rgba(6,14,22,.52),rgba(8,16,23,.34));
  box-shadow:0 16px 34px rgba(0,0,0,.28),0 0 17px color-mix(in srgb,var(--accent-color,#66bdff) 10%,transparent);
}
.feature-icon{
  transition:transform .20s var(--ease-out),filter .22s ease;
}
.feature-card:hover .feature-icon{
  transform:translateY(-2px) scale(1.035);
  filter:drop-shadow(0 0 10px color-mix(in srgb,var(--accent-color,var(--blue2)) 40%,transparent));
}

/* Launcher: micro-motion only, no nested-card look. */
.launcher-main-pill:hover{
  transform:translateX(-2px) translateY(-1px);
}
.launcher-main-pill:active{transform:translateX(-1px) scale(.99)}
.launcher-main-pill .i{transition:transform .20s var(--ease-out),filter .22s ease}
.launcher-main-pill:hover .i{transform:translateY(1px);filter:drop-shadow(0 0 9px rgba(75,168,255,.46))}
.launcher-meta-pill:hover{
  transform:translateY(-1px);
}
.launcher-meta-pill:first-child:hover{
  border-color:rgba(79,169,244,.46);
  background:linear-gradient(180deg,rgba(10,34,58,.26),rgba(5,14,22,.14));
}
.launcher-meta-pill.downloads:hover{
  border-color:rgba(255,125,66,.48);
  background:linear-gradient(180deg,rgba(72,23,9,.27),rgba(24,11,7,.14));
}

/* Navbar/footer details. */
.brand img{
  transition:filter .24s ease,transform .24s var(--ease-out);
}
.brand:hover img{
  transform:translateY(7px) scale(1.012);
  filter:drop-shadow(0 7px 14px rgba(0,0,0,.84)) drop-shadow(0 0 9px rgba(119,190,238,.08));
}
.desktop-nav a{transition:color .18s ease,text-shadow .18s ease}
.desktop-nav a:hover{color:#fff;text-shadow:0 0 9px rgba(117,191,243,.18)}
.social:hover{transform:translateY(-2px);background:rgba(255,255,255,.10)}
.footer-logo img{transition:transform .24s var(--ease-out),filter .24s ease}
.footer-logo:hover img{transform:translateY(-19px) scale(1.018);filter:drop-shadow(0 -8px 18px rgba(0,0,0,.82))}

/* Keyboard focus stays obvious without wrecking the aesthetic. */
a:focus-visible,button:focus-visible{
  outline:1px solid rgba(128,201,255,.9);
  outline-offset:3px;
}

/* Respect reduced motion. */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
}

@media(max-width:820px){
  .hero{padding-top:15px;padding-bottom:18px}
  .hero-kicker{margin-bottom:6px}
  .feature-grid{gap:8px}
  .feature-card{min-height:88px;padding:13px 14px}
  .glass-section{padding:44px 0}
}


/* Final weight cleanup: avoid synthetic heavy faces. */
.eyebrow,.tag,.step-num,.faq-question,.news-item>a,.card a:not(.btn),.download-meta b{
  font-weight:500;
}
.faq-question{font-family:Almendra,Georgia,serif;letter-spacing:.01em}
.news-item>a{font-weight:500}
.manual-download a,.breadcrumbs a,.prose a{font-weight:500}


/* ===== Uppsala 0.7.3: footer lift + unified launcher group + linked onboarding ===== */
/* Footer remains exactly the same height. Only its side content moves up. */
.footer-copy,
.footer-right{
  transform:translateY(-10px);
}

/* The three launcher pills behave as one floating control cluster. */
.launcher-download-group{
  width:236px;
  display:flex;
  flex-direction:column;
  align-items:stretch;
  gap:8px;
  transition:transform .22s var(--ease-out),filter .24s var(--ease-soft);
  transform-origin:right center;
}
.launcher-download-group:hover{
  transform:translateX(-3px) translateY(-1px);
  filter:drop-shadow(0 10px 17px rgba(0,0,0,.22)) drop-shadow(0 0 10px rgba(67,163,235,.10));
}
.launcher-download-group:hover .launcher-main-pill,
.launcher-download-group:hover .launcher-meta-pill{
  border-color:rgba(100,187,248,.46);
}
.launcher-main-pill{
  grid-template-columns:26px 1fr;
}
.launcher-main-pill:hover,
.launcher-main-pill:active,
.launcher-meta-pill:hover,
.launcher-meta-pill:active{
  transform:none;
}
.launcher-float-meta{
  width:100%;
  justify-content:center;
}
.launcher-meta-pill{
  text-decoration:none;
  cursor:pointer;
}
.launcher-meta-pill.version{
  border-color:rgba(74,168,255,.34);
}
.launcher-meta-pill.downloads{
  border-color:rgba(255,111,54,.37);
}
.launcher-download-group:hover .launcher-meta-pill.downloads{
  border-color:rgba(255,129,70,.55);
}
.launcher-float-manual{
  margin-top:0;
  margin-right:3px;
  max-width:236px;
  text-align:right;
  color:rgba(213,221,228,.76);
  font-size:.58rem;
  line-height:1.25;
}
.launcher-float-manual strong{
  color:#ffae73;
  font-weight:500;
  text-decoration:underline;
  text-decoration-color:rgba(255,126,70,.42);
  text-underline-offset:2px;
}
.launcher-float-manual:hover strong{
  color:#ffd0af;
  text-decoration-color:rgba(255,158,100,.80);
}

/* Whole onboarding cards can be links without looking like generic buttons. */
.step-link{
  display:block;
  color:inherit;
  text-decoration:none;
  position:relative;
  overflow:hidden;
  cursor:pointer;
  transition:transform .2s var(--ease-out),border-color .22s var(--ease-soft),background .22s var(--ease-soft),box-shadow .24s var(--ease-soft);
}
.step-link::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  opacity:0;
  background:linear-gradient(110deg,transparent 25%,rgba(90,181,247,.055) 52%,transparent 76%);
  transform:translateX(-28%);
  transition:opacity .2s ease,transform .4s var(--ease-out);
}
.step-link:hover{
  transform:translateY(-3px);
  border-color:rgba(85,176,242,.40);
  background:rgba(6,16,24,.52);
  box-shadow:0 14px 28px rgba(0,0,0,.22),0 0 18px rgba(54,151,224,.07);
}
.step-link:hover::after{opacity:1;transform:translateX(26%)}
.step-link.step-discord:hover{
  border-color:rgba(86,151,255,.45);
  box-shadow:0 14px 28px rgba(0,0,0,.22),0 0 18px rgba(76,121,255,.08);
}
.step-cta{
  display:inline-block;
  margin-top:10px;
  color:#8dcbf6;
  font-size:.70rem;
  letter-spacing:.035em;
}
.step-discord .step-cta{color:#9eb8ff}

.is-disabled{pointer-events:none!important;opacity:.35!important}

@media(max-width:1260px) and (min-width:821px){
  .launcher-download-group{width:210px}
  .launcher-float-manual{max-width:210px}
}
@media(max-width:820px){
  .footer-copy,.footer-right{transform:translateY(-7px)}
  .launcher-download-group{width:auto}
  .launcher-float-meta,.launcher-float-manual{display:none}
}


/* ===== Uppsala 0.8.0: typography system + independent launcher pills ===== */
:root{
  /* Runtime values are rendered from data/site-settings.json. */
  --font-display:"Almendra",Georgia,serif;
  --font-body:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-display-weight:400;
  --font-body-weight:400;
}

/* Normal reading copy uses the BODY slot. */
body,
.prose,
.prose p,
.prose li,
.card p,
.mini-panel p,
.step p,
.feature-card p,
.news-item p,
.page-hero p,
.section-head p,
.faq-answer,
.download-meta,
.warning,
.breadcrumbs{
  font-family:var(--font-body);
  font-weight:var(--font-body-weight);
}

/* UI/display lettering uses the UPPSALA/DISPLAY slot. */
:is(
  h1,h2,h3,h4,h5,h6,
  .desktop-nav a,.mobile-nav a,
  .btn,.hero-kicker,.hero-copy,.manual-download,
  .status-pill,.feature-card h3,
  .eyebrow,.tag,.step-num,
  .faq-question,.news-date,.news-item h2,
  .download-box h2,.sidebar-card h3,
  .launcher-main-pill,.launcher-meta-pill,.launcher-float-manual,
  .nav-visits,.footer-copy,.signature,.step-cta
){
  font-family:var(--font-display);
  font-weight:var(--font-display-weight);
  font-synthesis:none;
}

/* Avoid the heavy/bold look across UI. */
:is(.btn,.desktop-nav a,.mobile-nav a,.status-pill,.feature-card h3,.step h3,.card h3,.mini-panel h3,.faq-question,.news-item h2,.launcher-main-pill>span,.footer-copy,.signature){
  font-weight:var(--font-display-weight)!important;
}
:is(.launcher-main-pill>strong,.launcher-meta-pill strong,.nav-visits strong,.download-meta b){
  font-weight:500;
}
strong{font-synthesis:none}

/* Slightly more breathing room for the decorative face. */
.desktop-nav{gap:31px}
.desktop-nav a{letter-spacing:.052em}
.btn{letter-spacing:.035em}
.status-pill{letter-spacing:.018em}
.feature-card h3{letter-spacing:.018em}
.step h3,.card h3,.mini-panel h3{letter-spacing:.015em}
.hero h1{letter-spacing:.012em}
.page-hero h1{letter-spacing:.008em}

/* Launcher = three genuinely independent controls. */
.launcher-download-group{display:contents}
.launcher-float{
  gap:10px;
}
.launcher-main-pill,
.launcher-meta-pill{
  transition:transform .18s var(--ease-out),border-color .20s ease,background .20s ease,box-shadow .22s ease,filter .22s ease;
}
.launcher-main-pill:hover{
  transform:translateX(-2px) translateY(-1px);
}
.launcher-main-pill:active{transform:translateX(-1px) scale(.99)}
.launcher-float-meta{
  width:236px;
  justify-content:center;
  gap:14px;
  padding:0 4px;
}
.launcher-meta-pill{
  flex:0 0 auto;
  min-width:100px;
  min-height:28px;
  justify-content:center;
}
.launcher-meta-pill.version{
  margin-right:2px;
}
.launcher-meta-pill.downloads{
  margin-left:2px;
}
.launcher-meta-pill:hover{
  transform:translateY(-2px);
  filter:brightness(1.08);
}
.launcher-meta-pill.version:hover{
  border-color:rgba(91,184,255,.55);
  box-shadow:0 7px 17px rgba(35,130,205,.12);
}
.launcher-meta-pill.downloads:hover{
  border-color:rgba(255,128,66,.58);
  box-shadow:0 7px 17px rgba(220,76,24,.11);
}
.launcher-float-manual{
  margin-top:1px;
  margin-right:3px;
}
.launcher-float-manual:hover{transform:translateY(-1px)}

/* Disable the old whole-cluster motion from 0.7.3. */
.launcher-download-group:hover{transform:none;filter:none}
.launcher-download-group:hover .launcher-main-pill,
.launcher-download-group:hover .launcher-meta-pill{border-color:inherit}

@media(max-width:1260px) and (min-width:821px){
  .launcher-float-meta{width:210px;gap:10px;padding:0 2px}
  .launcher-meta-pill{min-width:91px}
}
@media(max-width:820px){
  .launcher-float-meta{display:none}
}


/* ===== Uppsala 0.9.0: live server status + footer hard lift + 1.7x launcher ===== */
/* Footer height is unchanged. Side content is explicitly pinned near the TOP of the bar. */
.site-footer .footer-inner{
  position:relative;
  display:block;
  height:100%;
  overflow:visible;
}
.footer-copy{
  position:absolute;
  left:8px;
  top:4px;
  transform:none!important;
  margin:0;
  line-height:1.05;
  white-space:nowrap;
}
.footer-right{
  position:absolute;
  right:8px;
  top:2px;
  transform:none!important;
  margin:0;
  line-height:1;
}
.footer-logo{
  position:absolute;
  left:50%;
  bottom:0;
  transform:translateX(-50%);
  margin:0;
  overflow:visible;
}
.footer-logo img{
  transform:translateY(-18px);
}

/* Live server status states. */
.server-offline{color:#ff7c66!important}
.status-pill[data-server-status-pill]{transition:border-color .25s ease,background .25s ease,box-shadow .25s ease}
.status-pill[data-server-status-pill].is-online{border-color:rgba(82,228,118,.30)}
.status-pill[data-server-status-pill].is-offline{border-color:rgba(255,95,72,.34);background:rgba(40,9,7,.28)}
.status-pill[data-server-status-pill].is-unknown{border-color:rgba(231,197,110,.25)}
.dot[data-server-dot]{background:#e7c56e;box-shadow:0 0 11px rgba(231,197,110,.65)}
.dot[data-server-dot].is-online{background:var(--green);box-shadow:0 0 12px var(--green)}
.dot[data-server-dot].is-offline{background:#ff5f48;box-shadow:0 0 12px rgba(255,95,72,.72)}

/* Launcher dock enlarged ~1.7x while remaining visually light over the background. */
@media(min-width:1501px){
  .launcher-float{
    top:calc(var(--header) + 20px);
    right:16px;
    width:398px;
    gap:14px;
  }
  .launcher-main-pill{
    width:398px;
    min-height:74px;
    grid-template-columns:42px 1fr;
    gap:13px;
    padding:0 21px;
    border-radius:20px;
  }
  .launcher-main-pill .i{width:29px;height:29px}
  .launcher-main-pill>span{font-size:1.02rem;letter-spacing:.05em}
  .launcher-float-meta{
    width:398px;
    gap:18px;
    padding:0 10px;
  }
  .launcher-meta-pill{
    min-width:168px;
    min-height:43px;
    padding:0 16px;
    gap:9px;
    border-radius:999px;
    font-size:.78rem;
  }
  .launcher-meta-pill b{font-size:.64rem;letter-spacing:.10em}
  .launcher-meta-pill strong{font-size:.86rem}
  .launcher-float-manual{
    max-width:398px;
    margin-top:1px;
    margin-right:8px;
    font-size:.78rem;
    line-height:1.3;
  }
}
@media(min-width:1261px) and (max-width:1500px){
  .launcher-float{width:315px;right:12px;gap:11px}
  .launcher-main-pill{width:315px;min-height:60px;grid-template-columns:33px 1fr;padding:0 16px;border-radius:17px}
  .launcher-main-pill .i{width:24px;height:24px}
  .launcher-main-pill>span{font-size:.84rem}
  .launcher-float-meta{width:315px;gap:12px;padding:0 5px}
  .launcher-meta-pill{min-width:136px;min-height:35px;padding:0 11px}
  .launcher-meta-pill b{font-size:.55rem}.launcher-meta-pill strong{font-size:.73rem}
  .launcher-float-manual{max-width:315px;font-size:.67rem}
}

@media(max-width:820px){
  .footer-right{top:4px}
  .footer-logo{left:50%}
}
@media(max-width:560px){
  .footer-copy{display:none}
  .footer-right{top:4px;right:6px}
}


/* ===== Uppsala 0.9.1: footer clipping hardening ===== */
@media(min-width:821px){
  .site-footer .footer-inner{overflow:visible!important}
  .footer-copy{top:1px!important;line-height:1!important;font-size:.70rem!important}
  .footer-right{top:0!important;line-height:1!important}
}


/* ===== Uppsala 0.9.2: footer micro alignment ===== */
/* Same footer height. Side text drops only a few px; centre logo drops more. */
@media(min-width:821px){
  .footer-copy{
    top:4px!important;
  }
  .footer-right{
    top:3px!important;
  }
  .footer-logo{
    bottom:-1px!important;
  }
  .footer-logo img{
    transform:translateY(-9px)!important;
  }
}
@media(max-width:820px){
  .footer-right{top:6px!important}
  .footer-logo{bottom:-1px!important}
  .footer-logo img{transform:translateY(-7px)!important}
}

/* ===== Uppsala 0.9.3: dedicated mobile layout pass ===== */
@media(max-width:820px){
  html,body{overflow-x:hidden}
  body{padding-bottom:calc(var(--footer) + 16px)}

  .container{width:min(calc(100% - 24px),var(--max))}

  /* Mobile header stays slim; branding may protrude, but not consume the page. */
  .site-header{overflow:visible}
  .header-inner{gap:10px;overflow:visible}
  .brand{width:148px;min-width:148px;height:100%;overflow:visible}
  .brand img{width:145px;height:auto;max-width:none;transform:translateY(4px)}
  .brand:hover img{transform:translateY(4px)}
  .menu-button{width:36px;height:32px;border-radius:9px}

  .mobile-nav{
    top:var(--header);
    padding:10px 14px 14px;
    background:rgba(4,9,14,.90);
  }
  .mobile-nav a{padding:10px 5px}

  /* Internal page hero: less empty vertical space and sane title scale. */
  .page-hero{padding:12px 0 10px}
  .page-hero .glass-panel{
    padding:22px 20px 24px;
    border-radius:18px;
  }
  .breadcrumbs{margin-bottom:8px;font-size:.72rem}
  .eyebrow{font-size:.66rem;letter-spacing:.15em}
  .page-hero h1{
    font-size:clamp(2rem,10vw,2.75rem);
    line-height:1.00;
    margin:7px 0 12px;
  }
  .page-hero p{
    font-size:.96rem;
    line-height:1.55;
  }

  /* Content sections and cards get a compact phone rhythm. */
  .glass-section{padding:28px 0}
  .glass-panel{padding:21px 18px;border-radius:18px}
  .section-head{margin-bottom:16px}
  .section-head h2,.glass-panel h2{font-size:clamp(1.85rem,9vw,2.5rem);line-height:1.04}
  .section-head p{font-size:.92rem;line-height:1.55}

  .cards,.steps{grid-template-columns:1fr;gap:10px}
  .card,.step,.mini-panel{
    padding:18px 17px;
    border-radius:15px;
  }
  .card h3,.step h3,.mini-panel h3{margin-bottom:7px;line-height:1.15}
  .card p,.step p,.mini-panel p{font-size:.90rem;line-height:1.55}
  .tag{margin-bottom:10px;padding:4px 8px;font-size:.62rem}

  .content-grid{gap:12px}
  .prose{padding:22px 18px}
  .prose h2{font-size:1.55rem;margin-top:28px}
  .prose h3{font-size:1.22rem;margin-top:22px}
  .prose p,.prose li{font-size:.94rem;line-height:1.62}
  .sidebar-card{padding:20px 18px;border-radius:15px}

  .news-item{padding:18px;gap:10px}
  .faq-question{padding:16px 17px}
  .faq-answer p{padding:0 17px 17px}
  .download-box{padding:20px 18px;gap:16px}

  /* Home screen: preserve hierarchy without desktop-sized blocks. */
  .hero{padding:12px 0 16px}
  .hero-content{padding-top:4px}
  .hero-logo{width:min(520px,92vw);margin-left:-5px}
  .hero-kicker{margin:-9px 0 8px 70px;font-size:.82rem;letter-spacing:.30em}
  .hero h1{font-size:clamp(2rem,10vw,3rem);line-height:1.02}
  .hero-copy{font-size:.91rem;line-height:1.48;margin-bottom:12px}
  .hero-actions{gap:8px}
  .btn-lg{min-height:46px;padding:0 16px;font-size:.90rem}
  .status-row{gap:7px;margin-top:8px}
  .status-pill{padding:8px 11px;font-size:.73rem}

  .feature-strip{padding-bottom:18px}
  .feature-grid{gap:8px}
  .feature-card{min-height:82px;padding:12px 13px;gap:10px;border-radius:14px}
  .feature-icon{width:36px;flex-basis:36px;font-size:1.65rem}
  .feature-card h3{font-size:.94rem}
  .feature-card p{font-size:.72rem;line-height:1.30}

  /* Footer: same thin bar, but no giant center logo covering mobile content. */
  .site-footer{height:var(--footer);overflow:visible}
  .site-footer .footer-inner{height:100%;overflow:visible!important}
  .footer-copy{display:none!important}
  .footer-right{
    top:50%!important;
    right:7px!important;
    transform:translateY(-50%)!important;
    gap:6px;
  }
  .footer-logo{
    left:50%!important;
    bottom:0!important;
    width:108px!important;
    transform:translateX(-50%)!important;
  }
  .footer-logo img{
    width:108px!important;
    max-width:none!important;
    transform:translateY(-4px)!important;
    filter:drop-shadow(0 -4px 9px rgba(0,0,0,.72));
  }
  .footer-logo:hover img{transform:translateY(-4px)!important}
  .social{width:25px;height:25px;border-radius:8px}
  .signature{display:none!important}
}

@media(max-width:560px){
  .container{width:min(calc(100% - 20px),var(--max))}
  .brand{width:140px;min-width:140px}
  .brand img{width:137px;transform:translateY(4px)}

  .page-hero .glass-panel{padding:20px 17px 22px}
  .page-hero h1{font-size:clamp(1.92rem,10.8vw,2.45rem)}
  .page-hero p{font-size:.92rem}

  .glass-panel{padding:19px 16px}
  .glass-section{padding:24px 0}
  .card,.step,.mini-panel{padding:17px 15px}

  .hero-logo{width:100%}
  .hero-kicker{margin-left:54px}
  .hero-actions{grid-template-columns:1fr 1fr}
  .hero-actions .btn:first-child{grid-column:auto}
  .status-row{grid-template-columns:1fr 1fr}

  .feature-grid{grid-template-columns:1fr}
  .feature-card{min-height:78px}

  .footer-logo,.footer-logo img{width:100px!important}
  .footer-logo img{transform:translateY(-3px)!important}
  .footer-logo:hover img{transform:translateY(-3px)!important}
}


/* ===== Uppsala 0.9.4: footer final micro-position + mobile rebuild ===== */
/* Desktop: keep the exact same bar height; lower side copy by only ~2 px and centre logo a touch more. */
@media(min-width:821px){
  .footer-copy{
    top:6px!important;
  }
  .footer-right{
    top:5px!important;
  }
  .footer-logo{
    bottom:-1px!important;
  }
  .footer-logo img{
    transform:translateY(-5px)!important;
  }
  .footer-logo:hover img{
    transform:translateY(-5px) scale(1.012)!important;
  }
}

/* Mobile footer is intentionally independent from desktop proportions.
   The wordmark stays inside the thin bar instead of floating over content. */
@media(max-width:820px){
  body{padding-bottom:calc(var(--footer) + 10px)!important}
  .site-footer{
    overflow:hidden!important;
  }
  .site-footer .footer-inner{
    position:relative!important;
    display:block!important;
    width:100%!important;
    max-width:none!important;
    height:100%!important;
    padding:0 6px!important;
    overflow:hidden!important;
  }
  .footer-copy{display:none!important}
  .footer-logo{
    position:absolute!important;
    left:50%!important;
    top:50%!important;
    bottom:auto!important;
    width:82px!important;
    height:auto!important;
    margin:0!important;
    transform:translate(-50%,-50%)!important;
    overflow:visible!important;
  }
  .footer-logo img{
    width:82px!important;
    height:auto!important;
    max-width:none!important;
    margin:0!important;
    transform:none!important;
    filter:drop-shadow(0 2px 6px rgba(0,0,0,.72))!important;
  }
  .footer-logo:hover img{transform:none!important}
  .footer-right{
    position:absolute!important;
    right:6px!important;
    top:50%!important;
    bottom:auto!important;
    transform:translateY(-50%)!important;
    margin:0!important;
    gap:5px!important;
    line-height:1!important;
  }
  .socials{gap:4px!important}
  .social{
    width:22px!important;
    height:22px!important;
    border-radius:7px!important;
  }
  .social .i{width:13px!important;height:13px!important}
  .signature{display:none!important}
}
@media(max-width:560px){
  .footer-logo{width:74px!important}
  .footer-logo img{width:74px!important}
  .footer-right{right:5px!important}
  .social{width:21px!important;height:21px!important}
}


/* ===== Uppsala 1.0.0 production polish ===== */
.legal-links-row{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:22px;font-family:var(--font-display);font-size:.72rem;color:#9fb0bd}.legal-links-row a{color:#cbd9e4}.legal-links-row a:hover{color:var(--blue2)}
.news-list{display:grid;gap:12px}.news-item{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;padding:22px 24px;border:1px solid rgba(160,198,224,.17);border-radius:16px;background:rgba(5,11,17,.42);backdrop-filter:blur(10px)}.news-item h2{font-family:var(--font-display);font-weight:var(--font-display-weight);margin:5px 0 7px}.news-item p{margin:0 0 6px;color:#c6cdd4}.news-item small{color:#8697a5}
.prose ul{color:#c6cdd4;line-height:1.75;padding-left:1.4em}.prose a{color:var(--blue2)}
@media(max-width:820px){.legal-links-row{flex-wrap:wrap;font-size:.66rem;margin-top:16px}.news-item{grid-template-columns:1fr;padding:18px}.news-item .btn{width:max-content}}

/* ===== Uppsala 1.0.0 footer normalization ===== */
/* Final authoritative footer rules; bar height stays low. */
.site-footer{
  height:var(--footer)!important;
  min-height:0!important;
  overflow:visible!important;
}
.site-footer .footer-inner{
  position:relative!important;
  display:block!important;
  width:100%!important;
  max-width:none!important;
  height:100%!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
}
@media(min-width:821px){
  .footer-copy{
    position:absolute!important;
    left:8px!important;
    top:50%!important;
    transform:translateY(-34%)!important;
    margin:0!important;
    line-height:1!important;
    font-size:.70rem!important;
    white-space:nowrap!important;
  }
  .footer-right{
    position:absolute!important;
    right:8px!important;
    top:50%!important;
    transform:translateY(-32%)!important;
    margin:0!important;
    line-height:1!important;
  }
  .footer-logo{
    position:absolute!important;
    left:50%!important;
    bottom:-2px!important;
    top:auto!important;
    width:228px!important;
    margin:0!important;
    transform:translateX(-50%)!important;
    overflow:visible!important;
  }
  .footer-logo img{
    width:228px!important;
    max-width:none!important;
    transform:translateY(-4px)!important;
  }
  .footer-logo:hover img{transform:translateY(-4px) scale(1.012)!important}
}
@media(max-width:820px){
  :root{--footer:32px}
  body{padding-bottom:40px!important}
  .site-footer{overflow:hidden!important}
  .site-footer .footer-inner{overflow:hidden!important}
  .footer-copy{display:none!important}
  .footer-logo{
    position:absolute!important;
    left:50%!important;
    top:50%!important;
    bottom:auto!important;
    width:78px!important;
    height:auto!important;
    margin:0!important;
    transform:translate(-50%,-50%)!important;
  }
  .footer-logo img{
    display:block!important;
    width:78px!important;
    height:auto!important;
    max-width:none!important;
    margin:0!important;
    transform:none!important;
    filter:drop-shadow(0 2px 5px rgba(0,0,0,.72))!important;
  }
  .footer-logo:hover img{transform:none!important}
  .footer-right{
    position:absolute!important;
    right:6px!important;
    top:50%!important;
    bottom:auto!important;
    transform:translateY(-50%)!important;
    margin:0!important;
    gap:4px!important;
  }
  .socials{gap:4px!important}
  .social{width:21px!important;height:21px!important;border-radius:7px!important}
  .social .i{width:12px!important;height:12px!important}
  .signature{display:none!important}
}
@media(max-width:420px){
  .footer-logo,.footer-logo img{width:70px!important}
}


/* ===== Uppsala 1.0.1: unified colored glass cards ===== */
/* Small content surfaces on every subpage now use the same colored glass language as the homepage feature pills. */
:where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box){
  --surface-accent-color:#66bdff;
  --surface-accent:rgba(70,170,255,.46);
  position:relative;
  overflow:hidden;
  isolation:isolate;
  border-color:color-mix(in srgb,var(--surface-accent-color) 26%,transparent);
  background:
    linear-gradient(115deg,rgba(5,12,19,.46),rgba(8,15,22,.29));
  backdrop-filter:blur(10px) saturate(108%);
  -webkit-backdrop-filter:blur(10px) saturate(108%);
  box-shadow:
    0 12px 28px rgba(0,0,0,.23),
    inset 0 1px 0 rgba(255,255,255,.035);
  transition:
    transform .20s var(--ease-out, ease),
    border-color .22s ease,
    box-shadow .24s ease,
    background .24s ease;
}
:where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box)::after{
  content:"";
  position:absolute;
  z-index:-1;
  width:155px;
  height:115px;
  right:-42px;
  bottom:-54px;
  border-radius:50%;
  background:radial-gradient(circle,var(--surface-accent) 0%,transparent 70%);
  opacity:.62;
  pointer-events:none;
  transition:opacity .22s ease,transform .28s var(--ease-out, ease);
}
:where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box)::before{
  content:"";
  position:absolute;
  z-index:-1;
  inset:0;
  border-radius:inherit;
  background:linear-gradient(115deg,color-mix(in srgb,var(--surface-accent-color) 5%,transparent),transparent 40%);
  pointer-events:none;
  opacity:.70;
}
:where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box)>*{
  position:relative;
  z-index:1;
}

/* Same palette/order as the homepage feature pills. */
.cards>.card:nth-child(9n+1){--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.50)}
.cards>.card:nth-child(9n+2){--surface-accent-color:#6eee7c;--surface-accent:rgba(77,229,109,.46)}
.cards>.card:nth-child(9n+3){--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.50)}
.cards>.card:nth-child(9n+4){--surface-accent-color:#ff7a35;--surface-accent:rgba(255,98,36,.48)}
.cards>.card:nth-child(9n+5){--surface-accent-color:#80c9ff;--surface-accent:rgba(75,168,255,.42)}
.cards>.card:nth-child(9n+6){--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.46)}
.cards>.card:nth-child(9n+7){--surface-accent-color:#f1c759;--surface-accent:rgba(239,196,72,.45)}
.cards>.card:nth-child(9n+8){--surface-accent-color:#6eee7c;--surface-accent:rgba(77,229,109,.46)}
.cards>.card:nth-child(9n+9){--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.50)}

.steps>.step:nth-child(3n+1){--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.48)}
.steps>.step:nth-child(3n+2){--surface-accent-color:#6eee7c;--surface-accent:rgba(77,229,109,.44)}
.steps>.step:nth-child(3n+3){--surface-accent-color:#ff7a35;--surface-accent:rgba(255,98,36,.44)}

.columns>.mini-panel:nth-child(4n+1){--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.46)}
.columns>.mini-panel:nth-child(4n+2){--surface-accent-color:#6eee7c;--surface-accent:rgba(77,229,109,.43)}
.columns>.mini-panel:nth-child(4n+3){--surface-accent-color:#ff7a35;--surface-accent:rgba(255,98,36,.43)}
.columns>.mini-panel:nth-child(4n+4){--surface-accent-color:#f1c759;--surface-accent:rgba(239,196,72,.41)}

.faq-list>.faq-item:nth-child(4n+1),.news-list>.news-item:nth-child(4n+1){--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.43)}
.faq-list>.faq-item:nth-child(4n+2),.news-list>.news-item:nth-child(4n+2){--surface-accent-color:#6eee7c;--surface-accent:rgba(77,229,109,.40)}
.faq-list>.faq-item:nth-child(4n+3),.news-list>.news-item:nth-child(4n+3){--surface-accent-color:#ff7a35;--surface-accent:rgba(255,98,36,.40)}
.faq-list>.faq-item:nth-child(4n+4),.news-list>.news-item:nth-child(4n+4){--surface-accent-color:#f1c759;--surface-accent:rgba(239,196,72,.39)}

.sidebar-card{--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.40)}
.download-box{--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.46)}
.download-box.manual-box{--surface-accent-color:#ff9c54;--surface-accent:rgba(255,106,39,.44)}

/* Let the accent subtly tint titles/labels without turning the page neon. */
.card h3,.step h3,.mini-panel h3,.news-item h2,.sidebar-card h3{
  text-shadow:0 0 16px color-mix(in srgb,var(--surface-accent-color) 18%,transparent);
}
.faq-question::after{color:var(--surface-accent-color)}

@media(hover:hover) and (pointer:fine){
  :where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box):hover{
    transform:translateY(-2px);
    border-color:color-mix(in srgb,var(--surface-accent-color) 46%,transparent);
    background:linear-gradient(115deg,rgba(5,13,21,.52),rgba(8,16,24,.34));
    box-shadow:
      0 15px 34px rgba(0,0,0,.28),
      0 0 20px color-mix(in srgb,var(--surface-accent-color) 9%,transparent),
      inset 0 1px 0 rgba(255,255,255,.05);
  }
  :where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box):hover::after{
    opacity:.82;
    transform:scale(1.08) translate(-2px,-2px);
  }
}

@media(max-width:820px){
  :where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box)::after{
    width:130px;
    height:96px;
    right:-38px;
    bottom:-46px;
    opacity:.55;
  }
}

@media(prefers-reduced-motion:reduce){
  :where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box),
  :where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box)::after{
    transition:none!important;
  }
}

/* ===== Uppsala 1.1.0: cinematic tiles + richer world palette ===== */
/* The background remains the same artwork, but the page no longer crushes its color under dark overlays. */
body::before{
  inset:-1.2%!important;
  filter:saturate(1.28) contrast(1.08) brightness(1.055)!important;
  transform:scale(1.015)!important;
}
body::after{
  background:
    linear-gradient(90deg,rgba(2,5,8,.56) 0%,rgba(2,5,8,.28) 43%,rgba(2,5,8,.08) 72%,rgba(2,5,8,.21) 100%),
    linear-gradient(180deg,rgba(3,6,9,.18),rgba(3,6,9,.08) 55%,rgba(3,6,9,.30))!important;
}

/* Homepage feature tiles: scenic vignette like the concept render. */
.feature-card{
  isolation:isolate;
  background:linear-gradient(108deg,rgba(4,10,16,.74) 0%,rgba(4,10,16,.58) 48%,rgba(4,10,16,.19) 100%)!important;
  border-color:color-mix(in srgb,var(--accent-color,var(--blue2)) 30%,rgba(180,215,240,.18))!important;
  box-shadow:
    0 13px 29px rgba(0,0,0,.28),
    0 0 18px color-mix(in srgb,var(--accent-color,var(--blue2)) 8%,transparent),
    inset 0 1px 0 rgba(255,255,255,.045)!important;
  transition:transform .22s var(--ease-out,ease),border-color .24s ease,box-shadow .25s ease,filter .25s ease!important;
}
.feature-card::before{
  content:"";
  position:absolute;
  z-index:-2;
  inset:0;
  border-radius:inherit;
  background-image:
    linear-gradient(90deg,rgba(2,7,11,.96) 0%,rgba(2,7,11,.79) 39%,rgba(2,7,11,.20) 77%,rgba(2,7,11,.08) 100%),
    url('/assets/img/uppsala-bg.webp');
  background-repeat:no-repeat;
  background-size:auto,330% auto;
  background-position:center,var(--scene-pos,65% 50%);
  opacity:.72;
  filter:saturate(1.38) contrast(1.10) brightness(1.04);
  pointer-events:none;
}
.feature-card::after{
  z-index:-1!important;
  opacity:.68!important;
}
.feature-card:nth-child(1){--scene-pos:8% 66%}
.feature-card:nth-child(2){--scene-pos:35% 32%}
.feature-card:nth-child(3){--scene-pos:69% 28%}
.feature-card:nth-child(4){--scene-pos:96% 74%}
.feature-card:nth-child(5){--scene-pos:91% 18%}
.feature-card:nth-child(6){--scene-pos:15% 67%}
.feature-card:nth-child(7){--scene-pos:51% 78%}
.feature-card:nth-child(8){--scene-pos:77% 64%}
.feature-card:nth-child(9){--scene-pos:98% 59%}
.feature-card h3,.feature-card p,.feature-card .feature-icon{position:relative;z-index:2}
@media(hover:hover) and (pointer:fine){
  .feature-card:hover{
    transform:translateY(-3px) scale(1.006)!important;
    border-color:color-mix(in srgb,var(--accent-color,var(--blue2)) 54%,transparent)!important;
    box-shadow:
      0 17px 35px rgba(0,0,0,.34),
      0 0 24px color-mix(in srgb,var(--accent-color,var(--blue2)) 15%,transparent),
      inset 0 1px 0 rgba(255,255,255,.07)!important;
  }
  .feature-card:hover::before{opacity:.86;filter:saturate(1.50) contrast(1.11) brightness(1.07)}
}

/* Every compact card on subpages gets the same scenic treatment. */
:where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box){
  background:linear-gradient(108deg,rgba(4,10,16,.72) 0%,rgba(4,10,16,.55) 50%,rgba(4,10,16,.18) 100%)!important;
  border-color:color-mix(in srgb,var(--surface-accent-color,#66bdff) 30%,rgba(180,215,240,.16))!important;
}
:where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box)::before{
  z-index:-2!important;
  inset:0!important;
  border-radius:inherit!important;
  opacity:.67!important;
  background-image:
    linear-gradient(90deg,rgba(2,7,11,.95) 0%,rgba(2,7,11,.77) 42%,rgba(2,7,11,.23) 76%,rgba(2,7,11,.08) 100%),
    url('/assets/img/uppsala-bg.webp')!important;
  background-repeat:no-repeat!important;
  background-size:auto,340% auto!important;
  background-position:center,var(--surface-scene-pos,72% 50%)!important;
  filter:saturate(1.34) contrast(1.08) brightness(1.02)!important;
  pointer-events:none!important;
}
:where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box)::after{
  z-index:-1!important;
  opacity:.72!important;
}

/* Vary the scene so a grid does not look like one repeated texture. */
.cards>.card:nth-child(9n+1){--surface-scene-pos:8% 66%}
.cards>.card:nth-child(9n+2){--surface-scene-pos:37% 30%}
.cards>.card:nth-child(9n+3){--surface-scene-pos:69% 29%}
.cards>.card:nth-child(9n+4){--surface-scene-pos:96% 72%}
.cards>.card:nth-child(9n+5){--surface-scene-pos:91% 18%}
.cards>.card:nth-child(9n+6){--surface-scene-pos:15% 67%}
.cards>.card:nth-child(9n+7){--surface-scene-pos:50% 79%}
.cards>.card:nth-child(9n+8){--surface-scene-pos:76% 62%}
.cards>.card:nth-child(9n+9){--surface-scene-pos:98% 58%}
.steps>.step:nth-child(3n+1){--surface-scene-pos:16% 65%}
.steps>.step:nth-child(3n+2){--surface-scene-pos:73% 31%}
.steps>.step:nth-child(3n+3){--surface-scene-pos:95% 70%}
.columns>.mini-panel:nth-child(odd){--surface-scene-pos:35% 33%}
.columns>.mini-panel:nth-child(even){--surface-scene-pos:88% 60%}
.faq-list>.faq-item:nth-child(4n+1),.news-list>.news-item:nth-child(4n+1){--surface-scene-pos:8% 66%}
.faq-list>.faq-item:nth-child(4n+2),.news-list>.news-item:nth-child(4n+2){--surface-scene-pos:69% 29%}
.faq-list>.faq-item:nth-child(4n+3),.news-list>.news-item:nth-child(4n+3){--surface-scene-pos:96% 72%}
.faq-list>.faq-item:nth-child(4n+4),.news-list>.news-item:nth-child(4n+4){--surface-scene-pos:50% 79%}
.sidebar-card{--surface-scene-pos:88% 28%}
.download-box{--surface-scene-pos:15% 67%}
.download-box.manual-box{--surface-scene-pos:96% 72%}

/* More visible themed highlights, while preserving text contrast. */
:where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box)::after{
  width:190px!important;
  height:135px!important;
  right:-42px!important;
  bottom:-56px!important;
  background:radial-gradient(circle,var(--surface-accent) 0%,transparent 72%)!important;
}
@media(hover:hover) and (pointer:fine){
  :where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box):hover{
    transform:translateY(-3px)!important;
    border-color:color-mix(in srgb,var(--surface-accent-color) 52%,transparent)!important;
    box-shadow:
      0 17px 35px rgba(0,0,0,.31),
      0 0 24px color-mix(in srgb,var(--surface-accent-color) 13%,transparent),
      inset 0 1px 0 rgba(255,255,255,.065)!important;
  }
  :where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box):hover::before{
    opacity:.79!important;
    filter:saturate(1.47) contrast(1.10) brightness(1.06)!important;
  }
}

/* Keep the richer color on mobile, but reduce image noise behind short copy. */
@media(max-width:820px){
  body::before{filter:saturate(1.22) contrast(1.07) brightness(1.03)!important}
  body::after{
    background:
      linear-gradient(90deg,rgba(2,5,8,.47),rgba(2,5,8,.20) 72%,rgba(2,5,8,.29)),
      linear-gradient(180deg,rgba(3,6,9,.15),rgba(3,6,9,.07) 55%,rgba(3,6,9,.28))!important;
  }
  .feature-card::before,
  :where(.card,.step,.mini-panel,.faq-item,.news-item,.sidebar-card,.download-box)::before{
    opacity:.58!important;
    background-size:auto,410% auto!important;
  }
}

/* ===== Uppsala 2.0.0: SEO/content architecture ===== */
.desktop-nav{gap:25px}
.desktop-nav a{font-size:.76rem}
.rich-copy p{margin:.55em 0;line-height:1.72}
.rich-copy p:first-child{margin-top:0}.rich-copy p:last-child{margin-bottom:0}
.rich-copy ul,.rich-copy ol{padding-left:1.4rem;line-height:1.65;color:#cbd2d8}
.rich-copy li+li{margin-top:.32rem}
.hero-copy.rich-copy{max-width:830px;margin-bottom:18px}
.hero-copy.rich-copy p{font:inherit;color:inherit;line-height:1.55;margin:.35em 0}
.hero-actions{align-items:center}
.status-pill{min-height:42px;min-width:150px}
.status-pill:first-child{min-width:245px}
.status-pill:nth-child(2){min-width:170px}
.launcher-float-manual.is-disabled{opacity:.72;cursor:default}

.breadcrumbs{margin-bottom:14px;font-size:.74rem;color:#aab7c2}
.breadcrumbs ol{display:flex;align-items:center;gap:7px;flex-wrap:wrap;list-style:none;margin:0;padding:0}
.breadcrumbs li{display:flex;align-items:center;gap:7px}
.breadcrumbs li+li::before{content:"/";color:rgba(190,209,223,.4)}
.breadcrumbs a{color:#9ed3ff}.breadcrumbs a:hover{color:#d8efff}
.breadcrumbs [aria-current="page"]{color:#d2d8dd}

.content-page{padding-top:22px}
.content-page>.container{display:grid;gap:18px}
.content-meta{display:flex;gap:18px;flex-wrap:wrap;color:#9faeba;font-size:.76rem;margin:0 4px 4px}
.content-prose{max-width:1120px;margin:0 auto;width:100%;padding:32px 38px}
.content-section{padding:25px 0;border-bottom:1px solid rgba(160,198,224,.11)}
.content-section:first-child{padding-top:0}.content-section:last-child{padding-bottom:0;border-bottom:0}
.content-section h2{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:clamp(1.45rem,2.8vw,2.15rem);margin:0 0 10px}
.content-section .rich-copy{max-width:900px;color:#c8d0d7}
.content-section .rich-copy p{color:#c8d0d7}
.text-link{display:inline-flex;align-items:center;gap:6px;color:#9ed6ff;font-weight:600;text-decoration:none;text-underline-offset:3px}
.text-link:hover{color:#fff;text-decoration:underline}
.secondary-link{margin-left:14px;color:#ffb37a}
.section-more{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin:24px 0 0}
.final-cta{text-align:center;padding:24px}

.content-hub-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.hub-card{display:block;min-height:220px;padding:25px;position:relative}
.hub-card h2{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:1.35rem;margin:8px 0}
.hub-card p{color:#c7d0d7;line-height:1.6}
.hub-card-icon{width:48px;height:48px;display:grid;place-items:center;color:var(--surface-accent-color,#80c9ff);font-size:1.7rem;filter:drop-shadow(0 0 12px color-mix(in srgb,var(--surface-accent-color,#80c9ff) 40%,transparent))}
.hub-card.a-blue{--surface-accent-color:#66bdff;--surface-accent:rgba(70,170,255,.50)}
.hub-card.a-green{--surface-accent-color:#6eee7c;--surface-accent:rgba(77,229,109,.46)}
.hub-card.a-orange{--surface-accent-color:#ff7a35;--surface-accent:rgba(255,98,36,.48)}
.hub-card.a-gold{--surface-accent-color:#f1c759;--surface-accent:rgba(239,196,72,.45)}

.home-intro{padding-top:24px}
.home-intro .mini-panel,.final-home .glass-panel{background:linear-gradient(130deg,rgba(5,12,19,.61),rgba(8,15,22,.35))}
.home-mechanic-cards{grid-template-columns:repeat(3,minmax(0,1fr))}
.home-mechanic-cards .card{min-height:270px;padding:25px}
.home-mechanic-cards .card h3{font-size:1.24rem}
.home-mechanic-cards .rich-copy{font-size:.89rem;color:#c6cfd6}
.home-mechanic-cards .hub-card-icon{margin-bottom:7px}
.home-start-steps{grid-template-columns:repeat(5,minmax(0,1fr))}
.home-start-steps .step{min-height:170px}
.home-faq{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.final-home .section-head{align-items:start}.final-home .section-head>.rich-copy{max-width:720px}
.guide-category+ .guide-category{margin-top:34px}
.guide-category>.eyebrow{display:block;margin:0 0 12px}
.guide-category .card h2{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:1.25rem;margin:5px 0 8px}
.content-date{font-size:.72rem!important;color:#91a0ac!important}
.guide-steps{grid-template-columns:repeat(2,minmax(0,1fr))}
.guide-steps .step{min-height:0}
.guide-steps .step h2{font-family:var(--font-display);font-weight:var(--font-display-weight);font-size:1.35rem}
.download-box ul{margin:12px 0 0;padding-left:1.2rem;color:#cbd3da;line-height:1.6}
.download-unavailable{display:inline-flex;padding:12px 16px;border-radius:12px;border:1px solid rgba(255,130,75,.33);color:#ffc29a;background:rgba(65,22,10,.25)}
.download-help{grid-template-columns:1fr 1fr}
.footer-legal{display:flex;gap:10px;align-items:center;font-size:.55rem;color:#9ca9b3;white-space:nowrap}
.footer-legal a:hover{color:#dcecf7}

@media(max-width:1280px){
  .desktop-nav{gap:17px}.desktop-nav a{font-size:.70rem}
  .content-hub-cards,.home-mechanic-cards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .home-start-steps{grid-template-columns:repeat(3,minmax(0,1fr))}
  .footer-legal{display:none}
}
@media(max-width:820px){
  .content-prose{padding:24px 22px}
  .content-hub-cards,.home-mechanic-cards,.guide-steps,.download-help{grid-template-columns:1fr}
  .home-start-steps{grid-template-columns:1fr 1fr}
  .home-faq{grid-template-columns:1fr}
  .hub-card,.home-mechanic-cards .card{min-height:0}
  .status-pill,.status-pill:first-child,.status-pill:nth-child(2){min-width:0}
  .footer-legal{display:none}
}
@media(max-width:560px){
  .hero-actions{grid-template-columns:1fr 1fr}
  .hero-actions .btn{font-size:.78rem;padding:0 13px}
  .hero-actions .btn:first-child{grid-column:1/-1}
  .home-start-steps{grid-template-columns:1fr}
  .content-prose{padding:20px 16px}
  .content-section{padding:20px 0}
  .content-meta{font-size:.68rem;gap:8px 14px}
}

/* ===== Uppsala 2.1.0 UI/content correction ===== */
/* CTA rows are buttons only: no oversized glass container around a smaller pill. */
.page-action-row{
  display:flex;
  justify-content:center;
  align-items:center;
  flex-wrap:wrap;
  gap:12px;
  margin:28px 0 4px;
}
.guide-intro{
  margin-bottom:26px;
  padding:26px 30px;
  border-color:rgba(82,228,118,.20);
  background:linear-gradient(120deg,rgba(5,17,20,.54),rgba(6,12,18,.42));
}
.guide-intro p{
  max-width:900px;
  margin:10px 0 0;
  color:#d0d8de;
  line-height:1.75;
  font-size:1rem;
}
.btn-discover,.btn-green{
  color:#effff2;
  border-color:rgba(82,228,118,.66);
  background:linear-gradient(180deg,rgba(15,61,31,.62),rgba(6,27,15,.58));
  box-shadow:0 0 18px rgba(82,228,118,.18),inset 0 1px 0 rgba(180,255,196,.10),inset 0 0 15px rgba(82,228,118,.07);
}
.btn-discover:hover,.btn-green:hover{
  border-color:rgba(102,245,136,.90);
  box-shadow:0 0 23px rgba(82,228,118,.28),inset 0 1px 0 rgba(210,255,220,.14);
}

/* Restore the thin production footer: left copyright, centered Uppsala, socials/signature right. */
.footer-legal{display:none!important}
.site-footer{
  height:var(--footer)!important;
  min-height:0!important;
  overflow:visible!important;
}
.site-footer .footer-inner{
  position:relative!important;
  display:block!important;
  width:100%!important;
  max-width:none!important;
  height:100%!important;
  margin:0!important;
  padding:0!important;
  overflow:visible!important;
}
@media(min-width:821px){
  .footer-copy{
    position:absolute!important;
    left:8px!important;
    top:50%!important;
    transform:translateY(-34%)!important;
    margin:0!important;
    line-height:1!important;
    font-size:.70rem!important;
    white-space:nowrap!important;
  }
  .footer-right{
    position:absolute!important;
    right:8px!important;
    top:50%!important;
    transform:translateY(-32%)!important;
    margin:0!important;
    line-height:1!important;
  }
  .footer-logo{
    position:absolute!important;
    left:50%!important;
    bottom:-2px!important;
    top:auto!important;
    width:228px!important;
    margin:0!important;
    transform:translateX(-50%)!important;
    overflow:visible!important;
  }
  .footer-logo img{
    width:228px!important;
    max-width:none!important;
    transform:translateY(-4px)!important;
  }
  .footer-logo:hover img{transform:translateY(-4px) scale(1.012)!important}
}
@media(max-width:820px){
  :root{--footer:32px}
  body{padding-bottom:40px!important}
  .site-footer{overflow:hidden!important}
  .site-footer .footer-inner{overflow:hidden!important}
  .footer-copy{display:none!important}
  .footer-logo{
    position:absolute!important;
    left:50%!important;
    top:50%!important;
    bottom:auto!important;
    width:78px!important;
    margin:0!important;
    transform:translate(-50%,-50%)!important;
  }
  .footer-logo img{
    display:block!important;
    width:78px!important;
    height:auto!important;
    max-width:none!important;
    margin:0!important;
    transform:none!important;
  }
  .footer-right{
    position:absolute!important;
    right:6px!important;
    top:50%!important;
    transform:translateY(-50%)!important;
    margin:0!important;
    gap:4px!important;
  }
  .signature{display:none!important}
}
@media(max-width:420px){.footer-logo,.footer-logo img{width:70px!important}}
.utility-links{
  display:flex;
  justify-content:center;
  align-items:center;
  gap:18px;
  flex-wrap:wrap;
  margin:34px auto 12px;
  padding:0 20px;
  font-size:.66rem;
  letter-spacing:.04em;
  color:#8494a1;
}
.utility-links a{transition:.2s}
.utility-links a:hover{color:#cbe8fa}
@media(max-width:560px){.utility-links{gap:11px;font-size:.60rem;margin-top:26px}}

/* ===== Uppsala 2.1.1: footer wordmark + FAQ surface cleanup ===== */
@media(min-width:821px){
  .footer-logo{
    left:50%!important;
    bottom:0!important;
    top:auto!important;
    width:160px!important;
    height:auto!important;
    transform:translateX(-50%)!important;
    overflow:visible!important;
  }
  .footer-logo img{
    display:block!important;
    width:160px!important;
    height:auto!important;
    max-width:none!important;
    aspect-ratio:958 / 340!important;
    object-fit:contain!important;
    transform:translateY(-3px)!important;
    filter:drop-shadow(0 -5px 12px rgba(0,0,0,.68))!important;
  }
  .footer-logo:hover img{transform:translateY(-3px) scale(1.01)!important}
}
.faq-list>.faq-item{
  --faq-tint:75,168,255;
  background:linear-gradient(105deg,rgba(var(--faq-tint),.075),rgba(5,10,15,.34) 48%,rgba(var(--faq-tint),.035))!important;
  border-color:rgba(var(--faq-tint),.20)!important;
  box-shadow:0 12px 28px rgba(0,0,0,.20),inset 0 1px 0 rgba(255,255,255,.035)!important;
  backdrop-filter:blur(9px) saturate(108%)!important;
}
.faq-list>.faq-item:nth-child(4n+2){--faq-tint:82,228,118}
.faq-list>.faq-item:nth-child(4n+3){--faq-tint:231,197,110}
.faq-list>.faq-item:nth-child(4n+4){--faq-tint:255,106,39}
.faq-list>.faq-item::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  border-radius:inherit!important;
  opacity:1!important;
  background-image:radial-gradient(circle at 14% 20%,rgba(var(--faq-tint),.075),transparent 36%),linear-gradient(180deg,rgba(255,255,255,.018),transparent 50%)!important;
  background-size:auto!important;
  background-position:center!important;
  filter:none!important;
  pointer-events:none!important;
}
.faq-list>.faq-item::after{
  width:150px!important;height:110px!important;right:-42px!important;bottom:-54px!important;opacity:.22!important;
  background:radial-gradient(circle,rgba(var(--faq-tint),.20),transparent 72%)!important;
}
@media(hover:hover) and (pointer:fine){
  .faq-list>.faq-item:hover{
    border-color:rgba(var(--faq-tint),.34)!important;
    box-shadow:0 15px 31px rgba(0,0,0,.25),0 0 18px rgba(var(--faq-tint),.07),inset 0 1px 0 rgba(255,255,255,.045)!important;
  }
  .faq-list>.faq-item:hover::before{opacity:1!important;filter:none!important}
}

/* 2.1.2 homepage story-card scene tuning.
   Only the four cards shown at the top of the homepage are overridden here. */
.home-intro .mini-panel:nth-child(1){--surface-scene-pos:35% 33%} /* keep: castle / warm valley */
.home-intro .mini-panel:nth-child(2){--surface-scene-pos:91% 18%} /* raven-side crop */
.home-intro + .glass-section .mini-panel:nth-child(1){--surface-scene-pos:8% 66%} /* ship entering from the left */
.home-intro + .glass-section .mini-panel:nth-child(2){--surface-scene-pos:88% 60%} /* keep: fire / rune side */
