/* ============================================================================
   forre_pulse — PAPPER OCH KORN  (topprutnätet AVSTÄNGT 2026-08-30)
   Sidytan, inte komponenterna. Egen fil så hela lagret kan backas genom att ta
   bort EN länkrad i views/layouts/default.php. Rör inga komponentklasser.

   Beslut 1: ÅTERSTÄLLT på Kentas begäran 2026-08-15 — pappersvitt #eeece8 testades
   live och han ville tillbaka till den ursprungliga --bg (#f0f2f5), men BEHÅLLA
   rutorna. Kornet nedan ligger kvar och fungerar mot båda värdena.
   Beslut 2: topprutnätet, som bakgrund i stället för element — se motiveringen nedan.

   Mörkt läge bär samma två lager med egna värden. Inga nya hexvärden utanför
   tokens: rutnätslinjerna är rgba av svart respektive vitt, precis som bannerns
   instrumentlager i pulse-live-banner.css, och slöjan tonar mot var(--bg).
   ============================================================================ */

/* ---------------------------------------------------------------- KORN
   Film­korn över sidan. Ligger fixed över innehållet med multiply i ljust läge
   (mörkar papperet en aning där kornet är tätt) och overlay i mörkt (lyfter i
   stället för att sota igen). filter:grayscale(1) tar bort färgstänket som
   feTurbulence annars ger — utan den får sidan svaga färgprickar.

   VARNING till nästa som rör detta: mix-blend-mode på ett fixed helskärmslager
   tvingar webbläsaren att komposita om hela sidan vid scroll. Höj inte ytan och
   lägg inte till fler blend-lager utan att mäta scrollprestanda först. */
body::after{
  content:"";position:fixed;inset:0;z-index:0;pointer-events:none;
  opacity:.5;mix-blend-mode:multiply;filter:grayscale(1);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");
}
[data-theme="dark"] body::after{opacity:.28;mix-blend-mode:overlay}

/* ------------------------------------------------- TOPPRUTNÄT (AVSTÄNGT 2026-08-30)
   Rutnät över sidans första skärm som tonas ut till noll.

   ★ VARFÖR BAKGRUND OCH INTE ETT ELEMENT (avsteg från specen, med flit):
   ett absolutpositionerat .pulse-topgrid målas ALLTID ovanpå statiska syskon —
   positionerade element ligger i ett senare målningslager än vanligt flöde. För
   att korten skulle hamna över krävdes att allt innehåll fick position:relative,
   och det skapar nya stackningskontexter i .shell-kolumnerna. Där bor hovercards
   (pulse-hovercard.css) och modaler som är byggda för att ta sig UT ur sin
   kolumn; fångade i en ny kontext hade de börjat hamna under syskonkolumner.
   z-index:-1 löser det inte heller — då hamnar rutnätet bakom sidans bakgrund
   och syns aldrig, precis som specen varnar för.

   En bakgrundsbild målas per definition bakom alla barn. Noll ny markup, noll
   stackningsrisk, och den scrollar bort med innehållet.

   Lagerordningen: FÖRSTA background-image ligger ÖVERST. Slöjan är därför först —
   den tonar rutnätet ned i sidfärgen i stället för att en mask klipper bort det.
   Samma utfall som specens mask-image, men utan att röra stackningen.

   Rutan är 26px = samma modul som bannerns instrumentrutnät. Ändra inte siffran.

   ★ POSITIONEN ÄR MÄTT, INTE GISSAD. Första försöket satte rutnätet på 0 → 460px
   från .pulse-shells överkant. Men shellen börjar högst upp, och de första ~150px
   är stabbar, banner, navbar och shoutbox — alla med egen solid bakgrund. Kvar
   blev en remsa på ~250px som korten dessutom täckte, så rutnätet syntes inte alls
   trots att CSS:en var korrekt applicerad (verifierat i webbläsaren 2026-08-15).
   Därför börjar det på 150px: precis under sajtens egen krom, där gatorna vid
   sidan om 1200-railen faktiskt är synliga. Ändras topbarens höjd ska den här
   siffran följa med. */
