.admin-root{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;font-size:16px}.admin-root,.admin-root *{font-family:Space Grotesk,Segoe UI,system-ui,sans-serif}.admin-root *{box-sizing:border-box;margin:0;padding:0}.admin-root{--font-mono:"JetBrains Mono", ui-monospace, "Fira Code", monospace;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--font-sans:"Space Grotesk", "Segoe UI", system-ui, sans-serif;--bg:#0e100f;--bg-raised:#161614;--bg-sunk:#101210;--text:#fffce1;--muted:#8b8a7d;--faint:#5c5d55;--line:#2b2d29;--on-accent:#0e100f;--accent:#3b82f6;--accent-lt:#93c5fd;--accent-hover:#2563eb;--accent-light:#93c5fd;--accent-glow:#3b82f62e;--accent-bg:#3b82f61a;--accent-border:#3b82f659;--danger:#ef4444;--danger-light:#fca5a5;--danger-bg:#ef444414;--danger-border:#ef444440;--success:#22c55e;--success-light:#86efac;--success-bg:#22c55e1a;--glass-bg:var(--bg-sunk);--glass-border:var(--line);--glass-hover:var(--bg-raised);--sidebar-w:256px;--topbar-h:68px;--radius:14px;--radius-sm:8px;--shadow:0 4px 24px #00000059;--shadow-lg:0 12px 48px #00000080;--transition:all .25s ease;width:100%;min-height:100dvh}.admin-root.light{--bg:#f6f5ee;--bg-raised:#fff;--bg-sunk:#eae7da;--text:#101210;--muted:#575748;--faint:#6a695e;--line:#cfcbb4;--on-accent:#fff;--accent:#2563eb;--accent-lt:#1d4ed8;--accent-hover:#1d4ed8;--accent-light:#1d4ed8;--accent-glow:#2563eb33;--accent-bg:#2563eb14;--accent-border:#2563eb4d;--shadow:0 4px 24px #10121014;--shadow-lg:0 12px 48px #10121024}.admin-root .admin-nav-label,.admin-root .admin-panel-count,.admin-root .admin-form-field label,.admin-root .admin-login-error{font-family:var(--font-mono)}.admin-login-page{background:var(--bg);min-height:100dvh;padding:24px;padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden auto}.admin-login-deco{z-index:0;pointer-events:none;position:absolute;inset:0;overflow:hidden}.admin-login-shape{display:block;position:absolute}.admin-login-shape--diamond{clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%);background:linear-gradient(135deg,#ff8709 0%,#f7bdf8 100%);width:clamp(34px,5vw,64px);height:clamp(34px,5vw,64px);animation:22s linear infinite adminFlairSpin;top:6%;right:4%}.admin-login-shape--star{clip-path:polygon(50% 0%,54% 46%,100% 50%,54% 54%,50% 100%,46% 54%,0% 50%,46% 46%);background:#fec5fb;width:clamp(28px,4vw,52px);height:clamp(28px,4vw,52px);animation:7s ease-in-out infinite adminFlairFloat;bottom:22%;right:16%}.admin-login-shape--arc{opacity:.6;border:4px solid #9d95ff;border-color:#9d95ff #9d95ff #0000 #0000;border-radius:50%;width:clamp(90px,13vw,180px);height:clamp(90px,13vw,180px);animation:34s linear infinite adminFlairSpin;top:26%;left:-6%}.admin-login-shape--ring{border:3px solid #ff8709;border-radius:50%;width:clamp(30px,4.5vw,58px);height:clamp(30px,4.5vw,58px);animation:5.5s ease-in-out infinite adminRingPulse;bottom:14%;left:7%}.admin-login-shape--block{background:linear-gradient(135deg,#fec5fb 0%,#9d95ff 100%);width:clamp(18px,2.4vw,32px);height:clamp(18px,2.4vw,32px);animation:9s ease-in-out infinite adminBlockDrift;top:58%;left:5%}.admin-login-shape--dot{background:#f100cb;border-radius:50%;width:clamp(8px,1vw,12px);height:clamp(8px,1vw,12px);animation:6.5s ease-in-out infinite adminDotDrift;top:16%;left:16%}@keyframes adminFlairSpin{to{transform:rotate(360deg)}}@keyframes adminFlairFloat{0%,to{transform:translateY(0)rotate(-8deg)}50%{transform:translateY(-18px)rotate(8deg)}}@keyframes adminRingPulse{0%,to{opacity:.75;transform:scale(1)}50%{opacity:.35;transform:scale(1.18)}}@keyframes adminBlockDrift{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-16px)rotate(45deg)}}@keyframes adminDotDrift{0%,to{transform:translate(0)}50%{transform:translate(-14px,12px)}}@media (prefers-reduced-motion:reduce){.admin-login-shape{animation:none}}.admin-login-card{background:var(--bg-raised);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid var(--glass-border);width:100%;min-width:0;max-width:420px;box-shadow:var(--shadow-lg), 0 0 0 1px var(--accent-bg);z-index:1;border-radius:20px;margin:auto;padding:48px 40px;animation:.45s loginFadeIn;position:relative}@keyframes loginFadeIn{0%{opacity:0;transform:translateY(20px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.admin-login-logo{align-items:center;gap:12px;margin-bottom:32px;display:flex}.admin-login-logo-icon{background:var(--accent);color:#fff;border-radius:10px;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;display:flex}.admin-login-logo-text{color:var(--text);letter-spacing:.02em;font-size:17px;font-weight:700}.admin-login-title{color:var(--text);margin-bottom:6px;font-size:26px;font-weight:800}.admin-login-subtitle{color:var(--muted);margin-bottom:32px;font-size:13px}.admin-field{margin-bottom:18px}.admin-field label{color:var(--muted);letter-spacing:.07em;text-transform:uppercase;margin-bottom:7px;font-size:11px;font-weight:600;display:block}.admin-field input{background:var(--bg-sunk);border:1px solid var(--glass-border);border-radius:var(--radius-sm);width:100%;max-width:100%;color:var(--text);font-size:16px;font-family:var(--font-sans);transition:var(--transition);outline:none;padding:12px 16px}.admin-field input:focus{border-color:var(--accent);background:var(--accent-bg);box-shadow:0 0 0 3px var(--accent-glow)}.admin-field input::placeholder{color:var(--muted)}.admin-login-error{background:var(--danger-bg);border:1px solid var(--danger-border);border-radius:var(--radius-sm);color:var(--danger-light);align-items:center;gap:8px;margin-bottom:16px;padding:10px 14px;font-size:13px;animation:.4s shake;display:flex}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.admin-btn-primary{background:var(--accent);width:100%;color:var(--on-accent);font-size:15px;font-weight:700;font-family:var(--font-sans);cursor:pointer;transition:all .3s var(--ease-out);border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:8px;min-height:48px;margin-top:8px;padding:13px;display:flex}.admin-btn-primary:hover:not(:disabled){background:var(--accent-lt)}.admin-btn-primary:disabled{opacity:.6;cursor:not-allowed}.admin-spinner{border:2px solid var(--faint);border-top-color:#fff;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.7s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.admin-layout{width:100%;min-width:0;min-height:100dvh;display:flex}.admin-sidebar{width:var(--sidebar-w);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-right:1px solid var(--line);overscroll-behavior:contain;z-index:100;flex-direction:column;min-height:100dvh;display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto}.admin-sidebar-header{height:var(--topbar-h);border-bottom:1px solid var(--line);flex-shrink:0;align-items:center;gap:12px;padding:0 22px;display:flex}.admin-sidebar-icon-wrap{background:var(--accent);color:#fff;border-radius:9px;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:18px;display:flex}.admin-sidebar-brand{color:var(--text);font-size:15px;font-weight:700}.admin-sidebar-brand span{font-family:var(--font-mono);letter-spacing:.06em;color:var(--muted);margin-top:3px;font-size:10.5px;font-weight:400;display:block}.admin-sidebar-nav{flex-direction:column;flex:1;gap:4px;padding:20px 10px;display:flex}.admin-nav-label{letter-spacing:.1em;color:var(--faint);text-transform:uppercase;margin-top:8px;padding:4px 12px 8px;font-size:10px;font-weight:600}.admin-nav-item{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);color:var(--muted);font-size:14px;font-weight:500;font-family:var(--font-sans);text-align:left;background:0 0;border:none;align-items:center;gap:11px;width:100%;padding:10px 12px;display:flex;position:relative;overflow:hidden}.admin-nav-item:hover{color:var(--text);background:var(--glass-hover)}.admin-nav-item.active{color:var(--accent);background:var(--accent-bg)}.admin-nav-item.active:before{content:"";background:var(--accent);border-radius:0 4px 4px 0;width:3px;height:60%;position:absolute;top:50%;left:0;transform:translateY(-50%)}.admin-nav-badge{background:var(--accent);color:var(--on-accent);border-radius:20px;margin-left:auto;padding:1px 7px;font-size:11px;font-weight:600}.admin-sidebar-footer{border-top:1px solid var(--line);padding:16px 10px}.admin-sidebar-identity{border-bottom:1px solid var(--line);align-items:center;gap:10px;margin:0 -10px 10px;padding:0 22px 14px;display:flex}.admin-sidebar-avatar{background:var(--accent);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;font-size:14px;font-weight:700;display:flex}.admin-sidebar-identity-text{flex:1;min-width:0}.admin-sidebar-account-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:14px;font-weight:600;line-height:1.25;overflow:hidden}.admin-sidebar-email{font-family:var(--font-mono);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:10px;overflow:hidden}.admin-logout-icon{flex-shrink:0;justify-content:center;align-items:center;width:34px;display:flex}.admin-logout-btn{border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition);color:var(--danger);font-size:14px;font-weight:500;font-family:var(--font-sans);text-align:left;background:0 0;border:none;align-items:center;gap:10px;width:100%;padding:10px 12px;display:flex}.admin-logout-btn:hover{background:var(--danger-bg)}.admin-main{margin-left:var(--sidebar-w);background:var(--bg);background-image:radial-gradient(ellipse 50% 40% at 80% 5%, var(--accent-bg) 0%, transparent 60%);flex:1;min-width:0;min-height:100dvh}.admin-topbar{height:var(--topbar-h);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);z-index:50;align-items:center;gap:16px;padding:0 32px;display:flex;position:sticky;top:0}.admin-topbar-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:18px;font-weight:700;overflow:hidden}.admin-theme-toggle{border:1px solid var(--line);border-radius:var(--radius-sm);width:34px;height:34px;color:var(--muted);cursor:pointer;transition:var(--transition);background:0 0;flex-shrink:0;justify-content:center;align-items:center;display:flex}.admin-theme-toggle:hover{background:var(--bg-sunk);border-color:var(--accent-border);color:var(--accent)}.admin-theme-toggle-floating{top:max(16px, env(safe-area-inset-top));right:max(16px, env(safe-area-inset-right));z-index:1001;background:var(--bg-raised);box-shadow:var(--shadow);position:fixed}.admin-content{min-width:0;max-width:min(1200px,100%);margin:0 auto;padding:32px}.admin-stats-row{background:var(--line);border:1px solid var(--line);border-radius:16px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1px;margin-bottom:32px;display:grid;overflow:hidden}.admin-stat-card{--stat-figure:clamp(1.9rem, 4vw, 2.75rem);background:var(--bg);text-align:left;color:inherit;transition:background .3s var(--ease-out);border:none;border-radius:0;flex-direction:column;gap:10px;padding:clamp(20px,3vw,28px);font-family:inherit;display:flex}.admin-stat-card.is-clickable{cursor:pointer}.admin-stat-card.is-clickable:hover{background:var(--bg-raised)}.admin-stat-card.is-clickable:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.admin-stat-value{min-height:var(--stat-figure);font-size:var(--stat-figure);letter-spacing:-.03em;color:var(--accent);white-space:nowrap;align-items:flex-end;font-weight:600;line-height:1;display:flex}.admin-stat-label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);overflow-wrap:break-word;word-break:normal;font-size:10px;display:block}.admin-stat-value--name{letter-spacing:-.01em;color:var(--text);white-space:normal;overflow-wrap:break-word;font-size:clamp(1.05rem,2.2vw,1.35rem);line-height:1.25}.admin-panel-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.admin-panel-title{letter-spacing:-.02em;color:var(--text);font-size:clamp(1.35rem,3vw,1.9rem);font-weight:600;line-height:1.05}.admin-panel-count{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-top:6px;font-size:11px}.admin-refresh-btn{border:1px solid var(--line);color:var(--muted);cursor:pointer;transition:all .3s var(--ease-out);background:0 0;border-radius:9px;align-items:center;gap:8px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:600;display:inline-flex}.admin-refresh-btn:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}.admin-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.admin-loading{flex-direction:column;gap:12px;padding:8px 0;display:flex}.admin-skeleton{background:linear-gradient(90deg, var(--bg-sunk) 0%, var(--line) 50%, var(--bg-sunk) 100%);border-radius:var(--radius);border:1px solid var(--glass-border);background-size:400% 100%;height:90px;animation:1.5s ease-in-out infinite shimmer}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.admin-empty-state{text-align:center;color:var(--muted);padding:64px 24px}.admin-empty-state>*{margin-left:auto;margin-right:auto}.admin-empty-state svg{opacity:.85;margin-bottom:16px}.admin-empty-state p{color:var(--faint);font-size:14px}.admin-messages-list{flex-direction:column;gap:14px;display:flex}.admin-message-card{background:var(--glass-bg);border:1px solid var(--glass-border);border-radius:var(--radius);transition:var(--transition);padding:20px 22px;animation:.3s both cardIn;position:relative}@keyframes cardIn{0%{opacity:0;transform:translateY(32px)}to{opacity:1;transform:translateY(0)}}.admin-message-card:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 20px 42px -20px color-mix(in srgb, var(--accent) 50%, transparent)}.admin-message-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:12px;display:flex}.admin-message-sender{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.admin-message-avatar{background:var(--accent);color:#fff;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:16px;font-weight:700;display:flex}.admin-message-name{color:var(--text);overflow-wrap:anywhere;min-width:0;font-size:15px;font-weight:600}.admin-message-email{color:var(--muted);overflow-wrap:anywhere;min-width:0;margin-top:2px;font-size:13px}.admin-message-meta{flex-shrink:0;align-items:center;gap:10px;display:flex}.admin-message-date{font-family:var(--font-mono);color:var(--muted);font-size:12px}.admin-message-subject{color:var(--accent);background:var(--accent-bg);border:1px solid var(--accent-border);overflow-wrap:anywhere;border-radius:999px;max-width:100%;margin-bottom:10px;padding:2px 10px;font-size:13px;font-weight:600;display:inline-block}.admin-message-body{color:var(--text-2,#d8d6c8);white-space:pre-wrap;word-break:break-word;font-size:14px;line-height:1.75}.admin-delete-btn{background:var(--danger-bg);border:1px solid var(--danger-border);width:34px;height:34px;color:var(--danger);cursor:pointer;transition:var(--transition);border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.admin-delete-btn:hover{background:#ef44442e;border-color:#ef444480;transform:scale(1.06)}.admin-delete-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.admin-project-item.editing{border-color:var(--accent-border);background:var(--accent-bg);box-shadow:0 0 0 2px var(--accent-border)}.admin-editing-badge{letter-spacing:.06em;text-transform:uppercase;background:var(--accent);color:var(--on-accent);vertical-align:middle;border-radius:999px;margin-left:8px;padding:1px 7px;font-size:10px;font-weight:700;display:inline-block}.admin-add-form-card.editing{border-color:var(--accent-border);box-shadow:0 0 0 2px var(--accent-border), var(--shadow)}.admin-form-cancel{border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;color:var(--muted);font-size:13px;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:var(--transition);background:0 0;justify-content:center;align-items:center;gap:6px;margin-top:8px;padding:11px;display:flex}.admin-form-cancel:hover{background:var(--danger-bg);border-color:var(--danger-border);color:var(--danger-light)}.admin-projects-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:24px;display:grid}.admin-projects-list{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:clamp(16px,2vw,24px);display:grid}.admin-project-item{border:1px solid var(--line);background:var(--bg-raised);transition:transform .45s var(--ease-out), border-color .35s ease, box-shadow .45s var(--ease-out);border-radius:18px;flex-direction:column;animation:.3s both cardIn;display:flex;overflow:hidden}.admin-project-item:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 20px 42px -20px color-mix(in srgb, var(--accent) 50%, transparent);transform:translateY(-6px)}.admin-project-thumb{aspect-ratio:16/10;background:var(--bg-sunk);justify-content:center;align-items:center;width:100%;display:flex;position:relative;overflow:hidden}.admin-project-thumb img{object-fit:cover;width:100%;height:100%}.admin-project-thumb-fallback{opacity:.4;font-size:34px}.admin-project-info{flex-direction:column;flex:1;gap:12px;padding:24px;display:flex}.admin-project-info-title{letter-spacing:-.02em;color:var(--text);-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;margin:0;font-size:21px;font-weight:600;transition:color .3s;display:-webkit-box;overflow:hidden}.admin-project-item:hover .admin-project-info-title{color:var(--accent)}.admin-project-info-desc{color:var(--muted);-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;flex:1;margin:0;font-size:14.5px;line-height:1.65;display:-webkit-box;overflow:hidden}.admin-project-tags-mini{flex-wrap:wrap;gap:6px;display:flex}.admin-tag-mini{font-family:var(--font-mono);letter-spacing:.04em;background:color-mix(in srgb, var(--text) 7%, transparent);color:var(--muted);border-radius:6px;padding:4px 10px;font-size:11px}.admin-project-actions-wrap{flex-wrap:wrap;align-items:center;gap:10px;margin-top:auto;display:flex}.admin-project-btn{cursor:pointer;border:1px solid var(--line);color:inherit;transition:all .3s var(--ease-out);background:0 0;border-radius:9px;justify-content:center;align-items:center;gap:8px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.admin-project-btn--primary{background:var(--accent);color:var(--on-accent);border-color:#0000}.admin-project-btn--primary:hover:not(:disabled){background:var(--accent-lt);color:var(--on-accent);transform:translateY(-2px)}.admin-project-btn:not(.admin-project-btn--primary):not(:disabled):hover{border-color:var(--accent);color:var(--accent)}.admin-project-btn--danger:not(.admin-project-btn--primary):hover:not(:disabled){border-color:var(--danger);color:var(--danger);background:var(--danger-bg)}.admin-project-btn:disabled{opacity:.5;cursor:not-allowed}.admin-project-btn--disabled{opacity:.4;cursor:default}.admin-spinner--dark{border-color:currentColor #00000040 #00000040;width:13px;height:13px}.admin-panel-header-actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-add-project-btn{background:var(--accent);color:var(--on-accent);cursor:pointer;white-space:nowrap;transition:all .3s var(--ease-out);border:1px solid #0000;border-radius:9px;align-items:center;gap:8px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:600;display:inline-flex}.admin-add-project-btn:hover{background:var(--accent-lt);transform:translateY(-2px)}.admin-add-project-btn:active{transform:translateY(0)}.admin-modal-overlay{z-index:2000;padding:24px;padding:max(24px, env(safe-area-inset-top)) max(24px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(24px, env(safe-area-inset-left));-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overscroll-behavior:contain;background:#000000b8;justify-content:center;align-items:center;animation:.2s adminOverlayIn;display:flex;position:fixed;inset:0;overflow-y:auto}@keyframes adminOverlayIn{0%{opacity:0}to{opacity:1}}.admin-modal-overlay .admin-add-form-card{animation:.24s cubic-bezier(.16,1,.3,1) adminDialogIn}@keyframes adminDialogIn{0%{opacity:0;transform:translateY(16px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.admin-add-form-card{background:var(--bg-raised);border:1px solid var(--glass-border);border-radius:var(--radius);width:100%;min-width:0;max-width:min(560px,100%);box-shadow:var(--shadow-lg);margin:auto;padding:24px;position:relative}.admin-editing-notice{font-family:var(--font-mono);color:var(--accent-light);background:var(--accent-bg);border:1px solid var(--accent-border);border-radius:var(--radius-sm);align-items:center;gap:8px;margin-bottom:16px;padding:8px 12px;font-size:12px;display:flex}.admin-add-form-title{color:var(--text);align-items:center;gap:8px;margin-bottom:18px;font-size:16px;font-weight:700;display:flex}.admin-modal-close{color:var(--muted);cursor:pointer;border-radius:var(--radius-sm);transition:var(--transition);background:0 0;border:1px solid #0000;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;padding:6px;display:flex}.admin-modal-close:hover:not(:disabled){background:var(--glass-hover);color:var(--text);border-color:var(--glass-border)}.admin-modal-close:disabled{opacity:.4;cursor:not-allowed}.admin-form-field{margin-bottom:14px}.admin-form-field label{color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-bottom:6px;font-size:11px;font-weight:600;display:block}.admin-form-field input,.admin-form-field textarea{background:var(--bg-sunk);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;max-width:100%;color:var(--text);font-size:16px;font-family:var(--font-sans);resize:vertical;outline:none;padding:11px 14px;transition:border-color .3s,box-shadow .3s}.admin-form-field input:focus,.admin-form-field textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.admin-form-field input::placeholder,.admin-form-field textarea::placeholder{color:var(--muted)}.admin-form-hint{font-family:var(--font-mono);color:var(--muted);margin-top:4px;font-size:11px}.admin-form-submit{background:var(--accent);width:100%;color:var(--on-accent);font-size:14px;font-weight:700;font-family:var(--font-sans);cursor:pointer;transition:all .3s var(--ease-out);border:1px solid #0000;border-radius:9px;justify-content:center;align-items:center;gap:7px;min-height:46px;margin-top:6px;padding:12px;display:flex}.admin-form-submit:hover:not(:disabled){background:var(--accent-lt)}.admin-form-submit:disabled{opacity:.6;cursor:not-allowed}.admin-toast{z-index:9999;border-radius:var(--radius-sm);font-size:13px;font-weight:600;font-family:var(--font-sans);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:var(--shadow-lg);align-items:center;gap:10px;max-width:360px;padding:14px 18px;animation:.3s toastIn;display:flex;position:fixed;bottom:24px;right:24px}@keyframes toastIn{0%{opacity:0;transform:translate(120%)scale(.95)}to{opacity:1;transform:translate(0)scale(1)}}.admin-toast.success{background:var(--success-bg);color:var(--success-light);border:1px solid #22c55e4d}.admin-toast.error{background:var(--danger-bg);border:1px solid var(--danger-border);color:var(--danger-light)}.admin-hamburger{color:var(--text);cursor:pointer;border-radius:var(--radius-sm);transition:var(--transition);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:8px;display:none}.admin-hamburger:hover{background:var(--glass-hover);color:var(--accent)}.admin-sidebar-close{color:var(--muted);cursor:pointer;border-radius:var(--radius-sm);transition:var(--transition);background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;padding:6px;display:none}.admin-sidebar-close:hover{background:var(--glass-hover);color:var(--danger)}.admin-sidebar-overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:99;background:#000000a6;animation:.22s forwards fadeInOverlay;position:fixed;inset:0}@keyframes fadeInOverlay{0%{opacity:0}to{opacity:1}}.admin-project-actions-wrap{flex-shrink:0;align-items:center;gap:8px;display:flex}@media (width<=768px){.admin-login-shape--arc,.admin-login-shape--ring,.admin-login-shape--block,.admin-login-shape--dot{display:none}.admin-hamburger,.admin-sidebar-close{display:flex}.admin-sidebar{width:min(var(--sidebar-w), 86vw);box-shadow:var(--shadow-lg);z-index:1000;transition:transform .3s cubic-bezier(.16,1,.3,1);position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.admin-sidebar.open{transform:translate(0)}.admin-main{margin-left:0}.admin-topbar{padding-left:max(14px, env(safe-area-inset-left));padding-right:max(14px, env(safe-area-inset-right));gap:8px}.admin-topbar-title{font-size:16px}.admin-topbar-title svg{width:20px;height:20px}.admin-content{padding:20px 20px 32px;padding-bottom:max(32px, env(safe-area-inset-bottom))}.admin-login-card{border-radius:16px;padding:32px 24px}.admin-login-title{font-size:22px}.admin-stats-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-bottom:24px}.admin-stat-card{--stat-figure:1.7rem;flex-direction:row;align-items:baseline;gap:14px;padding:14px 16px}.admin-stat-value{flex-shrink:0}.admin-stat-value--name{font-size:1rem}.admin-stat-label{letter-spacing:.08em;flex:1;min-width:0;font-size:10px}.admin-panel-header{flex-direction:column;align-items:stretch;gap:12px}.admin-panel-header-actions{width:100%}.admin-refresh-btn,.admin-add-project-btn{flex:1;justify-content:center;min-height:44px;padding:12px 18px}.admin-panel-title{font-size:18px}.admin-message-card{padding:14px 16px}.admin-delete-btn{position:relative}.admin-delete-btn:after{content:"";width:44px;height:44px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.admin-hamburger,.admin-sidebar-close,.admin-modal-close,.admin-theme-toggle{min-width:44px;min-height:44px}.admin-message-top{flex-direction:column;align-items:flex-start;gap:10px}.admin-message-sender{flex:1;width:100%;min-width:0}.admin-message-sender>div{flex:1;min-width:0}.admin-message-email{word-break:break-all;overflow-wrap:anywhere}.admin-message-subject{white-space:normal;word-break:break-word;max-width:100%}.admin-message-meta{border-top:1px solid var(--line);justify-content:space-between;align-items:center;width:100%;margin-top:2px;padding-top:10px;display:flex}.admin-message-date{font-size:11px}.admin-projects-layout{gap:16px}.admin-projects-list{grid-template-columns:1fr;gap:16px}.admin-project-btn{flex:1;min-height:44px}.admin-editing-badge{margin-top:4px;margin-left:0;display:inline-block}.admin-modal-overlay{align-items:stretch;padding:0}.admin-add-form-card{border:none;border-radius:0;min-height:100%;margin-top:0;padding:20px 20px 28px}.admin-add-form-title{background:var(--bg-raised);padding-top:max(16px, env(safe-area-inset-top));z-index:1;margin-bottom:12px;padding-bottom:12px;position:sticky;top:0}.admin-form-submit{min-height:46px}.admin-skeleton{height:70px!important}}@media (width<=540px){.admin-login-card{border-radius:14px;padding:26px 20px}.admin-login-title{font-size:20px}.admin-topbar-title{font-size:14px}.admin-content{padding-left:16px;padding-right:16px}.admin-stats-row{grid-template-columns:1fr}.admin-stat-label{overflow-wrap:break-word;word-break:normal}.admin-toast{bottom:16px;left:16px;right:16px;bottom:max(16px, env(safe-area-inset-bottom));max-width:100%;font-size:12px}}@media (width<=400px){.admin-sidebar{width:100%}.admin-message-avatar{width:34px;height:34px;font-size:14px}}*{box-sizing:border-box}.app{--font-sans:"Space Grotesk", "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "Fira Code", monospace;--accent-lt:#93c5fd;--pink:#fec5fb;--hot-pink:#f100cb;--orange:#ff8709;--lilac:#9d95ff;--blue:#00bae2;--grad-accent:linear-gradient(114deg, var(--accent) 20%, var(--accent-lt) 68%);--grad-pink:linear-gradient(153deg, #f7bdf8 32%, #9d95ff 92%);--grad-orange:linear-gradient(111deg, #ff8709 20%, #f7bdf8 74%);--grad-sky:linear-gradient(131deg, #0a157a 30%, #15bfe4 82%);--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-in-out:cubic-bezier(.86, 0, .07, 1);--grain: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='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");min-height:100vh;transition:background .35s var(--ease-out), color .35s var(--ease-out);scroll-behavior:smooth;overflow-x:hidden}.app.dark{--bg:#0e100f;--bg-raised:#161614;--bg-sunk:#101210;--text:#fffce1;--muted:#8b8a7d;--faint:#5c5d55;--line:#2b2d29;--on-block:#0e100f;--on-accent:#0e100f;--accent:#3b82f6;--glow:#3b82f62e;background:var(--bg);color:var(--text);--scroll-thumb:#2b3446;--scroll-thumb-hover:var(--accent)}.app.light{--bg:#f6f5ee;--bg-raised:#fff;--bg-sunk:#eae7da;--text:#101210;--muted:#575748;--faint:#6a695e;--line:#cfcbb4;--on-block:#000;--on-accent:#fff;--accent:#2563eb;--accent-lt:#1d4ed8;--glow:#2563eb33;background:var(--bg);color:var(--text);--scroll-thumb:#cfcbba;--scroll-thumb-hover:#2563eb}.app :where(a){color:inherit}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app :focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.section{border-top:1px solid var(--line);padding:clamp(64px,9vw,130px) 0;position:relative}.section-inner{width:min(1240px,100% - 2*clamp(20px,5vw,80px));margin-inline:auto}.eyebrow{font-family:var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);align-items:center;gap:8px;margin:0 0 20px;font-size:11px;font-weight:500;display:inline-flex}.eyebrow:before{content:"";background:var(--accent);border-radius:2px;flex-shrink:0;width:7px;height:7px;transform:rotate(45deg)}.section-title{letter-spacing:-.02em;max-width:20ch;margin:0 0 clamp(36px,5vw,64px);font-size:clamp(2.1rem,5.2vw,4.2rem);font-weight:600;line-height:.95}.pill{--block:var(--accent);background:var(--block);color:var(--on-block);letter-spacing:-.01em;cursor:pointer;isolation:isolate;transition:transform .3s var(--ease-out), box-shadow .3s var(--ease-out);border:none;border-radius:10px;align-items:center;gap:10px;padding:12px 22px;font-family:inherit;font-size:15px;font-weight:600;text-decoration:none;display:inline-flex;position:relative}.pill:before{content:"";border-radius:inherit;background-image:var(--grain);opacity:.22;mix-blend-mode:multiply;pointer-events:none;z-index:-1;background-size:140px;position:absolute;inset:0}.pill:after{content:"";border-radius:inherit;opacity:.3;z-index:-2;transition:transform .3s var(--ease-out);background:#000;position:absolute;inset:0;transform:translate(12px,12px)}.pill:hover{transform:translate(-2px,-2px)}.pill:hover:after{transform:translate(16px,16px)}.pill:active{transform:translate(3px,3px)}.pill:active:after{transform:translate(9px,9px)}.pill--accent{--block:var(--grad-accent)}.pill--pink{--block:var(--pink)}.pill--orange{--block:var(--orange)}.pill--lilac{--block:var(--lilac)}.pill--sky{--block:var(--grad-sky)}.pill--pink-grad{--block:var(--grad-pink)}.app .pill--accent{color:var(--on-accent)}.app .pill--sky{color:#fffce1}.pill--ghost{color:var(--text);box-shadow:inset 0 0 0 1px var(--line);background:0 0}.pill--ghost:after{display:none}.pill--ghost:hover{box-shadow:inset 0 0 0 1px var(--accent);color:var(--accent)}.reveal{opacity:0;transition:opacity .8s var(--ease-out)}.reveal>.section-inner{transition:transform .8s var(--ease-out);transform:translateY(48px)}.reveal.visible{opacity:1}.reveal.visible>.section-inner{transform:translateY(0)}.card-reveal{opacity:0}.reveal.visible .card-reveal{animation:cardIn .7s var(--ease-out) both}.header{z-index:100;background:color-mix(in srgb, var(--bg) 72%, transparent);-webkit-backdrop-filter:blur(16px)saturate(1.3);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:24px;height:80px;padding:0 clamp(20px,5vw,48px);display:flex;position:fixed;inset:0 0 auto}.header-left{align-items:center;gap:14px;min-width:0;display:flex}.logo{color:inherit;align-items:center;gap:12px;min-width:0;text-decoration:none;display:flex}.logo img{object-fit:cover;width:40px;height:40px;box-shadow:0 0 0 1px var(--line);border-radius:10px;flex-shrink:0}.logo-text{flex-direction:column;min-width:0;line-height:1.15;display:flex}.logoName{letter-spacing:-.01em;white-space:nowrap;font-size:15px;font-weight:600}.nav{gap:6px;display:flex}.nav a{color:var(--muted);border-radius:8px;padding:8px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:color .25s,background .25s;position:relative}.nav a:hover{color:var(--text);background:color-mix(in srgb, var(--text) 7%, transparent)}.header-left .nav{margin-left:60px}.header-right{align-items:center;gap:12px;display:flex}.theme-toggle{border:1px solid var(--line);width:40px;height:40px;color:inherit;cursor:pointer;background:0 0;border-radius:10px;justify-content:center;align-items:center;transition:border-color .25s,color .25s,transform .25s;display:flex}.theme-toggle:hover{border-color:var(--accent);color:var(--accent);transform:rotate(12deg)}.header .pill{padding:9px 18px;font-size:13.5px}.header .pill:after{transform:translate(6px,6px)}.header .pill:hover:after{transform:translate(8px,8px)}.hamburger{cursor:pointer;z-index:200;color:inherit;background:0 0;border:none;flex-direction:column;justify-content:center;gap:5px;padding:8px;display:none}.bar{width:24px;height:2px;transition:transform .35s var(--ease-out), opacity .25s ease;background:currentColor;border-radius:2px;display:block}.hamburger--open .bar:first-child{transform:translateY(7px)rotate(45deg)}.hamburger--open .bar:nth-child(2){opacity:0;transform:scaleX(0)}.hamburger--open .bar:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.mobile-drawer{z-index:150;background:color-mix(in srgb, var(--bg) 70%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);opacity:0;pointer-events:none;transition:opacity .3s;position:fixed;inset:0}.mobile-drawer--open{opacity:1;pointer-events:all}.mobile-nav{background:var(--bg);border-bottom:1px solid var(--line);transition:transform .35s var(--ease-out);flex-direction:column;padding:16px clamp(20px,5vw,48px) 28px;display:flex;position:absolute;top:80px;left:0;right:0;transform:translateY(-16px)}.mobile-drawer--open .mobile-nav{transform:translateY(0)}.mobile-nav-link{letter-spacing:-.01em;border-bottom:1px solid var(--line);padding:14px 0;font-size:22px;font-weight:600;text-decoration:none}.mobile-nav-link:hover{color:var(--accent)}.mobile-nav-contact{border-bottom:none;align-self:flex-start;margin-top:22px}.nav--desktop{display:flex}.nav--desktop-inline{display:inline-flex}@media (width<=1080px){.hamburger{display:flex}.nav--desktop,.nav--desktop-inline{display:none!important}}.hero{padding:clamp(100px,14vh,152px) 0 clamp(70px,9vw,120px);position:relative;overflow:hidden}.hero-inner{z-index:2;position:relative}.hero-availability{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);align-items:center;gap:10px;margin-bottom:clamp(24px,4vw,40px);font-size:11.5px;display:inline-flex}.hero-availability:before{content:"";background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 0 var(--glow);border-radius:50%;animation:2.4s ease-out infinite pulse}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--glow)}70%{box-shadow:0 0 0 12px #0000}to{box-shadow:0 0 #0000}}.hero-name{letter-spacing:-.045em;margin:0;font-size:clamp(3.2rem,13.5vw,11.5rem);font-weight:600;line-height:.86}.hero-name-line{flex-wrap:wrap;display:flex}.hero-name-line:last-child{justify-content:flex-end;padding-right:.06em}.hero-letter-clip{vertical-align:top;perspective:600px;margin-bottom:-.08em;padding-bottom:.08em;display:inline-block;overflow:hidden}.hero-letter{transform-origin:50% 100%;backface-visibility:hidden;opacity:0;animation:letterFlip .95s var(--ease-out) forwards;background-image:var(--grain);background-size:140px;display:inline-block;transform:rotateX(-100deg)}@keyframes letterFlip{0%{opacity:0;transform:rotateX(-100deg)translateY(.2em)}to{opacity:1;transform:rotateX(0)translateY(0)}}.hero-letter-wave{will-change:transform;animation:3.4s ease-in-out infinite letterWave;display:inline-block}@keyframes letterWave{0%,to{transform:translateY(0)}50%{transform:translateY(-.16em)}}.hero-roles{flex-wrap:wrap;align-items:center;gap:10px;min-height:46px;margin:clamp(28px,4vw,44px) 0 0;display:flex}.role-tag{letter-spacing:-.01em;color:var(--on-block);animation:roleIn .55s var(--ease-out) both;border-radius:10px;align-items:center;gap:10px;padding:9px 20px;font-size:clamp(15px,2.4vw,21px);font-weight:600;display:inline-flex;position:relative}.role-tag:before{content:"";border-radius:inherit;background-image:var(--grain);opacity:.22;mix-blend-mode:multiply;background-size:140px;position:absolute;inset:0}.role-tag span{position:relative}.app .role-tag--accent{background:var(--grad-accent);color:var(--on-accent)}.role-tag--pink{background:var(--pink)}.role-tag--lilac{background:var(--lilac)}.role-tag--orange{background:var(--orange)}@keyframes roleIn{0%{opacity:0;transform:translateY(14px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}.hero-lower{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:clamp(32px,6vw,80px);margin-top:clamp(36px,5vw,60px);display:flex}.hero-copy{flex:420px;max-width:54ch}.hero-copy p{letter-spacing:-.01em;color:var(--muted);margin:0 0 clamp(26px,3vw,36px);font-size:clamp(1.05rem,1.5vw,1.3rem);line-height:1.45}.hero-actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.cv-split{align-items:center;display:inline-flex}.cv-split--open{gap:12px}.cv-split--open .cv-split-cover{margin-left:-12px}.cv-split-label{white-space:nowrap;display:block}.cv-split-label--en,.cv-split-label--fr{opacity:0;filter:blur(6px);transition:opacity .34s ease, filter .42s var(--ease-out), transform .46s var(--ease-out);transform:translateY(8px)}.cv-split-btn{opacity:0;pointer-events:none;width:0;min-width:0;transition:width .5s var(--ease-out), padding .5s var(--ease-out), opacity .2s ease, transform .5s var(--ease-out);padding-left:0;padding-right:0;overflow:hidden;transform:scale(.82)}.cv-split--open .cv-split-btn{opacity:1;pointer-events:auto;width:auto;min-width:118px;padding-left:22px;padding-right:22px;transform:scale(1)}.cv-split--open .cv-split-label--en{opacity:1;filter:blur();transition-delay:.16s,.16s,.16s;transform:translate(0)}.cv-split--open .cv-split-label--fr{opacity:1;filter:blur();transition-delay:.24s,.24s,.24s;transform:translate(0)}.cv-split-cover{transition:width .44s var(--ease-out), padding .44s var(--ease-out), opacity .24s ease, transform .44s var(--ease-out);flex:none}.cv-split--open .cv-split-cover{opacity:0;pointer-events:none;width:0;min-width:0;padding-left:0;padding-right:0;overflow:hidden;transform:scale(.88)}.hero-portrait{aspect-ratio:1;flex:none;width:clamp(140px,20vw,210px);position:relative}.hero-portrait:before{content:"";background:var(--grad-orange);opacity:.9;z-index:0;border-radius:26px;position:absolute;inset:-10px}.hero-portrait img{z-index:1;object-fit:cover;border-radius:20px;width:100%;height:100%;position:relative;box-shadow:0 20px 50px #00000047}.hero-flair{pointer-events:none;z-index:1;position:absolute}.hero-flair--diamond{width:clamp(34px,5vw,64px);animation:22s linear infinite spin;top:6%;right:4%}.hero-flair--star{width:clamp(28px,4vw,52px);animation:7s ease-in-out infinite floaty;bottom:22%;right:16%}.hero-flair--arc{opacity:.5;width:clamp(80px,12vw,170px);top:30%;left:-3%}@keyframes floaty{0%,to{transform:translateY(0)rotate(-8deg)}50%{transform:translateY(-18px)rotate(8deg)}}#about,#stack,#projects{scroll-margin-top:-30px}#contact{scroll-margin-top:-60px}@media (width<=1080px){#about{scroll-margin-top:20px}}.about-content{flex-wrap:wrap;align-items:flex-start;gap:clamp(32px,5vw,70px);display:flex}.about-text-block{flex:380px;max-width:60ch}.about-paragraph{color:var(--muted);margin:0 0 22px;font-size:clamp(1rem,1.2vw,1.15rem);line-height:1.65}.about-highlight{color:var(--text);box-shadow:inset 0 -.42em 0 color-mix(in srgb, var(--accent) 30%, transparent);font-weight:600}.about-stats{background:var(--line);border:1px solid var(--line);border-radius:16px;flex:100%;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin-top:10px;display:grid;overflow:hidden}.stat-card{background:var(--bg);flex-direction:column;gap:10px;padding:clamp(20px,4vw,32px);transition:background .3s;display:flex}.stat-card:hover{background:var(--bg-raised)}.stat-number{letter-spacing:-.03em;color:var(--accent);font-size:clamp(1.75rem,9vw,3rem);font-weight:600;line-height:1}.stat-label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:10px}@media (width>=1081px){.about-stats{flex:0 500px;margin-top:0;transform:translateY(-130px)translate(100px)}.stat-card{aspect-ratio:1;justify-content:center;align-items:center;gap:6px;padding:16px}.stat-number{font-size:clamp(2rem,4vw,4rem)}.stat-label{font-size:clamp(10px,1vw,16px)}}.stack-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:clamp(36px,5vw,56px);display:flex}.stack-header .section-title{margin-bottom:0}.stack-track-wrapper{width:100%;position:relative;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000);mask-image:linear-gradient(90deg,#0000,#000 12% 88%,#0000)}.stack-track{gap:12px;width:max-content;padding:4px 0;animation:40s linear infinite scrollLeft;display:flex}.stack-track-wrapper:hover .stack-track{animation-play-state:paused}@keyframes scrollLeft{0%{transform:translate(0)}to{transform:translate(-50%)}}.stack-card{border:1px solid var(--line);background:var(--bg-raised);width:116px;transition:border-color .3s ease, transform .3s var(--ease-out);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:20px 12px;display:flex}.stack-card:hover{border-color:var(--accent);transform:translateY(-5px)}.stack-icon{object-fit:contain;width:40px;height:40px}.stack-name{color:var(--muted);text-align:center;font-size:11.5px;font-weight:500;line-height:1.2}.app.dark .stack-icon,.app.light .stack-icon{filter:none}.projects-grid{grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:clamp(18px,2.4vw,28px);display:grid}.project-card{border:1px solid var(--line);background:var(--bg-raised);transition:transform .45s var(--ease-out), border-color .35s ease, box-shadow .45s var(--ease-out);border-radius:18px;flex-direction:column;display:flex;overflow:hidden}.project-card:hover{border-color:color-mix(in srgb, var(--accent) 55%, var(--line));box-shadow:0 20px 42px -20px color-mix(in srgb, var(--accent) 50%, transparent);transform:translateY(-6px)}.project-img-wrapper{aspect-ratio:16/10;background:var(--bg-sunk);width:100%;position:relative;overflow:hidden}.project-img{object-fit:cover;width:100%;height:100%}.project-body{flex-direction:column;flex:1;gap:12px;padding:24px;display:flex}.project-title{letter-spacing:-.02em;margin:0;font-size:21px;font-weight:600;transition:color .3s}.project-card:hover .project-title{color:var(--accent)}.project-desc{color:var(--muted);flex:1;margin:0;font-size:14.5px;line-height:1.65}.project-tags{flex-wrap:wrap;gap:6px;display:flex}.project-tag{font-family:var(--font-mono);letter-spacing:.04em;background:color-mix(in srgb, var(--text) 7%, transparent);color:var(--muted);border-radius:6px;padding:4px 10px;font-size:11px}.project-actions{flex-wrap:wrap;gap:10px;margin-top:6px;display:flex}.project-btn{cursor:pointer;border:1px solid var(--line);color:inherit;transition:all .3s var(--ease-out);background:0 0;border-radius:9px;align-items:center;gap:8px;padding:10px 20px;font-family:inherit;font-size:14px;font-weight:600;text-decoration:none;display:inline-flex}.project-btn.primary{background:var(--accent);color:var(--on-accent);border-color:#0000}.project-btn.primary:hover{background:var(--accent-lt);transform:translateY(-2px)}.project-btn:not(.primary):hover{border-color:var(--accent);color:var(--accent)}.projects-loading{color:var(--muted);flex-direction:column;align-items:center;gap:16px;padding:70px 0;display:flex}.loader-ring{border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}.projects-error,.projects-empty{color:var(--muted);padding:40px 0;font-size:15px}.form-error{color:#f0533f;font-size:14px}.contact-subtitle{color:var(--muted);max-width:52ch;margin:-32px 0 clamp(40px,5vw,60px);font-size:clamp(1rem,1.2vw,1.15rem);line-height:1.6}.contact-wrapper{flex-wrap:wrap;align-items:flex-start;gap:clamp(32px,5vw,64px);display:flex}.contact-info{flex-direction:column;flex:0 300px;gap:12px;min-width:260px;display:flex}@media (width>=1081px){.contact-info{flex:0 420px;min-width:320px}}.contact-info-card{border:1px solid var(--line);background:var(--bg-raised);transition:border-color .3s ease, transform .3s var(--ease-out);border-radius:14px;align-items:center;gap:16px;padding:18px 20px;display:flex}.contact-info-card:hover{border-color:var(--accent);transform:translate(5px)}.contact-info-icon{background:var(--grad-accent);width:44px;height:44px;color:var(--on-accent);border-radius:11px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.contact-info-text{flex:1;min-width:0}.contact-info-label{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin:0 0 3px;font-size:10.5px}.contact-info-value{color:inherit;word-break:break-word;margin:0;font-size:14.5px;font-weight:500;line-height:1.45;text-decoration:none}a.contact-info-value:hover{color:var(--accent)}.contact-form{flex-direction:column;flex:400px;gap:18px;min-width:300px;display:flex}.form-row{grid-template-columns:1fr 1fr;gap:18px;display:grid}.form-group{flex-direction:column;gap:8px;display:flex}.form-label{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:500}.form-input,.form-textarea{background:var(--bg-raised);border:1px solid var(--line);width:100%;color:inherit;resize:none;border-radius:12px;outline:none;padding:14px 16px;font-family:inherit;font-size:15px;transition:border-color .25s,box-shadow .25s}.form-input::placeholder,.form-textarea::placeholder{color:var(--faint)}.form-input:focus,.form-textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--glow)}.form-submit{background:var(--grad-accent);color:var(--on-accent);cursor:pointer;isolation:isolate;transition:transform .3s var(--ease-out);border:none;border-radius:10px;align-self:flex-start;padding:14px 30px;font-family:inherit;font-size:15px;font-weight:600;position:relative}.form-submit:before{content:"";border-radius:inherit;background-image:var(--grain);opacity:.22;mix-blend-mode:multiply;z-index:-1;background-size:140px;position:absolute;inset:0}.form-submit:hover:not(:disabled){transform:translateY(-3px)}.form-submit.sending{opacity:.6;cursor:wait}.form-success{color:var(--accent);margin:0;font-size:14px}.site-footer{border-top:1px solid var(--line);text-align:center;flex-direction:column;align-items:center;gap:22px;padding:clamp(40px,5vw,64px) clamp(20px,5vw,48px);display:flex}.footer-wordmark{letter-spacing:-.04em;margin:0;font-size:clamp(1.6rem,5vw,3.4rem);font-weight:600;line-height:1}.footer-socials{gap:10px;display:flex}.footer-social-link{border:1px solid var(--line);width:42px;height:42px;color:inherit;transition:color .25s ease, border-color .25s ease, transform .25s var(--ease-out);border-radius:11px;justify-content:center;align-items:center;text-decoration:none;display:flex}.footer-social-link:hover{color:var(--accent);border-color:var(--accent);transform:translateY(-4px)}.site-footer p{font-family:var(--font-mono);letter-spacing:.04em;color:var(--muted);margin:0;font-size:12px}.toast-container{z-index:9999;pointer-events:none;flex-direction:column;gap:12px;display:flex;position:fixed;bottom:30px;right:30px}.toast{pointer-events:auto;background:color-mix(in srgb, var(--bg-raised) 92%, transparent);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line);width:360px;max-width:calc(100vw - 60px);animation:toastIn .45s var(--ease-out) forwards;border-radius:14px;align-items:flex-start;gap:14px;padding:18px 20px;display:flex;position:relative;overflow:hidden;box-shadow:0 20px 40px #00000047}.toast.exit{animation:.35s cubic-bezier(.7,0,.84,0) forwards toastOut}@keyframes toastOut{to{opacity:0;transform:translate(120%)scale(.95)}}.toast--success{border-left:3px solid var(--accent)}.toast--error{border-left:3px solid #f0533f}.toast-icon{flex-shrink:0;margin-top:2px;display:flex}.toast--success .toast-icon{color:var(--accent)}.toast--error .toast-icon{color:#f0533f}.toast-content{flex:1;min-width:0}.toast-title{margin:0 0 4px;font-size:15px;font-weight:600}.toast-message{color:var(--muted);margin:0;font-size:13.5px;line-height:1.5}.toast-close{color:inherit;opacity:.5;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:4px;transition:opacity .2s,background .2s;display:flex}.toast-close:hover{opacity:1;background:color-mix(in srgb, var(--text) 10%, transparent)}.toast-progress-bar{transform-origin:0;width:100%;height:2px;animation:5s linear forwards shrink;position:absolute;bottom:0;left:0}.toast--success .toast-progress-bar{background:var(--accent)}.toast--error .toast-progress-bar{background:#f0533f}@keyframes shrink{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media (width<=600px){.toast-container{align-items:center;bottom:20px;left:20px;right:20px}.toast{width:100%;max-width:100%}}.pd-topbar{z-index:50;background:color-mix(in srgb, var(--bg) 78%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line);padding:16px clamp(20px,5vw,40px);position:sticky;top:0}.pd-back-btn{border:1px solid var(--line);color:inherit;cursor:pointer;background:0 0;border-radius:9px;align-items:center;gap:8px;padding:8px 18px;font-family:inherit;font-size:14px;font-weight:500;transition:all .25s;display:inline-flex}.pd-back-btn:hover{border-color:var(--accent);color:var(--accent)}.pd-main{max-width:900px;margin:0 auto;padding:clamp(32px,5vw,60px) clamp(20px,5vw,40px) 100px}.pd-hero-img-wrap{aspect-ratio:16/9;border:1px solid var(--line);border-radius:18px;width:100%;margin-bottom:40px;position:relative;overflow:hidden}.pd-hero-img{object-fit:cover;width:100%;height:100%}.pd-content{flex-direction:column;display:flex}.pd-title{letter-spacing:-.03em;margin:0 0 20px;font-size:clamp(1.9rem,4.5vw,3rem);font-weight:600;line-height:1.05}.pd-meta{flex-wrap:wrap;align-items:center;gap:20px;margin-bottom:32px;display:flex}.pd-meta-item{color:var(--muted);align-items:center;gap:6px;font-size:13px;text-decoration:none;display:inline-flex}.pd-meta-link{color:var(--accent);font-weight:500}.pd-divider{background:var(--line);width:100%;height:1px;margin-bottom:36px}.pd-section{margin-bottom:40px}.pd-section-title{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin:0 0 16px;font-size:11px;font-weight:500}.pd-section-title2{letter-spacing:-.02em;margin:0 0 16px;font-size:clamp(1.4rem,3vw,2rem);font-weight:600}.pd-description{color:var(--muted);margin:0;font-size:16px;line-height:1.8}.pd-description h3{color:var(--accent);align-items:center;gap:10px;display:flex}.pd-description h3>span[data-icon]{flex-shrink:0;align-items:center;display:inline-flex}.pd-tech-grid{flex-wrap:wrap;gap:8px;display:flex}.pd-tech-badge{background:color-mix(in srgb, var(--text) 6%, transparent);border:1px solid var(--line);border-radius:8px;align-items:center;gap:8px;padding:8px 16px;font-size:13.5px;font-weight:500;transition:border-color .2s;display:inline-flex}.pd-tech-badge:hover{border-color:var(--accent)}.pd-tech-dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:6px;height:6px}.pd-cta{margin-top:16px}@media (width<=900px){.hero-lower{flex-direction:column-reverse;align-items:flex-start}.hero-copy{flex:none;max-width:100%}.hero-portrait{width:140px}.form-row{grid-template-columns:1fr}.about-stats{flex:100%}.contact-wrapper{flex-direction:column}.contact-info,.contact-form{width:100%}.hero{padding-bottom:56px}.section{padding-top:56px;padding-bottom:72px}}@media (width<=600px){.header{height:68px}.mobile-nav{top:68px}.hero-name{letter-spacing:-.035em}.about-stats{grid-template-columns:1fr 1fr}.projects-grid{grid-template-columns:1fr}.stack-card{width:100px}.hero{padding-top:90px;padding-bottom:36px}.section{padding-top:44px;padding-bottom:60px}}.nf-root{flex-direction:column;min-height:100dvh;display:flex}.nf-main{flex-direction:column;flex:1;justify-content:center;width:min(1240px,100% - 2*clamp(20px,5vw,80px));margin-inline:auto;padding:clamp(48px,12vh,120px) 0 clamp(40px,8vw,80px);display:flex}.nf-title{letter-spacing:-.02em;max-width:18ch;margin:0 0 clamp(24px,4vw,40px);font-size:clamp(2.1rem,7vw,4.2rem);font-weight:600;line-height:.95}.nf-text{color:var(--muted);max-width:46ch;margin:0 0 32px;font-size:16px;line-height:1.65}.nf-actions{flex-wrap:wrap;gap:12px;display:flex}.nf-pill--ghost{--block:transparent;color:var(--text);border:1px solid var(--line)}.nf-pill--ghost:hover{border-color:var(--accent);color:var(--accent)}.nf-footer{border-top:1px solid var(--line);padding:20px clamp(20px,5vw,80px)}.nf-footer-link{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:11px;text-decoration:none}.nf-footer-link:hover{color:var(--accent)}@media (width<=600px){.nf-main{padding-top:56px;padding-bottom:48px}.nf-actions{flex-direction:column;align-items:stretch}.nf-actions .pill{justify-content:center}}@media (prefers-reduced-motion:reduce){.nf-root,.nf-main{transition:none}.hero-letter,.hero-letter-wave,.role-tag,.stack-track,.hero-flair--diamond,.hero-flair--star,.hero-availability:before{animation:none!important}.hero-letter{opacity:1;transform:none}.reveal{opacity:1;transition:none}.reveal>.section-inner{transition:none;transform:none}}html,body{scroll-behavior:smooth;height:100%;margin:0;padding:0;scroll-padding-top:96px}html[data-theme=dark]{background:#0e100f}html[data-theme=light]{background:#f6f5ee}*{-webkit-tap-highlight-color:transparent}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Space Grotesk,Segoe UI,system-ui,sans-serif}img,svg{display:block}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--scroll-thumb,#2f3a2f);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover,#3b82f6)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
