/* ============================================================================
   Stilen är skriven i tio block och ska förbli tio block. Varje regel hör
   hemma i exakt ett av dem. Blir en sida lite fel: laga i sitt block, lägg
   inte ett undantag längst ned. Det är så en stilmall dör.

   1 Grund och tokens      6 Hjälten
   2 Typografi             7 Komponenter
   3 Layout och rytm       8 Formulär
   4 Navigation            9 Sidfot
   5 Knappar och länkar   10 Rörelse och responsivt

   RIKTNINGEN: sajten går mellan två rum, inte ett. Natten bär pjäserna —
   fotona är mörka och metallen är det enda som lyser i dem. Pappret bär
   orden. En sida som ligger i ett enda ljust register är platt oavsett hur
   fina marginalerna är, och det var felet i förra omgången.

   Tre regler som håller ihop det:
     · Två textregister, aldrig ett mellanregister. Antingen är något stort
       eller så är det litet. Fyra närliggande storlekar = broschyr.
     · Bilder ligger inte i rutor lika stora som varandra. Antingen går de ut
       till kanten, eller så är de olika stora.
     · Rytmen ska vara ojämn. --sek-tyst, --sek och --sek-tat finns för att
       användas växelvis, inte för att en av dem ska vinna.
   ========================================================================= */

/* ---------------------------------------------------------- 1 Grund */
*,*::before,*::after{box-sizing:border-box}
/* clip, inte hidden: klipper det där 100vw-utfallet sticker ut med
   rullningslistens bredd, utan att göra html till en scrollcontainer. */
html{-webkit-text-size-adjust:100%;overflow-x:clip}
body,h1,h2,h3,h4,p,figure,dl,dd,ol,ul{margin:0}
ol,ul{list-style:none;padding:0}
img,svg,video{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
:where(a){color:inherit}

:root{
  /* KALL PLATINA, inte varm gräddvit. Pappret är kylt från kräm mot ett svalt
     silver: nästan neutralt i högdagern, en gnutta blågrått i skuggan. Inte
     RGB-blått — sval och dyr, som en galleriväg hos Celine eller The Row.
     Filip: en kall gradient som ramar in hela känslan. */
  --papper:#EEF0F1;
  --papper-2:#E5E7EA;
  /* Ljuskällan i pappret. Fyra steg, inte två — se LJUSMODELLEN nedan. */
  --papper-hi:#FCFCFC;
  --papper-h2:#F4F5F5;
  /* Pappret får ett synligt fall i botten. Ljuset ligger fast på kroppen, och
     med en djupare låg ton läser ytan som svalt trycksakspapper med struktur i
     stället för som skärmvitt. Botten går en aning mot blått, inte mot brunt. */
  --papper-l2:#DEE2E7;
  --papper-lo:#D1D6DE;
  --yta:#FFFFFF;
  /* Hårstrecken kylda till samma silver: en varm sandlinje på kallt papper
     läser gult. Fortfarande långt från svart — trycksaksspråk vill ha linjer
     man ser. */
  --linje:#CFD2D4;
  --linje-svag:#E1E3E4;

  /* ATMOSFÄREN. Den kalla, levande inramningen ligger som två fasta skikt över
     hela sajten (se .atmos och .rama längre ner), inte per sektion. Färgerna
     bor här så båda rummen och båda intensiteterna delar samma kanal.
       --kyla-ljus  : det svala ljuset som driver över pappret
       --kyla-djup  : den kalla skuggan som ramar in kanterna, blågrå kol
     Alfat sätts där skikten byggs, inte här. */
  --kyla-ljus:216,225,235;
  --kyla-djup:24,33,48;

  /* Natten. Djupare än fotona så att en bild aldrig blir det mörkaste på
     sidan — då ser den ut som ett hål i stället för som ett föremål.
     Disciplinerad: djupare hörn, kallare botten, tätare glimt än den bruna
     dis som låg här förut och läste som en kaffefläck. */
  --natt:#080706;
  --natt-2:#131110;
  --natt-linje:#26221B;

  /* LJUSMODELLEN.
     ------------------------------------------------------------------------
     Tre saker skiljer ett ljus från en gradient, och de första två försöken
     hade ingen av dem.

     1. SPANN. Första försöket lade djupet mellan --natt och --natt-2, alltså
        elva steg, och mätte platt där innehållet står: 13,1 vid vänsterkanten
        och 13,2 vid högerkanten. Ett djup som inte går att se är inget djup.
        Spannet här är 36 ner till 6, alltså trettio steg.

     2. KURVA. Ljus faller av med kvadraten på avståndet: snabbt nära källan
        och sedan långsamt i en lång svans. En radial med två stopp faller av
        linjärt, och linjär avtoning är precis vad ögat läser som "målad
        gradient" i stället för som ljus. Därför fyra steg per fält, tätt
        packade nära källan och glest ut mot botten.

     3. FÄRGTEMPERATUR. Ljuset är varmt och skuggan är kall. Det är den enda
        av de tre som gör att ytan får volym i stället för bara riktning —
        en ren gråskala från ljust till mörkt läser som dimma. Varmt går mot
        brons, botten går en aning mot blått. Skillnaden är några enheter och
        ska aldrig gå att peka ut som färg.

     Kornet gör dessutom nytta här utöver ytan: fyra stopp över åttahundra
     bildpunkter av nästan svart bandar, och bruset ditherar bort ränderna. */
  --natt-hi:#20201C;   /* svalt metallglimt, kylt för variant B */
  --natt-h2:#161209;
  --natt-l2:#0A0807;
  --natt-lo:#04050A;   /* kall botten, tydligare mot blått */

  /* Aurans kulör, som RGB-kanaler eftersom den ska kunna få olika alfa på
     olika ställen. Huset lyser i brons. Droppets rum pekar om den till kall
     vitmetall — där finns inget guld, och en varm bloom hade lovat fel rum. */
  --aura-rgb:150,142,120;

  /* Sidhuvudet i klartext: det ska vara IDENTISKT på varje sida, och
     droppsidan pekar om --papper till formolja. */
  --ljus-nav:radial-gradient(134% 112% at 10% -5%,
    #FCFCFC 0%,#F4F5F5 22%,#F1F2F1 44%,#E7E9EB 70%,#DDE0E4 100%);

  /* Kanten. En mörkare remsa i över- och underkant gör att ett mörkt fält
     verkar ligga BAKOM pappret i stället för bredvid det. Det är den enda
     djupeffekt som får finnas vid en skarv — en skugga utåt hade gjort
     sektionen till ett kort, och ett kort är en annons. */
  --kant-topp:linear-gradient(180deg,rgba(0,0,0,.52) 0,rgba(0,0,0,.14) 46px,
    rgba(0,0,0,0) 108px);
  --kant-bott:linear-gradient(0deg,rgba(0,0,0,.44) 0,rgba(0,0,0,.1) 34px,
    rgba(0,0,0,0) 82px);

  --black:#16140F;
  --ink:#1E1B16;
  --ink-2:#5A5348;
  /* MIKROINKEN, och den är MÖRKARE än löptextens ink-2 med flit.
     Den låg på #8B8377 och mätte 2,29–2,90 mot pappret där måtten, ledtiderna
     och formulärets noter står — alltså under halva AA-kravet, på just de rader
     som bär uppgifterna. Pappret har ett fall och dess mörkaste parti mätte
     #C4C9D0 där innehåll faktiskt ligger; en tredje LJUSARE ton kan inte bära
     text mot den ytan, hur gärna man än vill ha tre steg.
     Att den blev mörkare än ink-2 är inte en tabbe utan optisk kompensation:
     tio bildpunkter versaler på .22em spärrning läser LJUSARE än sexton
     bildpunkters löptext i samma färg. Ska den vara lika tyst måste den
     sättas mörkare. Det tysta kommer nu ur grad, versalgemener och spärrning
     — inte ur att texten är svag. Uppmätt 4,79–6,97 mot pappret. */
  --ink-3:#575044;

  /* Text på natt. Egna tokens — att låta --ink-2 gälla på svart botten var
     precis den buggen som gjorde produktraderna och specvärdena osynliga. */
  --ljus:#F5F2EB;
  --ljus-2:#A79E8E;
  --ljus-3:#7B7365;

  /* En accent i metall, i två styrkor. Brons på papper, guld på natt —
     samma brons mot svart läser som smuts, samma guld mot papper som klotter.
     --brons är YTA: fokusring, understryk, knappens hovfyllning, hovfärg på en
     rubrik i 68 px. Där bär den.
     --brons-hi är brons som TEXT på papper, alltså etiketterna på elva
     bildpunkter. Samma kulör i samma grad mätte 3,09–3,94 mot pappret, och det
     är inte en nyansfråga: en versaletikett är det som säger vad raden är.
     Djupare umbra i stället, uppmätt 4,81–5,21. Metallen är kvar, ljuset är
     borta — vilket är precis vad brons gör i skugga. */
  --brons:#8A6A3C;
  --brons-hi:#674E2C;
  --guld:#C9A55F;
  --pa-brons:#FBFAF7;

  /* Newsreader är husets display- och registersnitt. Ett textsnitt buret stort,
     inte en didone: det bär sina egna streck på skärm och sätter samma text i
     104 px display och 20 px register. Georgia är fallbacken med rätt proportion.
     Optisk storlek är pinnad i snittet; vikten är en axel, så 400 och 700 kommer
     ur samma fil utan faux-fetstil. */
  --serif:'Newsreader',Georgia,'Times New Roman',serif;

  /* Monon. Allt som är en AVLÄSNING sätts som en avläsning: mått, antal,
     charge, datum, veckor. Det är den enskilt största anledningen till att
     droppsidan läser som trovärdig i stället för som marknadsföring, och
     huset ska ha samma grammatik. Den används aldrig till brödtext. */
  --mono:'Data',ui-monospace,'JetBrains Mono','SF Mono',monospace;

  --wrap:1320px;
  --smal:700px;
  /* SATSYTANS SIDOLUFT, som ETT tal. Låg tidigare på fem ställen: .wrap,
     .wrap.smal, pjäshjältens textspalt och den delade hjältens innerfall, med
     44 px på dator och 30 på telefon. Följden var att telefonens luft inte
     gick att ändra på ett ställe, och att den var 15 px per sida — 3,8 % av en
     390 px skärm. Det är en app-siffra. Ett hus vars sidor är trycksaker ska
     ha en marginal man ser, och telefonen är den skärm där en text som går
     ända ut i kanten läser billigast. Talet är hela luften, alltså hälften per
     sida. Mobilvärdet sätts i mediefrågan längst ned. */
  --kant:44px;

  /* SIDHUVUDETS HÖJD, som ett tal och inte som en gissning. Menyn är sticky
     och ligger alltså I flödet: en hjälte på 100svh börjar på 77 och slutar
     på 977 vid ett fönster på 900. Uppmätt låg startsidans enda knapp med
     underkant på 914 vid 900, 862 vid 844 och 784 vid 760 — alltid utanför.
     Ett hus som säljer mot förfrågan får inte ha sin enda dörr under vecket.
     Måttet är nav-in (76) plus hårstrecket (1); ändras det ena ändras det
     här. Allt som ska mäta "en skärm" räknar mot den här, aldrig mot svh
     rakt av. */
  --navh:77px;

  /* Samtyckesremsans höjd, satt av samtycke.js medan remsan står kvar och
     nollad så fort den är besvarad. Den är ett fast lager över samma skärm som
     hjälten mäter sig mot, alltså måste hjälten känna till den — annars är
     räkningen rätt och knappen ändå bakom en remsa. Grundvärdet är noll: utan
     skript finns ingen remsa och ingenting ska dras av. */
  --samtycke-h:0px;

  /* Rytmen. Tre mått, avsedda att växlas. En sida som använder --sek hela
     vägen ner kommer i samma takt som en katalog. */
  --sek:clamp(88px,10vw,152px);
  --sek-tyst:clamp(120px,15vw,230px);
  --sek-tat:clamp(52px,5.5vw,84px);

  --kurva:cubic-bezier(.16,.84,.36,1);

  /* Märkets form som mask. Samma monogram logga.py räknar fram (img/26b.svg,
     viewBox 150.5×75). Märkeshjälten skär en metallyta och härdningsljuset till
     just den här konturen, så ljuset ligger PÅ märket och inte i en ruta runt
     det. En fil, inte inbäddad markering: masken behöver bara formen, och samma
     fil bär redan tryckoriginalet. */
  --m-mask:url("/img/26b.svg");

  color-scheme:light;
}

/* LJUSRECEPTEN.
   ==========================================================================
   Deklarerade på BÅDA rummen i samma regel, och det är inte en dubblering
   utan hela poängen. En egenskap som innehåller var() löser ut sina
   hänvisningar när den DEKLARERAS, inte när den används, och ärver sedan ner
   som färdig text. Recepten låg först bara på :root, och då bar droppsidan
   med sig husets bronsljus i stället för sitt eget betongljus — mätt +14,8 i
   rödöverskott där det skulle ha varit kallt. En regel, två element, varsin
   upplösning mot sina egna tokens.

   Auran är närfältet: en tät bloom precis där rubriken står, ovanpå den långa
   avtoningen. Utan den har fältet bara en riktning; med den har det en källa.
   Den tonar ut mot samma kulör med noll i alfa och inte mot transparent, för
   transparent är svart i vissa motorer och ger en grå ring runt bloomen. */
:root,.sida-dropp{
  --ljus-natt:radial-gradient(142% 120% at 6% -8%,
    var(--natt-hi) 0%,var(--natt-h2) 17%,var(--natt) 40%,
    var(--natt-l2) 66%,var(--natt-lo) 100%);
  /* Glimten: mindre yta, lägre alfa. En källa, inte en dis. */
  --aura-natt:radial-gradient(38% 42% at 11% 15%,
    rgba(var(--aura-rgb),.095) 0%,rgba(var(--aura-rgb),.032) 46%,
    rgba(var(--aura-rgb),0) 72%);
  --ljus-papper:radial-gradient(138% 116% at 8% -6%,
    var(--papper-hi) 0%,var(--papper-h2) 20%,var(--papper) 42%,
    var(--papper-l2) 68%,var(--papper-lo) 100%);
}

body{
  /* Pappret är också en yta, inte en färgruta. Ljuset ligger på KROPPEN och
     inte på varje sektion, av två skäl: två ljusa sektioner i rad hade fått
     var sin gradient och mötts i en synlig vågrät remsa, och ett ljus som
     följer med skärmen (fixed) läser som en lampa över bordet i stället för
     som en tonad bild. Spannet är litet — tolv steg på ett papper som ligger
     på 250 — eftersom ljusa ytor visar bandning långt före mörka. */
  background:var(--ljus-papper) fixed;
  color:var(--ink);
  font-family:'Familjen Grotesk',system-ui,-apple-system,sans-serif;
  font-size:17px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  /* clip, INTE hidden. overflow-x:hidden gör body till en rullningskontainer,
     och då slutar position:sticky fungera för allt inuti den — sidhuvudet
     rullade bort helt i stället för att ligga kvar. clip klipper utfallet utan
     att skapa någon kontainer. Samma skäl som står vid html längst upp. */
  overflow-x:clip;
}

/* ------------------------------------------------ Atmosfären (kall inramning)
   Filip bad om en KALL gradient som LEVER och RAMAR IN hela känslan på sidan,
   inte en platt papperston. Svaret är två fasta skikt som ligger mot skärmen
   och sveper över allt innehåll när man rullar. Samma ljus över hela sajten,
   inte en gradient per sektion. Det är just förankringen mot skärmen som gör
   att skikten binder ihop papper- och natt-sektionerna till EN stämning.

   .atmos ligger BAKOM innehållet (z-index -1: över kroppens papper, under
   sektionerna). Där pappret är genomskinligt driver en sval ljuspöl långsamt
   över ytan. Rörelsen är det som gör att pappret aldrig känns som en fryst
   fyllning.

   .rama ligger ÖVER innehållet (z-index 100, under sidhuvudet på 120). Det är
   den kalla vinjetten som ramar in skärmens kanter. Den MÖRKAR bara, aldrig
   ljusar, och bara i hörnen. Texten står i mitten och rörs aldrig.

   Båda står färdiga utan skript: pölen och vinjetten har ett viloläge som
   håller stilla och snyggt. Skriptet lägger bara till driften, och
   prefers-reduced-motion får viloläget. */
.atmos,.rama{position:fixed;inset:0;pointer-events:none;overflow:hidden;
  contain:layout paint size}
.atmos{z-index:-1}
.rama{z-index:100}

/* Den svala ljuspölen. Större än skärmen så kanten aldrig kan synas medan
   skriptet drar den. Viloläget uppe till vänster, samma hörn som husets
   ljuskälla. transform, inte bakgrundsbyte: ett kompositskikt ritar aldrig om. */
.atmos-ljus{
  position:absolute;width:155vmax;height:155vmax;left:-38vmax;top:-48vmax;
  background:radial-gradient(closest-side,
    rgba(var(--kyla-ljus),.52) 0%,rgba(var(--kyla-ljus),.20) 42%,
    rgba(var(--kyla-ljus),0) 72%);
  will-change:transform;
}
/* En kallare, tyngre pöl i motsatt hörn ger pappret riktning: svalt och ljust
   uppe, en aning djupare och blåare nere. */
.atmos-djup{
  position:absolute;width:140vmax;height:140vmax;right:-42vmax;bottom:-52vmax;
  background:radial-gradient(closest-side,
    rgba(var(--kyla-djup),.075) 0%,rgba(var(--kyla-djup),.028) 46%,
    rgba(var(--kyla-djup),0) 72%);
  will-change:transform;
}

/* Vinjetten. En kall ram runt hela skärmen i två lager: en mjuk allmän
   kylning av alla fyra hörn, och en riktad kall skugga vars centrum skriptet
   flyttar så att ljuskällan tycks vandra medan man rullar. Alfat är litet. */
.rama::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(128% 118% at 50% 45%,
    rgba(var(--kyla-djup),0) 52%,rgba(var(--kyla-djup),.06) 80%,
    rgba(var(--kyla-djup),.15) 100%);
}
.rama::after{
  content:"";position:absolute;inset:-25%;
  background:radial-gradient(58% 58% at var(--rx,16%) var(--ry,122%),
    rgba(var(--kyla-djup),.10) 0%,rgba(var(--kyla-djup),0) 62%);
}

::selection{background:var(--black);color:var(--papper)}
:focus-visible{outline:2px solid var(--brons);outline-offset:3px}
.sek-mork :focus-visible,.hjalte :focus-visible{outline-color:var(--guld)}

.hoppa{
  position:fixed;top:-100px;left:16px;z-index:200;
  background:var(--black);color:var(--papper);
  padding:12px 20px;font-weight:600;transition:top .2s;
}
.hoppa:focus{top:16px}

/* ------------------------------------------------------ 2 Typografi */
/* Två register. .jatte och .d.stor är stora. Allt annat är litet. Det som
   låg däremellan (.d.mellan, 26–42 px) är borttaget — mellanrubrikerna i
   marginalspalterna sätts i etikettstil i stället. */
.d{
  font-family:var(--serif);font-weight:400;
  /* Newsreader är bredare och rundare än husets tidigare didone och tål mindre
     spärr: den gamla -.022/-.028 var satt för en smal, hög bokstav. */
  letter-spacing:-.018em;line-height:.98;text-wrap:balance;
}

/* Nedskruvat från 10.5vw/178 och 5.8vw/92. Vid 151 px åt rubriken halva
   skärmen på varje undersida och ingenting var längre stort i förhållande
   till något annat — stort är bara stort om det är sällsynt. Kontrasten mot
   11 px-etiketterna är fortfarande tiofaldig. */
.jatte{font-size:clamp(50px,11.4vw,104px);line-height:.94;letter-spacing:-.021em}
.d.stor{font-size:clamp(33px,7vw,64px);line-height:1.0;letter-spacing:-.017em}
h3.d{font-size:clamp(19px,1.5vw,23px);line-height:1.16;letter-spacing:-.008em}

/* Etiketten är accentfärgens ENDA statiska jobb. Ligger guldet också på
   priser, streck och siffror är det inte längre en accent utan en andra
   textfärg — det var det som gjorde sidan rörig. Den är också marginal-
   spalternas rubriknivå: marginalen viskar, innehållet bär serifregistret.

   SJÄTTE PASSET: metallen lyfts av papperssektionerna. Guld på gräddvitt läser
   som "vill se dyr ut" — det var en av tre rotorsaker Filip pekade ut. På
   papper är etiketten nu dämpad bläck, stram och tryckt som hos Aesop och The
   Row. Guldet överlever bara mot natt, där en liten etikett läser som ett
   glimt ljus på metall och inte som en prydnad på duk. En not, på rätt botten. */
.etikett{
  font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-2);margin-bottom:26px;
}
.sek-mork .etikett,.hjalte .etikett,.band .etikett{color:var(--guld)}

.lede{
  font-size:clamp(17px,1.3vw,19px);line-height:1.6;
  color:var(--ink-2);max-width:58ch;margin-top:26px;
}
.lede.stor{font-size:clamp(19px,1.7vw,24px);line-height:1.48;color:var(--ink)}
.lede.smal-txt{max-width:52ch}
.lede a{color:var(--ink);text-decoration:underline;text-underline-offset:4px;
  text-decoration-color:var(--brons);text-decoration-thickness:1px}

