:root{--bg:#f5f7fa;--bg-warm:#edf1f7;--black:#0c1f3f;--text:#111827;--text-muted:#7b8599;--white:#f5f7fa;--pop:#1d5bbf;--pop-soft:#5a92d5;--sea:#003d85;--moss:#2a5a8c;--border:#d0d7e2;--gold:#b8943b;--font-display:var(--font-fraunces),Georgia,serif;--font-serif:var(--font-cormorant),Georgia,serif;--font-body:var(--font-dm-mono),monospace;--font-jp:var(--font-shippori),serif;--font-mono:var(--font-dm-mono),monospace}*,:after,:before{margin:0;padding:0;box-sizing:border-box;caret-color:transparent}input,textarea{caret-color:auto}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:var(--font-display);background:var(--bg);color:var(--text);line-height:1.5}::selection{background:var(--pop);color:var(--white)}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}.kx-consent{position:fixed;left:1rem;right:1rem;bottom:1rem;max-width:34rem;z-index:10000;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1.25rem;padding:1.15rem 1.4rem;border-radius:1.5rem;background:var(--bg);color:var(--black);border:1px solid var(--border);font-family:var(--font-body);font-weight:300;font-size:.8rem;line-height:1.6;box-shadow:0 12px 40px rgba(12,31,63,.25)}.kx-consent p{flex:1 1 16rem}.kx-consent a{color:var(--pop);text-decoration:underline;text-underline-offset:3px}.kx-consent-actions{display:flex;gap:.5rem;margin-left:auto}.kx-consent-btn{font-family:var(--font-body);font-size:.8rem;padding:.5rem 1.2rem;border-radius:999px;border:1px solid var(--black);background:var(--black);color:var(--white);cursor:pointer;transition:background .3s ease,border-color .3s ease,color .3s ease,transform .3s ease}.kx-consent-btn:hover{background:var(--pop);border-color:var(--pop);transform:scale(1.04)}.kx-consent-btn--ghost{background:transparent;color:var(--black);border-color:var(--border)}.kx-consent-btn--ghost:hover{background:transparent;border-color:var(--black);transform:none}body:after{content:"";position:fixed;inset:0;pointer-events:none;z-index:9999;opacity:.02;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:256px}