:root{color-scheme:dark;--ink-1000: #08090a;--ink-950: #0b0c0d;--ink-900: #101112;--ink-850: #16171a;--ink-800: #1d1e21;--surface-1: rgba(255, 255, 255, .035);--surface-2: rgba(255, 255, 255, .058);--surface-3: rgba(255, 255, 255, .09);--surface-veil: rgba(9, 10, 11, .84);--surface-panel: rgba(16, 17, 18, .92);--field-bg: rgba(255, 255, 255, .04);--field-bg-hover: rgba(255, 255, 255, .06);--line-1: rgba(255, 255, 255, .082);--line-2: rgba(255, 255, 255, .145);--line-3: rgba(255, 255, 255, .24);--gold-100: #fbf1da;--gold-200: #f2ddb0;--gold-300: #e6c179;--gold-400: #d9a94f;--gold-500: #bd8a31;--gold-600: #966a21;--accent: #d9a94f;--accent-bright: #e6c179;--accent-soft: rgba(217, 169, 79, .12);--accent-soft-2: rgba(217, 169, 79, .2);--accent-line: rgba(217, 169, 79, .34);--accent-grad: linear-gradient(118deg, #f4e2b6 0%, #dcac58 40%, #b07e2a 100%);--on-accent: #17120a;--teal: #58a79c;--teal-soft: rgba(88, 167, 156, .13);--teal-line: rgba(88, 167, 156, .32);--accent-2: #58a79c;--text: #f3f1ed;--text-dim: #b5b1a9;--text-faint: #857f76;--text-inverse: #0b0c0d;--ok: #4fb783;--ok-soft: rgba(79, 183, 131, .14);--warn: #d8a03c;--warn-soft: rgba(216, 160, 60, .14);--danger: #e0655b;--danger-soft: rgba(224, 101, 91, .14);--info: #6e9bd1;--r-xs: 8px;--r-sm: 12px;--r-md: 16px;--r-lg: 22px;--r-xl: 30px;--r-full: 999px;--shadow-1: 0 1px 2px rgba(0, 0, 0, .4);--shadow-2: 0 18px 48px -22px rgba(0, 0, 0, .85);--shadow-3: 0 44px 96px -36px rgba(0, 0, 0, .95);--shadow-gold: 0 16px 44px -20px rgba(217, 169, 79, .55);--ring: 0 0 0 3px rgba(217, 169, 79, .28);--ease: cubic-bezier(.22, 1, .36, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--dur-1: .18s;--dur-2: .32s;--font-body: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-display: "Manrope", "Inter", ui-sans-serif, system-ui, sans-serif;--font-serif: "Instrument Serif", "Iowan Old Style", "Palatino Linotype", Georgia, serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--shell: 1200px;--nav-gut: 16px;--nav-h: 72px;--gut: clamp(20px, 5vw, 40px);--sec-y: clamp(52px, 7vw, 92px);--z-nav: 100;--z-drawer: 130;--z-modal: 400;--z-toast: 500}[data-theme=light]{color-scheme:light;--ink-1000: #fbf9f5;--ink-950: #f5f2ec;--ink-900: #ffffff;--ink-850: #ffffff;--ink-800: #f1ede4;--surface-1: rgba(30, 26, 20, .026);--surface-2: rgba(30, 26, 20, .045);--surface-3: rgba(30, 26, 20, .07);--surface-veil: rgba(250, 248, 244, .86);--surface-panel: rgba(255, 255, 255, .95);--field-bg: rgba(30, 26, 20, .028);--field-bg-hover: rgba(30, 26, 20, .05);--line-1: rgba(38, 32, 24, .1);--line-2: rgba(38, 32, 24, .16);--line-3: rgba(38, 32, 24, .28);--accent: #8a6318;--accent-bright: #b3812a;--accent-soft: rgba(138, 99, 24, .09);--accent-soft-2: rgba(138, 99, 24, .16);--accent-line: rgba(138, 99, 24, .3);--accent-grad: linear-gradient(118deg, #d5a94f 0%, #b3821f 55%, #8a6318 100%);--on-accent: #fffdf7;--teal: #2f7c72;--teal-soft: rgba(47, 124, 114, .1);--teal-line: rgba(47, 124, 114, .28);--accent-2: #2f7c72;--text: #1b1815;--text-dim: #57514a;--text-faint: #857e74;--text-inverse: #ffffff;--ok: #1f7a53;--ok-soft: rgba(31, 122, 83, .1);--warn: #96631a;--warn-soft: rgba(150, 99, 26, .12);--danger: #b23f36;--danger-soft: rgba(178, 63, 54, .1);--info: #2f5f96;--shadow-1: 0 1px 2px rgba(56, 46, 32, .08);--shadow-2: 0 18px 44px -24px rgba(56, 46, 32, .28);--shadow-3: 0 40px 84px -38px rgba(56, 46, 32, .34);--shadow-gold: 0 16px 40px -22px rgba(138, 99, 24, .35);--ring: 0 0 0 3px rgba(138, 99, 24, .22)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 24px)}body{font-family:var(--font-body);font-size:16px;line-height:1.65;background:var(--ink-1000);color:var(--text);min-height:100svh;overflow-x:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"kern" 1,"liga" 1}#root{min-height:100svh;display:flex;flex-direction:column;isolation:isolate}h1,h2,h3,h4,h5{font-family:var(--font-display);line-height:1.14;letter-spacing:-.022em;font-weight:700;text-wrap:balance}p{text-wrap:pretty}a{color:inherit;text-decoration:none}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}img,svg,video{display:block;max-width:100%}ul,ol{list-style:none}::selection{background:var(--accent-soft-2);color:var(--text)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:var(--ink-1000)}::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#4a4436,#6d5c34);border-radius:var(--r-full);border:3px solid var(--ink-1000)}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#6b6146,var(--gold-400))}[data-theme=light] ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#d9d2c4,#c0ab7f);border-color:var(--ink-1000)}.page-wrapper{position:relative;flex:1;display:flex;flex-direction:column;isolation:isolate}.page-wrapper:before{content:"";position:fixed;inset:-25%;z-index:-2;pointer-events:none;background:radial-gradient(900px 620px at 78% -6%,var(--accent-soft),transparent 62%),radial-gradient(760px 560px at -8% 34%,var(--teal-soft),transparent 60%),radial-gradient(700px 700px at 50% 116%,rgba(217,169,79,.05),transparent 62%);filter:blur(46px)}.page-wrapper:after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.028;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}[data-theme=light] .page-wrapper:after{opacity:.02}.shell{width:100%;max-width:var(--shell);margin-inline:auto;padding-inline:var(--gut)}main{position:relative;z-index:1;flex:1}.gold-text{background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;color:transparent}.serif-accent{font-family:var(--font-serif);font-style:italic;font-weight:400;letter-spacing:0}.glass{background:var(--surface-1);border:1px solid var(--line-1);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4)}.card{background:var(--surface-1);border:1px solid var(--line-1);border-radius:var(--r-lg);transition:border-color var(--dur-2) var(--ease),transform var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease)}.eyebrow{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:11.5px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;color:var(--accent)}.eyebrow:before{content:"";width:26px;height:1px;background:linear-gradient(90deg,transparent,var(--accent));flex:none}.eyebrow.center{justify-content:center}.eyebrow.center:after{content:"";width:26px;height:1px;background:linear-gradient(270deg,transparent,var(--accent));flex:none}.eyebrow.plain:before,.eyebrow.plain:after{display:none}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 24px;min-height:46px;border:1px solid transparent;border-radius:var(--r-full);font-family:var(--font-display);font-size:14.5px;font-weight:600;letter-spacing:-.005em;white-space:nowrap;overflow:hidden;isolation:isolate;transition:transform var(--dur-1) var(--ease),box-shadow var(--dur-2) var(--ease),background-color var(--dur-2) var(--ease),border-color var(--dur-2) var(--ease),color var(--dur-2) var(--ease)}.btn svg{flex:none}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.btn-primary{color:var(--on-accent);background:var(--accent-grad);box-shadow:var(--shadow-gold)}.btn-primary:after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(118deg,transparent 22%,rgba(255,255,255,.42) 50%,transparent 78%);transform:translate(-130%);transition:transform .7s var(--ease)}.btn-primary:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 20px 48px -18px #d9a94f99}.btn-primary:hover:not(:disabled):after{transform:translate(130%)}.btn-primary:active:not(:disabled){transform:translateY(0)}.btn-outline{color:var(--text);background:var(--surface-2);border-color:var(--line-2);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.btn-outline:hover:not(:disabled){border-color:var(--accent-line);background:var(--accent-soft);transform:translateY(-2px)}.btn-quiet{color:var(--text-dim);background:transparent;border-color:var(--line-1)}.btn-quiet:hover:not(:disabled){color:var(--text);border-color:var(--line-2);background:var(--surface-1)}.btn-danger{color:var(--danger);background:var(--danger-soft);border-color:var(--danger-soft)}.btn-danger:hover:not(:disabled){background:var(--danger);color:#fff;border-color:transparent}.btn-sm{padding:8px 15px;min-height:38px;font-size:13px;gap:6px}.btn-lg{padding:14px 30px;min-height:52px;font-size:15.5px}.btn-block{width:100%}.icon-btn{display:inline-grid;place-items:center;width:38px;height:38px;flex:none;border-radius:var(--r-sm);border:1px solid var(--line-1);background:var(--surface-2);color:var(--text-dim);transition:all var(--dur-1) var(--ease)}.icon-btn:hover:not(:disabled){color:var(--text);border-color:var(--accent-line);background:var(--accent-soft)}.icon-btn.danger:hover:not(:disabled){color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.icon-btn:disabled{opacity:.4;cursor:not-allowed}.icon-btn.sm{width:32px;height:32px;border-radius:var(--r-xs)}.link-arrow{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-display);font-weight:600;font-size:14px;color:var(--accent);transition:gap var(--dur-1) var(--ease)}.link-arrow:hover{gap:10px}.link-arrow svg{transition:transform var(--dur-1) var(--ease)}.pill{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:var(--r-full);font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line);white-space:nowrap}.pill.teal{color:var(--teal);background:var(--teal-soft);border-color:var(--teal-line)}.pill.plain{color:var(--text-dim);background:var(--surface-2);border-color:var(--line-1)}.chip-toggle{padding:8px 15px;border-radius:var(--r-full);border:1px solid var(--line-1);background:var(--surface-1);color:var(--text-dim);font-family:var(--font-mono);font-size:12px;font-weight:500;transition:all var(--dur-1) var(--ease)}.chip-toggle:hover{color:var(--text);border-color:var(--line-2)}.chip-toggle[aria-pressed=true],.chip-toggle.active{color:var(--on-accent);background:var(--accent-grad);border-color:transparent;box-shadow:var(--shadow-gold)}.field{display:flex;flex-direction:column;gap:7px;min-width:0}.label{font-size:12.5px;font-weight:600;letter-spacing:.01em;color:var(--text-dim);display:flex;align-items:center;gap:6px}.label .req{color:var(--accent)}.input,.textarea,.select{width:100%;padding:12px 15px;border-radius:var(--r-sm);border:1px solid var(--line-1);background:var(--field-bg);color:var(--text);font-size:14.5px;font-family:inherit;line-height:1.5;transition:border-color var(--dur-1) var(--ease),box-shadow var(--dur-1) var(--ease),background var(--dur-1) var(--ease)}.input::placeholder,.textarea::placeholder{color:var(--text-faint)}.input:hover,.textarea:hover,.select:hover{background:var(--field-bg-hover)}.input:focus,.textarea:focus,.select:focus{outline:none;border-color:var(--accent);background:var(--field-bg-hover);box-shadow:var(--ring)}.input[aria-invalid=true],.textarea[aria-invalid=true]{border-color:var(--danger)}.textarea{resize:vertical;min-height:108px}.select{appearance:none;padding-right:38px;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 19px) calc(50% + 1px),calc(100% - 14px) calc(50% + 1px);background-size:5px 5px,5px 5px;background-repeat:no-repeat}.select option{background:var(--ink-850);color:var(--text)}.hint{font-size:12.5px;color:var(--text-faint);line-height:1.5}.error-text{font-size:12.5px;color:var(--danger)}.section{padding-block:var(--sec-y);position:relative}.section+.section{padding-top:clamp(28px,4vw,48px)}.section-head{display:flex;flex-direction:column;gap:14px;margin-bottom:clamp(36px,5vw,60px);max-width:720px}.section-head.center{align-items:center;text-align:center;margin-inline:auto}.section-head h2{font-size:clamp(28px,4.2vw,44px)}.section-head .sub{color:var(--text-dim);font-size:clamp(15px,1.6vw,16.5px);line-height:1.7}.divider{height:1px;background:linear-gradient(90deg,transparent,var(--line-2),transparent);border:0}.prose{display:flex;flex-direction:column;gap:18px}.prose p{color:var(--text-dim);font-size:clamp(15px,1.55vw,16.5px);line-height:1.82;max-width:68ch}.prose p strong{color:var(--text);font-weight:600}.prose .lead{color:var(--text);font-size:clamp(17px,1.9vw,19.5px);line-height:1.72;font-weight:500}.prose .lead strong{color:var(--accent-bright);font-weight:700}.status-msg{display:flex;align-items:flex-start;gap:9px;padding:12px 15px;border-radius:var(--r-sm);font-size:13.5px;line-height:1.55;border:1px solid transparent}.status-msg svg{flex:none;margin-top:1px}.status-msg.ok{color:var(--ok);background:var(--ok-soft);border-color:var(--ok-soft)}.status-msg.err{color:var(--danger);background:var(--danger-soft);border-color:var(--danger-soft)}.status-msg.warn{color:var(--warn);background:var(--warn-soft);border-color:var(--warn-soft)}.status-msg.info{color:var(--info);background:#6e9bd11f;border-color:#6e9bd13d}.spin{animation:forge-spin .9s linear infinite}@keyframes forge-spin{to{transform:rotate(360deg)}}.scroll-progress{position:fixed;top:0;left:0;right:0;height:2px;z-index:var(--z-toast);background:var(--accent-grad);transform-origin:0 50%}.reveal{will-change:transform,opacity}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:fixed;top:8px;left:8px;z-index:999;padding:10px 18px;border-radius:var(--r-sm);background:var(--accent-grad);color:var(--on-accent);font-weight:600;transform:translateY(-160%);transition:transform var(--dur-2) var(--ease)}.skip-link:focus-visible{transform:translateY(0)}main:focus,main:focus-visible{outline:none}@keyframes caret-blink{0%,49%{opacity:1}50%,to{opacity:0}}@keyframes soft-pulse{0%,to{opacity:1}50%{opacity:.35}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.page-wrapper:before{animation:none}}.smart-img{position:relative;width:100%;height:100%;overflow:hidden;background:linear-gradient(140deg,var(--surface-2),var(--surface-1))}.smart-img img{width:100%;height:100%;opacity:0;transform:scale(1.02);transition:opacity .55s var(--ease),transform .7s var(--ease)}.smart-img.is-loaded img{opacity:1;transform:scale(1)}.smart-img-shimmer{position:absolute;inset:0;background:linear-gradient(100deg,transparent 28%,var(--surface-3) 48%,transparent 68%);background-size:220% 100%;animation:shimmer 1.5s linear infinite}.smart-img.is-loaded .smart-img-shimmer{display:none}@keyframes shimmer{0%{background-position:220% 0}to{background-position:-120% 0}}.smart-img-fallback{position:absolute;inset:0;display:grid;place-items:center;color:var(--text-faint);background:repeating-linear-gradient(45deg,var(--surface-1),var(--surface-1) 10px,transparent 10px,transparent 20px)}.media-chip{position:absolute;top:12px;left:12px;z-index:4;display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:var(--r-full);background:#0a0b0cb8;border:1px solid rgba(255,255,255,.14);color:#fff;font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);pointer-events:none}.media-chip svg{color:var(--accent)}.media-chip.right{left:auto;right:12px}.media-scrim{position:absolute;inset:0;z-index:3;display:grid;place-items:center;opacity:0;background:linear-gradient(180deg,transparent 34%,rgba(6,6,7,.78));transition:opacity .32s var(--ease);pointer-events:none}.state-block{display:flex;flex-direction:column;align-items:center;gap:12px;padding:clamp(36px,7vw,64px) 24px;text-align:center;border:1px dashed var(--line-2);border-radius:var(--r-lg);color:var(--text-faint)}.state-block h3{font-size:18px;color:var(--text)}.state-block p{font-size:14.5px;max-width:42ch}.state-icon{width:48px;height:48px;display:grid;place-items:center;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line-1);color:var(--accent)}.crash{min-height:100svh;display:grid;place-items:center;padding:24px}.crash-card{max-width:520px;padding:40px 34px;border-radius:var(--r-lg);text-align:center;display:flex;flex-direction:column;align-items:center;gap:16px}.crash-icon{width:58px;height:58px;display:grid;place-items:center;border-radius:var(--r-md);background:var(--accent-grad);color:var(--on-accent);box-shadow:var(--shadow-gold)}.crash-card h1{font-size:25px}.crash-card p{color:var(--text-dim);font-size:14.5px;line-height:1.7}.crash-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.crash-trace{width:100%;max-height:220px;overflow:auto;text-align:left;font-family:var(--font-mono);font-size:11px;line-height:1.6;color:var(--text-faint);background:var(--surface-1);border:1px solid var(--line-1);border-radius:var(--r-sm);padding:12px}.route-fallback{flex:1;min-height:100svh;display:grid;place-items:center;background:var(--ink-1000)}.route-fallback-bar{width:120px;height:2px;border-radius:var(--r-full);background:var(--line-2);overflow:hidden;position:relative}.route-fallback-bar:after{content:"";position:absolute;inset:0;background:var(--accent-grad);transform-origin:0 50%;animation:route-load 1.1s var(--ease) infinite}@keyframes route-load{0%{transform:scaleX(0)}55%{transform:scaleX(1)}to{transform:scaleX(1) translate(100%)}}.notfound{display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center;padding-block:clamp(48px,10vw,120px);position:relative}.notfound-code{font-family:var(--font-display);font-size:clamp(80px,18vw,190px);font-weight:800;line-height:.9;letter-spacing:-.05em;background:var(--accent-grad);-webkit-background-clip:text;background-clip:text;color:transparent;opacity:.22;-webkit-user-select:none;user-select:none}.notfound-icon{width:56px;height:56px;display:grid;place-items:center;border-radius:var(--r-md);background:var(--surface-2);border:1px solid var(--line-1);color:var(--accent);margin-top:-26px}.notfound h1{font-size:clamp(26px,4vw,40px)}.notfound p{color:var(--text-dim);max-width:48ch;font-size:15.5px;line-height:1.7}.notfound-actions{display:flex;flex-wrap:wrap;gap:11px;justify-content:center;margin-top:8px}@media(max-width:520px){.notfound-actions .btn{width:100%}}.page-head{padding-block:clamp(40px,6vw,80px) clamp(20px,3vw,36px)}.page-head .eyebrow{margin-bottom:16px}.page-head h1{font-size:clamp(30px,5vw,56px);line-height:1.06;letter-spacing:-.032em;max-width:20ch}.page-head-text{margin-top:18px;max-width:58ch;color:var(--text-dim);font-size:clamp(15px,1.6vw,17px);line-height:1.72}.page-head-actions{display:flex;flex-wrap:wrap;gap:11px;margin-top:28px}.mini-stat{display:flex;flex-direction:column;gap:2px}.mini-stat-value{font-family:var(--font-display);font-size:clamp(22px,2.6vw,28px);font-weight:800;letter-spacing:-.03em;line-height:1.05}.mini-stat-label{font-size:12.5px;color:var(--text-faint)}.page-head-stats{display:flex;flex-wrap:wrap;gap:clamp(22px,4vw,46px);margin-top:30px;padding-top:24px;border-top:1px solid var(--line-1)}.proj-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,330px),1fr));gap:clamp(18px,2.2vw,24px)}.proj-cell{display:flex}.proj-card{display:flex;flex-direction:column;width:100%;border-radius:var(--r-lg);background:var(--surface-1);border:1px solid var(--line-1);overflow:hidden;transition:border-color var(--dur-2) var(--ease),box-shadow var(--dur-2) var(--ease)}.proj-card:hover,.proj-card:focus-within{border-color:var(--accent-line);box-shadow:var(--shadow-2)}.proj-media{position:relative;display:block;aspect-ratio:16 / 10;overflow:hidden;background:var(--ink-850);border-bottom:1px solid var(--line-1)}.proj-media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}.proj-card:hover .proj-media img{transform:scale(1.04)}.proj-media:hover .media-scrim{opacity:1}.proj-open{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:var(--r-full);background:var(--accent-grad);color:var(--on-accent);font-family:var(--font-display);font-size:13px;font-weight:700;transform:translateY(8px);opacity:0;transition:transform var(--dur-2) var(--ease),opacity var(--dur-2) var(--ease)}.proj-card:hover .proj-open,.proj-media:hover .proj-open{transform:translateY(0);opacity:1}.proj-body{display:flex;flex-direction:column;gap:9px;padding:clamp(18px,2vw,22px);flex:1}.proj-role{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}.proj-body h3{font-size:clamp(17px,1.9vw,20px)}.proj-desc{color:var(--text-dim);font-size:14.5px;line-height:1.68;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.proj-card.is-compact .proj-desc{-webkit-line-clamp:2}.proj-highlights{display:flex;flex-direction:column;gap:7px;margin-top:2px}.proj-highlights li{position:relative;padding-left:18px;font-size:13.5px;color:var(--text-dim);line-height:1.6}.proj-highlights li:before{content:"";position:absolute;left:2px;top:.6em;width:6px;height:6px;border-radius:2px;background:var(--accent);transform:rotate(45deg)}.proj-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:10px}.proj-tags li{padding:4px 10px;border-radius:var(--r-full);background:var(--surface-2);border:1px solid var(--line-1);font-family:var(--font-mono);font-size:10.5px;font-weight:500;letter-spacing:.04em;color:var(--text-faint);white-space:nowrap}.proj-actions{display:flex;flex-wrap:wrap;gap:9px;padding:0 clamp(18px,2vw,22px) clamp(18px,2vw,22px)}.proj-actions:empty{display:none}.section-foot{display:flex;justify-content:center;margin-top:clamp(30px,4vw,46px)}@media(max-width:760px){.proj-actions .btn{flex:1 1 auto}.page-head-stats{gap:18px 26px}}@media(max-width:520px){.page-head-actions .btn,.section-foot .btn{width:100%}}.toast-stack{position:fixed;z-index:var(--z-toast);right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));width:min(400px,calc(100vw - 32px));display:flex;flex-direction:column;gap:10px;pointer-events:none}.toast{position:relative;display:flex;align-items:flex-start;gap:11px;padding:13px 14px;border-radius:var(--r-md);border:1px solid var(--line-2);background:var(--surface-panel);box-shadow:var(--shadow-3);backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);overflow:hidden;pointer-events:auto;animation:toast-in .34s var(--ease) both}@keyframes toast-in{0%{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.toast-icon{flex:none;margin-top:1px}.toast-body{flex:1;font-size:13.5px;line-height:1.55;color:var(--text);overflow-wrap:anywhere}.toast-close{flex:none;width:24px;height:24px;display:grid;place-items:center;border:0;border-radius:7px;background:transparent;color:var(--text-faint);transition:all .2s var(--ease)}.toast-close:hover{color:var(--text);background:var(--surface-2)}.toast-timer{position:absolute;left:0;bottom:0;height:2px;width:100%;transform-origin:0 50%;background:currentColor;opacity:.4;animation-name:toast-drain;animation-timing-function:linear;animation-fill-mode:forwards}@keyframes toast-drain{0%{transform:scaleX(1)}to{transform:scaleX(0)}}.toast-success{border-color:var(--ok-soft)}.toast-success .toast-icon,.toast-success .toast-timer{color:var(--ok)}.toast-error{border-color:var(--danger-soft)}.toast-error .toast-icon,.toast-error .toast-timer{color:var(--danger)}.toast-warning{border-color:var(--warn-soft)}.toast-warning .toast-icon,.toast-warning .toast-timer{color:var(--warn)}.toast-info{border-color:#6e9bd147}.toast-info .toast-icon,.toast-info .toast-timer{color:var(--info)}@media(max-width:520px){.toast-stack{left:12px;right:12px;bottom:12px;width:auto}}
