*,*::before,*::after{box-sizing:border-box}html,body{margin:0;padding:0}:root{--font-head:'Newsreader', Georgia, serif;--font-body:'Schibsted Grotesk', system-ui, sans-serif;--font-mono:'JetBrains Mono', monospace}:root,:root[data-theme=dark]{--bg:#0a0d0b;--bg-raised:#0d110f;--bg-chrome:rgba(10,13,11,0.72);--line:rgba(236,245,238,0.08);--line-strong:rgba(236,245,238,0.18);--line2:rgba(236,245,238,0.05);--hover:rgba(236,245,238,0.04);--chip:rgba(236,245,238,0.04);--avatar-bg:rgba(236,245,238,0.06);--fg:#e9ece7;--fg-strong:#f3f6f1;--fg-body:#c5ccc4;--fg2:#98a19b;--fg3:#6a736c;--fg4:#565e58;--accent:#5fc08a;--accent-text:#9fe3bd;--accent-soft:rgba(95,192,138,0.13);--accent-border:rgba(95,192,138,0.30);--on-accent:#06120b;--stripe:rgba(95,192,138,0.06);--glow:rgba(95,192,138,0.10);--code-bg:#10140f}:root[data-theme=light]{--bg:#f4f5f1;--bg-raised:#ffffff;--bg-chrome:rgba(244,245,241,0.82);--line:rgba(18,28,22,0.10);--line-strong:rgba(18,28,22,0.22);--line2:rgba(18,28,22,0.06);--hover:rgba(18,28,22,0.04);--chip:rgba(18,28,22,0.04);--avatar-bg:rgba(18,28,22,0.05);--fg:#18211b;--fg-strong:#0b130e;--fg-body:#2c352e;--fg2:#4c554e;--fg3:#727b73;--fg4:#99a199;--accent:#1f7a4f;--accent-text:#1b6b45;--accent-soft:rgba(31,122,79,0.10);--accent-border:rgba(31,122,79,0.34);--on-accent:#ffffff;--stripe:rgba(31,122,79,0.07);--glow:rgba(31,122,79,0.06);--code-bg:#ffffff}html{background:var(--bg)}body{background:var(--bg);color:var(--fg);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}::selection{background:rgba(95,192,138,.28)}@keyframes gnFadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-thumb{background:rgba(128,128,128,.32);border-radius:8px}::-webkit-scrollbar-track{background:0 0}a{color:inherit}.gn-skip-link{position:absolute;left:12px;top:-60px;z-index:100;padding:9px 16px;border-radius:8px;font-size:14px;font-weight:500;background:var(--accent);color:var(--on-accent);transition:top .15s ease}.gn-skip-link:focus{top:12px}.gn-root{position:relative;min-height:100vh;overflow-x:hidden}.gn-glow{position:absolute;top:-340px;left:50%;transform:translateX(-50%);width:1100px;height:620px;max-width:100%;background:radial-gradient(ellipse at center,var(--glow),transparent 62%);pointer-events:none;filter:blur(8px);z-index:0}.gn-container{position:relative;z-index:1;max-width:1120px;margin:0 auto;padding:0 32px}.gn-masthead{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:26px 0 14px}.gn-brand{display:flex;align-items:center;gap:12px;text-decoration:none}.gn-brand-title{font-family:var(--font-head);font-size:21px;font-weight:500;letter-spacing:-.01em;color:var(--fg3);position:relative;top:.09em}.gn-actions{display:flex;align-items:center;gap:10px}.gn-logo{width:auto;display:block}.gn-logo--dark{display:none}:root[data-theme=light] .gn-logo--light{display:none}:root[data-theme=light] .gn-logo--dark{display:block}.gn-langswitch{display:flex;align-items:center;gap:3px;padding:3px;background:var(--chip);border:1px solid var(--line);border-radius:8px}.gn-lang{display:flex;align-items:center;padding:4px 7px;border-radius:5px;border:none;cursor:pointer;background:0 0;opacity:.45;text-decoration:none}.gn-lang:hover{opacity:1}.gn-lang.is-active{background:var(--accent-soft);opacity:1}.gn-flag{display:block;height:14px;width:auto;border-radius:2px}.gn-iconbtn{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:1px solid var(--line);background:0 0;cursor:pointer;color:var(--fg2)}.gn-iconbtn:hover{color:var(--fg);border-color:var(--line-strong)}.gn-iconbtn .gn-moon{display:none}:root[data-theme=light] .gn-iconbtn .gn-sun{display:none}:root[data-theme=light] .gn-iconbtn .gn-moon{display:inline-flex}.gn-ico{display:inline-flex;align-items:center;justify-content:center;line-height:0;flex:none}.gn-ico svg{width:100%;height:100%;display:block}.gn-rss-btn{display:flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:12px;color:var(--fg2);text-decoration:none;border:1px solid var(--line);padding:7px 13px;border-radius:8px}.gn-rss-btn:hover{color:var(--fg);border-color:var(--line-strong)}.gn-hero{padding:54px 0 34px;animation:gnFadeUp .5s ease both}.gn-eyebrow{font-family:var(--font-mono);font-size:11px;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);margin-bottom:20px}.gn-hero-title{font-family:var(--font-head);margin:0;font-size:clamp(40px,5.6vw,70px);line-height:1.04;letter-spacing:-.02em;font-weight:500;color:var(--fg-strong);max-width:18ch}.gn-hero-sub{margin:24px 0 0;font-size:19px;line-height:1.55;color:var(--fg2);max-width:60ch;text-wrap:pretty}.gn-filter{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:6px 0 22px}.gn-filter-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--fg4);margin-right:8px}.gn-chip{font-family:var(--font-body);font-size:13px;font-weight:500;padding:5px 11px;border-radius:7px;cursor:pointer;background:0 0;color:var(--fg3);border:none}.gn-chip:hover{background:var(--hover);color:var(--fg)}.gn-chip.is-active{background:var(--accent-soft);color:var(--accent-text)}.gn-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;padding:8px 0 30px}.gn-card{display:flex;flex-direction:column;cursor:pointer;border:1px solid var(--line);border-radius:14px;background:var(--bg-raised);overflow:hidden;text-decoration:none;color:inherit;transition:border-color .28s ease,transform .28s ease,box-shadow .28s ease}.gn-card:hover{border-color:var(--accent-border);transform:translateY(-3px);box-shadow:0 16px 36px -18px rgba(0,0,0,.5)}@media(prefers-reduced-motion:reduce){.gn-card,.gn-card:hover{transition:none;transform:none}}.gn-card[hidden]{display:none}.gn-card-cover{height:158px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--line2);background-image:repeating-linear-gradient(135deg,var(--stripe) 0 1px,transparent 1px 13px)}.gn-cover-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;color:var(--fg4)}.gn-card-body{padding:20px;display:flex;flex-direction:column;flex:1}.gn-card-meta{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-bottom:12px;font-family:var(--font-mono);font-size:10.5px;color:var(--fg3)}.gn-tag{color:var(--accent-text);background:var(--accent-soft);padding:3px 9px;border-radius:5px;letter-spacing:.02em}.gn-tag--extra{color:var(--fg2);background:var(--hover);padding:3px 8px;border-radius:5px}.gn-card-date{margin-left:2px}.gn-card-title{font-family:var(--font-head);margin:0;font-size:21px;line-height:1.2;letter-spacing:-.01em;font-weight:500;color:var(--fg-strong);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.gn-card-excerpt{margin:10px 0 18px;font-size:14.5px;line-height:1.5;color:var(--fg2);display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.gn-card-author{display:flex;align-items:center;gap:8px;margin-top:auto;padding-top:14px;border-top:1px solid var(--line2)}.gn-avatar{width:24px;height:24px;border-radius:50%;background:var(--avatar-bg);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:var(--fg2);flex:none}.gn-card-author-name{font-size:12.5px;color:var(--fg2)}.gn-pagination{display:flex;align-items:center;justify-content:center;gap:7px;padding:6px 0 58px}.gn-page-btn{display:flex;align-items:center;gap:6px;font-family:var(--font-body);font-size:13.5px;font-weight:500;color:var(--fg2);background:0 0;border:1px solid var(--line);padding:8px 14px;border-radius:8px;cursor:pointer}.gn-page-btn:hover{color:var(--fg);border-color:var(--line-strong)}.gn-page-btn[disabled]{color:var(--fg4);border-color:var(--line2);opacity:.55;cursor:default}.gn-page-num{display:flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 6px;font-family:var(--font-body);font-size:14px;font-weight:500;color:var(--fg2);background:0 0;border:1px solid var(--line);border-radius:8px;cursor:pointer}.gn-page-num:hover{color:var(--fg);border-color:var(--line-strong)}.gn-page-num.is-active{font-weight:600;color:var(--accent-text);background:var(--accent-soft);border-color:transparent;cursor:default}.gn-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:18px;padding:34px 0 56px;border-top:1px solid var(--line)}.gn-footer-brand{display:flex;flex-direction:column;gap:9px}.gn-footer-rights{font-size:12.5px;color:var(--fg4)}.gn-social{display:flex;align-items:center;gap:10px}.gn-social-link{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:8px;border:1px solid var(--line);color:var(--fg2);text-decoration:none}.gn-social-link:hover{color:var(--fg);border-color:var(--line-strong)}.gn-social-link svg{display:block}.gn-section-head{padding:40px 0 6px}.gn-section-title{font-family:var(--font-head);margin:0;font-size:clamp(30px,4vw,44px);line-height:1.08;letter-spacing:-.02em;font-weight:500;color:var(--fg-strong)}.gn-article-bar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:16px 32px;background:var(--bg-chrome);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.gn-back-btn{display:flex;align-items:center;gap:8px;background:0 0;border:none;cursor:pointer;font-family:var(--font-body);font-size:14px;font-weight:500;color:var(--fg2);padding:6px 8px;border-radius:7px;text-decoration:none}.gn-back-btn:hover{color:var(--fg);background:var(--hover)}.gn-article{max-width:720px;margin:0 auto;padding:52px 32px 90px;animation:gnFadeUp .4s ease both}.gn-article-tags{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:20px}.gn-article-tag{font-family:var(--font-mono);font-size:11.5px;letter-spacing:.02em;color:var(--accent-text);background:var(--accent-soft);padding:4px 11px;border-radius:6px}.gn-article-title{font-family:var(--font-head);margin:0;font-size:clamp(34px,5vw,50px);line-height:1.1;letter-spacing:-.02em;font-weight:500;color:var(--fg-strong);text-wrap:balance}.gn-article-excerpt{margin:22px 0 26px;font-size:21px;line-height:1.5;color:var(--fg2);text-wrap:pretty}.gn-byline{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:14px 28px;padding-bottom:24px;border-bottom:1px solid var(--line)}.gn-byline-author{display:flex;align-items:center;gap:11px}.gn-avatar-lg{flex:none;width:40px;height:40px;border-radius:50%;background:var(--avatar-bg);border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:var(--fg2)}.gn-byline-name{font-size:15px;font-weight:600;color:var(--fg-strong)}.gn-byline-role{font-size:13px;color:var(--fg3)}.gn-byline-meta{display:flex;align-items:center;gap:8px}.gn-byline-meta span{font-family:var(--font-mono);font-size:12px;color:var(--fg3);white-space:nowrap}.gn-byline-dot{color:var(--fg4)!important}.gn-cover-lg{height:320px;margin:30px 0 4px;border-radius:14px;border:1px solid var(--line);background:var(--bg-raised);background-image:repeating-linear-gradient(135deg,var(--stripe) 0 1px,transparent 1px 13px);display:flex;align-items:center;justify-content:center}.gn-cover-lg .gn-cover-label{font-size:11px}.gn-prose{padding:30px 0 8px}.gn-prose>p{margin:0 0 22px;font-size:18px;line-height:1.72;color:var(--fg-body);text-wrap:pretty}.gn-prose>h2,.gn-prose>h3{font-family:var(--font-head);margin:38px 0 16px;font-size:25px;line-height:1.22;letter-spacing:-.01em;font-weight:500;color:var(--fg-strong)}.gn-prose>blockquote{font-family:var(--font-head);margin:30px 0;padding:4px 0 4px 24px;border-left:2px solid var(--accent);font-size:23px;line-height:1.45;font-weight:500;letter-spacing:-.01em;color:var(--fg-strong)}.gn-prose>blockquote p{margin:0}.gn-prose a{color:var(--accent-text);text-decoration:underline;text-underline-offset:2px}.gn-prose ul,.gn-prose ol{font-size:18px;line-height:1.72;color:var(--fg-body);padding-left:22px;margin:0 0 22px}.gn-prose li{margin-bottom:8px}.gn-prose code{font-family:var(--font-mono);font-size:.85em;background:var(--hover);padding:2px 6px;border-radius:5px}.gn-prose pre{background:var(--code-bg);border:1px solid var(--line);border-radius:11px;padding:16px 18px;overflow-x:auto;margin:0 0 22px}.gn-prose pre code{background:0 0;padding:0;font-size:13.5px}.gn-article-actions{display:flex;align-items:center;gap:10px;padding:22px 0 0;margin-top:20px;border-top:1px solid var(--line)}.gn-action-btn{display:flex;align-items:center;gap:8px;font-family:var(--font-body);font-size:14px;font-weight:500;color:var(--fg2);background:0 0;border:1px solid var(--line);padding:10px 16px;border-radius:9px;cursor:pointer}.gn-action-btn:hover{background:var(--hover);color:var(--fg);border-color:var(--line-strong)}.gn-action-btn svg{display:block}.gn-avatar,.gn-avatar-lg{overflow:hidden}.gn-avatar img,.gn-avatar-lg img{width:100%;height:100%;object-fit:cover;display:block}.gn-card-cover,.gn-cover-lg{overflow:hidden}.gn-cover-img{width:100%;height:100%;object-fit:cover;display:block}@media(max-width:720px){.gn-container{padding:0 20px}.gn-grid{grid-template-columns:1fr}.gn-article,.gn-article-bar{padding-left:20px;padding-right:20px}}.gn-footer-meta{display:flex;align-items:center;flex-wrap:wrap;gap:4px 9px;font-size:12.5px;color:var(--fg4)}.gn-footer-meta a{color:var(--fg3);text-decoration:none}.gn-footer-meta a:hover{color:var(--fg)}.gn-footer-sep{color:var(--fg4);opacity:.6}.gn-legal .gn-prose{padding-top:24px}.gn-legal-prose>h2{font-size:22px;margin-top:36px}.gn-legal-prose>p:first-child em{font-style:normal;font-family:var(--font-mono);font-size:12.5px;letter-spacing:.03em;color:var(--fg3)}.gn-legal-prose>ul{list-style:none;padding-left:0}.gn-legal-prose>ul>li{padding-left:18px;position:relative}.gn-legal-prose>ul>li::before{content:"—";position:absolute;left:0;color:var(--accent)}@view-transition{navigation: auto; }@media(prefers-reduced-motion:reduce){@view-transition{navigation: none; }}.gn-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:20;pointer-events:none}.gn-progress-fill{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-text))}.gn-reading-left{position:fixed;bottom:18px;right:18px;z-index:20;pointer-events:none;font-family:var(--font-mono);font-size:11px;color:var(--fg2);background:var(--bg-chrome);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line);border-radius:999px;padding:5px 11px;opacity:0;transform:translateY(6px);transition:opacity .3s ease,transform .3s ease}.gn-reading-left.is-visible{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.gn-reading-left{transition:opacity .3s ease;transform:none}}.gn-searchbar{position:relative;display:flex;align-items:center;margin:6px 0 16px}.gn-search-ico{position:absolute;left:14px;display:inline-flex;color:var(--fg3);pointer-events:none}.gn-search-ico .gn-ico{width:16px;height:16px}.gn-search-input{width:100%;font-family:var(--font-body);font-size:15px;color:var(--fg);background:var(--bg-raised);border:1px solid var(--line);border-radius:10px;padding:12px 16px 12px 42px;outline:none;transition:border-color .2s ease,box-shadow .2s ease}.gn-search-input::placeholder{color:var(--fg3)}.gn-search-input:focus{border-color:var(--accent-border);box-shadow:0 0 0 3px var(--accent-soft)}.gn-search-empty{text-align:center;color:var(--fg2);font-size:15px;padding:30px 0 44px}.gn-prose>h2,.gn-prose>h3{position:relative;scroll-margin-top:80px}.gn-heading-anchor{display:inline-flex;align-items:center;margin-left:8px;color:var(--fg4);text-decoration:none;vertical-align:middle;opacity:0;transition:opacity .18s ease,color .18s ease}.gn-heading-anchor .gn-ico{width:15px;height:15px}.gn-prose>h2:hover .gn-heading-anchor,.gn-prose>h3:hover .gn-heading-anchor,.gn-heading-anchor:focus-visible{opacity:1}.gn-heading-anchor:hover{color:var(--accent-text)}.gn-prose .gn-codewrap{position:relative;margin:0 0 22px}.gn-prose .gn-codewrap>.highlight,.gn-prose .gn-codewrap>pre{margin:0}.gn-code-copy{position:absolute;top:9px;right:9px;display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:11px;color:var(--fg2);background:var(--bg-chrome);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:7px;padding:5px 9px;cursor:pointer;opacity:0;transition:opacity .2s ease,color .2s ease,border-color .2s ease}.gn-codewrap:hover .gn-code-copy,.gn-code-copy:focus-visible{opacity:1}.gn-code-copy:hover{color:var(--fg);border-color:var(--line-strong)}.gn-code-copy.is-copied{color:var(--accent-text);border-color:var(--accent-border);opacity:1}.gn-code-copy .gn-ico{width:13px;height:13px}.gn-code-copy .gn-check-i{display:none}.gn-code-copy.is-copied .gn-copy-i{display:none}.gn-code-copy.is-copied .gn-check-i{display:inline-flex}@media(hover:none){.gn-code-copy{opacity:1}}.gn-meta-label{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}.gn-authorcard{display:flex;gap:16px;align-items:flex-start;margin-top:34px;padding:20px 22px;border:1px solid var(--line);border-radius:14px;background:var(--bg-raised)}.gn-authorcard .gn-avatar-lg{width:48px;height:48px;flex:none}.gn-authorcard-name{font-size:15px;font-weight:600;color:var(--fg-strong);margin:7px 0 8px}.gn-authorcard-role{font-weight:400;color:var(--fg3)}.gn-authorcard-bio{margin:0;font-size:15px;line-height:1.62;color:var(--fg2);text-wrap:pretty}.gn-related{margin-top:40px;padding-top:32px;border-top:1px solid var(--line)}.gn-related .gn-meta-label{display:block;margin-bottom:6px}.gn-related-list{list-style:none;margin:0;padding:0}.gn-related-list li:not(:last-child){border-bottom:1px solid var(--line2)}.gn-related-link{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 14px;margin:0 -14px;border-radius:10px;text-decoration:none;transition:background .18s ease}.gn-related-link:hover{background:var(--hover)}.gn-related-main{display:flex;flex-direction:column;gap:3px;min-width:0}.gn-related-title{font-family:var(--font-body);font-size:15.5px;font-weight:600;line-height:1.3;color:var(--fg-strong);transition:color .18s ease}.gn-related-link:hover .gn-related-title{color:var(--accent-text)}.gn-related-topics{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.02em;text-transform:uppercase;color:var(--fg3)}.gn-related-meta{display:flex;align-items:center;gap:11px;flex:none}.gn-related-date{font-family:var(--font-mono);font-size:11.5px;color:var(--fg3);white-space:nowrap}.gn-related-arrow{font-family:var(--font-mono);font-size:14px;color:var(--fg4);transition:color .18s ease,transform .18s ease}.gn-related-link:hover .gn-related-arrow{color:var(--accent);transform:translateX(3px)}.gn-postnav{margin-top:38px}.gn-postnav .gn-meta-label{display:block;margin-bottom:12px}.gn-postnav-grid{display:flex;gap:12px}.gn-postnav-link{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px;padding:14px 16px;border:1px solid var(--line);border-radius:11px;background:var(--bg-raised);text-decoration:none;transition:border-color .2s ease,transform .2s ease}.gn-postnav-link:hover{border-color:var(--accent-border);transform:translateY(-2px)}@media(prefers-reduced-motion:reduce){.gn-postnav-link,.gn-postnav-link:hover{transition:none;transform:none}}.gn-postnav-dir{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent)}.gn-postnav-title{font-family:var(--font-body);font-size:15px;font-weight:600;line-height:1.35;color:var(--fg-strong);display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}@media(max-width:720px){.gn-postnav-grid{flex-direction:column;gap:10px}}