/* Paret: två spalter som BÅDA börjar vid satsytans vänsterkant. Skillnaden mot
   .marginal är hela poängen — .marginal lägger en etikett i vänstermarginalen
   och skjuter innehållet en tredjedel in, och används den på fyra sektioner i
   rad börjar varenda textblock på sidan på samma x-koordinat. Då är det inte
   asymmetri, det är ett indrag som upprepas, och sidan har bara en gest kvar. */
.par{display:grid;gap:clamp(26px,4vw,64px);align-items:start}
/* Spalternas första stycke får inte bära sin egen toppmarginal. .lede har 26 px
   och ett vanligt stycke har noll, så två spalter bredvid varandra började på
   olika höjd — vilket syns direkt eftersom det enda ögat har att jämföra med
   är den andra spalten.
   Det låg redan lappat med style="margin-top:0" på ett av de två ställen där
   .par används, och var glömt på det andra. En lapp som måste upprepas för hand
   är ingen lösning; regeln hör hemma i klassen. */
.par>*,.par>*>:first-child{margin-top:0}
@media (min-width:900px){.par{grid-template-columns:minmax(0,5fr) minmax(0,7fr)}}

/* Tal i priser och mått sätts med tabulära siffror. Annars hoppar kolumnen
   i en lista där 16 000 står över 78 000. */
.tal{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1}

.brodtext h2{margin:56px 0 14px;font-size:clamp(19px,1.5vw,23px);
  font-family:var(--serif);letter-spacing:-.01em}
.brodtext h2:first-child{margin-top:0}
.brodtext p{color:var(--ink-2);margin-bottom:16px;max-width:64ch}
.brodtext a{color:var(--ink);text-decoration:underline;text-underline-offset:3px;
  text-decoration-color:var(--brons)}

/* --------------------------------------------- 3 Layout och rytm */
.wrap{width:min(100% - var(--kant),var(--wrap));margin-inline:auto}
.wrap.smal{width:min(100% - var(--kant),var(--smal))}
.sek{padding-block:var(--sek);position:relative}
.sek.tyst{padding-block:var(--sek-tyst)}
.sek.tat{padding-block:var(--sek-tat)}
.sek.ingen-topp{padding-top:0}

/* DJUPET.
   De mörka fälten var plan färg, och en plan färg har ingen ljuskälla. Utan
   ljuskälla finns ingenting för metall och sten att lysa emot — det var därför
   sidan läste torr trots att typografin satt. Åtgärden är inte skuggor och
   kort (ett kort med skugga är en annons, se DATAGRAMMATIKEN) utan ljus i
   själva ytan: en svag radial som lägger ljuset uppe till vänster, där
   etiketten och rubriken står, och låter det falla av mot höger och nedåt.

   Skillnaden mellan --natt och --natt-2 är elva värden. Det är avsiktligt
   under gränsen för vad man ser som en gradient; det man ska se är att fältet
   har en riktning, inte att det är målat i två färger.

   Ligger på tokens, alltså följer det med in i droppets rum utan en rad till:
   .sida-dropp pekar om --natt/--natt-2 till formolja och gjuten betong.

   Kornet läggs som ett eget bakgrundslager ovanpå radialen och blandas med
   screen, alltså additivt. Husets korn ligger som ett overlay-lager över hela
   sidan, men overlay är multiplikativ och gör mätbart ingenting mot nästan
   svart — se korn.py. De mörka fälten är alltså de enda som skulle blivit utan
   det korn som fanns just för deras skull. */
/* Ordningen är lagren ovanifrån: korn, kanter, aura, ljus. Kornet blandas med
   screen eftersom overlay är multiplikativ och inte gör något mot nästan
   svart; resten ligger normalt.

   Förankringen är det som gör det till EN belysning i stället för fem. Ljuset
   och auran ligger fixed, alltså mot skärmen och inte mot sektionen, precis
   som pappret. Då är det samma lampa som lyser på hela sajten och den sveper
   över fältet när man rullar, i stället för att varje mörkt fält tänder en
   egen lampa i sitt eget övre vänstra hörn. Kanterna och kornet måste
   däremot sitta i sektionen — en kant som ligger stilla mot skärmen är inte
   en kant.

   iOS Safari stöder inte fixed förankring och behandlar den som scroll. Det
   är ett acceptabelt fall tillbaka och inget att bygga runt: ljuset hamnar då
   i sektionens eget hörn i stället för skärmens, alltså exakt så som det såg
   ut innan förankringen lades till. Ingenting går sönder, det blir bara fem
   lampor i stället för en. */
.sek-mork{
  background-image:var(--korn-mork),var(--kant-topp),var(--kant-bott),
    var(--aura-natt),var(--ljus-natt);
  background-size:var(--korn-ruta),auto,auto,auto,auto;
  background-attachment:scroll,scroll,scroll,fixed,fixed;
  background-blend-mode:screen,normal,normal,normal,normal;
  color:var(--ljus);
}
/* Fotoytorna kan inte ta kornet som ett bakgrundslager: brickan är
   ogenomskinlig och skulle täcka fotot. Den läggs i stället som ett eget skikt
   mellan slöjan och texten. z-index 1 och först i dokumentet, alltså under
   .hjalte-in och .band-in som har samma z-index men kommer senare — kornet ska
   ligga på ytan, inte på bokstäverna. */
.hjalte::before,.band::before,.dropp-in::before{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background-image:var(--korn-mork);background-size:var(--korn-ruta);
  mix-blend-mode:screen;
}
@media print{.hjalte::before,.band::before,.dropp-in::before{display:none}}

.sek-mork .lede,.sek-mork p{color:var(--ljus-2)}
/* Luft mellan två stycken i rad. Regeln låg bara på natt och på remsan, så i
   en ljus sektion klistrades andra stycket direkt mot det första: .lede bär
   sin marginal uppåt och ett vanligt stycke har ingen alls. Selektorn går på
   stycken som står direkt i satsytan, inte på varje p i dokumentet — spalter
   och tabeller sätter sina egna avstånd. */
.sek-mork p+p,.band p+p,.sek>.wrap>p+p{margin-top:16px}
.sek-mork .lede.stor{color:var(--ljus)}
.sek-mork .tal{color:var(--ljus)}
.sid-topp{padding-top:clamp(96px,11vw,150px);padding-bottom:clamp(44px,5vw,80px)}
/* En displayrubrik som får hela satsytan blir en banderoll. Två rader är
   rubrikens naturliga form; utan måttet gick /om/ ut på 1230 px i en enda rad. */
.sid-topp h1{max-width:19ch}

/* Marginalspalten. Etiketten står i vänstermarginalen och texten i en smal
   spalt till höger — trycksaksuppställning, inte centrerad broschyr. 4/8 är
   avsiktligt ojämnt; 6/6 ser ut som en tabell. */
.marginal{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);
  gap:clamp(28px,5vw,90px);align-items:start}
.marginal>.marginal-sido{position:sticky;top:120px}
.marginal .etikett{margin-bottom:0}

.sek-topp{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:32px;flex-wrap:wrap;margin-bottom:clamp(40px,4.5vw,76px);
}

.smulor{border-bottom:1px solid var(--linje-svag);font-size:13px;color:var(--ink-3)}
/* Luften flyttad från raden in i länkarna. Radens höjd är exakt densamma som
   förr — 13 px text plus 28 px luft — men luften ligger nu innanför <a> i
   stället för utanför, så att träffytan blir 45 px i stället för 21. En
   brödsmula är den vanligaste vägen tillbaka på telefon och den var för liten
   att träffa med tummen. */
.smulor .wrap{display:flex;gap:10px;align-items:center;padding-block:0;flex-wrap:wrap}
/* Även vågrätt: "Start" är fem tecken och 27 px brett. Padding ut, marginal
   in — snedstrecket står kvar på samma pixel och ytan blir 45×45. */
.smulor a{color:var(--ink-3);text-decoration:none;
  padding-block:14px;padding-inline:9px;margin-inline:-9px}
@media (hover:hover){.smulor a:hover{color:var(--brons)}}
.smulor i{font-style:normal;opacity:.4}
/* Sidan man står på sätts i värdenas ink. Den låg på --ink-2 och skildes då
   från länkarna av att de var ljusare — och när mikroinken mörknade tog den
   skillnaden slut. En brödsmula som inte visar var man står mäter ingenting. */
.smulor span{color:var(--ink)}

/* ----------------------------------------------------- 4 Navigation */
.nav{
  /* sticky, inte fixed. Fixed lyfter menyn ur flödet och lägger den ovanpå
     brödsmulorna på varje undersida. */
  position:sticky;top:0;z-index:120;
  /* Solitt och ljust, ocksa over hjalten. Halvgenomskinligt vitt over ett
     helsvart foto blir gratt, inte ljust, och sudd ritar en synlig rektangel
     med skarp kant dar bakgrunden slutar. */
  /* Samma ljus som kroppen, och samma förankring: fixed räknas alltid mot
     skärmen, aldrig mot elementet, så remsan ligger exakt i linje med pappret
     bakom den och skarven försvinner.
     Värdena står i klartext och inte i tokens. Sidhuvudet ska vara IDENTISKT
     på varje sida, och droppsidan pekar om --papper till formolja — med
     tokens hade menyn bytt färg när man bytte rum. */
  background:var(--ljus-nav) fixed;
  border-bottom:1px solid var(--linje-svag);
  transition:border-color .3s,background .4s,color .4s;
}
.nav.rullad{border-bottom-color:var(--linje)}
.nav-in{display:flex;align-items:center;gap:28px;height:76px}

/* Menyn vänder INTE färg över hjälten längre. Den var transparent med ljus
   text där, och en meny som byter färg mitt i en rullning är en meny man tittar
   på i stället för använder. Sidhuvudet är nu en egen ljus remsa hela vägen,
   och hjälten börjar under den i stället för bakom den. */
/* Märket ligger inbäddat som SVG och inte som <img>, så att fill:currentColor
   ärver textfärgen. Samma märke följer därför med när sidan växlar från papper
   till natt, i stället för att finnas i två filer som kan glida ifrån varandra.
   Se logga.py. Höjden sätts här och bredden räknas ut av viewBox — märket har
   inget eget mått som kan hamna i konflikt med rutan det ligger i. */
/* Märket i sidhuvudet är 26 px högt, alltså en träffyta på 26 px för sidans
   väg tillbaka till startsidan. Utfyllnaden tas tillbaka med negativ marginal:
   monogrammet står kvar exakt där det stod, fingret får fyrtiofyra. */
.mark{display:inline-block;text-decoration:none;line-height:0;color:inherit;
  padding-block:11px;margin-block:-11px}
.mark svg{display:block;width:auto;fill:currentColor}
/* Bara monogrammet i sidhuvudet. Hela låset (26B + 26BESPOKE) är sex gånger
   bredare än högt och tog en fjärdedel av menyraden; namnet står i sidfoten,
   i titeln och i adressfältet ändå. */
.mark .marke-26b{height:26px}
.mark .marke-stapel{height:66px}
.mark.stor{display:inline-block;margin-bottom:22px}

@media (max-width:560px){
  /* Låset är sex gånger bredare än högt. På en smal skärm ska det krympa i
     stället för att tränga ut hamburgaren — det var precis den buggen som gjorde
     menyn oöppningsbar på staywild. */
  .mark .marke-26b{height:22px}
}

.nav-lankar{display:flex;gap:32px;margin-left:auto}
.nav-lankar a{
  position:relative;text-decoration:none;font-size:15px;color:var(--ink-2);
  padding-block:6px;transition:color .25s;
}
.nav-lankar a::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:var(--black);transform:scaleX(0);transform-origin:100% 50%;
  transition:transform .45s var(--kurva);
}
@media (hover:hover){
  .nav-lankar a:hover{color:var(--ink)}
  .nav-lankar a:hover::after{transform:scaleX(1);transform-origin:0 50%}
}
.nav-lankar a[aria-current]{color:var(--ink)}
/* Språkväxeln sist i menyn är ett vanligt menyord ("English"/"Svenska") och
   får ingen egen dräkt. Den stod som koden EN, spärrad och dämpad, mellan
   Verifiera och knappen: tre saker i tre drakter på en rad. Ett helt ord
   säger vad det är utan hjälp. Går till samma sida på det andra språket. */
.nav-lankar a[aria-current]::after{transform:scaleX(1)}

.burger{display:none;background:none;border:0;padding:12px;margin-right:-12px;
  cursor:pointer;width:46px;height:46px}
.burger span{display:block;height:1px;background:var(--ink);
  transition:transform .35s var(--kurva),background .4s}
.burger span+span{margin-top:7px}
.burger[aria-expanded="true"] span:first-child{transform:translateY(4px) rotate(45deg)}
.burger[aria-expanded="true"] span:last-child{transform:translateY(-4px) rotate(-45deg)}

.mobilmeny{
  position:fixed;inset:76px 0 auto;z-index:110;background:var(--natt);
  color:var(--ljus);padding:20px;display:none;
  flex-direction:column;gap:4px;max-height:calc(100dvh - 76px);overflow-y:auto;
  /* Panelen glider ner och tonar in i stället för att poppa. display animeras
     med allow-discrete så den fälls in och ut mjukt; utan stöd faller den
     tillbaka på samma hårda växling som förr, vilket är ofarligt. */
  opacity:0;transform:translateY(-8px);
  transition:opacity .3s var(--kurva),transform .4s var(--kurva),
             display .4s allow-discrete;
}
.mobilmeny.uppe{display:flex;opacity:1;transform:none}
@starting-style{.mobilmeny.uppe{opacity:0;transform:translateY(-8px)}}
@media (prefers-reduced-motion:reduce){
  .mobilmeny{transition:none;transform:none}
}
/* Spalten måste sättas på <nav> också, inte bara på panelen. Panelens
   flex-column gällde dess två BARN — nav-elementet och knappen — medan
   länkarna ligger inuti nav och därför stod kvar som inline. Menyn på telefon
   var i praktiken ett enda stycke löptext: "Pjäser Så går det till Sten &
   metall Sigillet Om", med hårstrecket draget under sista raden. Det gick inte
   att se på dator, för där visas menyn aldrig. */
.mobilmeny nav{display:flex;flex-direction:column}
.mobilmeny a{display:block;text-decoration:none;font-family:var(--serif);
  font-size:30px;padding:14px 4px;border-bottom:1px solid var(--natt-linje)}
/* Knappen vänds i menyn. .btn är svart på papper, och panelen ÄR natten —
   svart på svart gav en knapp som bara gick att ana på en nyans, och det är
   sidans primära handling på telefon. Samma vändning som droppsidan redan gör
   i sin egen meny; nu gör huset det själv i stället för att droppet lagar det
   åt sig. */
.mobilmeny .btn{margin-top:18px;border-bottom:0;font-family:inherit;font-size:16px;
  background:var(--papper);color:var(--black);border-color:var(--papper)}
@media (hover:hover){.mobilmeny .btn:hover{color:var(--papper)}}
/* Språkväxeln i mobilmenyn: en liten rad under knappen, i grotesken och
   dämpad, inte en 30 px seriffrad bland sidorna. Ett menyord och ett språk
   är inte samma slags sak och ska inte väga lika. Träffytan är 44 px. */
.mobilmeny a.mobilmeny-sprak{
  align-self:flex-start;margin-top:6px;padding:13px 4px;border-bottom:0;
  font-family:inherit;font-size:15px;line-height:18px;letter-spacing:.01em;
  color:var(--ljus-2);transition:color .25s;
}
@media (hover:hover){.mobilmeny a.mobilmeny-sprak:hover{color:var(--ljus)}}

/* --------------------------------------------- 5 Knappar och länkar */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:50px;padding:14px 30px;
  background:var(--black);color:var(--papper);border:1px solid var(--black);
  font-size:15px;font-weight:600;letter-spacing:.02em;
  text-decoration:none;cursor:pointer;position:relative;overflow:hidden;
  transition:color .35s;
  /* isolation gör att ::before med z-index -1 stannar inne i knappen:
     bakom texten men framför knappens egen bakgrund. */
  isolation:isolate;
}
.btn::before{
  content:"";position:absolute;inset:0;background:var(--brons);z-index:-1;
  transform:translateY(101%);transition:transform .45s var(--kurva);
}
@media (hover:hover){.btn:hover::before{transform:translateY(0)}}
.btn.stor{min-height:58px;padding:17px 38px;font-size:16px}
.btn.liten{min-height:42px;padding:10px 20px;font-size:14px}
.btn.tom{background:transparent;color:var(--ink);border-color:var(--linje)}
@media (hover:hover){.btn.tom:hover{color:var(--papper);border-color:var(--black)}
  .btn.tom::before{background:var(--black)}}
/* En knapp på en mörk yta vänds. .gjut saknades i listan, och det var en
   glömska och inte ett val: sektionen är samma sorts nattyta med foto som
   remsan, och startsidans sista uppmaning stod därför som en svart knapp på
   svart botten där bara texten syntes.
   .pjas-hjalte saknades av samma skäl och kostade mer: pjässidans hjälte är
   natt med foto, men den heter inte .hjalte, så alla sex konstruktionssidor
   bar sin enda uppmaning som #16140F på #080706 — uppmätt 1,09:1, alltså en
   knapp som inte gick att se. Listan är nu skriven som en RAD mörka ytor och
   en ny mörk hjälte ska läggas till här, inte lagas i sitt eget block. */
.sek-mork .btn,.hjalte .btn,.pjas-hjalte .btn,.band .btn,.gjut .btn,
footer .btn{background:var(--ljus);
  color:var(--natt);border-color:var(--ljus)}
.sek-mork .btn::before,.hjalte .btn::before,.pjas-hjalte .btn::before,
.band .btn::before,.gjut .btn::before,footer .btn::before{background:var(--guld)}
.sek-mork .btn.tom,.hjalte .btn.tom,.pjas-hjalte .btn.tom,.band .btn.tom,
.gjut .btn.tom,footer .btn.tom{
  background:transparent;color:var(--ljus);border-color:var(--natt-linje)}
@media (hover:hover){
  .sek-mork .btn.tom:hover,.hjalte .btn.tom:hover,.pjas-hjalte .btn.tom:hover,
  .band .btn.tom:hover,
  .gjut .btn.tom:hover,footer .btn.tom:hover{color:var(--natt);border-color:var(--ljus)}
  .sek-mork .btn.tom::before,.hjalte .btn.tom::before,.pjas-hjalte .btn.tom::before,
  .band .btn.tom::before,
  .gjut .btn.tom::before,footer .btn.tom::before{background:var(--ljus)}
}

.lank-pil{
  display:inline-flex;align-items:center;gap:12px;text-decoration:none;
  font-size:15px;color:var(--ink);border-bottom:1px solid var(--linje);
  padding-bottom:8px;transition:border-color .3s,color .3s;
}
/* Träffytan. Länken mätte 33 px hög, alltså under de 44 som ett finger
   behöver. Utfyllnaden uppåt tas tillbaka med lika stor negativ marginal:
   ingenting flyttar sig på skärmen, men fingret får elva pixlar till att
   sikta på. Samma grepp som sidfotens länkar använder. */
.lank-pil{padding-top:11px;margin-top:-11px}
.lank-pil i{display:block;width:22px;height:1px;background:currentColor;
  position:relative;transition:width .35s var(--kurva)}
.lank-pil i::after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;
  border-top:1px solid currentColor;border-right:1px solid currentColor;transform:rotate(45deg)}
@media (hover:hover){
  .lank-pil:hover{color:var(--brons);border-color:var(--brons)}
  .lank-pil:hover i{width:34px}
}
/* Länken var svart på svart i de mörka sektionerna — osynlig i drift. */
.sek-mork .lank-pil,.band .lank-pil,.hjalte .lank-pil{color:var(--ljus);border-bottom-color:var(--natt-linje)}
@media (hover:hover){
  .sek-mork .lank-pil:hover,.band .lank-pil:hover,.hjalte .lank-pil:hover{color:var(--guld);border-color:var(--guld)}
}

/* -------------------------------------------------------- 6 Hjälten */
/* Hjälten är ett foto som täcker hela skärmen, inte en bild i en ruta bredvid
   en textspalt. Det är den enskilt största skillnaden mot förra omgången:
   en bild i en ruta är webshop, en bild som äger skärmen är varumärke. */
.hjalte{
  position:relative;min-height:88svh;display:flex;flex-direction:column;
  justify-content:flex-end;background:var(--natt);color:var(--ljus);
  overflow:clip;
}
/* Undersidans hjälte. Samma konstruktion som startsidans — och därmed samma
   slöja, aura, vinjett och korn utan en rad till — men lägre. En undersida som
   tar hela skärmen innan innehållet börjar är en andra startsida, och då är
   det oklart vilken sida man är på.
   Rubriken får också ett bredare mått: 11ch är satt för en hjälte som äger
   skärmen, och i den lägre höjden blev samma rubrik fem rader. */
/* Höjden är satt efter rubriken och inte efter skärmen. 64svh gav 576 px med
   en rubrik på tre rader i mitten och luft över och under som inte gjorde
   något — en entré ska räcka till innehållet, inte till en skärm. */
.hjalte.hjalte-sida{min-height:clamp(320px,46svh,470px)}
.hjalte-sida .hjalte-in{padding-block:clamp(40px,6vh,72px)}
.hjalte-sida h1{max-width:20ch}
.hjalte-sida .lede{max-width:46ch}

.hjalte-bild{position:absolute;inset:0;z-index:0}
.hjalte-bild img{width:100%;height:100%;object-fit:cover;object-position:76% 50%}
/* Slöjan gör rubriken läsbar utan att sudda ut fotot. Den lutar över spalten
   där texten står och släpper helt i högra tredjedelen. Ett jämnt svart lager
   över hela bilden släcker metallen, och metallen är hela poängen med fotot —
   första försöket låg på 94/72/18 och gav en sida som såg tom och svart ut. */
