/* core.css: tokens, reset, typography, helpers, keyframes — Sasken GenAI site. Generated from the shared design system. */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
            --sas-orange:   #F94C30;
            --sas-orange-dk:#D93B20;
            --sas-orange-lt:#FF6D54;
            --sas-purple:   #34005F;
            --sas-purple-lt:#5A2D8A;
            --bg:           #FFFBF7;
            --bg-warm:      #FFF8F2;
            --bg-cream:     #FEF5EC;
            --surface:      #FFFFFF;
            --text:         #1A1210;
            --text-2:       #574F46;
            --text-3:       #9A918A;
            --sh-sm:   0 2px 8px rgba(52,0,95,.05);
            --sh-md:   0 8px 24px rgba(52,0,95,.08), 0 2px 8px rgba(52,0,95,.04);
            --sh-lg:   0 20px 50px rgba(52,0,95,.1), 0 6px 16px rgba(52,0,95,.05);
            --sh-ora:  0 10px 32px rgba(249,76,48,.22);
            --sh-pur:  0 10px 32px rgba(52,0,95,.2);
            --nav-h: 72px;
        }

html { scroll-behavior: smooth; }

body {
            font-family: 'Trebuchet MS', 'Source Sans 3', sans-serif;
            background: var(--bg); color: var(--text);
            line-height: 1.65; overflow-x: hidden;
        }

body::before {
            content:''; position:fixed; inset:0;
            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.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.025'/%3E%3C/svg%3E");
            pointer-events:none; z-index:9999; opacity:.3;
        }

h1,h2,h3,h4 { font-family: 'DM Serif Display', serif; font-weight:400; line-height:1.1; letter-spacing:-.02em; }

.container { max-width:1240px; margin:0 auto; padding:0 40px; }

.grad-it {
            display: inline-block;
            font-style: italic;
            background: linear-gradient(135deg, var(--sas-orange) 0%, #FF8C6A 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            padding: 0 0.25em 0.3em 0;
            margin: 0 -0.25em -0.3em 0;
            line-height: 1.1;
        }

em.grad {
            display: inline-block;
            font-style: italic;
            background: linear-gradient(135deg, var(--sas-orange) 0%, #FF8C6A 100%);
            -webkit-background-clip: text;
            -webkit-text-fill-color: transparent;
            background-clip: text;
            padding: 0 0.15em 0.2em 0;
            margin: 0 -0.15em -0.2em 0;
            line-height: 1.1;
        }

@keyframes pulseDot { 0%,100%{opacity:1;transform:scale(1)} 50%{opacity:.4;transform:scale(.7)} }

@keyframes fadeUp { from{opacity:0;transform:translateY(24px)} to{opacity:1;transform:translateY(0)} }

@keyframes v2Float { 0% { transform: translate(0, 0); } 100% { transform: translate(5%, 10%); } }

@keyframes v2Flow { 0% { stroke-dashoffset: 320; } 100% { stroke-dashoffset: 0; } }
