:root{--blog-primary:#3498db;--blog-primary-dark:#2980b9;--blog-primary-bg:rgba(52, 152, 219, 0.12);--blog-text:var(--text-primary, #f8f9fa);--blog-text-secondary:var(--text-secondary, #d0d0d0);--blog-text-muted:var(--text-muted, #9b9b9b);--blog-bg:var(--background-primary, #1a1a1a);--blog-card-bg:var(--background-card, #2d2d2d);--blog-border:var(--border-color, #404040);--blog-radius:12px;--blog-radius-lg:16px;--blog-shadow:0 2px 8px rgba(0, 0, 0, 0.3);--blog-shadow-hover:0 8px 24px rgba(0, 0, 0, 0.4);--blog-transition:0.25s ease}.reading-progress{position:fixed;top:0;left:0;width:0;height:3px;background:linear-gradient(90deg,#3498db,#2ecc71);z-index:9999;transition:width .1s linear;border-radius:0 2px 2px 0}.blog-hero{background:linear-gradient(135deg,#2980b9 0,#1a5276 100%);color:#fff;padding:120px 0 70px;text-align:center;position:relative;overflow:hidden}.blog-hero::before{content:"";position:absolute;inset:0;background:url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000"><polygon fill="rgba(255,255,255,0.06)" points="0,1000 1000,0 1000,1000"/></svg>');background-size:cover}.blog-hero .container{position:relative;z-index:1}.blog-hero h1{font-size:clamp(2.2rem,5vw,3.5rem);font-weight:700;margin-bottom:1rem;color:#fff}.blog-hero p{font-size:1.15rem;max-width:620px;margin:0 auto;opacity:.9;line-height:1.6;color:#fff}.blog-section{padding:3rem 0 4rem;background:var(--blog-bg)}.blog-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:1.5rem}.blog-card{background:var(--blog-card-bg);border-radius:var(--blog-radius-lg);border:1px solid var(--blog-border);border-left:3px solid transparent;box-shadow:var(--blog-shadow);padding:1.5rem;display:flex;flex-direction:column;transition:transform .3s cubic-bezier(.25,.46,.45,.94),box-shadow .3s cubic-bezier(.25,.46,.45,.94),border-color .3s ease}.blog-card:hover{transform:translateY(-6px);box-shadow:0 12px 32px rgba(0,0,0,.35),0 4px 12px rgba(0,0,0,.2)}.blog-card[data-category="Intelligence Artificielle"]:hover{border-left-color:#9b59b6}.blog-card[data-category=Linux]:hover{border-left-color:#27ae60}.blog-card[data-category=Sécurité]:hover{border-left-color:#e74c3c}.blog-card[data-category=DevOps]:hover{border-left-color:#3498db}.blog-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:.5rem}.blog-badge{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;font-weight:600;padding:4px 12px;border-radius:6px;text-transform:capitalize}.blog-badge-ia{background:rgba(155,89,182,.15);color:#9b59b6}.blog-badge-linux{background:rgba(39,174,96,.15);color:#27ae60}.blog-badge-securite,.blog-badge-security{background:rgba(231,76,60,.15);color:#e74c3c}.blog-badge-devops{background:rgba(52,152,219,.15);color:#3498db}.blog-badge-default{background:var(--blog-primary-bg);color:var(--blog-primary)}.blog-date{display:inline-flex;align-items:center;gap:6px;font-size:.8rem;color:var(--blog-text-muted)}.blog-date i{font-size:.75rem}.blog-card-title{font-size:1.2rem;font-weight:700;color:var(--blog-text);margin-bottom:.75rem;line-height:1.4}.blog-card-excerpt{font-size:.925rem;color:var(--blog-text-secondary);line-height:1.6;margin-bottom:1.25rem;flex:1}.blog-card-footer{margin-top:auto}.blog-read-link{display:inline-flex;align-items:center;gap:8px;color:var(--blog-primary);font-size:.9rem;font-weight:600;text-decoration:none;transition:gap var(--blog-transition),color var(--blog-transition)}.blog-read-link:hover{color:var(--blog-primary-dark);gap:12px}.blog-read-link i{font-size:.8rem;transition:transform var(--blog-transition)}.blog-read-link:hover i{transform:translateX(3px)}.blog-article{padding:100px 0 2rem;background:var(--blog-bg);min-height:60vh}.blog-article>.container{max-width:820px}.blog-article-header{margin-bottom:2.5rem;padding-bottom:2rem;border-bottom:1px solid var(--blog-border)}.blog-article-header h1{font-size:clamp(1.75rem,4vw,2.5rem);font-weight:800;color:var(--blog-text);line-height:1.25;margin:1rem 0 1.25rem;letter-spacing:-.02em}.blog-article-meta{display:flex;align-items:center;flex-wrap:wrap;gap:1rem;font-size:.875rem;color:var(--blog-text-muted)}.blog-article-meta time,.blog-reading-time{display:inline-flex;align-items:center;gap:6px;color:var(--blog-text-muted)}.blog-article-meta time i,.blog-reading-time i{font-size:.8rem;opacity:.7}.blog-reading-time{font-size:.875rem}.blog-article-intro{font-size:1.15rem;line-height:1.7;color:var(--blog-text-secondary);margin:0;font-style:italic;padding-left:1.25rem;border-left:3px solid var(--blog-primary)}.blog-article-body{font-size:1.05rem;line-height:1.85;color:var(--blog-text-secondary)}.blog-article-body p{margin-bottom:1.5rem;color:var(--blog-text-secondary)}.blog-article-body h2{font-size:1.6rem;font-weight:700;color:var(--blog-text);margin:3rem 0 1.25rem;padding-bottom:.5rem;border-bottom:2px solid var(--blog-primary);letter-spacing:-.01em}.blog-article-body h2:first-child{margin-top:0}.blog-article-body h3{font-size:1.3rem;font-weight:600;margin:2.25rem 0 1rem;position:relative;padding-left:.75rem}.blog-article-body h3::before{content:"";position:absolute;left:0;top:.15em;bottom:.15em;width:3px;background:var(--blog-primary);border-radius:2px}.blog-article-body h4{font-size:1.1rem;font-weight:600;margin:1.75rem 0 .75rem}.blog-article-body a{color:var(--blog-primary);text-decoration:underline;text-decoration-color:rgba(52,152,219,.3);text-underline-offset:3px;transition:text-decoration-color var(--blog-transition)}.blog-article-body a:hover{text-decoration-color:var(--blog-primary)}.blog-article-body strong{color:var(--blog-text);font-weight:600}.blog-article-body ol,.blog-article-body ul{margin:1.25rem 0;padding-left:1.5rem}.blog-article-body li{margin-bottom:.6rem;line-height:1.7;color:var(--blog-text-secondary)}.blog-article-body h3,.blog-article-body h4,.blog-article-body li strong{color:var(--blog-text)}.blog-article-body ul li::marker{color:var(--blog-primary)}.blog-article-body ol li::marker{color:var(--blog-primary);font-weight:600}.blog-article-body code:not(pre code){background:rgba(52,152,219,.12);color:#5dade2;padding:2px 8px;border-radius:4px;font-size:.9em;font-family:"Fira Code","JetBrains Mono",monospace;border:1px solid rgba(52,152,219,.2)}.blog-article-body pre{background:#1e1e2e;border:1px solid var(--blog-border);border-radius:var(--blog-radius);padding:1.25rem 1.5rem;margin:1.5rem 0;overflow-x:auto;position:relative}.blog-article-body pre code{font-size:.875rem;line-height:1.65;font-family:"Fira Code","JetBrains Mono",monospace;color:#cdd6f4}.blog-article-body blockquote{margin:1.5rem 0;padding:1rem 1.5rem;border-left:4px solid var(--blog-primary);background:var(--blog-primary-bg);border-radius:0 var(--blog-radius) var(--blog-radius)0;font-style:italic;color:var(--blog-text-secondary)}.blog-article-body blockquote p:last-child{margin-bottom:0}.blog-article-body .alert-danger,.blog-article-body .alert-info,.blog-article-body .alert-warning{margin:1.5rem 0;padding:1rem 1.25rem;border-radius:var(--blog-radius);font-size:.95rem;line-height:1.6}.blog-article-body .alert-info{background:rgba(52,152,219,.1);border-left:4px solid #3498db;color:var(--blog-text-secondary)}.blog-article-body .alert-warning{background:rgba(243,156,18,.1);border-left:4px solid #f39c12;color:var(--blog-text-secondary)}.blog-article-body .alert-danger{background:rgba(231,76,60,.1);border-left:4px solid #e74c3c;color:var(--blog-text-secondary)}.blog-article-body table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.95rem}.blog-article-body th{background:var(--blog-card-bg);color:var(--blog-text);font-weight:600;text-align:left;padding:.75rem 1rem;border-bottom:2px solid var(--blog-primary)}.blog-article-body td{padding:.75rem 1rem;border-bottom:1px solid var(--blog-border);color:var(--blog-text-secondary)}.blog-article-body tr:hover td{background:rgba(52,152,219,.05)}.blog-article-body img{max-width:100%;height:auto;border-radius:var(--blog-radius);margin:1.5rem 0}.blog-article-body hr{border:0;height:1px;background:var(--blog-border);margin:2.5rem 0}.blog-article-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:2.5rem;padding-top:1.5rem;border-top:1px solid var(--blog-border)}.blog-article .tuto-author-card{margin-top:2.5rem;background:var(--blog-card-bg);border:1px solid var(--blog-border);border-radius:var(--blog-radius-lg);padding:2rem;display:flex;align-items:flex-start;gap:1.5rem;position:relative;overflow:hidden}.blog-article .tuto-author-avatar img{border-radius:50%}.blog-article span.tuto-author-avatar,.tuto-author-social a{display:flex;align-items:center;justify-content:center;border-radius:50%}.blog-article .tuto-author-avatar img,.blog-article span.tuto-author-avatar{width:80px;height:80px;border:3px solid var(--blog-primary);box-shadow:0 4px 10px rgba(0,0,0,.2)}.blog-article span.tuto-author-avatar{background:linear-gradient(135deg,#3498db,#2c3e50);color:#fff;font-size:1.5rem;font-weight:700;letter-spacing:1px;flex-shrink:0}.blog-article .tuto-author-info{flex:1}.blog-article .tuto-author-info strong{color:var(--blog-text);font-size:1.1rem;display:block;margin-bottom:.5rem;font-weight:700}.blog-article .tuto-author-bio{color:var(--blog-text-secondary);font-size:.95rem;line-height:1.6;margin-bottom:1rem}.tuto-author-social{display:flex;gap:1rem;margin-bottom:1.25rem}.tuto-author-social a{color:var(--blog-text-secondary, #ccc);font-size:1.2rem;transition:all .2s ease;width:36px;height:36px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.1)}.tuto-author-social a:hover{color:#fff;transform:translateY(-2px)}.tuto-author-social a[aria-label=LinkedIn]:hover{background:#0077b5}.tuto-author-social a[aria-label=GitHub]:hover{background:#333}.tuto-author-social a[aria-label="Twitter / X"]:hover{background:#000;border:1px solid #333}.blog-article-cta .btn-outline,.tuto-author-cta .btn-sm{display:inline-flex;align-items:center;gap:8px;font-weight:600;text-decoration:none}.tuto-author-cta .btn-sm{padding:.5rem 1rem;background:var(--blog-primary);color:#fff;font-size:.9rem;border-radius:6px;transition:all .2s ease;border:1px solid transparent}.tuto-author-cta .btn-sm:hover{background:var(--blog-primary-dark);transform:translateY(-1px);box-shadow:0 4px 12px rgba(52,152,219,.3)}.blog-article-cta{text-align:center;margin:3rem 0 1rem}.blog-article-cta .btn-outline{padding:.75rem 1.5rem;border:2px solid var(--blog-primary);border-radius:8px;color:var(--blog-primary);font-size:.95rem;transition:all var(--blog-transition)}.blog-article-cta .btn-outline:hover{background:var(--blog-primary);color:#fff;transform:translateY(-2px);box-shadow:0 4px 15px rgba(52,152,219,.3)}.blog-card:focus-visible{outline:2px solid var(--blog-primary);outline-offset:2px}@media (prefers-contrast:high){.blog-article-body pre,.blog-card{border:2px solid currentColor}}@media (max-width:768px){.blog-hero{padding:90px 0 50px}.blog-hero h1{font-size:2rem}.blog-section{padding:2rem 0 3rem}.blog-grid{grid-template-columns:1fr;gap:1rem}.blog-card{padding:1.25rem}.blog-article{padding:80px 0 1.5rem}.blog-article-header h1{font-size:1.5rem}.blog-article-meta{gap:.75rem}.blog-article-intro{font-size:1.05rem;padding-left:1rem}.blog-article-body{font-size:1rem;line-height:1.75}.blog-article-body h2{font-size:1.35rem;margin-top:2.25rem}.blog-article-body h3{font-size:1.15rem;margin-top:1.75rem}.blog-article-body pre{padding:1rem;border-radius:8px;margin-left:-.5rem;margin-right:-.5rem}.blog-article-body pre code{font-size:.8rem}.blog-article .tuto-author-card{flex-direction:column;text-align:center;padding:1.25rem}}@media (max-width:480px){.blog-hero{padding:80px 0 40px}.blog-card-header{flex-direction:column;align-items:flex-start}.blog-article-header h1{font-size:1.35rem}.blog-article-meta{flex-direction:column;gap:.5rem}}@media print{.blog-article-cta,.reading-progress,.tuto-breadcrumb{display:none}.blog-article{padding:0}.blog-article-body{color:#333;font-size:11pt;line-height:1.6}.blog-article-body a{color:#333;text-decoration:underline}.blog-article-body pre{border:1px solid #ccc;background:#f5f5f5}}.blog-article-body a.internal-link{color:var(--blog-primary);text-decoration:none;border-bottom:1px solid rgba(52,152,219,.3);transition:var(--blog-transition);position:relative}.blog-article-body a.internal-link:hover{color:var(--blog-primary-dark);border-bottom-color:var(--blog-primary)}.blog-article-body a.internal-link::after{content:"";font-family:"Font Awesome 5 Free";font-weight:900;font-size:.75em;margin-left:.2em;opacity:.5;transition:var(--blog-transition)}.blog-article-body a.internal-link:hover::after{opacity:1}@media (prefers-color-scheme:light){.blog-article-body a.internal-link{color:#2980b9;border-bottom-color:rgba(41,128,185,.3)}.blog-article-body a.internal-link:hover{color:#1f6391;border-bottom-color:#2980b9}}