.hjalte-bild::after{
  content:"";position:absolute;inset:0;
  /* Slöjan följer samma färgtemperatur som resten av sajten: den varma sidan
     är den där texten står och ljuset kommer ifrån, den kalla är skuggsidan.
     Två slöjor i samma neutrala svart läser som ett filter lagt över ett foto;
     två i olika temperatur läser som belysning. */
  background:
    linear-gradient(96deg,rgba(22,17,11,.9) 0%,rgba(18,15,11,.6) 32%,
      rgba(10,9,8,.06) 62%,rgba(10,9,8,0) 100%),
    linear-gradient(0deg,rgba(8,8,10,.72) 0%,rgba(8,8,10,0) 46%),
    /* Menyremsan. Slöjan ovan släpper med flit i högra tredjedelen — men det
       är där menyn står, och kedjans ljusa parti gjorde "Äkthet" oläsligt.
       Den här tar bara de översta 120 pixlarna och rör inte metallen nedanför. */
    linear-gradient(180deg,rgba(10,9,8,.72) 0,rgba(10,9,8,.34) 62px,
      rgba(10,9,8,0) 120px),
    /* Auran. Samma närfält som de mörka sektionerna har, så att hjälten och
       fältet under den läser som samma belysning och inte som två beslut. */
    radial-gradient(46% 52% at 16% 62%,rgba(var(--aura-rgb),.15) 0%,
      rgba(var(--aura-rgb),.05) 46%,rgba(var(--aura-rgb),0) 74%),
    /* Vinjetten. Ligger sist, alltså underst, och tar hörnen. Kall, eftersom
       det är skuggan. Mitten är genomskinlig till 38 %, så metallen rörs
       inte — det var precis det första försöket sabbade. */
    radial-gradient(122% 102% at 52% 42%,rgba(6,7,10,0) 38%,rgba(6,7,10,.58));
}
.hjalte-in{position:relative;z-index:1;padding-block:clamp(56px,9vh,120px)}
.hjalte h1{max-width:11ch}
.hjalte .lede{color:var(--ljus-2);max-width:40ch}
.hjalte .lede.stor{color:var(--ljus)}
.hjalte-knappar{display:flex;gap:26px;flex-wrap:wrap;align-items:center;margin-top:44px}

/* Måttlinjen. Signaturen på sajten och det enda som får vara utsmyckning —
   och den är inte utsmyckning, den bär riktiga mått ur data.json. Löftet är
   "du ser din pjäs innan den finns", alltså ritningen före föremålet, och då
   ska ritningens språk ligga över fotot. */
/* Luft ovanför måttlinjen där den möter en knapp — den låg dikt an mot
   knappens underkant och läste som ett fel i stället för som en linje. */
.pjas-hjalte-txt .matt{margin-top:clamp(26px,3vw,40px)}
.matt{display:flex;align-items:center;gap:14px;
  font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--guld)}
.matt-linje{position:relative;flex:1 1 auto;height:1px;background:currentColor;
  transform:scaleX(var(--mg,1));transform-origin:0 50%}
.matt-linje::before,.matt-linje::after{content:"";position:absolute;top:-4px;
  width:1px;height:9px;background:currentColor}
.matt-linje::before{left:0}
.matt-linje::after{right:0}
.matt-tal{flex:none;font-variant-numeric:tabular-nums}
.hjalte .matt{margin-top:clamp(44px,7vh,88px);max-width:520px}

/* ══════════ Hjältevarianter under utvärdering (HJALTE=B / =C) ══════════
   A0 (nuvarande) och A (samma layout, ny kall tung bild) använder reglerna
   ovan oförändrade. B och C är egna kompositioner. Allt syns utan JS. */

/* A — TYNGD. Samma layout som A0, men bilden är kall och tung, och slöjan
   kyls från den varma bronsblacken till en kall nästan-svart så att den möter
   den kalla stenen i stället för att lägga en brun ton över nederkanten. */
.hjalte.hjalte-kall .hjalte-bild::after{
  background:
    linear-gradient(96deg,rgba(9,11,15,.92) 0%,rgba(9,11,15,.62) 32%,
      rgba(9,11,15,.06) 62%,rgba(9,11,15,0) 100%),
    linear-gradient(0deg,rgba(6,8,12,.72) 0%,rgba(6,8,12,0) 46%),
    linear-gradient(180deg,rgba(8,9,12,.72) 0,rgba(8,9,12,.34) 62px,
      rgba(8,9,12,0) 120px),
    radial-gradient(46% 52% at 16% 62%,rgba(86,116,156,.10) 0%,
      rgba(86,116,156,.04) 46%,rgba(86,116,156,0) 74%),
    radial-gradient(122% 102% at 52% 42%,rgba(6,7,10,0) 38%,rgba(6,7,10,.58));
}

/* B — TYSTNAD. Pjäsen får hela skärmen, texten dras ned till en enda
   rubrik och måttlinjen. Loro Piana/The Row-greppet: ett föremål, en mening,
   tomrum. Slöjan är lättare och jämnare än A:s så metallen får andas. */
.hjalte.tystnad{min-height:100svh;justify-content:flex-start}
.hjalte.tystnad .hjalte-bild img{object-position:56% 48%}
.hjalte.tystnad .hjalte-bild::after{
  background:
    linear-gradient(0deg,rgba(6,7,10,.88) 0%,rgba(6,7,10,.3) 30%,
      rgba(6,7,10,0) 52%),
    /* Topp-scrim: kraftigare och djupare så den lilla guldetiketten läser mot
       den ljusa stenen. Sträcker sig förbi etikettens baslinje. */
    linear-gradient(180deg,rgba(6,7,10,.8) 0,rgba(6,7,10,.5) 116px,
      rgba(6,7,10,.12) 210px,rgba(6,7,10,0) 280px),
    radial-gradient(122% 104% at 52% 46%,rgba(6,7,10,0) 44%,rgba(6,7,10,.5));
}
.hjalte.tystnad .hjalte-in{display:flex;flex-direction:column;
  justify-content:space-between;min-height:100svh;
  padding-block:clamp(104px,17vh,168px) clamp(46px,8vh,96px)}
.hjalte.tystnad .hjalte-nedre{max-width:none}
.hjalte.tystnad h1{max-width:none;margin:0}
.hjalte.tystnad .matt{margin-top:clamp(30px,4.5vh,52px);max-width:560px}

/* C — DELAD PLÅT. Textkolumn och metallplåt sida vid sida med ett hårstreck
   emellan. Dokumentgrammatik: metallen är en plåt, texten en spalt. Ingen
   slöja över texten — den står på sin egen mörka kolumn. */
.hjalte.delad{min-height:calc(88svh - 0px);display:grid;
  grid-template-columns:minmax(0,45fr) minmax(0,55fr);
  align-items:stretch;background:var(--natt);color:var(--ljus);
  justify-content:initial;overflow:clip}
.hjalte.delad .hjalte-txt{display:flex;align-items:center;
  border-right:1px solid var(--natt-linje);
  padding:clamp(48px,9vh,120px) clamp(30px,4vw,64px) clamp(48px,9vh,120px)
    max(calc(var(--kant)/2),(100vw - var(--wrap))/2)}
.hjalte.delad .hjalte-txt-in{width:100%;max-width:36ch}
/* Rubriken satt något mindre än .jatte i den smala kolumnen: full jättegrad
   bröt den till fem enstaviga rader. Den här landar på tre. */
.hjalte.delad h1{max-width:15ch;font-size:clamp(38px,4.3vw,68px)}
.hjalte.delad .lede{color:var(--ljus-2);max-width:38ch}
.hjalte.delad .hjalte-knappar{margin-top:clamp(30px,4vh,44px)}
.hjalte.delad .matt{margin-top:clamp(34px,5vh,56px);max-width:none}
.hjalte.delad .hjalte-plat{position:relative;overflow:clip}
.hjalte.delad .hjalte-plat img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:66% 62%}
/* Kall vinjett över plåten. Mörkret dras mot sömmen till vänster så den ljusa
   metallkanten inte krockar med hårstrecket, och hörnen kylas som resten. */
.hjalte.delad .hjalte-plat::after{content:"";position:absolute;inset:0;
  background:
    linear-gradient(90deg,rgba(6,7,10,.52) 0,rgba(6,7,10,0) 26%),
    radial-gradient(124% 112% at 60% 44%,rgba(6,7,10,0) 48%,rgba(6,7,10,.44));}
@media (max-width:860px){
  /* På telefon staplas plåten över texten: en hög metallremsa, sedan
     textkolumnen på natt. Overlay i en smal spalt blir för trångt. */
  .hjalte.delad{grid-template-columns:1fr;min-height:auto}
  .hjalte.delad .hjalte-plat{order:-1;height:58svh;min-height:320px}
  .hjalte.delad .hjalte-plat img{position:absolute}
  .hjalte.delad .hjalte-txt{border-right:0;border-top:1px solid var(--natt-linje);
    padding:clamp(40px,8vw,64px) max(calc(var(--kant)/2),(100vw - var(--wrap))/2)}
}

/* ══════════════════════════ HÄRDNINGEN ══════════════════════════════════
   Sajtens signaturrörelse. Ett släpp är en gjutning: man häller, väntar, det
   härdar. Här härdar KALLT LJUS metallen till liv. Vid entrén ligger metallen
   i nästan-mörker (nattlagret, tänt av JS), en kall strålkastare drar en gång
   tvärs kedjan (svepet) och i dess spår stiger metallen ur mörkret. Sedan
   ligger en mycket långsam glint kvar och vandrar för evigt längs länkarna, och
   rullningen driver svepet vidare — metallen fortsätter fånga ljus i stället
   för att ligga död.

   Blandningsläget är screen: ljuset lägger sig bara där metallen redan är ljus,
   alltså på länkarnas högdagrar, och rör knappt den mörka stenen. Det är
   skillnaden mellan en reflex på metall och en grå dimma över ett foto.

   Allt tre lager är ren dekoration (aria-hidden) med ett komponerat viloläge:
   utan JS och vid prefers-reduced-motion ligger svepet stilla mitt över kedjan
   som en naturlig sken, glinten svag, och nattlagret helt släckt (opacity 0).
   Ingenting döljs, sidan är komplett. JS tänder nattlagret och sätter svepets
   startläge FÖRST när motorn kör. */
/* --svep är härdningsfronten: 0 = längst till vänster, 1 = längst till höger.
   Den styr BÅDE den kalla ljusstrimman och mörkrets kant, så metallen härdar i
   ljusets spår i stället för att bara ljusna jämnt. Bor på sektionen så båda
   lagren läser samma front. Grundläget parkerar ljuset utanför högra kanten:
   utan JS och vid prefers-reduced-motion är hjälten det rena fotot, inget
   ljusstråk mitt i bilden. JS drar in svepet vid entrén. */
.hjalte-hardning{--svep:1.6}
.hjalte-hardning .hjalte-bild{overflow:clip}

/* Svepet: en kall strålkastare som drar tvärs kedjan. Kärnan sitter mitt i
   elementet och glider med --svep, så ljuset står vid samma punkt som mörkrets
   kant. Lutningen möter kedjans diagonal. color-dodge: ljuset BLOMMAR där
   metallen redan är ljus — länkarnas högdagrar flarar kallt när bandet passerar
   och stenen rörs knappt. Det är skillnaden mellan en reflex på metall och en
   grå dimma över ett foto. En smal het kärna över ett bredare mjukt sken. */
.hjalte-svep{
  position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:color-dodge;
  background:linear-gradient(100deg,
    rgba(150,180,220,0) 37%,
    rgba(150,178,216,.12) 45%,
    rgba(210,224,242,.30) 49%,
    rgba(255,255,255,.46) 50%,
    rgba(210,224,242,.30) 51%,
    rgba(150,178,216,.12) 55%,
    rgba(150,180,220,0) 63%);
  transform:translate3d(calc((var(--svep) - .5) * 100%),0,0);
  will-change:transform;
}
/* Glinten: en smalare, svagare strimma som ligger kvar och andas långsamt
   längs kedjan efter härdningen. Egen front (--glint) så den kan vandra
   oberoende av svepet. */
.hjalte-glint{
  position:absolute;inset:0;z-index:1;pointer-events:none;mix-blend-mode:screen;
  background:linear-gradient(100deg,
    rgba(150,186,230,0) 42%,
    rgba(202,224,252,.28) 50%,
    rgba(150,186,230,0) 58%);
  transform:translate3d(calc((var(--glint,1.6) - .5) * 100%),0,0);
  will-change:transform;
}
/* Nattlagret: nästan-svart som JS tänder och sedan låter falla i takt med
   fronten — masken avtäcker metallen till VÄNSTER om ljuset och håller mörkret
   till HÖGER, så metallen stiger ur mörkret där strålkastaren just gått fram.
   Släckt som grund (opacity 0): utan JS ligger ingen svärta över fotot. */
