﻿:root{--brand-pine-900:#12271f;--brand-pine-700:#1e4638;--brand-pine-500:#2f6b54;--brand-pine-300:#6fa890;--brand-peach-100:#fdeee3;--brand-peach-300:#f6cbae;--brand-peach-500:#efa980;--brand-orange-600:#e8611f;--brand-orange-700:#c24e15;--brand-cream:#fff9f4;--brand-ink:#1b2a22;--brand-text-light:#fbf3ea;--font-display:"Oswald","Segoe UI",sans-serif}body:not(.is-cv-page){background-color:var(--brand-peach-100);color:var(--brand-ink)}body:not(.is-cv-page) .badge,body:not(.is-cv-page) .btn,body:not(.is-cv-page) .nav-link,body:not(.is-cv-page) .navbar-brand,body:not(.is-cv-page) h1,body:not(.is-cv-page) h2,body:not(.is-cv-page) h3,body:not(.is-cv-page) h4,body:not(.is-cv-page) h5,body:not(.is-cv-page) h6{font-family:var(--font-display)}body:not(.is-cv-page) h1,body:not(.is-cv-page) h2,body:not(.is-cv-page) h3{font-weight:700;letter-spacing:.01em}body:not(.is-cv-page) a{color:var(--brand-pine-700)}body:not(.is-cv-page) a:hover{color:var(--brand-orange-600)}body:not(.is-cv-page) .card{background-color:var(--brand-cream);border:none;border-left:5px solid var(--brand-pine-500);border-radius:.35rem}body:not(.is-cv-page) .badge{border-radius:.2rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}body:not(.is-cv-page) .btn{border-radius:.25rem;border-width:2px;font-weight:600;letter-spacing:.02em;text-transform:uppercase}body:not(.is-cv-page) .btn-primary{--bs-btn-bg:var(--brand-orange-600);--bs-btn-border-color:var(--brand-orange-600);--bs-btn-hover-bg:var(--brand-orange-700);--bs-btn-hover-border-color:var(--brand-orange-700);--bs-btn-active-bg:var(--brand-orange-700);--bs-btn-active-border-color:var(--brand-orange-700);background-color:var(--brand-orange-600);border-color:var(--brand-orange-600)}body:not(.is-cv-page) .btn-primary:active,body:not(.is-cv-page) .btn-primary:focus,body:not(.is-cv-page) .btn-primary:hover{background-color:var(--brand-orange-700)!important;border-color:var(--brand-orange-700)!important}body:not(.is-cv-page) .btn-outline-primary{border-color:var(--brand-orange-600);color:var(--brand-orange-600)}body:not(.is-cv-page) .btn-outline-primary:hover{background-color:var(--brand-orange-600);border-color:var(--brand-orange-600)}body:not(.is-cv-page) .btn-success{background-color:var(--brand-pine-500)!important;border-color:var(--brand-pine-500)!important}body:not(.is-cv-page) .btn-success:hover{background-color:var(--brand-pine-700)!important;border-color:var(--brand-pine-700)!important}body:not(.is-cv-page) .btn-warning{background-color:var(--brand-peach-500)!important;border-color:var(--brand-peach-500)!important;color:var(--brand-ink)!important}body:not(.is-cv-page) .btn-warning:hover{background-color:var(--brand-orange-600)!important;border-color:var(--brand-orange-600)!important}body:not(.is-cv-page) .btn-outline-secondary,body:not(.is-cv-page) .btn-secondary{--bs-btn-color:var(--brand-pine-700);--bs-btn-border-color:var(--brand-pine-700);--bs-btn-hover-bg:var(--brand-pine-700);--bs-btn-hover-border-color:var(--brand-pine-700)}body:not(.is-cv-page) .btn-secondary{background-color:var(--brand-pine-700)!important;border-color:var(--brand-pine-700)!important;color:var(--brand-text-light)!important}body:not(.is-cv-page) .page-link{background-color:var(--brand-cream);border-color:var(--brand-pine-500);color:var(--brand-pine-700);font-weight:600}body:not(.is-cv-page) .page-link:hover{background-color:var(--brand-peach-300);border-color:var(--brand-pine-500);color:var(--brand-orange-600)}body:not(.is-cv-page) .page-link:focus{background-color:var(--brand-peach-300);box-shadow:none;color:var(--brand-orange-600)}body:not(.is-cv-page) .page-item.active .page-link{background-color:var(--brand-orange-600);border-color:var(--brand-orange-600);color:var(--brand-text-light)}body:not(.is-cv-page) .page-item.disabled .page-link{background-color:var(--brand-peach-100);border-color:var(--brand-peach-300);color:var(--brand-pine-300)}body:not(.is-cv-page) .bg-primary{background-color:var(--brand-pine-700)!important}body:not(.is-cv-page) .bg-success{background-color:var(--brand-pine-500)!important}body:not(.is-cv-page) .bg-warning{background-color:var(--brand-peach-500)!important;color:var(--brand-ink)!important}body:not(.is-cv-page) .bg-info{background-color:var(--brand-orange-600)!important;color:var(--brand-text-light)!important}body:not(.is-cv-page) .bg-secondary{background-color:var(--brand-pine-900)!important}body:not(.is-cv-page) .navbar.navbar-dark.bg-primary{background-color:var(--brand-pine-700)!important;border:none}body:not(.is-cv-page) .list-group-item-action:hover{background-color:var(--brand-peach-300)}.app-navbar{background-color:var(--brand-pine-900);border-bottom:5px solid var(--brand-orange-600);padding:.6rem 1.5rem}.app-navbar__brand{align-items:center;color:var(--brand-text-light);display:inline-flex;font-family:var(--font-display);font-size:1.3rem;font-weight:700;gap:.65rem;letter-spacing:.03em;text-decoration:none;text-transform:uppercase}.app-navbar__brand:hover{color:var(--brand-peach-300)}.app-navbar__brand-mark{align-items:center;background-color:var(--brand-orange-600);clip-path:polygon(12% 0,100% 0,88% 100%,0 100%);color:var(--brand-pine-900);display:inline-flex;font-weight:800;height:2.1rem;justify-content:center;transform:rotate(-6deg);width:2.1rem}.app-navbar__link{color:var(--brand-text-light)!important;font-size:.82rem;font-weight:600;letter-spacing:.04em;margin:0 .15rem;padding:.55rem 1rem!important;position:relative;text-transform:uppercase;transition:color .15s ease;z-index:0}.app-navbar__link:before{background-color:var(--brand-orange-600);clip-path:polygon(8% 0,100% 0,92% 100%,0 100%);content:"";inset:0;position:absolute;transform:scaleX(0);transform-origin:left center;transition:transform .2s ease;z-index:-1}.app-navbar__link.is-active:before,.app-navbar__link:hover:before{transform:scaleX(1)}.app-navbar__link.is-active,.app-navbar__link:hover{color:var(--brand-pine-900)!important}.app-navbar__user-badge{color:var(--brand-peach-300)!important;font-size:.82rem}.app-navbar__logout{color:var(--brand-text-light)!important;font-size:.82rem}.app-navbar__logout:hover{color:var(--brand-orange-600)!important}.app-navbar .navbar-toggler{border:2px solid var(--brand-orange-600);border-radius:.2rem;padding:.35rem .5rem}.app-navbar .navbar-toggler:focus{box-shadow:0 0 0 .2rem rgba(232,97,31,.35)}.app-navbar .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3E%3Cpath stroke='rgba(251, 243, 234, 1)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.subtask-item{background-color:var(--brand-peach-100);border-left:3px solid var(--brand-pine-500)}.subtask-item .form-control-sm{font-size:.85rem}.category-grid{display:grid;gap:.4rem;grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}@media(min-width:576px){.category-grid{gap:.5rem;grid-template-columns:repeat(auto-fill,minmax(180px,1fr))}}.category-card{background-color:var(--bs-body-bg);border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);padding:.375rem .5rem}.category-card .category-artists{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.classified-artist-chip{cursor:pointer;display:inline-block;margin:0 .2rem .2rem 0;max-width:100%;vertical-align:bottom}.music-ai-toggle{align-items:center;background-color:hsla(0,0%,100%,.08);border:2px solid hsla(0,0%,100%,.4);border-radius:.25rem;cursor:pointer;display:inline-flex;gap:.5rem;margin-bottom:0;min-height:0;padding:.28rem .6rem .28rem .55rem;transition:background-color .15s ease,border-color .15s ease}.music-ai-toggle:hover{background-color:hsla(0,0%,100%,.14);border-color:hsla(0,0%,100%,.7)}.music-ai-toggle .form-check-input{background-color:hsla(0,0%,100%,.25);border-color:hsla(0,0%,100%,.55);box-shadow:none;cursor:pointer;flex-shrink:0;float:none;height:1rem;margin:0;width:2rem}.music-ai-toggle .form-check-input:checked{background-color:var(--brand-orange-600);border-color:var(--brand-orange-600)}.music-ai-toggle .form-check-input:focus{border-color:hsla(0,0%,100%,.85);box-shadow:0 0 0 .15rem rgba(232,97,31,.4)}.music-ai-toggle__label{align-items:center;color:var(--brand-text-light);cursor:pointer;display:inline-flex;font-family:var(--font-display);font-size:.8125rem;font-weight:600;gap:.35rem;letter-spacing:.03em;margin:0;text-transform:uppercase;white-space:nowrap}.music-ai-toggle__label i{font-size:.9em;opacity:.85}.music-ai-toggle--off{cursor:not-allowed;opacity:.55}.music-ai-toggle--off:hover{background-color:hsla(0,0%,100%,.08);border-color:hsla(0,0%,100%,.4)}.music-ai-toggle--off .form-check-input,.music-ai-toggle--off .music-ai-toggle__label{cursor:not-allowed}.classified-artist-chip.border-primary{outline:2px solid var(--bs-primary);outline-offset:1px}.music-ai-badge{background-color:var(--brand-orange-600);color:var(--brand-text-light,#fff);font-weight:600}.music-ai-badge i{opacity:.85}.music-player__mount iframe{aspect-ratio:16/9;border-radius:var(--bs-border-radius);display:block;height:auto;width:100%}.music-player__spectrum{align-items:flex-end;display:flex;gap:3px;height:48px;margin-bottom:12px;padding:4px 0}.music-player__spectrum-bar{background:linear-gradient(to top,var(--brand-orange-700),var(--brand-orange-600));border-radius:2px;flex:1 1 0;height:15%;max-width:6px;min-width:2px;transition:height .2s ease}.music-player__spectrum.is-playing .music-player__spectrum-bar{animation-direction:alternate;animation-iteration-count:infinite;animation-name:music-spectrum-bounce;animation-timing-function:ease-in-out}@keyframes music-spectrum-bounce{0%{height:15%}to{height:var(--bar-peak,90%)}}.music-player__tracklist{max-height:320px;overflow-y:auto}.music-player__track.active{font-weight:600}.music-player__volume{width:7rem}.music-player__seek-row{flex:1 1 14rem;min-width:0}.music-player__controls-secondary .btn[aria-pressed=true]{background-color:var(--brand-orange-600);border-color:var(--brand-orange-600);color:var(--brand-text-light,#fff)}.music-player__controls-secondary .btn sup{font-size:.6em;margin-left:1px}:root{--category-backend:#1e4638;--category-frontend:#e8611f;--category-infra:#3b6b87;--category-ia:#7c3aed;--category-langue:#b91c1c;--category-autre:#64748b}.category-tag{color:#fff}.category-tag--backend{background-color:var(--category-backend)}.category-tag--frontend{background-color:var(--category-frontend)}.category-tag--infra{background-color:var(--category-infra)}.category-tag--ia{background-color:var(--category-ia)}.category-tag--langue{background-color:var(--category-langue)}.category-tag--autre{background-color:var(--category-autre)}.topic-tag--neutral{background-color:#fff;border:1px solid var(--brand-peach-300);color:var(--brand-ink)}.article-tile{color:inherit;display:block;height:100%;text-decoration:none}.article-tile:hover .card{border-left-color:var(--brand-orange-600)}.article-tile .card-title{color:var(--brand-ink)}.journal-form .form-check-input:checked{background-color:var(--brand-orange-600);border-color:var(--brand-orange-600)}.journal-form .form-check-input:focus{border-color:var(--brand-peach-500);box-shadow:0 0 0 .2rem rgba(232,97,31,.25)}.article-content{overflow-wrap:break-word}.article-content img{height:auto;max-width:100%}.article-content pre{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;background-color:var(--brand-peach-100);border-radius:.35rem;padding:.75rem 1rem}.article-content :not(pre)>code{overflow-wrap:break-word;word-break:break-word}.article-content table{display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vietnamese-session__term{font-size:2rem;font-weight:600}.vietnamese-session__romanization{font-size:1.1rem}.vietnamese-session__translation{font-size:1.5rem;font-weight:600}.vietnamese-session__ratings .btn{min-width:0}.vietnamese-lesson--locked{opacity:.6}.vietnamese-lesson__history-item>summary{cursor:pointer;list-style:none;user-select:none}.vietnamese-lesson__history-item>summary::-webkit-details-marker{display:none}.vietnamese-lesson__history-item>summary:after{color:var(--bs-secondary,#6c757d);content:"▾";margin-left:.5rem;transition:transform .15s ease}.vietnamese-lesson__history-item[open]>summary:after{display:inline-block;transform:rotate(180deg)}.vietnamese-lesson__content{line-height:1.6;overflow-wrap:break-word}.vietnamese-lesson__content h2,.vietnamese-lesson__content h3,.vietnamese-lesson__content h4{margin-top:1.5rem}.vietnamese-lesson__content img{height:auto;max-width:100%}.vietnamese-lesson__content pre{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.vietnamese-lesson__content table{display:block;margin:1rem 0;overflow-x:auto;width:100%;-webkit-overflow-scrolling:touch}.vietnamese-lesson__content table td,.vietnamese-lesson__content table th{border:1px solid var(--bs-border-color,#dee2e6);padding:.35rem .6rem}.vietnamese-progress__streak-strip{display:flex;flex-wrap:wrap;gap:4px}.vietnamese-progress__streak-day{background-color:var(--bs-secondary,#6c757d);border-radius:3px;height:14px;opacity:.25;width:14px}.vietnamese-progress__streak-day--completed{background-color:var(--bs-success,#198754);opacity:1}.notepad__tab{align-items:center;background-color:var(--brand-pine-700);border:none;border-radius:0 8px 8px 0;box-shadow:2px 0 8px rgba(0,0,0,.15);color:var(--brand-text-light);display:flex;font-size:1.1rem;height:56px;justify-content:center;left:0;position:fixed;top:50%;transform:translateY(-50%);transition:transform .2s ease-out;width:44px;z-index:1040}.notepad__tab:focus-visible,.notepad__tab:hover{background-color:var(--brand-pine-500)}.notepad--open .notepad__tab{transform:translateY(-50%) translateX(min(320px,90vw))}.notepad__panel{background-color:var(--brand-cream);border-right:1px solid var(--brand-peach-300);bottom:0;box-shadow:2px 0 8px rgba(0,0,0,.15);display:flex;flex-direction:column;left:0;position:fixed;top:0;transform:translateX(-100%);transition:transform .2s ease-out;width:min(320px,90vw);z-index:1039}.notepad__panel.is-open{transform:translateX(0)}.notepad__header{align-items:baseline;border-bottom:1px solid var(--brand-peach-300);display:flex;justify-content:space-between;padding:.75rem 1rem}.notepad__title{color:var(--brand-pine-700);font-weight:600}.notepad__status{color:var(--brand-pine-500);font-size:.8rem}.notepad__textarea{background:transparent;border:none;color:var(--brand-ink);flex:1;padding:1rem;resize:none}.notepad__textarea:focus{outline:none}