/*! ms-engine.css v2 — design system de ms-engine.com : jetons + composants (gabarit C).
 * Copie exacte du thème et des animations du portfolio (https://ms-engine.com/).
 * Usage : <link rel="stylesheet" href="/ds/ms-engine.css?v=2"> (+ /ds/ms-engine.js?v=2, facultatif).
 * Fichier assemblé et allégé par outils/construire.py : modifier ms-engine.tokens.css ou outils/composants.css. */
@font-face{font-family:'Inter';font-style:normal;font-weight:300 800;font-display:swap;src:url(/ds/fonts/inter-latin.woff2?v=1) format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Inter';font-style:normal;font-weight:300 800;font-display:swap;src:url(/ds/fonts/inter-latin-ext.woff2?v=1) format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
:root{
--bg:#0f1117;
--surface:#1a1d27;
--surface2:#232733;
--accent:#3b82f6;
--accent2:#8b5cf6;
--green:#22c55e;
--text:#e2e8f0;
--text2:#94a3b8;
--border:#2d3348;
--accent-hover:#2563eb;
--pink:#ec4899;
--hero-bg:linear-gradient(135deg,#0f1117 0%,#1a1040 50%,#0f1117 100%);
--grad-text:linear-gradient(135deg,var(--accent),var(--accent2));
--grad-name:linear-gradient(135deg,var(--accent),var(--accent2),#ec4899,var(--accent));
--grad-number:linear-gradient(135deg,var(--accent),var(--green));
--font:'Inter',sans-serif;
--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
--fs-11:11px;--fs-12:12px;--fs-13:13px;--fs-14:14px;--fs-15:15px;--fs-16:16px;--fs-18:18px;--fs-20:20px;--fs-32:32px;--fs-48:48px;
--sp-4:4px;--sp-6:6px;--sp-8:8px;--sp-12:12px;--sp-16:16px;--sp-20:20px;--sp-24:24px;--sp-32:32px;--sp-40:40px;--sp-60:60px;--sp-80:80px;
--radius-tag:4px;--radius-btn:8px;--radius-card:12px;--radius-project:16px;--radius-pill:20px;
--shadow-btn:0 6px 20px rgba(59,130,246,0.4);
--shadow-stat:0 8px 30px rgba(59,130,246,0.15);
--shadow-card:0 12px 40px rgba(59,130,246,0.1);
--shadow-link:0 6px 20px rgba(59,130,246,0.2);
--t-fast:0.2s;--t:0.3s;--t-reveal:0.6s;--t-enter:0.8s;
--container:1100px;
--logo-tile:#000;
--amber:#f59e0b;--red:#ef4444;--red-text:#f87171;
--header-h:64px;
color-scheme:dark;
--background:#0f1117;--foreground:#e2e8f0;
--card:#1a1d27;--card-foreground:#e2e8f0;
--popover:#1a1d27;--popover-foreground:#e2e8f0;
--primary:#3b82f6;--primary-foreground:#ffffff;
--secondary:#232733;--secondary-foreground:#e2e8f0;
--muted:#232733;--muted-foreground:#94a3b8;
--accent-foreground:#ffffff;
--destructive:#ef4444;--destructive-foreground:#ffffff;
--input:#2d3348;--ring:#3b82f6;
--radius:0.75rem;
--chart-1:#3b82f6;--chart-2:#8b5cf6;--chart-3:#22c55e;--chart-4:#ec4899;--chart-5:#f59e0b;
--sidebar:#1a1d27;--sidebar-foreground:#e2e8f0;--sidebar-primary:#3b82f6;--sidebar-primary-foreground:#ffffff;
--sidebar-accent:#232733;--sidebar-accent-foreground:#e2e8f0;--sidebar-border:#2d3348;--sidebar-ring:#3b82f6;
--ms-animate-fade-in-up:fadeInUp 0.8s ease-out both;
--ms-animate-card-in:fadeInUp 0.6s ease-out both;
--ms-animate-fade-in:fadeIn 0.8s ease-out both;
--ms-animate-slide-in-left:slideInLeft 0.6s ease-out both;
--ms-animate-pulse:pulse 2s ease-in-out infinite;
--ms-animate-gradient:gradient 3s ease infinite;
--ms-animate-float:float 2s ease-in-out infinite;
--ms-animate-count-up:countUp 0.6s ease-out both;
}
@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes slideInLeft{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.5}}
@keyframes gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
@keyframes typing{from{width:0}to{width:100%}}
@keyframes blink{50%{border-color:transparent}}
@keyframes countUp{from{opacity:0;transform:scale(0.5)}to{opacity:1;transform:scale(1)}}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes ms-toast{from{opacity:0;transform:translate(-50%,30px)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes ms-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){
:root{--ms-animate-fade-in-up:none;--ms-animate-card-in:none;--ms-animate-fade-in:none;--ms-animate-slide-in-left:none;--ms-animate-pulse:none;--ms-animate-gradient:none;--ms-animate-float:none;--ms-animate-count-up:none}
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:'Inter',sans-serif;background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
img,svg{display:block;max-width:100%}
button,input,select,textarea{font:inherit;color:inherit}
[hidden]{display:none!important}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ms-sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.ms-container{max-width:1100px;margin:0 auto;padding:0 24px}
.ms-hero{padding:80px 0 60px;text-align:center;background:var(--hero-bg);border-bottom:1px solid var(--border);animation:fadeIn 0.8s ease-out}
.ms-hero h1{font-size:32px;font-weight:800;margin-bottom:8px;animation:fadeInUp 0.8s ease-out 0.2s both}
.ms-name{background:var(--grad-name);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;background-size:300% 300%;animation:gradient 3s ease infinite}
.ms-logo-hero{display:block;width:120px;height:120px;padding:18px;margin:0 auto 16px;background:var(--logo-tile);border-radius:8px}
.ms-brand-line{font-size:13px;color:var(--accent2);letter-spacing:4px;text-transform:uppercase;margin-bottom:8px;font-weight:600}
.ms-tagline{font-size:20px;color:var(--text2);margin-bottom:24px;font-weight:400;animation:fadeInUp 0.8s ease-out 0.4s both}
.ms-badges{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-bottom:32px;animation:fadeInUp 0.8s ease-out 0.6s both}
.ms-badge{background:var(--surface2);border:1px solid var(--border);padding:6px 16px;border-radius:20px;font-size:13px;color:var(--text2);transition:all 0.3s}
.ms-badge.highlight{border-color:var(--accent);color:var(--accent)}
.ms-badge:hover{background:var(--accent);color:white;border-color:var(--accent);transform:scale(1.05)}
.ms-hero-cta{display:inline-flex;flex-wrap:wrap;justify-content:center;gap:12px;max-width:100%;animation:fadeInUp 0.8s ease-out 0.8s both}
.ms-live-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--green);margin-right:6px;animation:pulse 2s ease-in-out infinite}
.ms-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:12px 28px;border-radius:8px;font-size:15px;font-weight:600;line-height:1.6;cursor:pointer;border:none;text-decoration:none;transition:all 0.3s ease}
.ms-btn:hover{text-decoration:none}
.ms-btn-primary{background:var(--accent);color:white}
.ms-btn-primary:hover{background:#2563eb;transform:translateY(-2px);box-shadow:0 6px 20px rgba(59,130,246,0.4)}
.ms-btn-outline{background:transparent;color:var(--text);border:1px solid var(--border)}
.ms-btn-outline:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}
.ms-btn-danger{background:transparent;color:var(--red-text);border:1px solid rgba(239,68,68,0.4)}
.ms-btn-danger:hover{border-color:var(--red);background:rgba(239,68,68,0.1);transform:translateY(-2px)}
.ms-btn-sm{padding:9px 16px;font-size:14px}
.ms-btn-block{display:flex;width:100%}
.ms-btn:disabled,.ms-btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}
.ms-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;padding:40px 0}
.ms-stat{text-align:center;padding:24px;background:var(--surface);border-radius:12px;border:1px solid var(--border);animation:fadeInUp 0.6s ease-out both;transition:transform 0.3s,box-shadow 0.3s}
.ms-stat:nth-child(1){animation-delay:0.1s}.ms-stat:nth-child(2){animation-delay:0.2s}.ms-stat:nth-child(3){animation-delay:0.3s}.ms-stat:nth-child(4){animation-delay:0.4s}
.ms-stat:hover{transform:translateY(-4px);box-shadow:0 8px 30px rgba(59,130,246,0.15)}
.ms-number{font-size:32px;font-weight:800;background:var(--grad-number);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;transition:all 0.3s}
.ms-stat:hover .ms-number{transform:scale(1.1)}
.ms-label{font-size:13px;color:var(--text2);margin-top:4px}
.ms-section{padding:60px 0}
.ms-section-title{font-size:32px;font-weight:700;margin-bottom:8px;line-height:1.25}
.ms-section-sub{font-size:16px;color:var(--text2);margin-bottom:40px}
.ms-grid{display:grid;grid-template-columns:1fr;gap:24px}
.ms-grid>*,.ms-grid-3>*,.ms-stats>*{min-width:0}
.ms-card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:32px;animation:fadeInUp 0.6s ease-out both;transition:all 0.3s ease}
.ms-card:nth-child(1){animation-delay:0.1s}.ms-card:nth-child(2){animation-delay:0.15s}.ms-card:nth-child(3){animation-delay:0.2s}.ms-card:nth-child(4){animation-delay:0.25s}.ms-card:nth-child(5){animation-delay:0.3s}.ms-card:nth-child(6){animation-delay:0.35s}
.ms-card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 12px 40px rgba(59,130,246,0.1)}
.ms-card-icon{font-size:36px;margin-bottom:16px}
.ms-card:hover .ms-card-icon{animation:float 2s ease-in-out infinite}
.ms-card h3{font-size:20px;font-weight:700;margin-bottom:8px;line-height:1.3}
.ms-card p{font-size:14px;color:var(--text2);margin-bottom:16px;line-height:1.6}
.ms-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}
.ms-tag{background:var(--surface2);padding:3px 10px;border-radius:4px;font-size:11px;color:var(--accent);border:1px solid var(--border)}
.ms-result{font-size:13px;color:var(--green);font-weight:600}
.ms-grid-3{display:grid;grid-template-columns:1fr;gap:24px}
.ms-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:24px;transition:all 0.3s}
.ms-panel:hover{border-color:var(--accent);transform:translateY(-2px)}
.ms-panel h4{font-size:14px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:1px;margin-bottom:12px}
.ms-items{display:flex;flex-wrap:wrap;gap:6px}
.ms-item{background:var(--surface2);padding:4px 10px;border-radius:4px;font-size:12px;color:var(--text2);transition:all 0.2s;cursor:default}
.ms-item:hover{background:var(--accent);color:white;transform:scale(1.05)}
.ms-timeline{position:relative;padding-left:32px}
.ms-timeline::before{content:'';position:absolute;left:8px;top:0;bottom:0;width:2px;background:var(--border)}
.ms-timeline-item{position:relative;margin-bottom:32px;animation:slideInLeft 0.6s ease-out both}
.ms-timeline-item:nth-child(1){animation-delay:0.1s}.ms-timeline-item:nth-child(2){animation-delay:0.2s}.ms-timeline-item:nth-child(3){animation-delay:0.3s}.ms-timeline-item:nth-child(4){animation-delay:0.4s}
.ms-timeline-item::before{content:'';position:absolute;left:-28px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--accent);border:2px solid var(--bg);transition:all 0.3s}
.ms-timeline-item:hover::before{transform:scale(1.5);background:var(--accent2)}
.ms-timeline-item h4{font-size:18px;font-weight:600;line-height:1.4}
.ms-company{font-size:14px;color:var(--accent)}
.ms-date{font-size:12px;color:var(--text2);margin-bottom:8px}
.ms-timeline-item p{font-size:14px;color:var(--text2)}
.ms-contact{text-align:center;padding:60px 0;background:var(--surface);border-top:1px solid var(--border)}
.ms-contact h2{font-size:32px;margin-bottom:8px}
.ms-contact p{color:var(--text2);margin-bottom:24px}
.ms-contact-links{display:flex;gap:16px;justify-content:center;flex-wrap:wrap}
.ms-contact-link{padding:12px 24px;background:var(--surface2);border:1px solid var(--border);border-radius:8px;font-size:14px;color:var(--text);transition:all 0.3s}
.ms-contact-link:hover{border-color:var(--accent);color:var(--accent);text-decoration:none;transform:translateY(-3px);box-shadow:0 6px 20px rgba(59,130,246,0.2)}
.ms-footer{padding:24px 0;background:var(--surface);border-top:1px solid var(--border);color:var(--text2);font-size:13px;text-align:center}
.ms-footer a{color:var(--text2)}.ms-footer a:hover{color:var(--accent)}
.ms-header{position:sticky;top:0;z-index:50;background:var(--hero-bg);border-bottom:1px solid var(--border);animation:fadeIn 0.8s ease-out}
.ms-header-in{display:flex;align-items:center;justify-content:space-between;gap:16px;height:var(--header-h)}
.ms-brand{display:inline-flex;align-items:center;gap:12px;min-height:44px;color:var(--text)}
.ms-brand:hover{text-decoration:none}
.ms-brand img{width:32px;height:32px;padding:5px;background:var(--logo-tile);border-radius:6px}
.ms-brand span{font-size:13px;color:var(--accent2);letter-spacing:4px;text-transform:uppercase;font-weight:600}
.ms-nav{display:flex;align-items:center;gap:4px}
.ms-nav[popover]{position:static;inset:auto;width:auto;height:auto;margin:0;padding:0;border:0;background:none;color:inherit;overflow:visible}
.ms-nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;font-size:14px;font-weight:500;color:var(--text2);border-radius:8px;position:relative;transition:all 0.3s}
.ms-nav a:hover{color:var(--text);text-decoration:none;background:rgba(255,255,255,0.04)}
.ms-nav a[aria-current=page]{color:var(--text)}
.ms-nav a[aria-current=page]::after{content:'';position:absolute;left:12px;right:12px;bottom:6px;height:2px;border-radius:2px;background:var(--grad-text)}
.ms-nav .ms-nav-out{margin-left:8px;border:1px solid var(--border);color:var(--text)}
.ms-nav .ms-nav-out:hover{border-color:var(--accent);color:var(--accent);background:transparent;transform:translateY(-2px)}
.ms-menu-btn{display:none;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text);cursor:pointer;transition:all 0.3s}
.ms-menu-btn:hover{border-color:var(--accent);color:var(--accent)}
.ms-menu-btn svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}
@media (max-width:768px){
.ms-menu-btn{display:inline-flex}
.ms-nav:not(:popover-open){display:none}
.ms-nav:popover-open{position:fixed;inset:calc(var(--header-h) + 8px) 12px auto auto;margin:0;min-width:220px;flex-direction:column;align-items:stretch;gap:2px;padding:8px;background:var(--surface);border:1px solid var(--border);border-radius:12px;color:var(--text);box-shadow:0 12px 40px rgba(0,0,0,0.5);animation:fadeInUp 0.3s ease-out}
.ms-nav:popover-open a[aria-current=page]{background:var(--surface2)}
.ms-nav:popover-open a[aria-current=page]::after{left:0;right:auto;top:12px;bottom:12px;width:3px;height:auto}
.ms-nav:popover-open .ms-nav-out{margin:6px 0 0}
}
.ms-field{display:grid;gap:8px;margin-bottom:20px}
.ms-field label{font-size:14px;font-weight:500;color:var(--text)}
.ms-input{width:100%;height:48px;padding:0 16px;background:var(--bg);border:1px solid var(--border);border-radius:8px;font-size:16px;color:var(--text);caret-color:var(--accent);transition:all 0.3s}
.ms-input:hover{border-color:#414b6b}
.ms-input:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 3px rgba(59,130,246,0.25)}
.ms-input[aria-invalid=true]{border-color:var(--red)}
.ms-hint{font-size:13px;color:var(--text2)}
.ms-check{display:flex;align-items:center;gap:10px;min-height:44px;margin-bottom:16px;font-size:14px;color:var(--text);cursor:pointer}
.ms-check input{width:20px;height:20px;accent-color:var(--accent);cursor:pointer}
.ms-state{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;border-radius:20px;font-size:13px;font-weight:600;white-space:nowrap;background:var(--surface2);border:1px solid var(--border);color:var(--text2)}
.ms-state::before{content:'';width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}
.ms-state.is-ok{color:var(--green);border-color:rgba(34,197,94,0.35);background:rgba(34,197,94,0.08)}
.ms-state.is-ok::before{animation:pulse 2s ease-in-out infinite}
.ms-state.is-warn{color:var(--amber);border-color:rgba(245,158,11,0.35);background:rgba(245,158,11,0.08)}
.ms-state.is-ko{color:var(--red-text);border-color:rgba(239,68,68,0.35);background:rgba(239,68,68,0.08)}
.ms-table-wrap{position:relative;overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.ms-table{width:100%;border-collapse:collapse;font-size:14px}
.ms-table th{padding:12px 16px;text-align:left;font-size:12px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:1px;border-bottom:1px solid var(--border);white-space:nowrap}
.ms-table td{padding:14px 16px;border-top:1px solid var(--border)}
.ms-table tr:first-child td{border-top:0}
.ms-table tbody tr{transition:background 0.2s}
.ms-table tbody tr:hover{background:var(--surface2)}
.ms-list{list-style:none;background:var(--surface);border:1px solid var(--border);border-radius:12px}
.ms-list>li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;border-top:1px solid var(--border);font-size:14px}
.ms-list small{display:block;font-size:13px;color:var(--text2)}
.ms-list>li:first-child{border-top:0}
.ms-muted{color:var(--text2)}
.ms-mono{font-family:var(--mono);font-size:13px}
.ms-alert{display:flex;gap:10px;align-items:flex-start;padding:12px 16px;border-radius:8px;font-size:14px;border:1px solid var(--border);background:var(--surface2);animation:fadeInUp 0.3s ease-out both}
.ms-alert.is-ok{border-color:rgba(34,197,94,0.35);background:rgba(34,197,94,0.08)}
.ms-alert.is-warn{border-color:rgba(245,158,11,0.35);background:rgba(245,158,11,0.08)}
.ms-alert.is-ko{border-color:rgba(239,68,68,0.35);background:rgba(239,68,68,0.08)}
.ms-toast{position:fixed;left:50%;bottom:max(24px,env(safe-area-inset-bottom));z-index:60;display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100% - 32px);padding:14px 20px;background:var(--surface2);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:12px;font-size:14px;box-shadow:0 12px 40px rgba(0,0,0,0.45);transform:translateX(-50%);animation:ms-toast 0.6s ease-out both}
.ms-toast.is-ok{border-left-color:var(--green)}.ms-toast.is-ko{border-left-color:var(--red)}
.ms-toast.is-inline{position:static;transform:none;animation:fadeInUp 0.6s ease-out both}
.ms-empty{padding:40px 24px;text-align:center;color:var(--text2);font-size:14px}
.ms-empty .ms-card-icon{animation:float 2s ease-in-out infinite}
.ms-skeleton{display:block;height:14px;border-radius:4px;background:var(--surface2);animation:pulse 2s ease-in-out infinite}
.ms-spinner{display:inline-block;width:18px;height:18px;border:2px solid rgba(255,255,255,0.25);border-top-color:currentColor;border-radius:50%;animation:ms-spin 0.7s linear infinite}
.ms-fade-up{animation:fadeInUp 0.8s ease-out both}
.ms-fade-in{animation:fadeIn 0.8s ease-out both}
.ms-slide-in{animation:slideInLeft 0.6s ease-out both}
.ms-count-up{animation:countUp 0.6s ease-out both}
.ms-float{animation:float 2s ease-in-out infinite}
.ms-delay-1{animation-delay:0.2s}.ms-delay-2{animation-delay:0.4s}.ms-delay-3{animation-delay:0.6s}.ms-delay-4{animation-delay:0.8s}
.ms-grad-text{background:var(--grad-text);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.ms-reveal{opacity:0;transform:translateY(20px);transition:all 0.6s ease}
.ms-reveal.visible{opacity:1;transform:translateY(0)}
@media (min-width:769px){
.ms-hero h1{font-size:48px}
.ms-stats{grid-template-columns:repeat(4,1fr)}
.ms-grid{grid-template-columns:repeat(2,1fr)}
.ms-grid-3{grid-template-columns:repeat(3,1fr)}
}
.ms-ico{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.ms-side{display:none}
.ms-top{position:sticky;top:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;height:56px;padding:0 12px 0 16px;background:var(--hero-bg);border-bottom:1px solid var(--border)}
.ms-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--border);border-radius:8px;color:var(--text2);transition:all 0.3s}
.ms-iconbtn:hover{color:var(--accent);border-color:var(--accent);text-decoration:none}
.ms-tabs{position:fixed;left:0;right:0;bottom:0;z-index:50;display:grid;grid-template-columns:repeat(5,1fr);padding:0 4px env(safe-area-inset-bottom);background:rgba(26,29,39,0.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--border)}
.ms-tabs a{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:60px;font-size:11px;font-weight:500;color:var(--text2);transition:color 0.3s}
.ms-tabs a:hover{color:var(--text);text-decoration:none}
.ms-tabs .ms-ico{width:22px;height:22px}
.ms-tabs a[aria-current=page]{color:var(--text)}
.ms-tabs a[aria-current=page] .ms-ico{color:var(--accent)}
.ms-tabs a[aria-current=page]::before{content:'';position:absolute;top:-1px;left:28%;right:28%;height:2px;border-radius:2px;background:var(--grad-text)}
.ms-main{padding:32px 0 calc(100px + env(safe-area-inset-bottom))}
.ms-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:32px}
.ms-head h1{font-size:28px;font-weight:700;line-height:1.25}
.ms-head p{margin-top:8px;font-size:16px;color:var(--text2)}
.ms-h2{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin:48px 0 16px;font-size:20px;font-weight:700}
.ms-h2 small{font-size:13px;font-weight:400;color:var(--text2)}
@media (min-width:1024px){
.ms-top,.ms-tabs{display:none}
.ms-side{position:fixed;inset:0 auto 0 0;z-index:40;display:flex;flex-direction:column;width:248px;padding:20px 16px;background:var(--hero-bg);border-right:1px solid var(--border);animation:fadeIn 0.8s ease-out}
.ms-main{margin-left:248px;padding:60px 0 80px}
.ms-main .ms-container{max-width:1060px;padding:0 40px}
.ms-side .ms-brand{margin:0 8px 28px}
.ms-side .ms-brand span{font-size:12px;letter-spacing:3px;white-space:nowrap}
.ms-side nav{display:grid;gap:2px}
.ms-side nav a{position:relative;display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-radius:8px;font-size:14px;font-weight:500;color:var(--text2);transition:all 0.3s}
.ms-side nav a:hover{color:var(--text);background:rgba(255,255,255,0.04);text-decoration:none}
.ms-side nav a[aria-current=page]{color:var(--text);background:rgba(59,130,246,0.1)}
.ms-side nav a[aria-current=page] .ms-ico{color:var(--accent)}
.ms-side nav a[aria-current=page]::before{content:'';position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:3px;background:var(--grad-text)}
.ms-side-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--border)}
.ms-head h1{font-size:32px}
}
@media (prefers-reduced-motion:reduce){
*,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:0.01ms!important;scroll-behavior:auto!important}
.ms-reveal{opacity:1;transform:none}
}