.hjalte-natt{
  position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;
  --front:calc(var(--svep) * 100%);
  background:
    radial-gradient(132% 122% at 52% 46%,rgba(4,6,10,.5) 24%,rgba(2,3,7,.95) 100%),
    var(--natt);
  -webkit-mask:linear-gradient(100deg,transparent calc(var(--front) - 15%),
    rgba(0,0,0,.55) calc(var(--front) - 1%),#000 calc(var(--front) + 13%));
  mask:linear-gradient(100deg,transparent calc(var(--front) - 15%),
    rgba(0,0,0,.55) calc(var(--front) - 1%),#000 calc(var(--front) + 13%));
}
/* Ljuslagren ska ligga under slöjan (::after) så vinjett och textscrim håller;
   ::after är sista barnet och målas överst, så den höjs över svep och glint.
   Nattlagret ligger överst av alla under entrén. */
.hjalte-hardning .hjalte-bild::after{z-index:2}
/* Utan JS och vid prefers-reduced-motion ligger svep och glint parkerade
   utanför kant och nattlagret är släckt (opacity 0) — hjälten är då det rena
   fotot, komplett och stilla. Ingen egen media-regel behövs. */

/* ══════════════════════════ MÄRKESHJÄLTEN ═══════════════════════════════
   Loggan leder, inte en produktbild. Ett hus äger första skärmen med sitt
   märke; en generisk vara på sten läser som vilken plug-sida som helst. Här är
   26B-monogrammet hjälten, och HÄRDNINGEN läggs på SJÄLVA märket: en kall
   strålkastare sveper över det, metallytan i märket flarar där ljuset går fram
   och märket stiger ur mörkret. Samma motor som fotohjälten (--svep driver ljus
   och mörkerkant, --glint andas), men riktad mot märkets kontur via en mask.

   Fyra lager, alla skurna till märkets form med samma mask (--m-mask):
     .marke-yta   den gjutna kalla metallen — märkets vilobild, alltid synlig
     .marke-svep  den kalla strålkastaren, color-dodge, blommar på metallen
     .marke-glint en långsammare strimma som ligger kvar och andas
     .marke-natt  svärtan som JS tänder och sedan låter falla i ljusets spår
   Viloläge utan JS och vid reduced-motion: svepet parkerat utanför kant, natten
   släckt (opacity 0) — hjälten är då det rena metallmärket, stilla och komplett.
*/
/* Höjden räknas mot skärmen MINUS sidhuvudet. Menyn är sticky och ligger i
   flödet, så 100svh här betyder "en skärm som börjar 77 px ner" — och då
   hamnar hjältens fot, alltså taglinen och den enda knappen, alltid under
   vecket. Se --navh. */
.marke-hjalte{
  min-height:calc(100svh - var(--navh) - var(--samtycke-h));
  background:var(--natt);color:var(--ljus);
  overflow:clip;display:block;position:relative;
  /* Remsan kommer efter 1,2 s och går igen när man svarat. Höjden byts då i
     ett steg, och ett steg mitt i en öppningsbild läser som ett fel. Samma tid
     och samma kurva som remsans egen glidning: hjälten andas ut när remsan
     lämnar. */
  transition:min-height .5s var(--kurva);
}
/* ── Fonden. En rik, kall, dyr yta bakom märket i stället för platt svart.
   Bilden ligger som ett pseudo-lager UNDER hela innehållet (marke-in, z-index 1)
   och över den ligger en center-mörk scrim: nästan-svart rakt bakom märket,
   materialet lever i kanterna och mot hörnen. Så tävlar fonden aldrig med
   märket — den ger djup, märket förblir stjärnan. Grundtonen är fortfarande
   --natt, så utan bild (eller om den inte laddas) är hjälten den rena svärtan.
   --fond sätts av behandlingsklassen; utan klass ligger bara scrimmen och
   sektionen är mörk och komplett. */
.marke-hjalte::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:
    /* center-mörkret: djup svärta rakt bakom märket, öppnar mot kanterna */
    radial-gradient(116% 86% at 50% 47%,
      rgba(6,8,12,.94) 0%,rgba(6,8,12,.86) 22%,
      rgba(6,8,12,.5) 44%,rgba(6,8,12,.08) 66%,rgba(6,8,12,0) 82%),
    /* mild kall topp-glimt som möter fondens egen ljuskälla */
    radial-gradient(80% 54% at 50% 0%,
      rgba(150,178,220,.10) 0%,rgba(150,178,220,0) 60%),
    /* svag hörnvinjett så bilden inte slår i en hård rektangelkant */
    radial-gradient(148% 130% at 50% 46%,
      transparent 62%,rgba(3,4,8,.62) 100%),
    var(--fond,none) center/cover no-repeat,
    var(--natt);
  background-blend-mode:normal;
}
.marke-hjalte.fond-sammet{--fond:url(/img/fond-marke-sammet.webp)}
.marke-hjalte.fond-sten{--fond:url(/img/fond-marke-sten.webp)}

/* ── GNISTRET. Diamanterna själva ligger i FONDEN. fond-marke-sammet.webp är
   ett foto av lösa slipade diamanter nedbäddade i svart sammet (Pexels 5442447,
   gratislicens) — komponerat i fond-sammet.py: stenen mitt i bild målas ut med
   sammet ur samma foto så mitten blir lugnt mörker, och två stenar får ligga
   kvar LÅGT i vecken MED sin egen bädd, kontaktskuggan och tygreflexen under
   dem. De sitter alltså I tyget för att de gör det i fotot, inte som pålagda
   diskar. Det här lagret ritar därför INGA stenar. Dess enda jobb är härdnings-
   GLIMTEN: när det kalla svepet drar förbi ska stenarna som redan ligger i
   tyget tändas.

   fond-marke-sammet-glimt.webp är ett ADDITIVT lager i samma geometri (samma
   center/cover ⇒ i register med fonden): svart tyg, ljust BARA på facetterna.
   Det screen-blendas i ett smalt band kring fronten (--svep). Svart adderar
   ingenting i screen, så velouren rörs inte — bara stenens facetter tänds i
   bandet och slocknar igen när ljuset dragit vidare. I vila (svep parkerat
   utanför kant, och utan JS / vid reduced-motion) ligger bandet utanför bild:
   släckt, och stenarna är då bara sina lugna bäddade glimtar i fonden.
   Lagret sitter över sammeten men UNDER märket och texten (marke-in, z-index 1),
   så det tävlar aldrig med monogrammet. Styrkan skalas av --gnistr. */
.marke-gnistr{
  position:absolute;inset:0;z-index:0;pointer-events:none;
  opacity:var(--gnistr,.9);
}
.gnistr-niva-1{--gnistr:.9}
.gnistr-niva-2{--gnistr:1}
.marke-gnistr::after{
  content:"";position:absolute;inset:0;display:block;
  background:url(/img/fond-marke-sammet-glimt.webp) center/cover no-repeat;
  mix-blend-mode:screen;
  --front:calc(var(--svep,1.6) * 100%);
  -webkit-mask:linear-gradient(100deg,transparent calc(var(--front) - 16%),
    rgba(0,0,0,.5) calc(var(--front) - 6%),#000 var(--front),
    rgba(0,0,0,.5) calc(var(--front) + 6%),transparent calc(var(--front) + 16%));
  mask:linear-gradient(100deg,transparent calc(var(--front) - 16%),
    rgba(0,0,0,.5) calc(var(--front) - 6%),#000 var(--front),
    rgba(0,0,0,.5) calc(var(--front) + 6%),transparent calc(var(--front) + 16%));
}
.marke-hjalte .marke-in{
  position:relative;z-index:1;
  min-height:calc(100svh - var(--navh) - var(--samtycke-h));
  transition:min-height .5s var(--kurva);
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding-block:clamp(30px,5vh,58px) clamp(38px,7vh,84px);
}
.marke-hjalte .etikett{margin:0}
/* Mitten sväljer luften: märket står centrerat i det som blir över mellan
   etiketten och foten, så hjälten andas oavsett skärmhöjd. */
.marke-mitt{flex:1 1 auto;display:flex;align-items:center;justify-content:center;
  width:100%;min-height:0;position:relative}

/* Platet bär märket. Proportionen är monogrammets egen (150.5×75), så masken
   fyller det utan att tänja formen. En kall ljuspool bakom gör att märket sitter
   i atmosfär i stället för att klistras på svart. */
.marke-plat{
  position:relative;width:min(660px,82vw);aspect-ratio:150.5 / 75;
}
.marke-tyst .marke-plat{width:min(720px,86vw)}
.marke-full .marke-plat{width:min(560px,74vw)}
.marke-plat::before{
  content:"";position:absolute;inset:-70% -34%;z-index:0;pointer-events:none;
  background:radial-gradient(50% 50% at 50% 46%,
    rgba(150,180,222,.17) 0%,rgba(120,152,198,.06) 42%,rgba(120,152,198,0) 72%);
}
.marke-plat>span{
  position:absolute;inset:0;pointer-events:none;
  -webkit-mask:var(--m-mask) center/contain no-repeat;
          mask:var(--m-mask) center/contain no-repeat;
}
/* Den gjutna metallen. En kall lodrät gradient läser som borstad platina: mörk
   överkant, en het högdager i övre tredjedelen, svalare mitt, en andra dager
   mot botten och djup blåsvärta i nederkant. Ingen värme, ingen guldton — det
   är husets kalla riktning, och märket ska kännas som ett gjutet sigill. */
.marke-yta{
  z-index:1;
  background:linear-gradient(174deg,
    #1b232e 0%,#38485a 12%,#c2cfdc 28%,#8391a2 42%,
    #5f6b7b 54%,#9aa9b9 69%,#3a4756 86%,#171e28 100%);
}
/* Svepet: den kalla strålkastaren. Masken (på .marke-svep) håller ljuset inom
   märkets kontur; den inre remsan glider med --svep, så ljuset vandrar över
   monogrammet utan att masken följer med. color-dodge: högdagrarna i metallen
   flarar kallt när remsan passerar. */
.marke-svep{z-index:2;mix-blend-mode:color-dodge;overflow:clip}
.marke-svep>i{
  position:absolute;inset:0;display:block;
  background:linear-gradient(102deg,
    rgba(150,180,220,0) 34%,
    rgba(150,178,216,.16) 44%,
    rgba(214,228,246,.42) 49%,
    rgba(255,255,255,.72) 50%,
    rgba(214,228,246,.42) 51%,
    rgba(150,178,216,.16) 56%,
    rgba(150,180,220,0) 66%);
  transform:translate3d(calc((var(--svep,1.6) - .5) * 130%),0,0);
  will-change:transform;
}
.marke-glint{z-index:2;mix-blend-mode:screen;overflow:clip}
.marke-glint>i{
  position:absolute;inset:0;display:block;
  background:linear-gradient(102deg,
    rgba(150,186,230,0) 40%,
    rgba(206,226,252,.34) 50%,
    rgba(150,186,230,0) 60%);
  transform:translate3d(calc((var(--glint,1.6) - .5) * 130%),0,0);
  will-change:transform;
}
/* Natten: svärtan över märket. Formen skärs av wrapperns mask (.marke-plat>span)
   och avslöjningsfronten av det inre lagrets EGEN mask — nästlade masker ger
   snittet utan mask-composite, som Chromium inte tillämpade pålitligt. Mörkret
   ligger bara till HÖGER om fronten, så metallen avtäcks där strålkastaren just
   gått fram. Wrappern är släckt som grund (opacity 0): utan JS ingen svärta. */
.marke-natt{z-index:3;opacity:0}
.marke-natt>i{
  position:absolute;inset:0;display:block;
  --front:calc(var(--svep,1.6) * 100%);
  /* Nästan tät. Ritlagret ligger ovanpå natten, och en halvgenomskinlig natt
     visade metallens form redan innan linjen var dragen — då är avtäckningen
     bortgiven innan den skett. Kvar är en aning djup i mitten så formen anas
     som en skugga, inte som en pjäs. */
  background:
    radial-gradient(120% 130% at 50% 46%,rgba(3,5,9,.9) 26%,rgba(2,3,7,.99) 100%),
    var(--natt-lo);
  -webkit-mask:linear-gradient(102deg,transparent calc(var(--front) - 17%),
    rgba(0,0,0,.55) calc(var(--front) - 3%),#000 calc(var(--front) + 11%));
  mask:linear-gradient(102deg,transparent calc(var(--front) - 17%),
    rgba(0,0,0,.55) calc(var(--front) - 3%),#000 calc(var(--front) + 11%));
}

/* ── RITLAGRET. Sajtens signaturögonblick, och husets tes i en enda rörelse:
   monogrammet ritas som en kall linje och gjuts sedan till metall när
   härdningssvepet drar förbi. Samma händelse som gjutsektionen längre ner på
   startsidan visar under läsarens egen hand.

   Kurvorna är märkets egna (logga.py), i samma viewBox som masken, alltså
   ligger linjen exakt på metallens kant och kan aldrig glida ur register.
   Fyllningen är av och konturen står som ett hårstreck: stroke-width är i
   viewBox-enheter, så linjen skalar med platet och håller sig runt en och en
   halv bildpunkt från telefon till skrivbord. Färgen är svepets, inte
   metallens — linjen är LJUS, inte bläck, och den svaga glorian gör den till
   en skärande stråle i stället för en teckning.

   Masken är EXAKT nattlagrets: båda finns bara framför fronten. Bakom fronten
   ligger gjuten metall, framför den ligger mörker och en linje. Linjen tonar
   alltså aldrig bort — den äts upp av ljuset.

   Släckt som grund. Utan JS och vid prefers-reduced-motion finns ingen linje
   över märket, och hjälten är det rena metallmonogrammet. */
.marke-ritning{
  position:absolute;inset:0;z-index:4;pointer-events:none;opacity:0;
  --front:calc(var(--svep,1.6) * 100%);
  filter:drop-shadow(0 0 5px rgba(150,186,232,.55));
  -webkit-mask:linear-gradient(102deg,transparent calc(var(--front) - 17%),
    rgba(0,0,0,.55) calc(var(--front) - 3%),#000 calc(var(--front) + 11%));
  mask:linear-gradient(102deg,transparent calc(var(--front) - 17%),
    rgba(0,0,0,.55) calc(var(--front) - 3%),#000 calc(var(--front) + 11%));
}
.marke-ritning path{
  fill:none;stroke:#c3d8f4;stroke-width:.34;
  stroke-linejoin:round;stroke-linecap:round;
}

/* Taglinen. Under ett dominant märke är märket displayregistret — taglinen ska
   inte tävla. Satt lugnt och smalt, inte i jättegrad. */
.marke-tagg{font-size:clamp(19px,2.1vw,27px);line-height:1.16;letter-spacing:-.008em;
  color:var(--ljus);max-width:20ch;margin:0 auto}
.marke-tyst .marke-fot{gap:clamp(24px,3.4vh,38px)}
.marke-full .marke-fot{gap:clamp(18px,2.4vh,28px)}
.marke-full .marke-fot h1{max-width:16ch;margin:0 auto}
.marke-full .marke-fot .lede{color:var(--ljus-2);max-width:44ch;margin:0 auto}
.marke-full .hjalte-knappar{justify-content:center}
.marke-full .matt{margin-inline:auto;margin-top:clamp(30px,4vh,52px);max-width:520px}
.marke-full{min-height:auto}
.marke-full .marke-in{min-height:calc(92svh - var(--navh));
  padding-block:clamp(30px,5vh,58px) clamp(30px,5vh,64px)}

@media (prefers-reduced-motion:reduce){
  .marke-hjalte,.marke-hjalte .marke-in{transition:none}
}

@media (max-width:860px){
  .marke-tyst .marke-plat{width:min(440px,84vw)}
  .marke-full .marke-plat{width:min(400px,80vw)}
  .marke-tagg{font-size:clamp(19px,5.4vw,25px);max-width:16ch}
  /* Strecket är i viewBox-enheter och skalar alltså med platet. På telefon är
     platet halva bredden och linjen landar under en bildpunkt, alltså blir den
     grå i stället för skarp. Grövre streck här ger samma upplevda hårfinhet. */
  .marke-ritning path{stroke-width:.5}
}

/* --------------------------------------------------- 7 Komponenter */

/* ═══════════════════════ DATAGRAMMATIKEN ═══════════════════════════════
   Hämtad från droppsidan, som är det enda på sajten Filip dömt som rätt utan
   förbehåll. Fyra komponenter, en regel: allt som är en avläsning sätts som en
   avläsning, i mono, och står i en hårstreckstabell i stället för i ett kort.

   Varför det bygger förtroende och kort inte gör det: ett kort med skugga är en
   annons, en tabell är ett dokument. Samma siffra i den ena läser som ett
   löfte och i den andra som en uppgift.

   Huset bär dem i sin egen dress — Bodoni och brons, inte kondenserad Archivo
   och kall metall. Droppet behåller sina kläder i dropp.css, så rummen är
   fortfarande två.

   HUSET SÄLJER INTE HYLLVARA. Därför finns det inget pris i .konstr — sex namn
   med "Från 18 000 kr" bredvid är ett sortiment hur elegant hårstrecken än
   sitter, och det gjorde custom till en bisak. Priset hör i offerten efter
   ritningen. Droppet är det enda på sajten som har antal och pris, och det är
   just det som gör det till en händelse. */

/* Datarad: värden i celler med hårstreck emellan. Ersatte .trappa, som var tre
   punkter på en tidslinje — snyggt, men det var en illustration av en process
   och inte en avläsning av den. */
.dat{
  display:flex;flex-wrap:wrap;gap:0;
  border:1px solid var(--linje);
}
.sek-mork .dat,.hjalte .dat{border-color:var(--natt-linje)}
.dat>div{
  flex:1 1 150px;padding:clamp(16px,1.8vw,22px) clamp(16px,1.8vw,24px);
  border-right:1px solid var(--linje);
}
.sek-mork .dat>div{border-right-color:var(--natt-linje)}
.dat>div:last-child{border-right:0}
.dat b{
  display:block;font-family:var(--mono);font-weight:400;
  font-size:clamp(20px,2.4vw,28px);line-height:1;color:var(--ink);
  font-variant-numeric:tabular-nums;
}
.sek-mork .dat b{color:var(--ljus)}
.dat span{
  display:block;margin-top:10px;font-family:var(--mono);
  font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);
}
.sek-mork .dat span{color:var(--ljus-3)}
@media (max-width:620px){
  /* Fyra celler i en kolumn blir en lista. Två och två håller ihop som en
     tabell, vilket är vad den ska läsa som. */
  .dat>div{flex:1 1 46%}
  .dat>div:nth-child(even){border-right:0}
}

/* Stegregistret: numret hänger i marginalen i mono, en rad text, hårstreck.
   Processen fick inte ligga på startsidan förut eftersom en sammanfattning av
   den gjorde sidan till en broschyr. Det gäller fortfarande en sammanfattning
   i kort — men custom är husets huvudben, och ett register är inte en
   sammanfattning, det är en innehållsförteckning. */
/* Ramen: ett block vars bredd är räknad mot sektionens lodräta luft, centrerat i
   satsytan. Används av de sektioner som är TABELLER — vägen in och registret.

   Skälet att de behöver ett eget mått: en tabell vars text tar slut vid 830 px
   men vars hårstreck fortsätter till 1380 läser onaturligt bred, för strecken
   pekar ut i tomma intet.

   CENTRERAD, till skillnad från resten av sidan. Medvetet undantag: en tabell
   med lika mycket luft på båda sidor läser som ett uppslag, medan samma tabell
   vänsterställd bara ser ut att sakna sin högra tredjedel.

   RUBRIKRADEN MÅSTE LIGGA INNANFÖR ramen. Låg den utanför spände rubriken hela
   satsytan medan tabellen slutade tidigare, och då har sektionen två
   högerkanter, vilket läser som skevt och inte som asymmetriskt.

   MÅTTET ÄR RÄKNAT, inte valt. Sektionen har 144 px luft upptill och nedtill, så
   innehållet ska ha ungefär lika mycket i sidled: (1440 - 1160) / 2 = 140. Vid
   1010 px blev sidoluften 215, alltså femtio procent mer än den lodräta, och då
   läser blocket som klämt på höjden och svävande på bredden. En inramning läses
   som jämn när sidorna är lika stora som eller något mindre än topp och botten,
   aldrig när de är större. */
.ram{max-width:1160px;margin-inline:auto}

/* Undersidorna är dokument, inte kompositioner. Startsidan växlar bredd mellan
   varje sektion för att hålla rytmen; en undersida ska i stället läsa som EN
   spalt hela vägen ner, och då ska allt i den dela samma två kanter.

   Regeln sätter ramen på varje barn till satsytan i stället för att kräva en
   extra div i märkningen. Remsorna undantas: deras text ligger över ett foto
   som går kant till kant, och där är vänsterkanten hela poängen. */
/* VÄNSTERKANTEN. margin-inline:auto centrerar 1160-spalten i den 1320 breda
   satsytan, och det är rätt för ett block som ÄR 1160. Men måtten längre ner
   ger etiketter, ingresser och stycken en smalare bredd, och auto centrerade
   då även dem: mätt på /sigillet/ och /verifiera/ låg etiketten och ingressen
   på 521 px medan rubriken och tabellen låg på 140. Alltså delade ingenting
   på sidan vänsterkant, vilket är precis vad ett dokument ska göra.
   Vänstermarginalen räknas därför ut i stället för att lämnas till auto: den
   är spaltens eget insteg, samma tal som auto hade gett ett 1160-block, och
   noll så fort satsytan är smalare än spalten. */
.sida-dok main > section:not(.band) > .wrap > *{
  max-width:1160px;margin-inline:max(0px,(100% - 1160px) / 2) auto;
}
.sida-dok main > section:not(.band) > .wrap > .sek-topp{max-width:1160px}
/* SATSYTANS MÅTT ÄR INTE TEXTENS MÅTT.
   Regeln ovan sätter 1160 px på varje direkt barn till satsytan, och den vinner
   på specificitet över .lede (58ch) och .lede.smal-txt (52ch). Följden var att
   ingressen på /sigillet/ och /sten-och-metall/ gick hela 1160 px bred, alltså
   133 tecken per rad mätt vid 1440 — och att klassen som heter smal-txt inte
   gjorde någonting alls. Måtten skrivs därför tillbaka med samma specificitet.
   min() gör att raden aldrig blir bredare än ramen på smal skärm heller. */
.sida-dok main > section:not(.band) > .wrap > .lede{max-width:min(1160px,58ch)}
.sida-dok main > section:not(.band) > .wrap > .lede.stor{max-width:min(1160px,48ch)}
.sida-dok main > section:not(.band) > .wrap > .lede.smal-txt{max-width:min(1160px,52ch)}
.sida-dok main > section:not(.band) > .wrap > p{max-width:min(1160px,64ch)}
/* Samma sak utanför dokumentsidorna: ett stycke i ett tvåspaltsblock ärver
   spaltens bredd på dator, men på en skärm mellan 620 och 900 px blir blocket
   en spalt och stycket lika brett som satsytan. Mätt på /sa-gar-det-till/ vid
   768: 109 tecken per rad. */
.par p{max-width:64ch}

/* DOKUMENTREGISTRET.
   ==========================================================================
   Undersidorna körde startsidans skala rakt av, och det var för stort. Mätt
   vid 1440: hjälterubriken 95 px, sektionsrubrikerna 66, sektionsluften 144
   upp och 144 ner — alltså 288 mellan varje block.

   På startsidan är de måtten riktiga. Där finns fem påståenden och vart och
   ett ska väga. En undersida har åtta block som alla är upplysningar, och när
   varenda upplysning sätts i display skriker hela sidan lika högt och
   ingenting bär mer än något annat. Det är det som läser som
   överdimensionerat: inte att någon enskild siffra är för stor, utan att det
   inte finns någon andra nivå att falla till.

   Steget ner är ungefär en tredjedel, vilket är stort nog att bli ett eget
   register och inte bara en justering. Remsorna undantas — de är sidans enda
   display-ögonblick, och en remsa med dokumentrubrik är inte längre en remsa. */
.sida-dok{
  --sek:clamp(64px,7.4vw,106px);
  --sek-tyst:clamp(84px,9.6vw,146px);
  --sek-tat:clamp(40px,4.2vw,60px);
}
.sida-dok .jatte{font-size:clamp(34px,4.4vw,62px);line-height:.94}
.sida-dok :not(.band) > .wrap .d.stor,
.sida-dok .sek-topp .d.stor{font-size:clamp(25px,3.1vw,42px);line-height:1.02}
.sida-dok .lede.stor{font-size:clamp(17px,1.4vw,20px)}
.sida-dok .fraga summary{font-size:clamp(18px,1.5vw,23px);padding-block:21px}
.sida-dok .betal-vad{font-size:clamp(21px,2.1vw,30px)}
.sida-dok .betal-rad{padding-block:17px}
.sida-dok .betal{margin-block:30px}
/* Stegsiffran stod kvar på 144 px när hjälterubriken gick ner till 62. Då var
   sidans största typografi ett radnummer, och det är inte en hierarki utan en
   olycka. Den ska vara stor — den är spaltens enda innehåll — men under
   rubriken den står inne i. */
.sida-dok .stegen-nr{font-size:clamp(56px,6.2vw,92px)}
.sida-dok .stegen-namn{font-size:clamp(19px,1.8vw,25px);margin-top:14px}

.stegreg{display:grid;gap:0}
.stegreg li{
  display:grid;grid-template-columns:58px minmax(0,1fr);
  gap:clamp(14px,2vw,32px);align-items:baseline;
  padding:clamp(20px,2.4vw,30px) 0;border-top:1px solid var(--linje);
}
.stegreg li:last-child{border-bottom:1px solid var(--linje)}
.sek-mork .stegreg li{border-color:var(--natt-linje)}
.stegreg .snr{
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;
  color:var(--ink-3);font-variant-numeric:tabular-nums;
}
.sek-mork .stegreg .snr{color:var(--ljus-3)}
.stegreg h3{font-family:var(--serif);font-weight:400;
  font-size:clamp(20px,2.2vw,29px);line-height:1.04;letter-spacing:-.014em}
/* grid-column måste sättas explicit. Med automatisk placering hamnar stycket i
   spalt 1 — alltså i den 58 px breda sifferkolumnen — och radbryts på var
   tredje bokstav. Rubriken tog spalt 2 på rad 1, och nästa fria cell är spalt 1
   på rad 2. */
.stegreg p{grid-column:2;margin-top:9px;font-size:15px;color:var(--ink-2);
  max-width:56ch}
.sek-mork .stegreg p{color:var(--ljus-2)}
@media (min-width:820px){
  /* Texten flyttar ut i en egen spalt så raden läser som ett uppslag och inte
     som ett stycke med en siffra framför. */
  .stegreg li{grid-template-columns:58px minmax(0,5fr) minmax(0,5fr)}
  .stegreg p{grid-column:3;margin-top:0}
}

/* Konstruktionerna. Namn i serif, MÅTT i mono, inget pris. */
.konstr{display:grid;gap:0}
.konstr a{
  display:grid;grid-template-columns:minmax(0,1fr) auto;
  gap:10px clamp(16px,3vw,40px);align-items:baseline;
  padding:clamp(22px,2.6vw,34px) 0;border-top:1px solid var(--linje);
  text-decoration:none;transition:padding-left .45s var(--kurva);
}
.konstr a:last-child{border-bottom:1px solid var(--linje)}
/* Indraget hör till pekdonet. På en telefon blev det klibbigt: raden man
   råkade lägga fingret på stod kvar förskjuten. */
@media (hover:hover){.konstr a:hover{padding-left:12px}}
.konstr .knamn{font-family:var(--serif);font-weight:400;
  font-size:clamp(24px,3.2vw,44px);line-height:1;letter-spacing:-.02em}
.konstr .krad{grid-column:1;font-size:14px;color:var(--ink-2)}
.konstr .kmatt{
  grid-row:1/span 2;grid-column:2;align-self:center;text-align:right;
  font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--ink-3);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.konstr .kmatt i{display:block;font-style:normal;font-size:10px;
  letter-spacing:.14em;text-transform:uppercase;margin-bottom:5px}
@media (max-width:560px){
  .konstr .kmatt{grid-row:auto;grid-column:1;text-align:left;margin-top:4px}
}

/* Följesedeln i husets dress. Samma tabell som droppet, andra färger. Ett
   intyg som ser ut som ett dokument från en verkstad är trovärdigare än ett
   diplom i guldram — och numret ska väga mer än rubriken. */
.sedel{border-collapse:collapse;width:100%;font-variant-numeric:tabular-nums}
.sedel th,.sedel td{
  text-align:left;padding:14px 18px 14px 0;
  border-bottom:1px solid var(--linje);font-weight:400;vertical-align:baseline;
}
.sek-mork .sedel th,.sek-mork .sedel td{border-color:var(--natt-linje)}
.sedel th{
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--ink-3);width:34%;
}
.sek-mork .sedel th{color:var(--ljus-3)}
.sedel td{font-family:var(--mono);font-size:14px;color:var(--ink)}
.sek-mork .sedel td{color:var(--ljus)}
/* Cookietabellen i policyn: namnet i mono som en avläsning, förklaringen i
   brödtextens snitt — ett cookienamn är data, en förklaring är text. */
.sedel-cookies{margin:8px 0 20px;max-width:64ch}
.sedel-cookies th{width:26%;text-transform:none;letter-spacing:0;font-size:13px;color:var(--ink)}
.sedel-cookies td{font-family:inherit;font-size:15px;line-height:1.5;color:var(--ink-2)}
@media (max-width:560px){
  .sedel th,.sedel td{display:block;width:auto;border:0;padding:0}
  .sedel th{padding-top:16px}
  .sedel td{padding-bottom:16px;border-bottom:1px solid var(--linje)}
}

/* INTYGET SOM TRYCKSAK.
   Ingen ram, ingen centrering, hela satsytan. Ett dokument har inte en kant
   runt sig — det har en satsyta, och uppgifterna hänger på hårstreck.
   .intyg-* är borttagna: de byggde ett vitt kort med rundade hörn, alltså
   exakt det som DATAGRAMMATIKEN säger att ett intyg inte får vara. */
.blad-bild{overflow:hidden}
/* height:auto krävs — utan den vinner height-attributet över aspect-ratio
   (mätt: 21/9-regeln bet aldrig). Positionen siktar på låset, som i den
   stående registerbilden ligger nere till vänster; mitten är bokeh. */
.blad-bild img{width:100%;height:auto;aspect-ratio:21/9;object-fit:cover;object-position:28% 66%}
.blad-namn{margin-top:clamp(30px,3.4vw,50px)}
.blad-sedel{margin-top:clamp(22px,2.6vw,36px)}

/* Rapportnumret. Sidans största typografi, i mono, och det är en hierarki-
   fråga och inte en effekt: allt annat på intyget är vårt eget ord, det här
   är det enda någon annan står bakom. Det är alltså det som bär värdet.
   Numret är ett STRECK tills laboratoriet satt ett. */
.rapport{border-top:1px solid var(--natt-linje);padding-top:clamp(20px,2.4vw,30px)}
.rapport-lab{font-family:var(--mono);font-size:11px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--ljus-3)}
.rapport-nr{
  font-family:var(--mono);font-weight:400;
  font-size:clamp(56px,9.4vw,128px);line-height:1;letter-spacing:.02em;
  margin-top:clamp(8px,1.2vw,16px);padding-bottom:clamp(14px,1.8vw,26px);
  border-bottom:1px solid var(--natt-linje);
}
/* Ett OSATT värde ska vara tyst. Tonen låg redan här men slogs ut av
   .sek-mork p, som väger tyngre — strecket stod i full ljus och läste som en
   överstruken uppgift. Och ett monostreck satt i 128 px är inte ett streck
   längre utan en balk, alltså sätts det i avläsningens egen grad. Radens
   plats i uppställningen ändras inte: numret får höjden när det finns. */
.rapport .rapport-nr{color:var(--ljus-3)}
.rapport .rapport-nr:not(.satt){font-size:clamp(30px,3.4vw,44px)}
/* Ett satt nummer får inte brytas. Vid 128 px blev GRA-2409881 bredare än
   spalten och delades till "GRA-" och "2409881" på två rader — en kod som
   bryts mitt itu läser som två koder, och den ska gå att jämföra med
   laboratoriets sida på en blick. Graden är räknad så att elva tecken i mono
   ryms i åttondelsspalten vid 1440 och i hela satsytan vid 390. */
.rapport .rapport-nr.satt{color:var(--ljus);white-space:nowrap;
  font-size:clamp(40px,6.4vw,96px)}
/* Måttet 34ch bröt en rad på 47 tecken i tre stumpar mitt i en spalt som var
   dubbelt så bred. Upplysningen får spaltens mått. */
.rapport .platsmark{border-top:0;padding-top:0;margin-top:14px}

/* PASSET. Exemplarraden under rubriken: serienumret och platsen i upplagan,
   i mono och åtskilda av ett hårstreck. Den är sidans identitet — inte en
   underrubrik — och sätts därför som en avläsning och inte som brödtext.
   Talen är tabulära så att 03/10 och 10/10 står lika breda. */
.pass-id{
  font-family:var(--mono);font-size:clamp(13px,1.5vw,17px);
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);
  font-variant-numeric:tabular-nums;
  margin-top:clamp(18px,2vw,26px);
  display:flex;flex-wrap:wrap;align-items:center;gap:0 16px;
}
.pass-id>i{width:34px;height:1px;background:var(--linje);display:inline-block}
.sida-pass .sid-topp .pass-id{color:var(--ink)}

/* Passets fot. Två uppgifter på hårstreck, satta som en uppställning och inte
   som ett stycke. Här stod tidigare tre spalter som förklarade vad kortet var
   och inte var — ett hus som argumenterar mot ett påstående ingen gjort läser
   som osäkert, och tre rubriker som börjar med "Vad" är en frågesida och inte
   ett dokument. */
.pass-fot{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(24px,3vw,56px);margin:0;
}
.pass-fot>div{border-top:1px solid var(--linje);padding-top:22px}
.pass-fot dt{
  font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;
  color:var(--ink-2);margin-bottom:12px;
}
.pass-fot dd{margin:0;font-size:15px;line-height:1.6;color:var(--ink)}
@media (max-width:620px){.pass-fot{grid-template-columns:1fr}}

/* Gravyren delar rapportens uppställning men inte dess grad. Numret i
   metallen är VÅRT ord, rapportnumret är någon annans — de får inte se lika
   tunga ut, för då säger sidan att de väger lika mycket. */
.pass-gravyr{border-top:1px solid var(--natt-linje);padding-top:clamp(20px,2.4vw,30px)}
.pass-gravyr-nr{
  font-family:var(--mono);font-weight:400;color:var(--ljus);
  font-size:clamp(34px,5.2vw,72px);line-height:1;letter-spacing:.02em;
  margin-top:clamp(8px,1.2vw,16px);padding-bottom:clamp(14px,1.8vw,26px);
  border-bottom:1px solid var(--natt-linje);
}

/* Platshållarmärket. Står VID föremålet: ett hårstreck och ett ord i mono
   under den bild som inte föreställer den faktiska pjäsen. Den globala
   brasklappen i sidfoten är struken — en rad längst ned läser som att hela
   sajten är påhittad, en rad under bilden säger vad som gäller för just den.
   Liten med flit: en upplysning, inte en varning. */
.platsmark{
  margin-top:9px;padding-top:8px;border-top:1px solid var(--linje);
  font-family:var(--mono);font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink-3);
}
.sek-mork .platsmark,.hjalte .platsmark,.pjas-hjalte .platsmark,
.gjut .platsmark,.band .platsmark{border-top-color:var(--natt-linje);color:var(--ljus-3)}

/* Villkoren. Ersatte .nej — samma innehåll, men på hårstreck i stället för i
   en punktlista, så reglerna läser som villkor och inte som argument. */
.villkor{display:grid;gap:0}
.villkor li{
  display:grid;gap:10px;padding:clamp(22px,3vw,32px) 0;
  border-top:1px solid var(--linje);
}
.villkor li:last-child{border-bottom:1px solid var(--linje)}
.sek-mork .villkor li{border-color:var(--natt-linje)}
.villkor b{font-family:var(--serif);font-weight:400;
  font-size:clamp(19px,2.2vw,28px);line-height:1.04;letter-spacing:-.014em}
.villkor p{margin:0;font-size:15px;color:var(--ink-2);max-width:58ch}
.sek-mork .villkor p{color:var(--ljus-2)}
@media (min-width:820px){
  .villkor li{grid-template-columns:minmax(0,5fr) minmax(0,7fr);
    gap:clamp(24px,4vw,56px)}
}


/* Fullbreddsremsa. Ett hårt beskuret foto som går kant till kant med en enda
   mening över. Den bryter rytmen — utan den kommer sektionerna i samma takt
   hela vägen ner och sidan läses som en katalog. */
.band{position:relative;background:var(--natt);color:var(--ljus);overflow:clip;
  min-height:clamp(360px,58vh,620px);display:flex;align-items:center}
.band-bild{position:absolute;inset:0;z-index:0}
.band-bild img{width:100%;height:118%;object-fit:cover}
/* Vinjetten ligger sist i listan, alltså underst, och rör bara hörnen. Den
   sitter på varje fotobärande yta av samma skäl: ett foto som är lika ljust
   ända ut i kanten läser som en skärmdump av ett foto, inte som ett rum. */
.band-bild::after{content:"";position:absolute;inset:0;
  background:var(--kant-topp),var(--kant-bott),
    linear-gradient(90deg,rgba(22,17,11,.9),rgba(12,11,10,.42) 58%,rgba(8,8,10,.74)),
    radial-gradient(48% 54% at 14% 44%,rgba(var(--aura-rgb),.14) 0%,
      rgba(var(--aura-rgb),.05) 46%,rgba(var(--aura-rgb),0) 74%),
    radial-gradient(124% 104% at 48% 42%,rgba(6,7,10,0) 34%,rgba(6,7,10,.62))}
.band-in{position:relative;z-index:1;padding-block:clamp(56px,7vw,96px)}
.band h2{max-width:16ch}
.band p{color:var(--ljus-2);max-width:46ch}
.band .btn{margin-top:36px}

/* ═══════════════════════ RITNINGEN BLIR METALL ═════════════════════════
   Husets grepp, och sajtens enda minnesbild utanför dörren. Löftet är "du ser
   din pjäs innan den finns", alltså ritningen före föremålet — och det löftet
   var fram till nu bara PÅSTÅTT i text. Här visas det.

   Båda bildrutorna kommer ur samma fil: cad/tennis.py bygger tennisarmbandet
   ur parametrar och renderar det två gånger från EXAKT samma kamera, en gång
   som lysande trådmodell (--ritning) och en gång som gjuten pjäs. Ingen
   bildmodell är inblandad, och registreringen är därför perfekt ner till
   klon — det är samma geometri, inte två bilder som liknar varandra.

   Rörelsen: en mjuk maskkant sveper tvärs bilden i takt med rullningen och
   byter trådmodellen mot metallen. Kanten är en toning över nio procent av
   bredden och inte en linje; en hård diagonal läser som en bildspelsövergång.

   UTAN SKRIPT FINNS INGEN RITNING. Lagret läggs in av sajt.js och står inte i
   märkningen, alltså är sektionen då den gjutna pjäsen ensam med sin mening —
   fullständig, inte trasig. Samma princip som dörren framför droppet. */
.gjut{
  position:relative;background:var(--natt);color:var(--ljus);overflow:clip;
  min-height:clamp(560px,96svh,1000px);display:flex;align-items:flex-end;
}
.gjut-duk{position:absolute;inset:0;z-index:0;background:#000}
.gjut-duk img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
/* Maskkanten. --w går från 0 till 112 och skjuter fronten tvärs bilden.
   Enheten läggs på i calc så att GSAP får tweena ett rent tal. */
.gjut-ritning{
  -webkit-mask-image:linear-gradient(101deg,
    #0000 calc(var(--w,0) * 1% - 9%),#000 calc(var(--w,0) * 1%));
  mask-image:linear-gradient(101deg,
    #0000 calc(var(--w,0) * 1% - 9%),#000 calc(var(--w,0) * 1%));
}
/* Fronten. Samma kalla ljus som härdar monogrammet i hjälten, nu lagt på den
   kant där trådmodellen blir gjuten pjäs — hjälten lovar händelsen, den här
   sektionen låter läsaren utföra den med sin egen hand. screen: ljus adderas
   på fotot, svärtan i bandets kanter lägger ingenting till.
   --frontljus tänds av skriptet i samma andetag som ritlagret skapas. Utan
   skript är sektionen den gjutna pjäsen ensam, utan kant och utan ljus. */
.gjut-duk::before{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  opacity:var(--frontljus,0);mix-blend-mode:screen;
  --f:calc(var(--w,0) * 1%);
  background:linear-gradient(101deg,
    rgba(150,180,220,0) calc(var(--f) - 11%),
    rgba(150,178,216,.14) calc(var(--f) - 4.5%),
    rgba(222,238,255,.62) calc(var(--f) - 1%),
    rgba(150,178,216,.14) calc(var(--f) + 2.5%),
    rgba(150,180,220,0) calc(var(--f) + 9%));
}
/* Samma slöja som remsan, men tyngre nedtill: texten står i underkanten och
   pjäsen löper diagonalt genom bildens mitt. */
.gjut-duk::after{
  content:"";position:absolute;inset:0;z-index:1;
  background:var(--kant-topp),
    linear-gradient(0deg,rgba(8,8,10,.9) 0%,rgba(8,8,10,.5) 38%,rgba(8,8,10,0) 68%),
    radial-gradient(52% 50% at 14% 84%,rgba(var(--aura-rgb),.16) 0%,
      rgba(var(--aura-rgb),.05) 48%,rgba(var(--aura-rgb),0) 76%),
    radial-gradient(124% 104% at 48% 42%,rgba(6,7,10,0) 40%,rgba(6,7,10,.6));
}
/* Blocket är en .wrap och ska ligga i satsytan som allt annat. En egen
   width:100% här slog ut wrappens mått, och rubrik, avläsning och knapp låg
   kant i kant med fönstret medan resten av sidan höll 60 px marginal.
   Flexboxen får i stället bredden av wrappen själv och auto-marginalerna. */
.gjut-in{position:relative;z-index:2;padding-block:clamp(52px,8vh,104px);flex:0 1 auto}
.gjut-in h2{max-width:15ch}
/* Måttet är satt efter cellernas innehåll: vid 820 px bröt "30 stenar" på två
   rader medan grannarna stod på en, och etiketten under hamnade en rad ner.
   Avläsningen står dessutom på natt utan att sektionen är .sek-mork, och tog
   därför ljusa sektioners bläckfärg: nästan svart text på ett svart foto. */
.gjut-in .dat{margin-top:clamp(28px,3.4vw,44px);max-width:920px;
  border-color:var(--natt-linje)}
.gjut-in .dat>div{border-right-color:var(--natt-linje)}
.gjut-in .dat b{color:var(--ljus)}
.gjut-in .dat span{color:var(--ljus-3)}
.gjut-in .btn{margin-top:clamp(30px,3.6vw,46px)}
/* Läget: ett ord i mono som säger vad man tittar på just nu. Byts av skriptet
   när fronten passerat halva bilden. Utan skript står "Pjäs", vilket är sant. */
.gjut-lage{
  display:flex;align-items:center;gap:14px;margin-top:22px;
  font-family:var(--mono);font-size:11px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--guld);
}
.gjut-lage::before{content:"";width:34px;height:1px;background:currentColor}

/* Storyn på startsidan. Satt som ett brev, inte som en sektion: en spalt i
   serifregistret, en signatur, och ingenting annat i rummet. Måttet är det som
   gör det — sätts samma text brett blir det en broschyrtext, och i en smal
   spalt läser den som något någon faktiskt skrivit. */
.story-sek{background:var(--papper-2)}
/* Börjar vid satsytans vänsterkant som resten av sidan, med etiketten ovanför.
   Låg den i marginalrutnätets högerspalt hamnade textspalten mitt på sidan med
   en halv skärm tom på var sida och etiketten uppe i vänsterkanten — en spalt
   som svävar, inte en komposition. Måttet är brett för displayregistret: samma
   ord i 50ch blev nio rader Bodoni och läste som en grå massa. */
.story-in{max-width:62ch}
.story-ord{
  font-size:clamp(20px,2.1vw,28px);line-height:1.36;letter-spacing:-.012em;
  margin:0;text-wrap:pretty;
}
/* Signaturen står under texten och till vänster, som en namnteckning står i ett
   brev — inte centrerad under en rubrik som ett kundcitat. */
/* Signaturen och vägen vidare på samma rad, under ett hårstreck som spänner
   hela måttet. Låg länken under signaturen blev det tre vänsterställda block
   på rad och sista raden hängde löst. */
.story-fot{
  display:flex;align-items:baseline;justify-content:space-between;
  gap:24px;flex-wrap:wrap;margin-top:34px;
  padding-top:22px;border-top:1px solid var(--linje);
}
.story-sign{display:flex;align-items:baseline;gap:14px;margin:0}
.story-sign b{font-family:var(--serif);font-weight:400;font-size:21px;
  letter-spacing:.01em}
.story-sign span{font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--ink-3)}

/* Samma mått på /om/, där storyn står i sin helhet i marginalspalternas
   högerkolumn. Brödtext utan mått läser som dokumentation, inte som röst. */
.story-txt{max-width:56ch}
/* Blocken på /om/ växlar spaltbredd i stället för att alla dras in lika mycket.
   Tre identiska textspalter under varandra läser som ett dokument. */
.story-5{max-width:44ch}
.story-6{max-width:52ch}
.story-8{max-width:64ch}
/* Ett av blocken bär i displayregistret. Utan en enda skalväxling ligger hela
   /om/ i brödtextstorlek uppifrån och ner. */
.story-stor .lede{font-size:clamp(20px,2.1vw,29px);line-height:1.3;
  color:var(--ink);letter-spacing:-.012em;margin-top:0}
.sek-mork .story-stor .lede{color:var(--ljus)}
.story-txt p+p{margin-top:16px}
.story-txt p:not(.lede){color:var(--ink-2)}
.sek-mork .story-txt p:not(.lede){color:var(--ljus-2)}

/* Ingången till släppet. Släkt med remsan men inte samma sak: remsan bär en
   mening över ett foto, den här bär en avläsning. Ytan är gjuten betong och
   avmättad — droppet har noll guld i paletten, och en varm remsa här hade
   lovat fel rum. Ligger högt på startsidan, för ett drop är skälet att komma
   tillbaka. Typografin är husets; droppets egen väntar på målsidan. */
.dropp-in{position:relative;background:#0E0E0D;color:#E7E4DD;overflow:clip;
  min-height:clamp(420px,62vh,640px);display:flex;align-items:center}
.dropp-in-bild{position:absolute;inset:0;z-index:0}
.dropp-in-bild img{width:100%;height:100%;object-fit:cover}
/* Droppingången lyser kallt även på startsidan. Det är droppets rum som tittar
   fram genom husets vägg, och rummet har noll guld. */
.dropp-in-bild::after{content:"";position:absolute;inset:0;
  background:var(--kant-topp),var(--kant-bott),
    linear-gradient(92deg,rgba(14,14,13,.94),rgba(14,14,13,.58) 62%,rgba(8,8,10,.88)),
    radial-gradient(48% 54% at 15% 42%,rgba(201,210,216,.13) 0%,
      rgba(201,210,216,.045) 46%,rgba(201,210,216,0) 74%),
    radial-gradient(124% 104% at 48% 42%,rgba(6,7,10,0) 34%,rgba(6,7,10,.64))}
.dropp-in-txt{position:relative;z-index:1;padding-block:clamp(58px,7vw,100px)}
.dropp-in .etikett{color:#C9D2D8}
.dropp-in h2{max-width:14ch}
.dropp-in .lede{color:#8C8880;max-width:44ch}
/* Datalinjen. Versaler och spärrning i stället för ett eget monotypsnitt —
   45 kB för tre ord på startsidan är fel affär, och spärrad grotesk läser
   som avläsning ändå. */
.dropp-in-data{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:30px;
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:#C9D2D8}
.dropp-in-data span{position:relative}
.dropp-in-data span+span::before{content:"";position:absolute;left:-14px;top:50%;
  width:1px;height:11px;transform:translateY(-50%);background:#3A382F}
.dropp-in .btn{margin-top:38px;background:#E7E4DD;color:#0E0E0D;border-color:#E7E4DD}
@media (hover:hover){.dropp-in .btn:hover{background:#C9D2D8;border-color:#C9D2D8}}

/* Pjässpåret. Utan skript är det en vanlig sidledes rullning som går att
   svepa. Med skript nålas sektionen fast och spåret dras i takt med sidan.
   Korten är AVSIKTLIGT olika stora och står på olika baslinje — sex lika
   stora kort i rad är ett produktrutnät oavsett hur de rör sig. */
.spar-sek{position:relative}
.spar-h{overflow:hidden}
.spar{
  --kort-glapp:clamp(16px,2.2vw,36px);
  display:flex;gap:var(--kort-glapp);align-items:flex-start;
  overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;
  padding-bottom:4px;
}
.spar::-webkit-scrollbar{display:none}
.spar.nalad{overflow:visible}
/* KORTEN I REGISTERRADEN. Tre lika, inte tre olika.
   ==========================================================================
   Här stod tre storlekar (520 / 330 / 238 px) med tre bildformat (1:1, 4:5,
   3:4) och två olika nedsänkningar. Tre kort där inget liknar nästa är samma
   fel som uppslaget i droppet hade: en asymmetri som inte går att läsa som ett
   system läser inte som komposition utan som slarv. Och pjäserna gick inte att
   jämföra — samma foto i 1:1 och i 3:4 visar olika mycket av pjäsen.

   Nu delar de tre korten allt utom innehållet: samma bredd, samma 3:2-ruta,
   samma baslinje. Bilderna är dessutom SAMMA utsnitt som registret på /pjaser/
   använder (reg-*.webp), alltså är översikten och den här raden ett språk.

   BREDDEN ÄR RÄKNAD MOT SATSYTAN och inte satt på känsla: tre kort plus två
   mellanrum ska gå jämnt upp i ramen, annars hänger ett halvt kort kvar i
   högerkanten och raden ser trasig ut. Måttet är därför en tredjedel av
   satsytan minus två tredjedelar av mellanrummet. */
.pkort{
  flex:0 0 calc((100% - 2 * var(--kort-glapp)) / 3);
  scroll-snap-align:start;text-decoration:none;display:flex;flex-direction:column;
}
.pkort-bild{display:block;aspect-ratio:3/2;overflow:hidden;background:var(--natt-2)}
.pkort-bild img{width:100%;height:100%;object-fit:cover;
  transition:transform 1.2s var(--kurva)}
@media (hover:hover){
  .pkort:hover .pkort-bild img{transform:scale(1.05)}
  .pkort:hover .pkort-namn{color:var(--guld)}
}
.pkort-txt{display:flex;flex-direction:column;gap:7px;padding-top:22px}
.pkort-kat{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--guld)}
.pkort-namn{font-family:var(--serif);font-size:clamp(21px,1.7vw,28px);
  line-height:1.1;transition:color .3s;color:var(--ljus)}
.pkort-rad{color:var(--ljus-2);font-size:15px;line-height:1.5}
/* FOTEN VAR TVÅ TAL PÅ EN RAD med space-between och flex-wrap. På ett smalt
   kort bröt de isär till två rader där måttet stod kvar till vänster och
   ledtiden hoppade ner till höger — en avläsning som ser ut som spill ur en
   tabell. Nu är de två rader med flit, i läsordning, och de bryter aldrig
   någon annanstans. Måttet i mono som all annan data, ledtiden under det i
   den tystare tonen: två uppgifter, inte en rad som råkar innehålla två. */
.pkort-fot{
  display:grid;gap:5px;justify-items:start;
  margin-top:14px;padding-top:14px;border-top:1px solid var(--natt-linje);
  font-size:13px;color:var(--ljus-3);
}
.pkort-fot > :first-child{font-family:var(--mono);font-size:12px;
  letter-spacing:.06em;color:var(--ljus-2);font-variant-numeric:tabular-nums}
.pkort-fot > :last-child{font-size:12px;letter-spacing:.03em}

/* Registret. Pjäserna som en redaktionell lista i stigande pris i stället för
   ett rutnät av lika stora kort. Priset är strukturen: listan är sorterad på
   det, alltså får det bära som displaytal. Numrering 01–06 hade inte betytt
   någonting här — priset gör det. */
.reg{display:flex;flex-direction:column;border-top:1px solid var(--linje)}
.reg-rad{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  gap:clamp(24px,4vw,72px);align-items:center;
  border-bottom:1px solid var(--linje);padding-block:clamp(28px,3.5vw,52px);
  text-decoration:none;position:relative}
/* Varannan rad speglas: texten först i flödet lägger bilden till höger.
   order på bilden gjorde ingenting — den låg redan först i märkningen, så
   alla rader hamnade med bilden till vänster och bara bredden växlade. */
.reg-rad:nth-child(even){grid-template-columns:minmax(0,5fr) minmax(0,7fr)}
.reg-rad:nth-child(even) .reg-txt{order:-1}
/* EN RUTA, INTE TRE. Formatet cyklade mellan 21:9, 16:10 och 4:3 på
   nth-child. Sex rader där ingen ruta liknar nästa är inte rytm — rytmen
   ligger redan i att raderna växlar sida — och framför allt gick pjäserna inte
   att jämföra: samma stående foto beskuret till 21:9 visar en tredjedel av
   höjden och till 4:3 nästan allt. Cubankedjan hamnade i 4:3 och blev en
   nästan helt svart låda, för den kedjan är tunn och ligger i en vid båge.
   Allt är 3:2 nu, samma mått som droppets plåtar och samma som korten. */
.reg-bild{overflow:hidden;background:var(--papper-2);aspect-ratio:3/2}
.reg-bild img{width:100%;height:100%;object-fit:cover;
  transition:transform 1.3s var(--kurva)}
.reg-txt{display:flex;flex-direction:column;gap:10px}
.reg-kat{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--brons-hi)}
.reg-namn{font-family:var(--serif);font-size:clamp(30px,4.4vw,68px);line-height:.98;
  letter-spacing:-.022em;transition:color .3s}
.reg-rad p{color:var(--ink-2);font-size:15px;line-height:1.55;max-width:44ch}
/* Raden bar ett PRIS i displayserifen forut. Nu star mattet dar, och ett matt
   satt i samma storlek som ett pris laser fortfarande som en prislapp - bara
   med fel siffra i. Matt ar data och satts som data. */
.reg-fot{display:flex;align-items:baseline;gap:20px;flex-wrap:wrap;margin-top:20px;
  padding-top:16px;border-top:1px solid var(--linje)}
.reg-pris{font-family:var(--mono);font-size:13px;letter-spacing:.06em;
  color:var(--ink-2);font-variant-numeric:tabular-nums}
.reg-tid{font-size:12px;color:var(--ink-3);letter-spacing:.04em}
@media (hover:hover){
  .reg-rad:hover .reg-bild img{transform:scale(1.04)}
  .reg-rad:hover .reg-namn{color:var(--brons)}
}

/* Delad sektion. 7/5 i stället för 6/6, och bilden får gå ut till sidkanten —
   en bild som slutar snällt vid textspaltens kant ser inhägnad ut. */
.split{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);
  gap:clamp(32px,5vw,90px);align-items:center}
.split.vand{grid-template-columns:minmax(0,7fr) minmax(0,5fr)}
.split.vand .split-bild{order:-1}
.split-bild{aspect-ratio:5/4;overflow:hidden;background:var(--papper-2)}
.split-bild img{width:100%;height:118%;object-fit:cover}

/* Uppslaget som öppnas när sigillet hålls mot en telefon. Märkningen låg här
   utan en enda regel: "Sigill" och serienumret stod ihop till ett ord, och
   noteringen i foten läste som ännu en rad i sedeln. Det är ett DOKUMENT,
   alltså hårstreck och avläsningens mono — inte ett kort med skugga. */
.uppslag-topp{
  display:flex;justify-content:space-between;align-items:baseline;gap:20px;
  padding-bottom:12px;border-bottom:1px solid var(--natt-linje);
  font-family:var(--mono);font-size:11px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ljus-3);
}
.uppslag h3{margin-top:18px;margin-bottom:18px;
  font-size:clamp(22px,2.1vw,30px);line-height:1.05}
.uppslag-fot{
  margin-top:16px;font-family:var(--mono);font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ljus-3);
}

/* Stegen — vänsterspalten nålas fast och siffran byts medan texten rullar */
.stegen-h{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);
  gap:clamp(32px,6vw,120px);align-items:start}
.stegen-fast{position:sticky;top:140px}
.stegen-nr{font-family:var(--serif);font-size:clamp(72px,10vw,150px);line-height:.82;
  letter-spacing:-.04em}
.stegen-namn{font-family:var(--serif);font-size:clamp(24px,2.4vw,34px);margin-top:18px;
  min-height:1.2em}
/* Förloppslinjen bredvid stegen fylls i takt med rullningen. */
.stegen-matare{margin-top:34px;height:1px;background:var(--linje);position:relative}
.stegen-matare::after{content:"";position:absolute;inset:0;background:var(--ink);
  transform:scaleX(var(--fg,0));transform-origin:0 50%}
.stegen{display:flex;flex-direction:column}
.steg{padding-block:clamp(30px,4vw,58px);border-top:1px solid var(--linje)}
.steg:last-child{border-bottom:1px solid var(--linje)}
.steg-mini{font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--brons-hi);margin-bottom:14px}
.steg h3{margin-bottom:12px;font-size:clamp(24px,2.4vw,34px);line-height:1.08}
.steg p{color:var(--ink-2);max-width:54ch}


/* Pjässida */
/* Ingen negativ toppmarginal här, till skillnad från startsidans hjälte:
   pjässidan har en brödsmulerad mellan menyn och hjälten, och -76px drog upp
   hjälten mitt i menyraden så att en ljus remsa blev kvar över fotot.
   I stället får menyn och brödsmulorna samma natt som hjälten. */
.pjas-hjalte{position:relative;min-height:calc(88svh - 76px);display:grid;
  grid-template-columns:minmax(0,6fr) minmax(0,6fr);align-items:center;
  background:var(--natt);color:var(--ljus);overflow:clip}
.pjas-hjalte-bild{position:absolute;inset:0 0 0 42%;z-index:0}
.pjas-hjalte-bild img{width:100%;height:112%;object-fit:cover}
.pjas-hjalte-bild::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,var(--natt) 0%,rgba(10,9,8,.55) 26%,rgba(10,9,8,0) 62%)}
/* Rubriken går ut över bildens kant. Ett block som slutar snällt vid spaltens
   kant läser som en tabellcell; ett som korsar kanten läser som komposition. */