/* ============================================================================
   AVSTANGT 2026-08-30 pa Kentas begaran. Hans ord: "bakgrunden pa sidan under
   och ovanfor navbar den rutiga kan du ta bort ... blir for mkt AI slop har".

   Vad som slacktes: 26px-rutnatet pa GATORNA utanfor 1200-railen, fran 150px
   och 520px ned, plus dess morka syskon. Rutnatet var korrekt byggt men
   generiskt: ett tunt tech-raster sager ingenting om FORRE.NU och konkurrerade
   med korten om samma yta. Navbarens rad 1 slacktes samtidigt (.tr1-rutn::before
   i pulse-topbar-rad1.css) - det var samma monster ovanfor navraden.

   KORNET LEVER. body::after ovan ar orort. Bara rutnatet ar av.
   ROLLBACK: ta bort raden ovan och raden under de tva blocken.
   ERSATTARE: design-proposals/sidytan-2026-08-30.html
   ============================================================================ */
/*
.pulse-shell{
  background-image:
    linear-gradient(180deg,transparent 0,transparent 30%,var(--bg) 100%),
    repeating-linear-gradient(90deg,rgba(16,24,40,.055) 0 1px,transparent 1px 26px),
    repeating-linear-gradient(0deg,rgba(16,24,40,.055) 0 1px,transparent 1px 26px);
  background-repeat:no-repeat;
  background-size:100% 520px;
  background-position:0 150px;
}
[data-theme="dark"] .pulse-shell{
  background-image:
    linear-gradient(180deg,transparent 0,transparent 30%,var(--bg) 100%),
    repeating-linear-gradient(90deg,rgba(255,255,255,.05) 0 1px,transparent 1px 26px),
    repeating-linear-gradient(0deg,rgba(255,255,255,.05) 0 1px,transparent 1px 26px);
}
*/

/* ---------------------------------------------------------------- HÅRLINJEN
   Kentas val 2026-08-30 efter design-proposals/sidytan-2026-08-30.html: vy A
   (inget mönster) OCH hårlinjen. Den fyller inte gatan, den förklarar den —
   railens kant blir synlig, så tomrummet läser som "utanför kolumnen" i stället
   för "yta som glömdes bort".

   ★ EN GRADIENT, TVÅ LINJER, NOLL NY MARKUP. Bilden är exakt var(--shell-w)
   bred och målar 1px i vardera änden. background-position:50% centrerar den,
   och eftersom procent i background-position räknas mot CONTAINER MINUS BILD
   hamnar linjerna precis där railen slutar — oavsett fönsterbredd, utan calc
   och utan att siffran 1200 skrivs på ett andra ställe.

   Den ligger som BAKGRUND på skalet, alltså bakom alla barn: topbaren,
   shoutbaren och korten har egen solid --card och täcker linjen där de går, så
   den syns bara i gatorna. Det är avsikten, inte en bieffekt.

   Samma token som kortkanten (--line) → de kan aldrig glida isär mellan ljust
   och mörkt läge.

   Under 1280 är gatan smalare än 40 px och en linje där läser som en ram runt
   fönstret i stället för som railens kant. Av. */
.pulse-shell{
  background-image:linear-gradient(90deg,
    var(--line) 0 1px,
    transparent 1px calc(var(--shell-w) - 1px),
    var(--line) calc(var(--shell-w) - 1px) var(--shell-w));
  background-repeat:no-repeat;
  background-size:var(--shell-w) 100%;
  background-position:50% 0;
}
@media(max-width:1279px){
  .pulse-shell{background-image:none}
}

/* Mobil: rutnätet äter kontrast på små skärmar där kortet fyller hela bredden,
   och kornet kostar mest just där. Båda av under 640. */
@media(max-width:640px){
  /* .pulse-shell{background-image:none}  DOD 2026-08-30: rutnatet ar av pa alla bredder. */
  body::after{opacity:.32}
}
