﻿:root{--night:#0e1530;--paper:var(--night);--paper-deep:#1e2a5c;--sheet:#16204a;--ink:#ece8dc;--graphite:#9ca5c4;--rule:#2c386b;--rule-strong:#6e7bb3;--on-accent:#0e1530;--ok:#6cc98a;--warn:#f2b544;--warn-bg:#f2b544;--danger:#f87171;--font-ui:"IBM Plex Sans",system-ui,sans-serif;--font-read:"IBM Plex Serif",Georgia,serif;--font-title:"Unbounded","IBM Plex Sans",sans-serif;--radius:0.625rem;--ease-arrive:cubic-bezier(0.2,0.8,0.2,1);--ease-travel:cubic-bezier(0.65,0,0.35,1);--mod-journal:#f2b544;--mod-taches:#ee7152;--mod-oeuvres:#5bc4d6;--mod-musique:#f58fb4;--mod-ukulele:#d9a06e;--mod-vietnamien:#6cc98a;--mod-reglages:#a9b4d6;--mod-cv:#a9b4d6;--mod-accueil:#a9b4d6;--accent:#a9b4d6;--planet-x:6%;--accent-strong:color-mix(in srgb,var(--accent) 82%,#fff);--accent-tint:color-mix(in srgb,var(--accent) 14%,var(--sheet));--brand-pine-900:#0a1026;--brand-pine-700:var(--sheet);--brand-pine-500:var(--paper-deep);--brand-pine-300:var(--graphite);--brand-peach-100:var(--night);--brand-peach-300:var(--graphite);--brand-peach-500:var(--warn-bg);--brand-orange-600:var(--accent);--brand-orange-700:var(--accent-strong);--brand-cream:var(--sheet);--brand-ink:var(--ink);--brand-text-light:var(--ink);--font-display:var(--font-ui)}body[data-module=journal]{--accent:var(--mod-journal);--planet-x:6%}body[data-module=taches]{--accent:var(--mod-taches);--planet-x:18%}body[data-module=oeuvres]{--accent:var(--mod-oeuvres);--planet-x:30%}body[data-module=musique]{--accent:var(--mod-musique);--planet-x:42%}body[data-module=ukulele]{--accent:var(--mod-ukulele);--planet-x:54%}body[data-module=vietnamien]{--accent:var(--mod-vietnamien);--planet-x:66%}body[data-module=reglages]{--accent:var(--mod-reglages);--planet-x:78%}body[data-module=cv]{--accent:var(--mod-cv);--planet-x:6%}body[data-module=accueil]{--accent:var(--mod-accueil);--planet-x:6%}:where(body:not(.is-cv-page)) .h1,:where(body:not(.is-cv-page)) .h2,:where(body:not(.is-cv-page)) .h3,:where(body:not(.is-cv-page)) .h4,:where(body:not(.is-cv-page)) .h5,:where(body:not(.is-cv-page)) .h6,:where(body:not(.is-cv-page)) h1,:where(body:not(.is-cv-page)) h2,:where(body:not(.is-cv-page)) h3,:where(body:not(.is-cv-page)) h4,:where(body:not(.is-cv-page)) h5,:where(body:not(.is-cv-page)) h6{color:var(--ink);font-weight:700;letter-spacing:-.01em}:where(body:not(.is-cv-page)) .h1,:where(body:not(.is-cv-page)) h1{font-family:var(--font-title);font-size:1.6rem;font-weight:700;letter-spacing:-.02em;line-height:1.15}@media(min-width:768px){:where(body:not(.is-cv-page)) .h1,:where(body:not(.is-cv-page)) h1{font-size:2.1rem}}:where(body:not(.is-cv-page)) a{color:var(--ink);text-decoration-color:var(--accent);text-underline-offset:.2em}:where(body:not(.is-cv-page)) a:hover{color:var(--accent)}body:not(.is-cv-page){background-color:var(--paper);color:var(--ink);color-scheme:dark;font-family:var(--font-ui);font-size:1rem;line-height:1.5}body:not(.is-cv-page) :focus-visible{outline:2px solid var(--accent);outline-offset:2px}body:not(.is-cv-page) .text-muted{color:var(--graphite)!important}body:not(.is-cv-page) .page-head{align-items:flex-end;display:flex;flex-wrap:wrap;gap:.75rem 1rem;justify-content:space-between;margin-bottom:1.5rem}body:not(.is-cv-page) .page-head h1{margin:0}body:not(.is-cv-page) .page-head__sub{color:var(--graphite);font-weight:400}body:not(.is-cv-page) .page-head__meta{color:var(--graphite);margin:.25rem 0 0}body:not(.is-cv-page) .page-head__actions{display:flex;flex-wrap:wrap;gap:.5rem}body:not(.is-cv-page) .back-link{align-items:center;display:inline-flex;font-weight:600;gap:.4rem;min-height:44px;text-decoration:none}body:not(.is-cv-page) .info-list{background-color:var(--sheet);border:1px solid var(--rule);border-radius:var(--radius);margin:0 0 1.25rem;padding:1rem 1.25rem}body:not(.is-cv-page) .info-list dt{color:var(--graphite);font-size:.8rem;font-weight:600}body:not(.is-cv-page) .info-list dd{margin-bottom:.75rem}body:not(.is-cv-page) .info-list dd:last-child{margin-bottom:0}body:not(.is-cv-page) .form-page{max-width:48rem}body:not(.is-cv-page) .form-actions{display:flex;flex-direction:column;gap:.5rem;margin-top:1.5rem}@media(min-width:576px){body:not(.is-cv-page) .form-actions{flex-direction:row}}body:not(.is-cv-page) .search-field{position:relative}body:not(.is-cv-page) .search-field .form-control{min-height:44px;padding-left:2.4rem}body:not(.is-cv-page) .search-field__icon{color:var(--graphite);left:.9rem;pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}body:not(.is-cv-page) .filter-chips{display:flex;gap:.4rem;list-style:none;margin:0 -.75rem;overflow-x:auto;padding:.1rem .75rem .4rem;scrollbar-width:none;-webkit-overflow-scrolling:touch}body:not(.is-cv-page) .filter-chips::-webkit-scrollbar{display:none}@media(min-width:768px){body:not(.is-cv-page) .filter-chips{flex-wrap:wrap;margin:0;overflow:visible;padding:0}}body:not(.is-cv-page) .filter-chip{align-items:center;background-color:var(--sheet);border:1px solid var(--rule-strong);border-radius:999px;color:var(--ink);display:inline-flex;font-size:.9rem;font-weight:600;min-height:36px;padding:.3rem .85rem;text-decoration:none;white-space:nowrap}body:not(.is-cv-page) .filter-chip:hover{border-color:var(--accent);color:var(--accent)}body:not(.is-cv-page) .filter-chip.is-active{background-color:var(--accent);border-color:var(--accent);color:var(--on-accent)}@media(pointer:coarse){body:not(.is-cv-page) .filter-chip{min-height:44px}}body:not(.is-cv-page) .login-sheet{background-color:var(--sheet);border:1px solid var(--rule);border-radius:var(--radius);margin:2rem auto;max-width:24rem;padding:1.75rem 1.5rem}@media(min-width:576px){body:not(.is-cv-page) .login-sheet{margin-top:4rem;padding:2rem}}body:not(.is-cv-page) .login-sheet h1{font-size:1.5rem;margin:1rem 0 1.5rem}body:not(.is-cv-page) .login-sheet .form-control{min-height:44px}body:not(.is-cv-page) .subnav{background-color:var(--paper-deep);border-radius:calc(var(--radius) + .25rem);display:grid;gap:.25rem;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;list-style:none;margin:0 0 1.5rem;padding:.25rem}@media(min-width:768px){body:not(.is-cv-page) .subnav{display:inline-grid;grid-auto-columns:auto}}body:not(.is-cv-page) .subnav__link{align-items:center;border-radius:var(--radius);color:var(--ink);display:flex;font-size:.9rem;font-weight:600;gap:.45rem;justify-content:center;min-height:44px;padding:.4rem .9rem;text-decoration:none;white-space:nowrap}body:not(.is-cv-page) .subnav__link:hover{background-color:var(--sheet);color:var(--ink)}body:not(.is-cv-page) .subnav__link.is-active{background-color:var(--accent);color:var(--on-accent)}@media(max-width:400px){body:not(.is-cv-page) .subnav__link{flex-direction:column;font-size:.75rem;gap:.15rem;padding:.35rem .25rem}}body:not(.is-cv-page) .btn-icon{align-items:center;background-color:transparent;border-color:transparent;color:var(--graphite);display:inline-flex;height:2.25rem;justify-content:center;padding:0;width:2.25rem}body:not(.is-cv-page) .btn-icon:hover{background-color:var(--paper-deep);color:var(--ink)}body:not(.is-cv-page) .btn-icon.btn-icon--danger:hover{background-color:var(--danger);color:var(--on-accent)}@media(pointer:coarse){body:not(.is-cv-page) .btn-icon{height:44px;width:44px}}body:not(.is-cv-page) .status-chip{--dot:var(--graphite);align-items:center;color:var(--ink);display:inline-flex;font-size:.85rem;font-weight:600;gap:.4rem;white-space:nowrap}body:not(.is-cv-page) .status-chip:before{background-color:var(--dot);border-radius:50%;content:"";height:.55rem;width:.55rem}body:not(.is-cv-page) .status-chip--ok{--dot:var(--ok)}body:not(.is-cv-page) .status-chip--warn{--dot:var(--warn)}body:not(.is-cv-page) .status-chip--danger{--dot:var(--danger)}body:not(.is-cv-page) .status-chip--muted{--dot:var(--rule-strong);color:var(--graphite)}body:not(.is-cv-page) .card{background-color:var(--sheet);border:1px solid var(--rule);border-radius:var(--radius)}body:not(.is-cv-page) .card.shadow,body:not(.is-cv-page) .card.shadow-sm{box-shadow:none!important}body:not(.is-cv-page) .card-title{font-weight:700}body:not(.is-cv-page) .card-header{background-color:var(--sheet);border-bottom-color:var(--rule);font-weight:600}body:not(.is-cv-page) .card-footer{background-color:var(--sheet);border-top-color:var(--rule)}body:not(.is-cv-page) .item-card__actions{align-items:center;display:flex;gap:.5rem;margin-top:1rem}body:not(.is-cv-page) .badge{border-radius:.25rem;font-weight:600;letter-spacing:0;text-transform:none}body:not(.is-cv-page) .btn{border-radius:var(--radius);border-width:1px;font-weight:600;letter-spacing:0;text-transform:none}@media(pointer:coarse){body:not(.is-cv-page) .btn,body:not(.is-cv-page) .page-link{align-items:center;display:inline-flex;justify-content:center;min-height:44px}}body:not(.is-cv-page) .btn-primary{background-color:var(--accent);border-color:var(--accent);color:var(--on-accent)}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(--accent-strong)!important;border-color:var(--accent-strong)!important;color:var(--on-accent)}body:not(.is-cv-page) .btn-outline-primary{border-color:var(--accent);color:var(--accent)}body:not(.is-cv-page) .btn-outline-primary:active,body:not(.is-cv-page) .btn-outline-primary:hover{background-color:var(--accent);border-color:var(--accent);color:var(--on-accent)}body:not(.is-cv-page) .btn-secondary{background-color:var(--paper-deep)!important;border-color:var(--rule-strong)!important;color:var(--ink)!important}body:not(.is-cv-page) .btn-outline-secondary{background-color:transparent;border-color:var(--rule-strong);color:var(--ink)}body:not(.is-cv-page) .btn-outline-secondary.show,body:not(.is-cv-page) .btn-outline-secondary:active,body:not(.is-cv-page) .btn-outline-secondary:hover{background-color:var(--paper-deep);border-color:var(--graphite);color:var(--ink)}body:not(.is-cv-page) .btn-success{background-color:var(--ok)!important;border-color:var(--ok)!important;color:var(--on-accent)!important}body:not(.is-cv-page) .btn-warning{background-color:var(--warn-bg)!important;border-color:var(--warn-bg)!important;color:var(--on-accent)!important}body:not(.is-cv-page) .btn-danger{background-color:var(--danger);border-color:var(--danger)}body:not(.is-cv-page) .btn-outline-danger{border-color:var(--danger);color:var(--danger)}body:not(.is-cv-page) .btn-outline-danger:hover{background-color:var(--danger);color:var(--on-accent)}body:not(.is-cv-page) .btn:focus{box-shadow:none}body:not(.is-cv-page) .form-control,body:not(.is-cv-page) .form-select{background-color:var(--sheet);border-color:var(--rule-strong);border-radius:var(--radius);color:var(--ink)}body:not(.is-cv-page) .form-control:focus,body:not(.is-cv-page) .form-select:focus{border-color:var(--accent);box-shadow:0 0 0 .2rem color-mix(in srgb,var(--accent) 22%,transparent)}body:not(.is-cv-page) .col-form-label,body:not(.is-cv-page) .form-label,body:not(.is-cv-page) form label:not(.form-check-label){font-weight:600;margin-bottom:.35rem}body:not(.is-cv-page) .form-range,body:not(.is-cv-page) input[type=range]{accent-color:var(--accent)}body:not(.is-cv-page) .form-range::-webkit-slider-thumb{background-color:var(--accent)}body:not(.is-cv-page) .form-range::-moz-range-thumb{background-color:var(--accent)}body:not(.is-cv-page) .progress-bar{background-color:var(--accent)}body:not(.is-cv-page) .page-link{background-color:var(--sheet);border-color:var(--rule);color:var(--ink)}body:not(.is-cv-page) .page-link:hover{background-color:var(--accent-tint);border-color:var(--rule);color:var(--accent)}body:not(.is-cv-page) .page-link:focus{box-shadow:none}body:not(.is-cv-page) .page-item.active .page-link{background-color:var(--accent);border-color:var(--accent);color:var(--on-accent)}body:not(.is-cv-page) .page-item.disabled .page-link{background-color:var(--paper);border-color:var(--rule);color:var(--rule-strong)}body:not(.is-cv-page) .table{color:var(--ink)}body:not(.is-cv-page) .table>thead th{border-bottom-color:var(--rule-strong);color:var(--graphite);font-weight:600}body:not(.is-cv-page) .entity-table{background-color:var(--sheet)}body:not(.is-cv-page) .entity-table>thead th{background-color:var(--paper)}body:not(.is-cv-page) .entity-table__app{background-color:var(--paper-deep);color:var(--ink)}body:not(.is-cv-page) .list-group-item-action:hover{background-color:var(--accent-tint)}body:not(.is-cv-page) .list-group-item.active{background-color:var(--accent);border-color:var(--accent)}body:not(.is-cv-page) .alert{border-radius:var(--radius)}body:not(.is-cv-page) .bg-info,body:not(.is-cv-page) .bg-primary{background-color:var(--accent)!important}body:not(.is-cv-page) .bg-info{color:var(--on-accent)!important}body:not(.is-cv-page) .bg-secondary{background-color:var(--paper-deep)!important;color:var(--ink)!important}body:not(.is-cv-page) .bg-success{background-color:var(--ok)!important}body:not(.is-cv-page) .bg-warning{background-color:var(--warn-bg)!important;color:var(--on-accent)!important}body:not(.is-cv-page) .text-primary{color:var(--accent)!important}body:not(.is-cv-page) .navbar.navbar-dark.bg-primary{background-color:var(--accent)!important;border:none;border-radius:var(--radius)}body:not(.is-cv-page) .empty-state{background-color:var(--sheet);border:1px dashed var(--rule-strong);border-radius:var(--radius)}body:not(.is-cv-page) .empty-state .fa-3x{color:var(--accent)!important;opacity:.55}@media(prefers-reduced-motion:reduce){body:not(.is-cv-page) *{animation:none!important;transition:none!important}}body:not(.is-cv-page) hr{color:var(--rule);opacity:1}body:not(.is-cv-page) code{color:#f58fb4}body:not(.is-cv-page) .text-success{color:var(--ok)!important}body:not(.is-cv-page) .text-danger{color:var(--danger)!important}body:not(.is-cv-page) .text-warning{color:var(--warn)!important}body:not(.is-cv-page) .text-info{color:#5bc4d6!important}body:not(.is-cv-page) .text-dark,body:not(.is-cv-page) .text-white{color:var(--ink)!important}body:not(.is-cv-page) .bg-light,body:not(.is-cv-page) .bg-white{background-color:var(--paper-deep)!important;color:var(--ink)}body:not(.is-cv-page) .bg-danger{background-color:var(--danger)!important;color:var(--on-accent)!important}body:not(.is-cv-page) .border,body:not(.is-cv-page) .border-bottom,body:not(.is-cv-page) .border-end,body:not(.is-cv-page) .border-start,body:not(.is-cv-page) .border-top{border-color:var(--rule)!important}body:not(.is-cv-page) .btn-light,body:not(.is-cv-page) .form-control,body:not(.is-cv-page) .form-select,body:not(.is-cv-page) .input-group-text{background-color:var(--paper-deep);border-color:var(--rule-strong);color:var(--ink)}body:not(.is-cv-page) .form-control::placeholder,body:not(.is-cv-page) .form-select::placeholder,body:not(.is-cv-page) .input-group-text::placeholder{color:var(--graphite);opacity:1}body:not(.is-cv-page) .form-control:disabled,body:not(.is-cv-page) .form-control[readonly],body:not(.is-cv-page) .form-select:disabled,body:not(.is-cv-page) .form-select[readonly],body:not(.is-cv-page) .input-group-text:disabled,body:not(.is-cv-page) .input-group-text[readonly]{background-color:var(--sheet);color:var(--graphite)}body:not(.is-cv-page) .form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%23ece8dc' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3E%3C/svg%3E")}body:not(.is-cv-page) .form-check-input{background-color:var(--paper-deep);border-color:var(--rule-strong)}body:not(.is-cv-page) .form-check-input:checked{background-color:var(--accent);border-color:var(--accent)}body:not(.is-cv-page) .form-check-input[type=checkbox]:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%230e1530' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E")}body:not(.is-cv-page) .form-switch .form-check-input{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%239ca5c4'/%3E%3C/svg%3E")}body:not(.is-cv-page) .form-switch .form-check-input:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%230e1530'/%3E%3C/svg%3E")}body:not(.is-cv-page) .form-text,body:not(.is-cv-page) .invalid-feedback{color:var(--graphite)}body:not(.is-cv-page) .invalid-feedback{color:var(--danger)}body:not(.is-cv-page) .table{--bs-table-bg:transparent;--bs-table-accent-bg:transparent;--bs-table-striped-color:var(--ink);--bs-table-striped-bg:rgba(236,232,220,.03);--bs-table-hover-color:var(--ink);--bs-table-hover-bg:rgba(236,232,220,.05);--bs-table-active-color:var(--ink);--bs-table-active-bg:rgba(236,232,220,.08);border-color:var(--rule)}body:not(.is-cv-page) .table>:not(:first-child){border-top-color:var(--rule-strong)}body:not(.is-cv-page) .modal-content{background-color:var(--sheet);border:1px solid var(--rule-strong);border-radius:calc(var(--radius) + .25rem);color:var(--ink)}body:not(.is-cv-page) .modal-footer,body:not(.is-cv-page) .modal-header{border-color:var(--rule)}body:not(.is-cv-page) .modal-title{font-weight:600}body:not(.is-cv-page) .modal-backdrop.show{opacity:.7}body:not(.is-cv-page) .btn-close{filter:invert(1) grayscale(1) brightness(1.6)}body:not(.is-cv-page) .dropdown-menu{background-color:var(--sheet);border:1px solid var(--rule-strong);border-radius:var(--radius);color:var(--ink)}body:not(.is-cv-page) .dropdown-item{color:var(--ink)}body:not(.is-cv-page) .dropdown-item:focus,body:not(.is-cv-page) .dropdown-item:hover{background-color:var(--paper-deep);color:var(--ink)}body:not(.is-cv-page) .dropdown-item.disabled,body:not(.is-cv-page) .dropdown-item:disabled{color:var(--graphite);opacity:.6}body:not(.is-cv-page) .dropdown-divider{border-top-color:var(--rule)}body:not(.is-cv-page) .alert{background-color:var(--sheet);border:1px solid var(--rule-strong);color:var(--ink)}body:not(.is-cv-page) .alert-success{background-color:color-mix(in srgb,var(--ok) 12%,var(--sheet));border-color:var(--ok)}body:not(.is-cv-page) .alert-warning{background-color:color-mix(in srgb,var(--warn) 12%,var(--sheet));border-color:var(--warn)}body:not(.is-cv-page) .alert-danger{background-color:color-mix(in srgb,var(--danger) 12%,var(--sheet));border-color:var(--danger)}body:not(.is-cv-page) .alert-info{background-color:color-mix(in srgb,#5bc4d6 12%,var(--sheet));border-color:#5bc4d6}body:not(.is-cv-page) .alert-link{color:var(--ink)}body:not(.is-cv-page) .progress{background-color:var(--paper-deep)}body:not(.is-cv-page) .list-group-item{background-color:var(--sheet);border-color:var(--rule);color:var(--ink)}body:not(.is-cv-page) .list-group-flush>.list-group-item{background-color:transparent}.sky{background-color:#111a3c;border-bottom:1px solid var(--rule);height:84px;overflow:hidden;position:relative}@media(min-width:768px){.sky{height:150px}}.sky__layer{height:calc(100% + 24px);inset:-12px -24px;position:absolute;width:calc(100% + 48px);will-change:transform}.sky__stars{fill:var(--ink)}.sky__stars--far{fill:var(--graphite)}.sky__grid path{stroke:var(--rule);stroke-width:1}.sky__constellation,.sky__grid path{fill:none;vector-effect:non-scaling-stroke}.sky__constellation{animation:sky-draw 1.1s .15s var(--ease-arrive) forwards;stroke:var(--graphite);stroke-dasharray:1600;stroke-dashoffset:1600;stroke-width:1}.sky__planet{--planet-size:160px;--orbit-gap:22px;--moon-size:7px;bottom:-104px;height:var(--planet-size);position:absolute;right:var(--planet-x);view-transition-name:sky-planet;width:var(--planet-size)}@media(min-width:768px){.sky__planet{--planet-size:300px;--orbit-gap:36px;--moon-size:11px;bottom:-190px}}@media(max-width:767.98px){.sky__planet{right:8%}}.sky__body{background-color:var(--accent);box-shadow:0 0 calc(var(--planet-size)*.16) color-mix(in srgb,var(--accent) 36%,transparent),0 0 calc(var(--planet-size)*.45) color-mix(in srgb,var(--accent) 14%,transparent);overflow:hidden}.sky__body,.sky__body:after{border-radius:50%;inset:0;position:absolute}.sky__body:after{background:radial-gradient(circle at 33% 25%,color-mix(in srgb,#fff 42%,transparent) 0,transparent 30%),radial-gradient(circle at 36% 30%,transparent 42%,color-mix(in srgb,var(--night) 58%,transparent) 100%);box-shadow:inset calc(var(--planet-size)*-.07) calc(var(--planet-size)*-.03) calc(var(--planet-size)*.12) color-mix(in srgb,var(--night) 40%,transparent);content:""}.sky__bands{animation:planet-spin 70s linear infinite;background-image:radial-gradient(ellipse 16% 6% at 30% 40%,color-mix(in srgb,#fff 24%,transparent),transparent 70%),radial-gradient(ellipse 11% 5% at 74% 63%,color-mix(in srgb,var(--night) 32%,transparent),transparent 70%),radial-gradient(ellipse 22% 5% at 58% 21%,color-mix(in srgb,var(--night) 20%,transparent),transparent 70%),repeating-linear-gradient(180deg,transparent 0,transparent 5%,color-mix(in srgb,var(--night) 16%,transparent) 10%,transparent 14%,transparent 17%,color-mix(in srgb,#fff 11%,transparent) 20%,transparent 23%);background-size:50% 100%;height:100%;left:0;position:absolute;top:0;width:200%}.sky__orbit{animation:planet-orbit 48s linear infinite;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);inset:calc(var(--orbit-gap)*-1)}.sky__moon,.sky__orbit{border-radius:50%;position:absolute}.sky__moon{background:radial-gradient(circle at 35% 30%,var(--ink),color-mix(in srgb,var(--ink) 50%,var(--accent)));box-shadow:0 0 calc(var(--moon-size)*1.2) color-mix(in srgb,var(--ink) 40%,transparent);height:var(--moon-size);left:50%;margin:calc(var(--moon-size)/-2) 0 0 calc(var(--moon-size)/-2);top:0;width:var(--moon-size)}.sky.is-paused .sky__bands,.sky.is-paused .sky__orbit{animation-play-state:paused}@keyframes planet-spin{to{transform:translateX(-50%)}}@keyframes planet-orbit{to{transform:rotate(1turn)}}.sky__planet.is-rising{animation:sky-rise 1.3s var(--ease-arrive) both}@keyframes sky-rise{0%{opacity:0;transform:translateY(60%)}35%{opacity:1}to{opacity:1;transform:none}}@keyframes sky-draw{to{stroke-dashoffset:0}}::view-transition-group(sky-planet),::view-transition-new(sky-planet),::view-transition-old(sky-planet){animation-duration:.85s;animation-timing-function:var(--ease-travel)}::view-transition-new(root),::view-transition-old(root){animation-duration:.22s}.is-comet{overflow:hidden;position:relative}.is-comet:after{animation:comet .7s ease-out both;background:linear-gradient(90deg,transparent,var(--accent));border-radius:2px;content:"";height:2px;left:0;margin-top:-1px;pointer-events:none;position:absolute;top:50%;width:90px}@keyframes comet{0%{opacity:0;transform:translateX(-90px) scaleX(.3)}20%{opacity:1}to{opacity:0;transform:translateX(110vw) scaleX(1)}}.is-drifting{opacity:0;pointer-events:none;transform:translate(40%,-24px) rotate(6deg) scale(.7);transition:transform .38s cubic-bezier(.4,0,.6,1),opacity .38s ease}@media(prefers-reduced-motion:reduce){.sky__constellation{animation:none;stroke-dashoffset:0}::view-transition-group(*),::view-transition-new(*),::view-transition-old(*){animation:none!important}}.app-navbar{background-color:var(--night);font-family:var(--font-ui);padding:.5rem 1rem}@media(min-width:992px){.app-navbar{padding:.6rem 1.5rem}}.app-navbar__brand{align-items:center;color:var(--ink);display:inline-flex;font-family:var(--font-title);font-size:1.1rem;font-weight:700;gap:.6rem;letter-spacing:-.02em;margin-right:1.5rem;text-decoration:none}.app-navbar__brand:hover{color:var(--ink)}.app-navbar__brand-mark circle{fill:var(--accent)}.app-navbar__brand-mark ellipse{fill:none;stroke:var(--ink);stroke-width:1.2}.app-navbar__tabs{gap:.15rem;padding:.75rem 0 .5rem}@media(min-width:992px){.app-navbar__tabs{padding:0}}.app-navbar__link{--tab:var(--graphite);align-items:center;border-radius:var(--radius);color:var(--graphite)!important;display:flex;font-size:.95rem;font-weight:500;gap:.65rem;min-height:44px;padding:.5rem .85rem!important;text-decoration:none}.app-navbar__link:hover{background-color:var(--sheet);color:var(--ink)!important}.app-navbar__link.is-active{background-color:var(--paper-deep);color:var(--ink)!important;font-weight:600}@media(min-width:992px){.app-navbar__link{font-size:.9rem;min-height:40px;padding:.45rem .75rem!important}}@media(min-width:992px)and (max-width:1199.98px){.app-navbar__link{gap:.45rem;padding:.45rem .5rem!important}}.app-navbar__planet{background-color:var(--tab);border-radius:50%;flex-shrink:0;height:.55rem;position:relative;width:.55rem}.app-navbar__planet:after{border:1.5px solid var(--tab);border-radius:50%;content:"";inset:-.3rem;opacity:0;position:absolute;transform:scale(.4);transition:transform .18s var(--ease-arrive),opacity .18s ease}.app-navbar__link.is-active .app-navbar__planet:after,.app-navbar__link:hover .app-navbar__planet:after{opacity:1;transform:none}.app-navbar__link--journal{--tab:var(--mod-journal)}.app-navbar__link--taches{--tab:var(--mod-taches)}.app-navbar__link--oeuvres{--tab:var(--mod-oeuvres)}.app-navbar__link--musique{--tab:var(--mod-musique)}.app-navbar__link--ukulele{--tab:var(--mod-ukulele)}.app-navbar__link--vietnamien{--tab:var(--mod-vietnamien)}.app-navbar__link--reglages{--tab:var(--mod-reglages)}.app-navbar__link--cv{--tab:var(--mod-cv)}.app-navbar__account{align-items:center;border-top:1px solid var(--rule);display:flex;flex-wrap:wrap;font-size:.875rem;gap:.25rem 1rem;padding:.5rem 0 .25rem}@media(min-width:992px){.app-navbar__account{border-top:none;padding:0}}.app-navbar__user{color:var(--graphite)}@media(min-width:992px)and (max-width:1399.98px){.app-navbar__user{display:none}}.app-navbar__logout{align-items:center;color:var(--graphite);display:inline-flex;font-weight:500;gap:.35rem;min-height:44px;text-decoration:none}.app-navbar__logout:hover{color:var(--ink)}@media(min-width:992px){.app-navbar__logout{min-height:0}}.app-navbar .navbar-toggler{border:1px solid var(--rule-strong);border-radius:var(--radius);min-height:44px;min-width:44px}.app-navbar .navbar-toggler:focus{box-shadow:none}.app-navbar .navbar-toggler:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.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='%23ece8dc' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.task-group{align-items:center;color:var(--graphite);display:flex;font-size:1rem;font-weight:700;gap:.75rem;margin:1.75rem 0 .6rem}.task-group:after{background-color:var(--rule);content:"";flex:1;height:1px}.task-group:first-of-type{margin-top:0}.task-list{background-color:var(--sheet);border:1px solid var(--rule);border-radius:var(--radius);list-style:none;margin:0;padding:0}.task-item{display:grid;gap:.5rem;grid-template-columns:minmax(0,1fr);padding:.85rem 1rem}.task-item+.task-item{border-top:1px solid var(--rule)}@media(min-width:768px){.task-item{align-items:center;grid-template-columns:minmax(0,1fr) auto;padding:.9rem 1.25rem}}.task-item__title{color:var(--ink);font-size:1.05rem;font-weight:700;overflow-wrap:anywhere;text-decoration:none}.task-item__title:hover{text-decoration:underline}.task-item__meta{align-items:center;color:var(--graphite);display:flex;flex-wrap:wrap;font-size:.85rem;gap:.25rem 1rem;margin-top:.3rem}.task-item__link{color:var(--graphite);max-width:14rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-item__actions{align-items:center;display:flex;gap:.25rem;justify-content:flex-end}@media(min-width:768px){.task-item__subtasks{grid-column:1/-1}}.task-item__subtasks>div{background-color:var(--paper);border-radius:var(--radius);margin-top:.25rem;padding:.75rem 1rem}.subtask-item{background-color:var(--paper);border-left:3px solid var(--accent)}.subtask-item .form-control-sm{font-size:.85rem}.media-toolbar{display:grid;gap:.75rem;grid-template-columns:minmax(0,1fr);margin-bottom:1.5rem}@media(min-width:768px){.media-toolbar{align-items:center;grid-template-columns:minmax(14rem,20rem) minmax(0,1fr)}}.media-grid{display:grid;gap:1rem .75rem;grid-template-columns:repeat(2,minmax(0,1fr));list-style:none;margin:0;padding:0}@media(min-width:576px){.media-grid{gap:1.5rem 1.25rem;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr))}}.media-card{display:flex;flex-direction:column;position:relative}.media-card:hover .media-card__title{text-decoration:underline;text-decoration-color:var(--accent)}.media-card:focus-within .media-card__poster{outline:2px solid var(--accent);outline-offset:2px}.media-card__poster{align-items:center;aspect-ratio:2/3;background-color:var(--paper-deep);border:1px solid var(--rule);border-radius:var(--radius);color:var(--rule-strong);display:flex;font-size:2rem;justify-content:center;overflow:hidden;position:relative}.media-card__poster img{height:100%;object-fit:cover;width:100%}.media-card__flag{background-color:var(--warn-bg);border-radius:.25rem;bottom:.4rem;color:var(--on-accent);font-size:.75rem;font-weight:600;left:.4rem;padding:.15rem .45rem;position:absolute}.media-card__body{padding-top:.6rem}.media-card__title{color:var(--ink);display:-webkit-box;font-weight:700;-webkit-line-clamp:2;line-height:1.3;overflow:hidden;text-decoration:none;-webkit-box-orient:vertical}.media-card__title:focus-visible{outline:none}.media-card__meta,.media-card__rating{color:var(--graphite);font-size:.85rem;margin:.15rem 0 0}.media-card__rating{color:var(--ink);font-weight:600}.media-card__rating .fa-star{color:var(--warn)}.media-detail{display:grid;gap:1.5rem}@media(min-width:768px){.media-detail{align-items:start;grid-template-columns:16rem minmax(0,1fr)}}.media-detail__poster{max-width:12rem}@media(min-width:768px){.media-detail__poster{max-width:none}}.media-detail__rating{font-size:1.25rem}.media-detail__rating .fa-star{color:var(--warn)}.media-detail__text{font-family:var(--font-read);font-size:1.05rem;line-height:1.65;max-width:42rem}.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(--sheet);border:1px solid var(--rule);border-radius:var(--radius);cursor:pointer;min-height:44px;padding:.5rem .6rem}.category-card:hover{background-color:var(--accent-tint)}.category-card .category-count{background-color:var(--paper-deep)!important;color:var(--ink)}.artist-card{background-color:var(--sheet);border-color:var(--rule)!important;cursor:grab;min-height:44px}.artist-card:hover{background-color:var(--accent-tint)}.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}.artist-card:focus-visible,.category-card:focus-visible,.classified-artist-chip:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.music-bar{background-color:var(--sheet);border:1px solid var(--rule);border-radius:var(--radius);gap:.75rem 1.5rem;justify-content:space-between;margin-bottom:1rem;padding:.85rem 1rem}.music-bar,.music-bar__status{align-items:center;display:flex;flex-wrap:wrap}.music-bar__status{gap:.5rem 1.25rem}.music-bar__actions{display:flex;flex-wrap:wrap;gap:.5rem}@media(max-width:575.98px){.music-bar__actions{width:100%}.music-bar__actions>.btn-primary{flex:1 1 100%}.music-bar__actions>.dropdown,.music-bar__actions>.dropdown>.btn,.music-bar__actions>a.btn{flex:1 1 auto}.music-bar__actions>.dropdown>.btn{width:100%}}.dropdown-item--danger{color:var(--danger)}.dropdown-item--danger:focus,.dropdown-item--danger:hover{background-color:var(--danger);color:var(--on-accent)}.dropdown-item{min-height:40px}@media(pointer:coarse){.dropdown-item{min-height:44px}}.music-ai-toggle{align-items:center;display:inline-flex;gap:.5rem;min-height:44px;padding-left:0}.music-ai-toggle .form-check-input{cursor:pointer;float:none;height:1.25rem;margin:0;width:2.25rem}.music-ai-toggle .form-check-label{cursor:pointer;font-weight:600}.music-ai-toggle--off{opacity:.6}.music-ai-toggle--off .form-check-input,.music-ai-toggle--off .form-check-label{cursor:not-allowed}.classified-artist-chip.border-primary{outline:2px solid var(--accent);outline-offset:1px}.music-ai-badge{background-color:#b79cf5;color:var(--on-accent);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(--accent-strong),var(--accent));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(--accent);border-color:var(--accent);color:var(--on-accent)}.music-player__controls-secondary .btn sup{font-size:.6em;margin-left:1px}@media(pointer:coarse){.music-player__controls .btn,.music-player__controls-secondary .btn{min-height:44px;min-width:44px}}:root{--music-family-pop:#f7a35c;--music-family-rock:#f87171;--music-family-electro:#b79cf5;--music-family-urbain:#d9a06e;--music-family-classique:#7fb4e0;--music-family-folk:#6cc98a;--music-family-neutre:#9ca5c4}.music-family--pop{border-left-color:var(--music-family-pop)}.music-family--rock{border-left-color:var(--music-family-rock)}.music-family--electro{border-left-color:var(--music-family-electro)}.music-family--urbain{border-left-color:var(--music-family-urbain)}.music-family--classique{border-left-color:var(--music-family-classique)}.music-family--folk{border-left-color:var(--music-family-folk)}.music-family--neutre{border-left-color:var(--music-family-neutre)}.card[class*=music-family--],.category-card{border-left-style:solid;border-left-width:4px}.category-card__name{display:-webkit-box;font-weight:600;-webkit-line-clamp:2;min-width:0;overflow:hidden;overflow-wrap:anywhere;-webkit-box-orient:vertical}.classified-artist-chip{background-color:var(--paper-deep);color:var(--ink);font-size:.75rem}.category-tag{align-items:center;color:var(--ink);display:inline-flex;font-size:.85rem;font-weight:600;gap:.45rem;line-height:1.3}.category-tag:before{background-color:var(--graphite);content:"";flex-shrink:0;height:.6rem;width:.6rem}.category-tag--backend:before{clip-path:inset(8%)}.category-tag--frontend:before{clip-path:polygon(50% 0,100% 100%,0 100%)}.category-tag--infra:before{clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.category-tag--ia:before{clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);height:.75rem;width:.75rem}.category-tag--langue:before{background-color:transparent;border:2px solid var(--graphite);border-radius:50%}.category-tag--autre:before{border-radius:50%;height:.4rem;width:.4rem}.topic-tag--neutral{color:var(--graphite);font-size:.85rem}.article-tags{align-items:center;display:flex;flex-wrap:wrap;gap:.35rem .6rem}.journal-column{max-width:52rem}.journal-list{background-color:var(--sheet);border:1px solid var(--rule);border-radius:var(--radius);list-style:none;margin:0;padding:0}.journal-list+.journal-day{margin-top:2.5rem}.journal-entry+.journal-entry{border-top:1px solid var(--rule)}.journal-entry__link{color:inherit;display:block;padding:1rem 1.1rem;text-decoration:none}.journal-entry__link:hover{background-color:var(--accent-tint);color:inherit}.journal-entry__link:hover .journal-entry__title{text-decoration:underline;text-decoration-color:var(--accent)}@media(min-width:576px){.journal-entry__link{padding:1.25rem 1.5rem}}.journal-entry__tags{margin-bottom:.5rem}.journal-entry__title{font-family:var(--font-read);font-size:1.2rem;font-weight:600;letter-spacing:0;line-height:1.3;margin:0 0 .35rem}.journal-entry__excerpt{color:var(--graphite);display:-webkit-box;-webkit-line-clamp:2;margin:0;overflow:hidden;-webkit-box-orient:vertical}.journal-day{color:var(--graphite);font-size:1rem;font-weight:600;margin:0 0 .75rem}.article-page{max-width:44rem}.article-page__title{font-family:var(--font-read);font-weight:600;letter-spacing:-.005em;line-height:1.2;margin:.75rem 0 .5rem}.article-page__meta{border-bottom:1px solid var(--rule);color:var(--graphite);font-size:.9rem;margin:0 0 2rem;padding-bottom:1rem}.article-content{font-family:var(--font-read);font-size:1.125rem;line-height:1.7}.article-content h2,.article-content h3,.article-content h4{font-size:1.25rem;margin:2rem 0 .75rem}.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(--paper);border:1px solid var(--rule);border-radius:var(--radius);font-size:.875rem;line-height:1.5;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(--graphite);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(--rule);padding:.35rem .6rem}.vietnamese-progress__streak-strip{display:flex;flex-wrap:wrap;gap:4px}.vietnamese-progress__streak-day{background-color:var(--graphite);border-radius:3px;height:14px;opacity:.25;width:14px}.vietnamese-progress__streak-day--completed{background-color:var(--ok);opacity:1}.vietnamese-pronounce__button{line-height:1;min-height:44px;min-width:44px;padding:.25rem .5rem;vertical-align:baseline}body:not(.is-cv-page) .vn-question{background-color:var(--sheet);border:1px solid var(--rule);border-radius:var(--radius);margin-bottom:.75rem}.vn-question__hint{color:var(--graphite);font-size:.85rem;font-weight:600;margin-bottom:.25rem}.vn-question__prompt{color:var(--ink);font-size:1.25rem;font-weight:600}.vn-question__gloss,.vn-result__gloss{color:var(--graphite);font-style:italic}.vn-result__gloss{font-size:.875rem}.vn-tone{align-items:center;display:inline-flex;gap:.4rem}.vn-tone__contour{flex:0 0 auto;height:16px;width:24px}.vn-tone-prompt{color:var(--ink);font-weight:700}.vn-choices{display:flex;flex-direction:column;gap:.25rem}.vn-choice{align-items:center;border:2px solid transparent;border-radius:.25rem;display:flex;gap:.6rem;margin-bottom:0;min-height:44px;padding:.25rem .5rem}.vn-choice .form-check-input{flex:0 0 auto;float:none;margin:0}.vn-choice__label{cursor:pointer;flex:1 1 auto}.vn-choice:has(input:checked){background-color:var(--accent-tint);border-color:var(--accent)}.vn-order__answer{align-items:center;background-color:var(--sheet);border:2px dashed var(--rule-strong);border-radius:var(--radius);margin-bottom:.5rem;min-height:52px;padding:.25rem .5rem}.vn-order__answer,.vn-order__bank{display:flex;flex-wrap:wrap;gap:.25rem}body:not(.is-cv-page) .vn-order__token{background-color:var(--sheet);border:2px solid var(--graphite);color:var(--ink);font-family:inherit;letter-spacing:normal;min-height:44px;padding:.25rem .75rem;text-transform:none}body:not(.is-cv-page) .vn-order__answer .vn-order__token{background-color:var(--accent-tint);border-color:var(--accent);color:var(--ink)}.vn-listen{line-height:1;min-height:44px;min-width:44px;vertical-align:baseline}.vietnamese-page{max-width:48rem}.vietnamese-level{border:1px solid var(--rule-strong);border-radius:.25rem;color:var(--graphite);display:inline-block;font-size:.75rem;font-weight:600;margin-left:.35rem;padding:.05rem .45rem;vertical-align:middle}.notepad__tab{align-items:center;background-color:var(--paper-deep);border:1px solid var(--rule-strong);border-radius:50%;bottom:calc(1rem + env(safe-area-inset-bottom, 0px));box-shadow:0 4px 16px rgba(0,0,0,.45);color:var(--ink);display:flex;font-size:1.1rem;height:48px;justify-content:center;position:fixed;right:1rem;transition:transform .2s ease-out;width:48px;z-index:1040}.notepad__tab:focus-visible,.notepad__tab:hover{background-color:var(--accent);border-color:var(--accent);color:var(--on-accent)}.notepad__tab:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.notepad--open .notepad__tab{transform:translateX(calc(min(320px, 85vw)*-1))}.notepad__panel{background-color:var(--sheet);border-left:1px solid var(--rule);bottom:0;box-shadow:-4px 0 16px rgba(0,0,0,.4);display:flex;flex-direction:column;position:fixed;right:0;top:0;transform:translateX(100%);transition:transform .2s ease-out;width:min(320px,85vw);z-index:1039}.notepad__panel.is-open{transform:translateX(0)}.notepad__header{align-items:baseline;border-bottom:1px solid var(--rule);display:flex;justify-content:space-between;padding:.75rem 1rem}.notepad__title{color:var(--ink);font-weight:600}.notepad__status{color:var(--graphite);font-size:.8rem}.notepad__textarea{background:transparent;border:none;color:var(--ink);flex:1;font-size:1rem;padding:1rem;resize:none}.notepad__textarea:focus{outline:none}