.pjas-hjalte-txt{position:relative;z-index:1;grid-column:1;
  padding-block:clamp(72px,10vh,140px);width:min(100%,660px)}
/* MÅTTET FÅR INTE VARA SMALARE ÄN NAMNET.
   Rubriken stod på max-width:9ch. "Tennisarmband" är drygt elva ch i Bodoni,
   och eftersom det är ETT ord finns ingen brytpunkt: ordet gick utanför sitt
   block på varje skärmbredd. Med SplitText igång låg det dessutom i en mask med
   overflow:clip och kapades till "Tennisarmba" — tre av sex pjässidor, dator
   som telefon. Måttet är räknat på det längsta namnet i registret och inte satt
   på känsla; klippet i masken är lagat i sajt.js för säkerhets skull.
   Rubriken sätts samtidigt en aning mindre än husets .jatte. Den ska rymmas i
   textspalten, som är 42 % av fönstret på dator, och en hjälterubrik som går ut
   över fotot är komposition först när den gör det med flit. */
.pjas-hjalte-txt h1{max-width:13ch;font-size:clamp(40px,5.2vw,76px)}
.pjas-hjalte-txt .lede{color:var(--ljus-2);max-width:38ch}
.pjas-hjalte-txt .lede.stor{color:var(--ljus)}
.pjas-fakta{display:flex;gap:48px;flex-wrap:wrap;margin-top:40px;padding-top:26px;
  border-top:1px solid var(--natt-linje)}
.pjas-fakta span{display:flex;flex-direction:column;font-size:13px;color:var(--ljus-2)}
.pjas-fakta b{font-family:var(--mono);font-weight:400;font-size:clamp(18px,1.8vw,26px);
  letter-spacing:.02em;color:var(--ljus);margin-bottom:4px}
.pjas-hjalte-txt .btn{margin-top:34px}

/* Konstruktionen: bilden står stilla medan specifikationen rullar förbi. */
.pjas-kropp{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);
  gap:clamp(32px,5vw,88px);align-items:start}
.pjas-fast{position:sticky;top:120px}
/* 4:3, inte 4:5. Remsan är 21:9 i original och en hård 4:5-utsnitt ur den
   blir en uppförstoring av en tredjedel av bilden — mjuk och grötig. */
.pjas-fast-bild{aspect-ratio:4/3;overflow:hidden;background:var(--natt-2)}
.pjas-fast-bild img{width:100%;height:112%;object-fit:cover}

/* BÄNKFILMEN. Tillverkarens egen film från bänken, och sajtens första äkta
   produktionsmaterial.
   ==========================================================================
   FACKET BYTER FORM NÄR DET BÄR FILM. Klippet är taget stående (720×1280) och
   ett liggande fack hade beskurit bort antingen handen eller pjäsen — och det
   är handen och pjäsen klippet handlar om. 3:4 och inte 9:16: full stående
   höjd i en 520 px spalt blir 924 px, alltså en film högre än texten den står
   bredvid. 3:4 tar mittersta tre fjärdedelarna av bildrutan, där både
   fingrarna och pjäsen ligger.

   INGEN GRADERING. Verkstadsljuset är varmt och husets natt är kall, och det
   är samma logik som verkstadsfotona i samma fack redan följer: tillverkningen
   får vara varm, varan är kall. En graderad verkstadsfilm läser som reklam;
   den här ska läsa som en bänk. */
.pjas-fast-film{
  margin:0;aspect-ratio:3/4;overflow:hidden;background:var(--natt-2);
}
.pjas-fast-film video{width:100%;height:100%;object-fit:cover;display:block}
/* En film som spelar ÄR rörelse. Klippet släcks och planschen bär facket i
   stället — samma bild, stillastående, och det är också vad en skärmbild av
   sidan fångar. */
@media (prefers-reduced-motion:reduce){
  .pjas-fast-film{background:url(/img/bankfilm.webp) 50% 42%/cover no-repeat}
  .pjas-fast-film video{display:none}
}
.pjas-text p{color:var(--ljus-2);margin-top:20px;max-width:56ch}
.pjas-text p em{color:var(--ljus);font-style:italic}

/* Specen är en tabell med hårstreck, inte ett kort med ram. Ett vitt kort på
   svart botten gjorde dessutom värdena vita på vitt — osynliga i drift. */
.specar{display:flex;flex-direction:column;margin-top:44px;
  border-top:1px solid var(--natt-linje)}
.spec{display:flex;justify-content:space-between;align-items:baseline;gap:16px;
  padding-block:16px;border-bottom:1px solid var(--natt-linje);font-size:15px}
.spec dt{color:var(--ljus-3);font-size:12px;letter-spacing:.16em;text-transform:uppercase}
.spec dd{text-align:right;color:var(--ljus);font-family:var(--mono);
  font-size:clamp(14px,1.2vw,17px);letter-spacing:.02em}
/* PÅ TELEFON ÄR DET INTE EN RAD. Etikett till vänster och värde högerställt i
   samma rad kräver att värdet får plats på raden. Fyra av sex värden i
   följesedeln gör inte det vid 390 px: "38 – 62 beroende på bredd och / längd"
   och "Fyrklo, tre klo eller / kanalfattning" bröt till en andra rad som stod
   högerställd under ingenting — en änka i en tabell, och det på alla sex
   konstruktionssidor. Uppställningen läggs om till den .sedel redan har på
   smal skärm: etiketten på egen rad, värdet under den, allt vänsterställt mot
   samma kant som resten av sidan. Ett värde som får sin egen rad kan aldrig
   bli en änka. */
@media (max-width:620px){
  .spec{display:block;padding-block:15px}
  .spec dt{margin-bottom:8px}
  .spec dd{text-align:left}
}

.valen{display:flex;flex-direction:column;margin-block:14px 36px;
  border-top:1px solid var(--linje)}
.valen li{padding-block:18px;border-bottom:1px solid var(--linje);
  font-size:clamp(19px,1.6vw,24px);font-family:var(--serif);
  display:flex;align-items:baseline;gap:18px}
.valen li::before{content:"—";color:var(--ink-3);flex:none}

/* Material */
.mat-rutnat{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
  background:var(--linje);border:1px solid var(--linje);margin-top:48px}
/* Stenarna är fyra, inte sex. I tre spalter blev sista raden två tomma rutor
   — på mörk botten läste de som ett hål i sidan. */
.mat-rutnat.tva{grid-template-columns:repeat(2,1fr)}
.mat{background:var(--papper);padding:clamp(24px,2.6vw,38px)}
.sek-mork .mat-rutnat{background:var(--natt-linje);border-color:var(--natt-linje)}
.sek-mork .mat{background:var(--natt)}
/* Tre etiketter på elva bildpunkter i brons ligger på tre olika sidor:
   registrets .reg-kat, stegens .steg-mini och materialets .mat-typ. De ÄR samma
   sak och ska därför ha samma styrka — brons som text, alltså --brons-hi. */
.mat-typ{font-size:11px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--brons-hi);display:block;margin-bottom:12px}
.sek-mork .mat-typ{color:var(--guld)}
.mat h3{font-family:var(--serif);font-size:23px;margin-bottom:12px}
.mat p{color:var(--ink-2);font-size:15px;line-height:1.6}
.sek-mork .mat p{color:var(--ljus-2)}
.mat-intyg{margin-top:16px;padding-top:14px;border-top:1px solid var(--linje-svag);
  color:var(--ink-3)!important;font-size:13px!important}
.sek-mork .mat-intyg{border-top-color:var(--natt-linje);color:var(--ljus-3)!important}

.ordlista{display:flex;flex-direction:column;margin-block:38px}
.ordlista>div{padding-block:26px;border-top:1px solid var(--linje-svag)}
.ordlista dt{font-family:var(--serif);font-size:clamp(23px,2vw,30px);margin-bottom:8px}
.ordlista dd{color:var(--ink-2);max-width:62ch}
.sek-mork .ordlista>div{border-top-color:var(--natt-linje)}
.sek-mork .ordlista dd{color:var(--ljus-2)}

.tre-kol{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,56px)}
.tre-kol article{border-top:1px solid var(--linje);padding-top:26px}
.tre-kol h3{font-family:var(--serif);font-size:23px;margin-bottom:12px}
.tre-kol p{color:var(--ink-2);font-size:15px;line-height:1.6}
.sek-mork .tre-kol article{border-color:var(--natt-linje)}
.sek-mork .tre-kol p{color:var(--ljus-2)}

/* Nej-blocket. Hängande etiketter och hårstreck i stället för tre lådor. */
.nej{margin-top:8px;display:flex;flex-direction:column;
  border-top:1px solid var(--natt-linje)}
.nej li{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);
  gap:clamp(18px,3vw,60px);padding-block:clamp(24px,2.8vw,40px);
  border-bottom:1px solid var(--natt-linje);align-items:baseline}
.nej b{font-family:var(--serif);font-weight:400;color:var(--ljus);
  font-size:clamp(21px,2.1vw,30px);line-height:1.08;letter-spacing:-.014em}
.nej p{color:var(--ljus-2);font-size:15px;line-height:1.6}

/* Betalningstrappan */
.betal{margin-block:38px;border-top:1px solid var(--linje)}
.betal-rad{display:flex;justify-content:space-between;align-items:baseline;gap:20px;
  padding-block:22px;border-bottom:1px solid var(--linje-svag)}
.betal-nar{color:var(--ink-2)}
.betal-vad{font-family:var(--serif);font-size:clamp(26px,2.8vw,42px)}
.sek-mork .betal,.sek-mork .betal-rad{border-color:var(--natt-linje)}
.sek-mork .betal-nar{color:var(--ljus-2)}

/* Frågor */
.fragor{margin-top:46px;border-top:1px solid var(--linje)}
.fraga{border-bottom:1px solid var(--linje-svag)}
.fraga summary{display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding-block:26px;cursor:pointer;list-style:none;font-family:var(--serif);
  font-size:clamp(20px,1.8vw,28px);transition:color .25s}
.fraga summary::-webkit-details-marker{display:none}
.fraga summary::after{content:"";flex:none;width:13px;height:13px;
  border-right:1px solid var(--ink-2);border-bottom:1px solid var(--ink-2);
  transform:rotate(45deg) translate(-3px,-3px);transition:transform .35s var(--kurva)}
.fraga[open] summary::after{transform:rotate(225deg) translate(-3px,-3px)}
@media (hover:hover){.fraga summary:hover{color:var(--brons)}}
.fraga-svar{padding-bottom:30px}
.fraga-svar p{color:var(--ink-2);max-width:64ch}
/* Frågelistan ligger i en marginalspalt; rubriken står i marginalen. */
.marginal .fragor{margin-top:0}

/* Kontakt */
.kontakt-rutnat{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;
  background:var(--linje);border:1px solid var(--linje)}
.kontakt-ruta{background:var(--papper);padding:clamp(26px,3vw,46px)}
/* Bodoni sätts med line-height under ett, så mejladressen var 20 px hög trots
   21 px kägel — en träffyta på en femtedel av en tumme. Ytan växer med ett
   ::after som ligger utanför flödet i stället för med padding: padding hade
   flyttat raden sex pixlar neråt när den negativa marginalen kollapsade mot
   etikettens, och en rad som flyttar sig är ett sämre byte än en rad som är
   svår att träffa. Så här ligger typografin kvar på pixeln och ytan blir 44. */
.kontakt-stor{display:block;position:relative;font-family:var(--serif);
  font-size:clamp(21px,2.1vw,30px);text-decoration:none;margin-block:6px 14px;
  transition:color .25s;word-break:break-word}
.kontakt-stor::after{content:"";position:absolute;inset:-12px 0;z-index:1}
@media (hover:hover){.kontakt-stor:hover{color:var(--brons)}}
.kontakt-ruta p{color:var(--ink-2);font-size:15px}

/* ------------------------------------------------------- 8 Formulär */
.form-layout{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  gap:clamp(32px,4.5vw,80px);align-items:start}
.form{display:flex;flex-direction:column;gap:28px}
.falt-rad{display:grid;grid-template-columns:1fr 1fr;gap:28px}
.falt{display:flex;flex-direction:column;gap:9px}
.falt label{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-2)}
.falt label i{color:var(--brons);font-style:normal}
.falt input,.falt select,.falt textarea{
  background:var(--yta);border:1px solid var(--linje);
  padding:14px 16px;font-size:16px;min-height:52px;
  transition:border-color .25s,box-shadow .25s;
}
.falt textarea{resize:vertical;line-height:1.55}
.falt select{appearance:none;cursor:pointer;padding-right:44px;
  background-image:linear-gradient(45deg,transparent 50%,var(--ink) 50%),
                   linear-gradient(135deg,var(--ink) 50%,transparent 50%);
  background-position:calc(100% - 22px) 23px,calc(100% - 16px) 23px;
  background-size:6px 6px,6px 6px;background-repeat:no-repeat}
.falt input:focus,.falt select:focus,.falt textarea:focus{
  border-color:var(--black);box-shadow:0 0 0 3px rgba(22,20,15,.06);outline:none}
/* Platshållaren följer INTE med när mikroinken mörknar. Ett exempelvärde som
   är lika svart som ett ifyllt värde läser som att fältet redan är besvarat,
   och då skickar folk in "T.ex. 19 cm handled". Den ska vara läsbar och
   samtidigt tydligt lättare än texten man själv skriver — det är hela dess
   jobb. Värdet är mikroinkens gamla ton, uppmätt 3,74 mot fältets vita botten
   — läsbar, men en tydlig nivå under det man skriver själv. Det står i
   klartext eftersom det är det enda stället på sajten som medvetet ligger
   under brödtextens tyngd, och det ska inte kunna följa med en token. */
.falt input::placeholder,.falt textarea::placeholder{color:#8B8377}
.falt-not{font-size:13px;color:var(--ink-3);line-height:1.5}
.falt.fel input,.falt.fel textarea{border-color:#B4442C}
.falt-honung{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.form .btn{align-self:flex-start}
.form-not{font-size:13px;color:var(--ink-3);max-width:52ch}
/* Länken till integritetssidan låg inbakad sist i meningen och var 16 px hög.
   Den flyttas ut på egen rad: en hänvisning är inte en del av påståendet den
   står efter, och på egen rad går den både att träffa med tummen och att se.
   Punkten föll bort på köpet — en rubrikrad är ingen mening. */
.form-not-lank{display:inline-block;font-size:13px;color:var(--ink-2);
  text-decoration:underline;text-underline-offset:3px;
  padding-block:14px;margin-top:-8px}
/* Raden som visas när man kommit hit från ett släpp. Sätts av sajt.js, inte i
   märkningen — utan skript finns ingen kö att stå i, och då ska den inte lova
   en. Kall metallkant i stället för brons: den tillhör droppet. */
.form-ko{margin:0 0 30px;padding:16px 20px;font-size:14px;color:var(--ink-2);
  background:var(--papper-2);border-left:2px solid #8C8880;max-width:56ch}
.form-svar{font-size:15px;min-height:1px}
.form-svar.ok{color:var(--brons)}
.form-svar.fel{color:#B4442C}

.form-sida{display:flex;flex-direction:column;gap:18px;position:sticky;top:110px}
/* Sidopanelen är husets mörka rum, inte ett vitt kort med ram. Sidan där
   handpenningen börjar ska tala samma språk som resten av huset — natten
   plus sedelgrammatiken gör hela jobbet. */
.form-natt{background:var(--natt);color:var(--ljus);padding:clamp(22px,2.6vw,32px)}
.form-natt .sedel th{color:var(--ljus-3)}
.form-natt .sedel td{color:var(--ljus)}
.form-natt .sedel tr{border-color:var(--natt-linje)}
.form-natt h2{font-size:clamp(19px,1.8vw,24px);margin-bottom:10px}
.form-natt p{color:var(--ljus-2);font-size:15px}
/* Telefon och mejl är sidans andra utgång för den som hellre pratar. De var
   35 px höga. Ytan växer utanför flödet, samma grepp som .kontakt-stor:
   hårstrecket under adressen ska sitta kvar tätt mot baslinjen, och padding
   hade skjutit ner det. */
.form-natt .form-kontakt a{color:var(--ljus);display:block;position:relative;
  margin-top:8px;text-decoration:none;
  border-bottom:1px solid var(--natt-linje);width:fit-content}
.form-natt .form-kontakt a::after{content:"";position:absolute;inset:-6px -8px;z-index:1}
.form-natt .lank-pil{margin-top:16px;color:var(--ljus)}
.form-kontakt{display:flex;flex-direction:column;gap:8px;margin-top:16px}
.form-kontakt a{font-family:var(--serif);font-size:21px;text-decoration:none}
@media (hover:hover){.form-kontakt a:hover{color:var(--brons)}}

/* --------------------------------------------------------- 9 Sidfot */
/* Sidfoten lyser svagt i underkant i stället för i överkant. Överkanten möter
   sektionen ovanför, och två ljusa kanter mot varandra ger en vågrät remsa
   tvärs sidan — det syns som ett fel, inte som djup. */
/* Sidfoten vänder ljuset: källan sitter under kanten i stället för över den,
   så att sidan tonar ner mot slutet i stället för att börja om. Samma kurva,
   spegelvänd. */
footer{padding-block:clamp(64px,6.5vw,104px) 34px;
  background-image:var(--korn-mork),var(--kant-topp),
    radial-gradient(126% 148% at 20% 122%,
      var(--natt-hi) 0%,var(--natt-h2) 20%,var(--natt) 46%,
      var(--natt-l2) 72%,var(--natt-lo) 100%);
  background-size:var(--korn-ruta),auto,auto;
  background-blend-mode:screen,normal,normal;
  color:var(--ljus)}
.fot{display:grid;grid-template-columns:minmax(0,1.7fr) 1fr 1fr 1fr;
  gap:clamp(28px,3.4vw,58px)}
/* Foten efter nedläggningen. Fyra spalter var satt för en sajt med sex
   pjässidor, en process och en om-sida; kvar finns fyra sidor. Tre spalter med
   märket bredare, alltså samma proportion som förut men en spalt färre — och
   inte fyra spalter där den sista står tom. */
.fot-smal{grid-template-columns:minmax(0,1.7fr) 1fr 1fr}
@media (max-width:820px){.fot-smal{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.fot-smal{grid-template-columns:1fr}}
.fot-marke p{color:var(--ljus-2);font-size:15px;max-width:38ch;margin-bottom:28px}
.fot h4{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--guld);
  font-weight:600;margin-bottom:20px}
.fot a{text-decoration:none;color:var(--ljus-2);font-size:15px;transition:color .25s}
/* Träffytan i sidfoten, andra försöket. Det första la 12 px utfyllnad på
   länken och tog tillbaka den med lika stor NEGATIV marginal, så att
   raderna skulle stå kvar. Det gör de — men i en flexspalt kollapsar
   marginaler inte, så varje länkruta sköts 24 px in i grannens och rutorna
   låg omlott med tretton pixlar. Den som ritas sist ligger överst, alltså
   åt den nedre länken tretton pixlar av den övre: träffytan blev 36 px och
   den nedersta remsan av varje länk öppnade FEL sida.
   Rätt lösning är att låta utfyllnaden vara på riktigt och ta bort luckan i
   stället. Raderna står då 49 px isär i stället för 37, vilket är precis vad
   fyrtiofyra plus ett hårstreck kostar, och ingen ruta rör en annan. */
.fot ul{display:flex;flex-direction:column;gap:0;margin-block:0}
.fot ul a{display:block;padding-block:12px}
@media (hover:hover){.fot a:hover{color:var(--guld)}}
.fot-marke a.mark{color:var(--ljus)}
.fot-rad{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;
  margin-top:clamp(48px,5vw,80px);padding-top:24px;
  border-top:1px solid var(--natt-linje);font-size:12px;color:var(--ljus-3)}

/* ------------------------------------------ 10 Rörelse och responsivt */
/* Ingenting döljs i CSS. GSAP sätter utgångslägena i skript, och kör inte
   skriptet ligger sidan kvar precis som den är — läsbar och komplett.
   Det var läxan från staywild: en sida som är osynlig för att ett skript
   inte startade är ett fel, inte en effekt. */

html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}

/* Orden i en rubrik delas av SplitText. Masken sitter här, rörelsen i GSAP.
   Masken måste vara högre än raden, annars kapas underhängen på g och j. */
.ord .rad{overflow:hidden;display:block;padding-bottom:.14em}

@media (max-width:1080px){
  .mat-rutnat,.tre-kol,.kontakt-rutnat{grid-template-columns:repeat(2,1fr)}
  .pjas-kropp,.stegen-h,.marginal{grid-template-columns:1fr;gap:44px}
  .pjas-fast,.marginal>.marginal-sido{position:static}
  /* Den stora sticky-siffran är en desktop-devis: JS skriver om den till 02, 03
     ... medan stegen passerar. Statisk på mobil fastnar den på "01 Du beskriver"
     precis ovanför listans egen "Steg 01 Du beskriver" — en dubblering. Stegen
     bär sina egna nummer, så devisen tas bort helt när spalten fälls ihop. */
  .stegen-fast{display:none}
  .stegen-nr{font-size:72px}
  .stegen-matare{display:none}
  .form-layout{grid-template-columns:1fr}
  .form-sida{position:static;flex-direction:row;flex-wrap:wrap}
  /* Utan basmåttet sattes de två natt-blocken av sitt eget innehåll: följe-
     sedeln blev 270 px, "Hellre prata" tog resten, och på telefon la de sig
     under varandra i två OLIKA bredder med en åtta pixlars springa emellan.
     Två mörka block i olika bredd läser som ett trasigt block, inte som två. */
  .form-sida>*{flex:1 1 300px}
  .pjas-fast-bild:not(.pjas-fast-film){aspect-ratio:16/9}
}

@media (max-width:860px){
  .nav-lankar,.nav-btn{display:none}
  .burger{display:block;margin-left:auto}
  .split,.split.vand{grid-template-columns:1fr;gap:36px}
  .split.vand .split-bild,.split-bild{order:-1;aspect-ratio:5/4}
  /* Bilden går kant till kant när spalterna staplas. På bred skärm gjorde
     samma klass i stället att bilden åt 60 px av mellanrummet mellan
     spalterna — den låg i vänsterspalten och sköts åt höger, mot uppslaget.
     Utbrytningen hör hemma här, där det finns en kant att gå ut till. */
  .split-bild.ut-hoger{margin-inline:calc(50% - 50vw);width:100vw}
  .fot{grid-template-columns:1fr 1fr;gap:36px}
  .fot-marke{grid-column:1/-1}
  /* RULLNINGSLÅSET. overflow på <body> propagerar bara till fönstret om
     roten står på visible, och roten står på overflow-x:clip här (100vw-
     vakten) — alltså gjorde den här raden ingenting alls. Låset har hela
     tiden burits av att skriptet lägger position:fixed på <body>, och det
     håller: uppmätt noll rörelse på både hjul och svep med menyn uppe.
     Regeln görs ändå verklig i stället för att stå kvar som en rad som ser
     ut att göra något. Klipps roten kan fönstret inte rulla, och till
     skillnad från hidden gör clip inte roten till en rullningsbehållare —
     det sparade rullningsläget står kvar och menyn kan stängas tillbaka till
     samma rad. Två lås, oberoende av varandra. */
  html:has(body.meny-uppe){overflow:clip}
  body.meny-uppe{overflow:hidden}
  /* Pjässidans hjälte: bilden lägger sig bakom hela ytan i stället för i
     högra halvan, annars kläms texten mot en kant.

     FOTO UPPE, ORD NERE — samma beslut som remsan och droppet redan tagit på
     telefon, och av exakt samma skäl. Slöjan lutade i SIDLED därför att texten
     står i vänsterspalten på dator; på telefon ligger orden över hela bilden
     och en lodrät avtoning som är som ljusast på mitten lämnar den ljusaste
     delen av motivet precis där de står. Mätt på tennisarmbandet vid 390:
     "bredd, byggs i dina mått" låg tvärs över de upplysta stenarna och gick
     inte att läsa. Ett jämnt mörkare lager över alltihop är inte svaret — då
     blir pjäsen en grå rektangel, vilket är motsatsen till vad en pjässida
     ska visa.

     Hjälten får därför en höjd så att fotot äger den övre delen, texten
     bottenställs, och orden bär sin egen plåt (nedan). Bilden ligger kvar som
     absolut lager med inset:0 — parallaxen i sajt.js transformerar just den
     rutan, och en ruta i flödet hade skalat ut över texten under sig. */
  .pjas-hjalte{display:block;min-height:0;background:var(--natt);
    padding-bottom:clamp(48px,8vw,80px)}
  /* Fotot går ur lagret och ner i FLÖDET: en plåt i pjäsens eget format
     överst, orden under den på ren natt. 4:5 är bildernas eget format, alltså
     visas hela pjäsen i stället för ett utsnitt — och taket i svh hindrar
     plåten från att svälja hela skärmen på en surfplatta. */
  .pjas-hjalte-bild{
    position:relative;inset:auto;width:100%;
    aspect-ratio:4/5;max-height:min(56svh,520px);overflow:clip;
  }
  .pjas-hjalte-bild img{height:112%;object-position:50% 46%}
  /* Slöjan tar bara kanterna: remsan upptill möter brödsmulorna, foten löses
     upp i natten så plåten inte slutar i ett streck, och en svag vinjett ger
     hörnen djup. Mitten släpps helt — mitten är pjäsen. */
  .pjas-hjalte-bild::after{background:
    linear-gradient(180deg,rgba(10,9,8,.66) 0,rgba(10,9,8,0) 16%),
    linear-gradient(0deg,rgba(8,7,6,1) 0,rgba(8,7,6,.34) 11%,rgba(8,7,6,0) 26%),
    radial-gradient(122% 104% at 50% 46%,rgba(10,9,8,0) 54%,rgba(10,9,8,.4))}
  .pjas-hjalte-txt{padding-block:clamp(26px,6vw,40px) 0;width:min(100% - var(--kant),var(--wrap))}
  /* På telefon står texten mitt över bilden i stället för i en egen spalt.
     Den lutande slöjan räcker inte då — motivet går rakt genom rubriken.
     Lättad upptill: den gamla (.55→.8 redan vid 30 %) släckte kedjan helt
     och mobilhjälten var i praktiken en svart ruta. */
  .hjalte-bild::after{background:
    linear-gradient(180deg,rgba(10,9,8,.42) 0%,rgba(10,9,8,.58) 34%,
      rgba(10,9,8,.82) 68%,rgba(10,9,8,.93) 100%)}
  .reg-rad,.reg-rad:nth-child(even){grid-template-columns:1fr;gap:22px}
  .reg-rad:nth-child(even) .reg-txt{order:0}
  .reg-bild,.reg-rad:nth-child(3n) .reg-bild,.reg-rad:nth-child(3n+1) .reg-bild{
    aspect-ratio:16/10}
  .nej li{grid-template-columns:1fr;gap:12px}
}

@media (max-width:620px){
  body{font-size:16px}
  /* TELEFONENS SIDOLUFT. Var 15 px per sida, och det var för lite: på en tät
     sida — sigillet efter omgörningen — gick varje textrad ända ut i
     skärmkanten och sidan läste som en app och inte som en trycksak. Luften
     är nu en andel av skärmen och inte ett fast tal, så den krymper på en
     liten telefon i stället för att äta upp raden: 21 px per sida vid 320,
     24 vid 360, 26 vid 390 och uppåt. Talet är hela luften och delas på två
     sidor. Över brytpunkten gäller 22 px per sida som förr; de fyra pixlarnas
     skillnad vid exakt 620 är en fönsterbredd ingen telefon har. */
  :root{--kant:clamp(42px,13.3vw,52px)}
  /* Golvet sprack en gång här: "konstruktioner." gick ut i viewportkanten på
     /pjaser/. Bodoni utan avstavning kräver att längsta ordet får plats —
     10.5vw ger 41 px vid 390 och det längsta registerordet ryms med god
     marginal i en 360 px-spalt. */
  .jatte{font-size:clamp(34px,10.5vw,48px)}
  /* .tva måste stå med här. Utan den vann tvåspaltsregeln på specificitet och
     stenrutnätet stod kvar i två 175 px-spalter på telefon, med namn som bröt
     mitt i ("Naturlig / diamant, / VVS"). */
  .mat-rutnat,.mat-rutnat.tva,.tre-kol,.kontakt-rutnat,.falt-rad{
    grid-template-columns:1fr}
  /* Registrets fotrad står som en rad på bred skärm och flödade om på smal:
     fyra av sex konstruktioner fick plats på en rad, ringen och hängets mått
     bröt ner till en andra. Sex poster som ser ut på två olika sätt läser som
     ett fel. Här är den alltid två rader: måttet i mono, ledtiden under. */
  .reg-fot{flex-direction:column;align-items:flex-start;gap:7px}
  /* PÅ TELEFON RYMS INTE TRE KORT. Måttet är satt så att kortet efter det
     aktuella tittar fram med en dryg tredjedel: raden säger då att den går att
     dra i, i stället för att se ut som ett kort med ett avhugget grannkort.
     Formatet är detsamma som på dator — samma pjäs ska inte byta form för att
     skärmen är smal. */
  .pkort{flex-basis:calc(100% - var(--kort-glapp) - 34%)}
  .form .btn,.form-sida .btn{width:100%}
  /* Under 620 finns ingen bredd att dela på: raden blir en spalt, och de två
     blocken får samma kant som allt annat på sidan. */
  .form-sida{flex-direction:column;gap:24px}
  .fot{grid-template-columns:1fr}
  .hjalte-knappar{gap:18px}
  .hjalte-knappar .btn{width:100%}
}

/* ═══════════════ TELEFONEN ÄR EN EGEN FORMGIVNING ═══════════════════════
   Inte samma sida krympt. Tre saker skiljer en handflata från en skärm, och
   alla tre var obehandlade:

   1. EN BILD BLIR ETT ANNAT FÖREMÅL. Slöjorna över fotona lutar i sidled,
      eftersom texten står i vänsterspalten på dator. På telefon står texten
      över HELA bilden, och en slöja som dämpar vänsterkanten gör då ingenting
      alls där orden faktiskt ligger. Mätt på startsidan: remsans ingress låg
      över stenradens ljusaste parti och gjutningens rubrik låg mitt i den
      blanka metallen. Slöjorna vänds nedåt och remsan bottenställs, alltså
      foto uppe och ord nere — trycksakens uppställning, samma som droppets.

   2. RUBRIKNIVÅERNA HADE KOLLAPSAT. På dokumentsidorna var h1 34 px och
      sektionernas h2 också 34 px, mätt på /pjaser/, /sigillet/ och
      /sten-och-metall/. En sidas titel och dess mellanrubriker i exakt samma
      grad är ingen hierarki, och det är precis den sortens likhet som får en
      sida att läsa som en mall. Taket på rubriken är räknat på det längsta
      ordet i registret ("Konstruktionerna", sexton tecken) och inte satt på
      känsla: vid 390 px är 45 px det största som ryms i satsytan utan
      avstavning.

   3. TUMMEN ÄR INTE EN MUSPEKARE. Se träffytorna längst ner. */
@media (max-width:700px){
  /* Remsan: foto uppe, ord nere. Höjden upp en aning så att bilden har en
     egen yta ovanför orden i stället för att bara ligga bakom dem. */
  .band{align-items:flex-end;min-height:clamp(430px,72svh,620px)}
  .band-bild::after{
    background:
      var(--kant-topp),
      linear-gradient(0deg,rgba(8,8,10,.95) 0%,rgba(8,8,10,.9) 32%,
        rgba(10,9,8,.46) 50%,rgba(10,9,8,.1) 68%,rgba(10,9,8,0) 84%),
      radial-gradient(58% 46% at 18% 74%,rgba(var(--aura-rgb),.13) 0%,
        rgba(var(--aura-rgb),0) 72%),
      radial-gradient(124% 104% at 50% 38%,rgba(6,7,10,0) 44%,rgba(6,7,10,.5));
  }
  /* Gjutningen. Blocket är rubrik, avläsning och knapp — 564 av sektionens
     810 px på en telefon — och slöjan tog slut vid 68 procent räknat nerifrån,
     alltså precis där rubriken började. */
  .gjut-duk::after{
    background:
      var(--kant-topp),
      linear-gradient(0deg,rgba(8,8,10,.96) 0%,rgba(8,8,10,.92) 38%,
        rgba(8,8,10,.74) 62%,rgba(8,8,10,.22) 84%,rgba(8,8,10,0) 96%),
      radial-gradient(124% 104% at 50% 30%,rgba(6,7,10,0) 40%,rgba(6,7,10,.55));
  }
}

@media (max-width:620px){
  /* Rubriken. .sida-dok skriver om .jatte med egen specificitet och måste
     därför stå med i väljaren — utan den gällde måttet bara start, om,
     förfrågan och kontakt, vilket var halva sajten. */
  .jatte,.sida-dok .jatte{font-size:clamp(36px,11.2vw,52px);line-height:.92}
  /* Sektionsrubriken går ner lika mycket som hjälterubriken går upp. Avståndet
     mellan de två registren är det som gör att det finns två register. */
  .d.stor{font-size:clamp(30px,7.8vw,34px)}
}

/* TRÄFFYTOR PÅ PEK.
   Golvet är 44 px. Länkar som är satta i löptext klarar det av sig själva
   genom radhöjden; de som står ensamma i ett block gör det inte, och mätt på
   /kontakt/ var mejladressen och telefonnumret 20 px höga trots att de är
   satta i display-grad. Luften läggs INNANFÖR länken, inte runt den, annars
   flyttas bara texten utan att ytan växer. */
@media (pointer:coarse),(max-width:860px){
  .kontakt-stor,.form-kontakt a[href^="tel:"],.form-kontakt a[href^="mailto:"]{
    display:inline-block;padding-block:11px;
  }
}

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


/* Mobilens primärknapp: egen bredd, inte fullbredd. En knapp kant till kant
   är app-språk; ett hus sätter en knapp som ett föremål med luft omkring. */
@media(max-width:640px){
  .btn.stor{width:auto;min-width:62%;justify-content:center}
}


/* Det tysta partiet: en obruten bild kant till kant, ingen text. Höjden är
   medvetet lägre än en skärm — en paus, inte en ny hjälte. */
.tystbild{overflow:hidden;line-height:0}
.tystbild img{width:100%;height:clamp(260px,44vh,520px);object-fit:cover}


/* ══════════════════════════════════════════════════════════════════════════
   DEN INVIKTA REFERENSEN
   ==========================================================================
   Kompositionen ur den godkända referensdesignen (f.d. /prov-start/), invikt
   sist så att den vinner i kaskaden precis som överlagret gjorde. Färg, tokens
   och display-registret är redan invikt ovan; här ligger LAYOUTEN: kapitel-
   hårstreck på sektionsnivå, storyns marginallogik, en stramare måttlinje och
   registrens spärr trimmad för Newsreader. Rytmen MELLAN sektioner rörs inte —
   diagnosen visade att den redan är sund. */

/* Registren i serif: namnen ska bära, inte spreta. Newsreader tål en aning
   mindre spärr än den gamla didonen på samma rad. */
.konstr .knamn{letter-spacing:-.016em}
.stegreg h3{letter-spacing:-.012em}
.villkor b{letter-spacing:-.01em}
.story-ord{letter-spacing:-.006em}
.story-sign b{letter-spacing:0}

/* KAPITELHÅRSTRECK. Varje sektionsrubrik får ett hårstreck över sig med
   etiketten ridande på det. Det binder sidan till ett DOKUMENT med kapitel i
   stället för en följd av fristående block — samma satsytelogik som registren,
   nu på sektionsnivå. Hjälten, remsorna och dropp-ingången står utanför: de är
   bilder, inte kapitel. */
.sek .sek-topp{
  border-top:1px solid var(--linje);
  padding-top:clamp(20px,1.9vw,30px);
  align-items:flex-start;
}
.sek-mork .sek-topp{border-top-color:var(--natt-linje)}
.sek .sek-topp .etikett{margin-bottom:clamp(26px,3.4vw,50px)}
/* Länken "Hela processen" ska sitta på rubrikens baslinje, inte klistras i
   överkant. Med align-items:flex-start på toppen skjuts den ner till rubriken. */
.sek .sek-topp>div:first-child{align-self:stretch}
.sek .sek-topp .lank-pil{align-self:flex-end}

/* STORYN. Sidans tysta parti och tyngsta förtroendeblock. Etiketten i vänster-
   marginalen, uttalandet i en spalt till höger — husets egen marginallogik, nu
   på storyn. Kollapsar till en spalt under 900 px. Storyn har ingen sek-topp,
   så den får kapitelhårstrecket direkt på sin wrap. */
.story-sek .wrap{border-top:1px solid var(--linje);padding-top:clamp(20px,1.9vw,30px)}
.story-sek .etikett{margin-bottom:clamp(30px,3.4vw,44px)}
/* Uttalandet ska läsa som TALAT, alltså lugnt och inte uppblåst — måttlig grad
   i en spalt med gott om marginal, inte en vägg. */
.story-ord{font-size:clamp(22px,2.1vw,30px);line-height:1.36}
@media (min-width:900px){
  .story-sek .wrap{
    display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);
    gap:clamp(28px,5vw,90px);align-items:start;
  }
  .story-sek .etikett{padding-top:.4em;margin-bottom:0}
  .story-in{max-width:48ch;grid-column:2}
}

/* MÅTTLINJEN överallt: ändstrecken en aning kortare och linjen tunnare känns
   mer som ett skjutmått och mindre som en understrykning. */
.matt{gap:16px}
.matt-linje::before,.matt-linje::after{height:8px;top:-3.5px}

/* KONSTRUKTIONSREGISTRET. Raderna får en aning mer luft så namnen i Newsreader
   får andas, och måttet i mono hålls stramt mot högerkanten. */
.konstr a{padding-block:clamp(24px,2.8vw,38px)}

/* HJÄLTEN på startsidan. Newsreader tål ett bredare mått än den gamla didonen,
   så rubriken ligger på tre rader i stället för att spreta på fyra. Måttlinjen
   dras in mot texten; den är sidans signatur och ska läsa som ritningsspråk
   lagt över fotot. Geometrin är tunad mot cubankedjans bild och den copyn,
   därför scopad till startsidan — undersidornas hjältar rörs inte. */
.sida-start .hjalte h1{max-width:13ch}
.sida-start .hjalte .lede{max-width:42ch}
.sida-start .hjalte-in{padding-block:clamp(60px,9.5vh,128px)}
.sida-start .hjalte .matt{margin-top:clamp(40px,6.5vh,80px);max-width:460px}
.sida-start .hjalte-knappar{margin-top:clamp(34px,4vh,46px)}
/* Kedjans svep syns bäst en aning längre in i bilden. */
.sida-start .hjalte-bild img{object-position:72% 50%}


/* PROVET PÅ SIGILLSIDAN — kortet mot telefonen.
   ==========================================================================
   Sidan beskrev kortet i två spalter. Ett kort som beskrivs är en upplysning;
   ett kort man håller mot en telefon är produkten. Det här är sajtens enda
   parti där besökaren gör något med händerna, och det är därför det får väga.

   Scenen är byggd i CSS och transform, inte i WebGL: ett kort är en platt sak
   med en spegel på, och en platt sak med en spegel är precis vad en gradient
   under en perspektivlutning gör bäst. */
.prov-scen{
  position:relative;margin-top:clamp(34px,4.6vw,64px);
  display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);
  gap:clamp(30px,5vw,90px);align-items:center;
  min-height:clamp(430px,47vw,620px);
  perspective:1400px;
}

/* KORTET. Måtten är ett riktigt kort (85,6 × 54 mm), inte en fri rektangel —
   ögat känner igen kortformatet och det är halva trovärdigheten.

   BREDDEN. 420 px på en sida som handlar om just det här kortet var mindre än
   textspalten ovanför det: föremålet stod som en illustration av sig självt
   mitt i en svart yta med luft runt om åt alla håll. Ett föremål som är sidans
   ämne ska ta plats, och 500 px lägger kortet i ungefär samma grad som
   rubriken. Telefonen följer med upp i samma steg, annars ändras förhållandet
   dem emellan och gesten blir en jätte som viftar mot en tumnagel. */
.prov-kort{
  position:relative;justify-self:center;align-self:center;
  width:min(500px,92%);aspect-ratio:85.6 / 54;border-radius:10px;
  cursor:grab;touch-action:none;isolation:isolate;
  transform-style:preserve-3d;
  will-change:transform;
  box-shadow:0 28px 60px -24px rgba(0,0,0,.9),0 2px 0 rgba(255,255,255,.06) inset;
}
.prov-kort:active{cursor:grabbing}
.prov-kort:focus-visible{outline:2px solid var(--ljus);outline-offset:6px}

/* Ytan. Samma kalla metall som märkesplatet, vriden ett kvarts varv så att
   högdagern går på tvären över kortet i stället för längs med.

   BORSTNINGEN ligger överst och är det som skiljer metall från plast. En ren
   gradient har ingen struktur, och en yta utan struktur läser som en tryckt
   plastbricka hur väl högdagern än sitter — det var precis vad kortet gjorde
   vid 500 px, där gradienten fick dubbelt så mycket yta att vara slät på.
   Perioden är tre bildpunkter och inte en: ett hårstreck per pixel moirérar
   sönder när kortet lutas och blir en grå slöja i stället för en riktning. */
.prov-yta{
  position:absolute;inset:0;border-radius:inherit;overflow:hidden;
  background:
    repeating-linear-gradient(101deg,
      rgba(255,255,255,.055) 0 1px,
      rgba(0,0,0,.055) 1px 2px,
      rgba(255,255,255,0) 2px 3px),
    linear-gradient(101deg,
    #141a22 0%,#2b3644 14%,#8f9daf 31%,#5d6875 46%,
    #39424f 58%,#7c8998 74%,#252d38 89%,#12171e 100%);
}
/* Strykljuset. Ligger stilla i kortets rum och flyttas med --lyst av
   skriptet, så att ljuset vandrar när kortet lutas — det är den enda
   signalen om att ytan är metall och inte papper. */
.prov-svep{
  position:absolute;inset:0;border-radius:inherit;overflow:hidden;
  mix-blend-mode:screen;opacity:.85;
}
.prov-svep::before{
  content:"";position:absolute;inset:-40%;
  background:linear-gradient(104deg,
    rgba(190,215,245,0) 34%,rgba(190,215,245,.42) 47%,
    rgba(220,238,255,.66) 50%,rgba(190,215,245,.42) 53%,
    rgba(190,215,245,0) 66%);
  transform:translateX(calc(var(--lyst,.5) * 86% - 43%));
}
.prov-marke{
  position:absolute;left:clamp(18px,5%,30px);top:clamp(16px,9%,28px);
  width:clamp(64px,22%,104px);
}
.prov-marke svg{width:100%;height:auto;display:block;
  fill:rgba(12,16,22,.62)}
.prov-kortnr{
  position:absolute;left:clamp(18px,5%,30px);bottom:clamp(15px,8%,26px);
  font-size:clamp(10px,2.4%,13px);letter-spacing:.2em;
  color:rgba(10,14,20,.6);
}
/* Chipet. Ett hårstreckat fält, inte en guldbricka: NFC-antennen ligger inne i
   kortet och syns inte, men ett litet märke säger vad kortet kan. */
.prov-chip{
  position:absolute;right:clamp(16px,5%,28px);bottom:clamp(15px,8%,26px);
  width:clamp(18px,5%,26px);height:clamp(18px,5%,26px);border-radius:50%;
  border:1px solid rgba(12,16,22,.42);
}
.prov-chip::before,.prov-chip::after{
  content:"";position:absolute;border:1px solid rgba(12,16,22,.34);
  border-radius:50%;inset:22%;
}
.prov-chip::after{inset:42%}

/* TELEFONEN. Inget märke, ingen kamera, inga knappar — en svart platta med
   en skärm. Ritar man en igenkännbar telefon säljer man någon annans produkt
   mitt på sin egen sida. */
.prov-telefon{
  position:relative;justify-self:center;
  width:min(300px,86%);aspect-ratio:9 / 18.5;border-radius:34px;
  background:linear-gradient(160deg,#1a1f27,#0a0d12 46%,#04060a);
  padding:10px;
  box-shadow:0 40px 80px -30px rgba(0,0,0,.95),
             0 0 0 1px rgba(255,255,255,.055),
             0 1px 0 rgba(255,255,255,.10) inset;
}
/* Skärmen är LJUS: den visar passets riktiga sida, och passet är ett
   dokument på papper. En mörk mockskärm med egna uppgifter var en annan
   produkt än den man faktiskt får upp. */
.prov-skarm{
  position:relative;height:100%;border-radius:26px;overflow:hidden;
  background:var(--papper);
}
/* Vakningen: en kall ljusfront som drar över skärmen i det ögonblick kortet
   läses. Det är telefonens egen "ping", och den kommer FÖRE innehållet —
   först ljus, sedan uppgifter, precis som en riktig avläsning. */
.prov-vak{
  position:absolute;inset:0;pointer-events:none;z-index:2;opacity:0;
  background:radial-gradient(120% 60% at 50% 0%,
    rgba(190,215,245,.55) 0%,rgba(150,180,220,.14) 42%,rgba(0,0,0,0) 72%);
}
/* Passet ligger framme från start — skärmen får aldrig stå tom. Gesten med
   kortet finns kvar som taktil signatur (snäpp + ljusfront), men den gömmer
   inga uppgifter. Uppställningen är /pass/-sidans första skärm i miniatyr:
   ordmärke, droppetikett, serif-titel, id-rad och .dat-ramen — samma
   grammatik, mindre kägel. */
.prov-pass{
  position:absolute;inset:0;padding:clamp(14px,6%,20px);
  display:flex;flex-direction:column;gap:clamp(7px,2%,12px);
}
.prov-pass-nav{
  display:flex;align-items:center;justify-content:space-between;
  padding-bottom:clamp(8px,3%,12px);margin-bottom:clamp(2px,1%,6px);
  border-bottom:1px solid var(--linje);
  font-family:var(--serif);font-size:clamp(13px,5.6%,16px);color:var(--ink);
}
.prov-pass-nav>i{
  width:16px;height:5px;display:block;
  border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);
}
/* Texterna prefixas med .prov-skarm: scenen står i en .sek-mork, och
   .sek-mork p / .sek-mork .tal väger annars tyngre och målar dem ljusa —
   osynliga mot pappret. */
.prov-skarm .prov-pass-etik{
  font-family:var(--mono);font-size:8px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--brons);
}
.prov-skarm .prov-pass-namn{
  font-family:var(--serif);font-size:clamp(16px,8%,21px);line-height:1.08;
  color:var(--ink);margin-top:1px;
}
.prov-skarm .prov-pass-id{
  font-size:8px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-2);display:flex;align-items:center;gap:8px;
}
.prov-skarm .prov-pass-id>i{width:16px;height:1px;background:var(--linje);display:block}
/* Datarutan: samma ram och samma ordning som .dat på passet — värdet i mono
   överst, etiketten under. Fyra celler, två i bredd. */
.prov-pass-dat{
  margin:clamp(4px,2%,10px) 0 0;display:grid;grid-template-columns:1fr 1fr;
  border:1px solid var(--linje);
}
.prov-pass-dat>div{
  display:flex;flex-direction:column-reverse;gap:5px;
  padding:clamp(8px,3.4%,13px) clamp(9px,4%,14px);
  border-right:1px solid var(--linje);border-bottom:1px solid var(--linje);
}
.prov-pass-dat>div:nth-child(2n){border-right:0}
.prov-pass-dat>div:nth-child(n+3){border-bottom:0}
.prov-pass-dat dt{font-size:7px;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink-2)}
.prov-skarm .prov-pass-dat dd{margin:0;font-family:var(--mono);
  font-size:clamp(11px,5%,14px);
  color:var(--ink);font-variant-numeric:tabular-nums}
/* Fotot under datarutan, i utfall mot skärmkanten — så fortsätter den
   riktiga pass-sidan, och skärmen står aldrig halvtom. */
.prov-pass-bild{
  flex:1;min-height:0;overflow:hidden;
  margin:clamp(6px,2%,10px) calc(-1*clamp(14px,6%,20px))
         calc(-1*clamp(14px,6%,20px));
}
.prov-pass-bild img{width:100%;height:100%;object-fit:cover;display:block}

.prov-tips{
  position:absolute;left:0;bottom:0;
  font-family:var(--mono);font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;color:var(--ljus-3);
  display:flex;align-items:center;gap:12px;opacity:0;
  transition:opacity .5s ease;
}
.prov-tips>i{width:26px;height:1px;background:var(--natt-linje);display:block}
.prov-kor .prov-tips{opacity:1}
.prov-kor.prov-last .prov-tips{opacity:0}

/* RESERVLÄGET. Utan skript står kortet stilla. */
.prov-scen:not(.prov-kor) .prov-kort{cursor:default}

@media (max-width:760px){
  .prov-scen{grid-template-columns:1fr;gap:clamp(26px,7vw,44px);
    justify-items:center}
  /* Kortet och telefonen följer satsytan och inte en egen andel. Med 86 %
     hamnade kortet 50 px från skärmkanten medan texten ovanför låg på 26, och
     ett föremål som står längre in än sin egen rubrik läser som en tumnagel.
     Nu delar de kant med allt annat på sidan. */
  .prov-kort{width:min(400px,100%)}
  .prov-telefon{width:min(232px,68%)}
  .prov-tips{position:static;justify-content:center;margin-top:4px}
}
@media (prefers-reduced-motion: reduce){
  .prov-tips{display:none}
}


/* ═══════════════════════════ SIGILLSIDAN ═══════════════════════════════════
   Sidan är satt i TVÅ AKTER i stället för som en följd av upplysningar.

   NATTEN äger FÖREMÅLET: plåten i hjälten och kortet mot telefonen, utan
   avbrott emellan — hjälten och provet är samma svarta rum och ska läsa som
   ett. PAPPRET äger DOKUMENTET: numret, vad som står i passet, fotnoterna.
   Skiftet ligger på numret, alltså exakt där kortet slutar vara en sak och
   blir en uppgift. Det är samma två rum som hela sajten går emellan, men här
   bär de var sin del av argumentet i stället för att bara växla för rytmens
   skull.

   Vad som var fel: sidan sålde ett föremål utan att visa det (kortet fanns
   bara som en gradient inne i provet) och sålde ett dokument utan att visa
   det (passet fanns bara som en 224 px tumnagel). De tre uppgifter som bär
   sigillets värde låg som tre lika breda spalter med sex ord i varje, vilket
   är ikonraden med tre fördelar utan ikoner. Och sidans största rubrik satt
   över en fotnot om att en försäkringsvärdering görs av någon annan — alltså
   en självdeklaration i display. */

/* HJÄLTEN — den delade plåten. Varianten fanns färdig sedan startsidans
   provark men valdes bort där: märket äger startsidans första skärm. Här är
   den precis rätt, för sidans ämne ÄR en plåt i metall, och konstruktionen
   säger det i sin form: en spalt och en plåt med ett hårstreck emellan.
   Lägre än startsidans 88svh — en undersida som tar hela skärmen innan
   innehållet börjar är en andra startsida. */
/* SPALTMÅTTET ÄR RÄKNAT MOT RUBRIKEN, inte valt. Startsidans variant sätter
   textspalten på 45 % och innehållet på 36ch, vilket vid 1440 lämnade 347 px
   åt en rubrik vars längsta rad mäter 532. Följden blev fyra rader med "Ett
   kort i" ensamt överst — en rubrik som bryter efter en preposition läser som
   en textmassa som råkat bli stor. 47 % med ett smalare innerfall ger 573 px
   mot radens 555, alltså plats med marginal, och rubriken står på två.
   Måttet på .hjalte-txt-in tas bort helt: det är rubriken och ingressens egna
   mått som ska styra raden, inte en tredje gräns ovanpå dem. */
.hjalte.hjalte-sigill{
  min-height:clamp(500px,76svh,760px);
  grid-template-columns:minmax(0,47fr) minmax(0,53fr);
}
.hjalte.hjalte-sigill .hjalte-txt{padding-right:clamp(26px,3vw,44px)}
.hjalte.hjalte-sigill .hjalte-txt-in{max-width:none}
.hjalte.hjalte-sigill h1{max-width:none}
/* Fotot är kortets kant i strykljus. Beskärningen läggs mot kanten och inte
   mot mitten: en slät yta i mitten av rutan är en yta, en kant med ljus längs
   sig är ett föremål. */
.hjalte.hjalte-sigill .hjalte-plat img{object-position:54% 44%}
@media (max-width:860px){
  /* Plåten staplas överst. 44svh är räknat så att rubriken syns i samma skärm
     som bilden på en telefon — en helskärmsbild man måste rulla förbi för att
     få veta vad sidan handlar om är en laddskärm, inte en hjälte.

     SPALTERNA MÅSTE SKRIVAS TILLBAKA HÄR. .hjalte.delad staplar sig i sin egen
     mediefråga längre upp i filen, och två klasser som kommer senare väger
     lika tungt och vinner på ordning — plåten stod därför kvar som en 180 px
     smal remsa bredvid en rubrik på fem rader vid 390. Mätt, inte antaget. */
  .hjalte.hjalte-sigill{min-height:0;grid-template-columns:1fr}
  .hjalte.hjalte-sigill .hjalte-txt{padding-right:max(calc(var(--kant)/2),(100vw - var(--wrap))/2)}
  .hjalte.hjalte-sigill .hjalte-plat{height:44svh;min-height:270px}
  /* Rubriken går på delad-gradens 38 px i telefon, vilket är mindre än
     dokumentsidornas egen jättegrad. I en spalt som är hela satsytan bred
     finns ingen anledning till det. Taket är räknat mot samma rad: 58 px ger
     515 px på en 816 px bred satsyta vid brytpunkten, och golvet mot den
     smalaste skärm sajten möter — 32 px ger 274 px i en 290 px bred satsyta
     vid 320, alltså två rader hela vägen ner. Vid 36 px blev det tre, med
     "pjäs." ensamt på sista raden. */
  .hjalte.hjalte-sigill h1{font-size:clamp(32px,9.6vw,58px)}
}

/* Anmärkningen till höger om en sektionsrubrik. .sek-topp är redan en flexrad
   med space-between — den bar länken "Hela processen" på andra sidor — men en
   ingress utan mått spänner ut hela resten av raden och trycker rubriken till
   vänsterkanten. Måttet gör den till en marginalanteckning, som den ska vara. */
.sek-topp-not{max-width:34ch;align-self:flex-end;margin-bottom:2px}
@media (max-width:860px){.sek-topp-not{align-self:flex-start}}

/* NUMRET — sidans paus, och skiftet från natt till papper.
   En enda uppgift får en hel skärm. Uppställningen är passets egen gravyrruta
   flyttad till papper: etikett i mono, värdet stort i mono, hårstreck under.

   GRADEN ÄR RÄKNAD, inte vald. Den ligger över sidans rubriker (62 px på en
   dokumentsida) eftersom sidan handlar om ett nummer, och under passets
   rapportnummer (96 px) eftersom serienumret är VÅRT ord medan rapporten är
   någon annans. Två tal som ser lika tunga ut säger att de väger lika mycket,
   och det gör de inte. */
.sigill-nr{border-top:1px solid var(--linje);padding-top:clamp(20px,2.4vw,30px)}
.sigill-nr-etik{
  font-family:var(--mono);font-size:11px;letter-spacing:.22em;
  text-transform:uppercase;color:var(--ink-3);
}
.sigill-nr-tal{
  font-family:var(--mono);font-weight:400;color:var(--ink);
  font-size:clamp(38px,6.2vw,80px);line-height:1;letter-spacing:.02em;
  font-variant-numeric:tabular-nums;white-space:nowrap;
  margin-top:clamp(8px,1.2vw,16px);padding-bottom:clamp(14px,1.8vw,26px);
  border-bottom:1px solid var(--linje);
}
.sigill-nr-txt{
  margin-top:clamp(18px,2.2vw,28px);max-width:44ch;
  font-size:clamp(16px,1.5vw,19px);line-height:1.56;color:var(--ink-2);
}

/* FOTNOTERNA hör till passavsnittet och inte till en egen sektion. Som eget
   block låg de 180 px under villkorens sista hårstreck, med papper på båda
   sidor och ingen tonväxling emellan — två hårstreck med ett hål mitt i, inte
   ett andrum. Här är de dokumentets fot, vilket är precis vad de är: en
   värdering görs av någon annan, och nästa släpp är vad numret ger senare. */
.sigill-fot{margin-top:clamp(56px,6.4vw,92px)}
