/* Contact window — même comportement que les autres fenêtres (pas de fond bloquant, déplaçable) */
.contact-window-modal{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:24px;pointer-events:none}
.contact-window-modal[hidden]{display:none}
.contact-window-panel{position:relative;z-index:1;width:min(1080px,100%);pointer-events:auto;animation:contactWindowIn .28s cubic-bezier(.2,.8,.2,1)}
.contact-window-panel .contact-desktop{min-height:0;overflow:visible;padding:0;background:none;display:block}
.contact-window-panel .sky-glow,.contact-window-panel .mountain,.contact-window-panel .desktop-back{display:none}
.contact-window-panel .window-shell{max-height:calc(100vh - 100px);margin:0}
.contact-window-panel .window-head{border-radius:15px 15px 0 0}
.contact-window-modal.min .contact-window-panel .window-head{border-radius:13px}
.contact-window-modal.is-closing{opacity:0;visibility:hidden}
@keyframes contactWindowIn{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
@media(max-width:899px){.contact-window-modal{padding:12px}.contact-window-panel .window-shell{max-height:none}}

*{box-sizing:border-box}body{margin:0;color:#f8fbff;font-family:'DM Sans',sans-serif;overflow:hidden;background:#1c3567}.desktop{height:calc(100vh - 64px);position:relative;overflow:hidden;background:linear-gradient(140deg,#4b8bc5,#16477d 50%,#0e2750)}.mountains{position:absolute;inset:0;background:linear-gradient(145deg,transparent 52%,#102e56 52.2%,#102e56 57%,transparent 57.2%),linear-gradient(35deg,transparent 42%,#1d4b7d 42.2%,#1d4b7d 58%,transparent 58.2%),linear-gradient(150deg,transparent 34%,#3777aa 34.2%,#3777aa 47%,transparent 47.2%);opacity:.9}.mountains:after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 70% 25%,#fff5 0 2px,transparent 3px),linear-gradient(#98d2edaa,#518fc400 38%)}.win-icons{position:absolute;top:26px;left:28px;display:grid;gap:20px;z-index:2}.win-icons button{width:96px;border:1px solid transparent;background:transparent;color:#fff;display:grid;gap:7px;justify-items:center;cursor:pointer;text-shadow:0 2px 3px #124}.win-icons button:hover{background:#ffffff22;border-color:#ffffff44;border-radius:8px}.win-icons span{font-size:30px;color:#dcecff}.center-copy{position:absolute;right:10%;top:18%;z-index:1}.center-copy small{font:11px 'IBM Plex Mono';letter-spacing:.14em;color:#d6e9ff}.center-copy h1{font-size:clamp(3rem,7vw,7rem);line-height:.86;letter-spacing:-.07em;margin:20px 0}.center-copy em{font-style:normal;color:#d7eaff}.center-copy p{color:#d0e1f5;line-height:1.7}.taskbar{height:64px;position:fixed;bottom:0;left:0;right:0;z-index:40;display:flex;align-items:center;justify-content:center;gap:10px;background:#e9f2fce8;color:#12233a;box-shadow:0 -8px 30px #07162e33;backdrop-filter:blur(18px)}.taskbar button{border:0;background:#ffffff66;color:#1b3351;border-radius:8px;height:42px;cursor:pointer}.start{font-size:27px;width:48px}.search{width:185px;text-align:left;padding:0 14px}.pinned{display:flex;gap:5px}.pinned button{width:42px;font-size:21px}.linux-switch{padding:0 13px;margin-left:20px}.status{position:absolute;right:16px;display:grid;grid-template-columns:auto auto;gap:0 10px;align-items:center;font-size:13px}.status small{grid-column:2;color:#475d77}.window{position:absolute;left:23%;top:12%;width:min(680px,calc(100vw - 80px));max-height:72vh;background:#f7fbff;color:#14253a;border:1px solid #ffffffaa;border-radius:14px;box-shadow:0 30px 80px #05204477;overflow:hidden;z-index:30;animation:pop .2s ease}.window.inactive{opacity:.84}.window-head{height:46px;background:#edf5fd;color:#1a3150;display:flex;align-items:center;justify-content:space-between;padding:0 13px 0 18px;cursor:grab}.window-body{padding:24px;overflow:auto;max-height:calc(72vh - 46px)}.controls button{border:0;background:#dceafb;color:#193755;border-radius:5px;margin-left:5px;width:28px;height:25px;cursor:pointer}.window-body h2{margin-top:0}.muted{color:#5c6f82}.cards{display:grid;gap:10px}.card{border-left:4px solid #3178c6;background:#eaf3fc;padding:12px}.contact a{color:#2262ac;font-weight:700}.file-layout{display:grid;grid-template-columns:160px 1fr}.sidebar{background:#eaf3fc;padding:14px;display:grid;align-content:start;gap:4px}.sidebar button{border:0;background:transparent;text-align:left;padding:9px;cursor:pointer}.folders{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:12px;padding:16px}.folder{border:1px solid #d5e4f3;background:#fff;border-radius:10px;padding:13px;cursor:pointer}.folder b{display:block;font-size:30px;color:#e18b35}.term{background:#122238;color:#bfe2ff;padding:15px;border-radius:9px;font:13px 'IBM Plex Mono';min-height:230px}.term-output{white-space:pre-wrap;min-height:178px}.term-form{display:flex;gap:7px}.term-form input{flex:1;background:transparent;border:0;outline:0;color:#fff;font:inherit}.start-menu{position:fixed;z-index:50;bottom:76px;left:50%;transform:translateX(-50%);width:min(650px,calc(100vw - 24px));padding:22px 26px;border:1px solid #fff9;background:#f4f8fceF;color:#17304d;border-radius:18px;box-shadow:0 25px 80px #09203a66;backdrop-filter:blur(28px)}.start-search{border:1px solid #c6d8e9;background:#fff;border-radius:9px;padding:11px;color:#7e91a8}.start-user{display:flex;align-items:center;gap:10px;margin:20px 0}.start-user>b{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:#256bb4;color:#fff}.start-user span{font-weight:700}.start-user small{display:block;font-weight:400;color:#72839a}.start-user button{margin-left:auto;border:0;background:none;font-size:22px}.start-menu h3{font-size:14px}.start-menu h3 small{float:right;color:#4e7199;font-weight:400}.pinned-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:9px}.pinned-grid button{border:0;background:transparent;border-radius:9px;padding:10px 5px;color:#193652;cursor:pointer;display:grid;gap:5px}.pinned-grid button:hover{background:#dceafa}.pinned-grid span{font-size:22px}.recommended{font-size:13px;color:#60768d;background:#e5eff8;padding:11px;border-radius:9px}@keyframes pop{from{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:none}}@media(max-width:899px){.center-copy{left:92px;right:auto;top:13%}.center-copy h1{font-size:3rem}.win-icons{left:12px;top:18px}.taskbar{height:58px}.search{width:105px}.linux-switch{margin-left:0;padding:0 6px;font-size:11px}.status{right:6px;font-size:10px}.pinned{display:none}.window{left:70px;top:6%;width:calc(100vw - 80px);max-height:82vh}.file-layout{grid-template-columns:1fr}.sidebar{grid-template-columns:repeat(3,1fr);font-size:11px}.pinned-grid{grid-template-columns:repeat(3,1fr)}}

/* Restored desktop project shortcut and project image slots. */
.desktop-projects{position:absolute;left:25%;top:30%;transform:translate(-50%,-50%);z-index:3;width:112px;min-height:88px;padding:9px 6px;border:1px solid transparent;border-radius:9px;background:transparent;color:#fff;display:grid;place-items:center;gap:6px;cursor:pointer;text-shadow:0 2px 3px #124;font:inherit}
.desktop-projects span{font-size:38px;color:#dcecff;line-height:1}.desktop-projects:hover,.desktop-projects:focus-visible{background:#ffffff22;border-color:#ffffff55;outline:none}
.project-list{display:grid;gap:14px}.project-row{position:relative;display:grid;grid-template-columns:140px 1fr auto;gap:16px;align-items:center;padding:12px;border:1px solid #d3e3f2;border-radius:10px;background:#fafdff;box-shadow:0 10px 24px #2b68a31c;cursor:pointer;transition:transform .18s ease,background .18s ease}.project-row:hover{transform:translateY(-2px);background:#f4f9fe}.project-photo{position:relative;min-height:112px;height:112px;border:2px dashed #6d9fca;border-radius:8px;background:linear-gradient(135deg,#eef7ff 0%,#dfeefa 48%,#f8fbff 100%);display:grid;place-items:center;align-content:center;gap:3px;color:#236da9;text-align:center;overflow:hidden}.project-photo::before{content:'IMAGE SLOT';position:absolute;top:7px;left:9px;color:#5c83a5;font:700 8px/1 'IBM Plex Mono',monospace;letter-spacing:.12em;opacity:.82}.project-photo::after{content:'';position:absolute;inset:4px;border:1px solid #ffffff99;border-radius:5px;pointer-events:none}.project-photo .photo-placeholder{font-size:30px;line-height:1;color:#236da9}.project-photo span:nth-child(2){font-size:11px;font-weight:700}.project-photo small{font-size:9px;color:#6d88a2}.project-details{display:flex;gap:10px;align-items:flex-start;min-width:0}.project-details>div{min-width:0}.project-details p{margin:6px 0 0;color:#597087}.project-icon{font:600 12px 'IBM Plex Mono';color:#2871b6}.row-arrow{font-size:28px;color:#2871b6}@media(max-width:899px){.desktop-projects{top:30%;left:25%}.project-row{grid-template-columns:96px 1fr auto;gap:9px;padding:9px}.project-photo{height:92px;min-height:92px}.project-details{display:block}.row-arrow{font-size:20px}}

/* Existing project click behavior is retained and now presents the restored details modal. */
.project-modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:24px;visibility:visible;opacity:1;transition:opacity .22s ease,visibility .22s ease}.project-modal[hidden]{display:none}.project-modal-backdrop{position:absolute;inset:0;background:rgba(5,20,43,.68);backdrop-filter:blur(8px);cursor:pointer}.project-modal-panel{position:relative;z-index:1;width:min(940px,100%);max-height:min(760px,calc(100vh - 48px));overflow:auto;display:grid;grid-template-columns:minmax(280px,1.08fr) minmax(280px,.92fr);background:#f7fbff;color:#14253a;border:1px solid #ffffffcc;border-radius:18px;box-shadow:0 32px 90px rgba(3,22,54,.48);animation:projectModalIn .28s cubic-bezier(.2,.8,.2,1)}.project-modal-media{min-height:360px;background:linear-gradient(145deg,#dcecff,#8bbde1);display:flex;align-items:flex-start;justify-content:center}.project-modal-content{padding:42px 38px 36px}.project-modal-kicker{margin:0 0 9px;color:#2871b6;font:600 12px 'IBM Plex Mono',monospace;letter-spacing:.14em;text-transform:uppercase}.project-modal-content h2{margin:0 0 16px;color:#142e4d;font-size:clamp(1.65rem,3vw,2.45rem);line-height:1.08}.project-modal-content>p:not(.project-modal-kicker){color:#526b84;line-height:1.7;margin:0 0 26px}.project-modal-content h3{margin:0 0 12px;font-size:13px;text-transform:uppercase;color:#294e71}.project-modal-languages{display:flex;flex-wrap:wrap;gap:8px}.project-modal-languages span{padding:7px 10px;border:1px solid #c9dced;border-radius:999px;background:#eaf4fc;color:#24639a;font-size:12px;font-weight:700}.project-modal-close{position:absolute;z-index:2;right:14px;top:12px;width:34px;height:34px;border:1px solid #c8dbea;border-radius:50%;background:#ffffffdd;color:#254868;font-size:24px;line-height:1;cursor:pointer}.project-modal-close:hover{background:#e1effb;color:#0d4e84;transform:rotate(90deg)}.project-modal.is-closing{opacity:0;visibility:hidden}@keyframes projectModalIn{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}body.project-modal-open{overflow:hidden}@media(max-width:899px){.project-modal{padding:12px}.project-modal-panel{grid-template-columns:1fr;max-height:calc(100vh - 24px)}.project-modal-media{min-height:0}.project-modal-media .pg{position:static;padding:54px 12px 12px;--pg-thumb-w:84px;--pg-thumb-h:56px}.project-modal-media .pg-empty .pg-stage{min-height:170px}.project-modal-content{padding:28px 22px 24px}}

.contact-page-link{display:inline-flex;margin-top:10px;padding:9px 12px;border:1px solid #bcd5e9;border-radius:7px;background:#edf6fd;color:#2169a6;text-decoration:none;font-weight:700;transition:transform .18s ease,background .18s ease}.contact-page-link:hover{background:#dceefa;transform:translateX(3px)}

/* Images des projets (project-gallery.js) : couverture dans la liste, galerie dans la fenêtre de détails — sans image, l'emplacement vide « Ajouter une photo » reste visible */
.pg,.pg-lightbox{--pg-accent:#0067c0;--pg-radius:8px;--pg-img-radius:8px;--pg-img-shadow:0 10px 28px #0b2a4d38;--pg-load:#ffffff80;--pg-thumb-radius:6px;--pg-thumb-w:126px;--pg-thumb-h:84px;--pg-nav-bg:#f9f9f9eb;--pg-nav-fg:#1b1b1b;--pg-nav-border:1px solid #0000001f;--pg-nav-radius:6px;--pg-lb-bg:#0a1626d9}
.project-modal-media .pg{position:sticky;top:0;padding:18px}.project-modal-media .pg-thumb{background:#ffffff8c}.project-modal-media .pg-empty{padding:0}.project-modal-media .pg-empty .pg-stage{aspect-ratio:auto;min-height:360px;background:none}
/* Projet avec images : la fenêtre garde une hauteur fixe, l'image remplit tout le panneau gauche et seul le texte défile */
@media(min-width:900px){.project-modal-panel:has(.pg[data-pg]){width:min(1560px,100%);height:min(880px,92vh);max-height:none;grid-template-columns:minmax(0,3fr) minmax(340px,2fr);grid-template-rows:minmax(0,1fr);overflow:hidden}.project-modal-panel:has(.pg[data-pg]) .project-modal-content{min-height:0;overflow:auto}.project-modal-panel:has(.pg[data-pg]) .project-modal-media{min-height:0;align-items:stretch}.project-modal-panel:has(.pg[data-pg]) .pg{position:static;height:100%;grid-template-rows:minmax(0,1fr) auto}.project-modal-panel:has(.pg[data-pg]) .pg-stage{aspect-ratio:auto;height:100%;min-height:0}}
.project-photo.has-image{border-style:solid;border-color:#c5d9ec}.project-photo.has-image::before{display:none}
.project-image{position:relative;margin:0;overflow:hidden}.project-image img{position:absolute;inset:0;z-index:1;width:100%;height:100%;object-fit:cover;display:block}.project-image img[hidden]{display:none}
.project-image-empty{display:grid;justify-items:center;gap:3px;text-align:center;color:#236da9}.project-image-empty i{font-style:normal;font-size:30px;line-height:1}.project-image-empty b{font-size:11px}.project-image-empty small{font-size:9px;color:#6d88a2;overflow-wrap:anywhere}
.project-modal-media .project-image-empty{gap:6px;margin:24px;padding:26px 28px;border:2px dashed #ffffffc0;border-radius:14px;background:#ffffff66}.project-modal-media .project-image-empty i{font-size:54px}.project-modal-media .project-image-empty b{font-size:14px}.project-modal-media .project-image-empty small{font-size:11px;color:#3f6282}
/* Fiche détaillée du projet (contexte, objectif, réalisations, résultat) */
.project-story{margin:-8px 0 24px}.project-story:empty{display:none}.project-story .project-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.project-link{padding:10px 15px;border:1px solid #1e6098;border-radius:7px;background:linear-gradient(135deg,#2879ba,#155e9b);color:#fff;font-weight:700;font-size:12px;line-height:1.2;text-decoration:none}.project-link:hover{background:linear-gradient(135deg,#3186c9,#1a69ab)}.project-story h3{margin:18px 0 8px}.project-story p{margin:0;color:#526b84;line-height:1.65}.project-story ul{margin:0;padding-left:18px;color:#526b84;line-height:1.6;display:grid;gap:5px}

/* Fenêtre « Centres d'intérêt » : style dans interests-view.css (contenu : interests-data.js) */
/* Fenêtre Compétences : autres compétences en pastilles, sans pourcentage */
.skill-tags{padding:2px 28px 24px;background:#f7fbff}.skill-tags h2{margin:0 0 4px;font-size:13px;text-transform:uppercase;color:#294e71}.skill-tag-group{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:10px}.skill-tag-group b{flex:0 0 160px;font:600 10px 'IBM Plex Mono';letter-spacing:.06em;text-transform:uppercase;color:#73869a}.skill-tag-group span{padding:6px 10px;border:1px solid #c9dced;border-radius:999px;background:#eaf4fc;color:#24639a;font-size:12px;font-weight:700}
@media(max-width:899px){.skill-tags{padding-left:20px;padding-right:20px}.skill-tag-group b{flex-basis:100%}}

/* ===== Thème sombre : bureau Windows (même structure, couleurs sombres) ===== */
:root[data-theme="dark"] body.windows{background:#0a1530}
:root[data-theme="dark"] .desktop{background:linear-gradient(140deg,#24466f,#0f2547 50%,#070f22)}
:root[data-theme="dark"] .mountains{background:linear-gradient(145deg,transparent 52%,#050d1c 52.2%,#050d1c 57%,transparent 57.2%),linear-gradient(35deg,transparent 42%,#0b1d3a 42.2%,#0b1d3a 58%,transparent 58.2%),linear-gradient(150deg,transparent 34%,#173a63 34.2%,#173a63 47%,transparent 47.2%);opacity:.95}
:root[data-theme="dark"] .mountains:after{background:radial-gradient(circle at 70% 25%,#fff7 0 2px,transparent 3px),linear-gradient(#3b6a9a88,#0f254700 38%)}
:root[data-theme="dark"] .taskbar{background:#141d33ee;color:#e8f0fb;box-shadow:0 -8px 30px #00000066;border-top:1px solid #ffffff14}
:root[data-theme="dark"] .taskbar button{background:#ffffff14;color:#e8f0fb}
:root[data-theme="dark"] .taskbar button:hover{background:#ffffff26}
:root[data-theme="dark"] .status small{color:#a9bbd2}
:root[data-theme="dark"] .window{background:#131f36;color:#e8f0fb;border-color:#ffffff22;box-shadow:0 30px 80px #000000a8}
:root[data-theme="dark"] .window-head{background:#18264a;color:#eaf1ff}
:root[data-theme="dark"] .controls button{background:#2a3a5f;color:#eaf1ff}
:root[data-theme="dark"] .muted{color:#a9bbd2}
:root[data-theme="dark"] .card{background:#1a2a47}
:root[data-theme="dark"] .contact a{color:#7fb8f5}
:root[data-theme="dark"] .sidebar{background:#16233d}
:root[data-theme="dark"] .folder{border-color:#2b3d5d;background:#1c2b48}
:root[data-theme="dark"] .term{background:#0a1424}
:root[data-theme="dark"] .start-menu{border-color:#ffffff1f;background:#141d33f2;color:#e8f0fb;box-shadow:0 25px 80px #000000a8}
:root[data-theme="dark"] .start-search{border-color:#2b3d5d;background:#1c2b48;color:#a9bbd2}
:root[data-theme="dark"] .start-user>b{background:#2f78c4}
:root[data-theme="dark"] .start-user small{color:#a9bbd2}
:root[data-theme="dark"] .start-user button{color:#e8f0fb}
:root[data-theme="dark"] .start-menu h3 small{color:#7fb8f5}
:root[data-theme="dark"] .pinned-grid button{color:#e8f0fb}
:root[data-theme="dark"] .pinned-grid button:hover{background:#223552}
:root[data-theme="dark"] .recommended{color:#a9bbd2;background:#1c2b48}
:root[data-theme="dark"] .project-row{border-color:#2b3d5d;background:#16233d;box-shadow:0 10px 24px #00000040}
:root[data-theme="dark"] .project-row:hover{background:#1c2b48}
:root[data-theme="dark"] .project-photo{border-color:#46628c;background:linear-gradient(135deg,#1a2a47,#16233d 48%,#1c2b48);color:#7fb8f5}
:root[data-theme="dark"] .project-photo::before{color:#8aa0b8}
:root[data-theme="dark"] .project-photo::after{border-color:#ffffff1a}
:root[data-theme="dark"] .project-photo .photo-placeholder,:root[data-theme="dark"] .project-image-empty{color:#7fb8f5}
:root[data-theme="dark"] .project-photo small,:root[data-theme="dark"] .project-image-empty small{color:#9fb3cb}
:root[data-theme="dark"] .project-details p{color:#a9bbd2}
:root[data-theme="dark"] .project-icon,:root[data-theme="dark"] .row-arrow{color:#7fb8f5}
:root[data-theme="dark"] .project-modal-backdrop{background:rgba(0,4,12,.78)}
:root[data-theme="dark"] .project-modal-panel{background:#131f36;color:#e8f0fb;border-color:#ffffff22;box-shadow:0 32px 90px rgba(0,0,0,.7)}
:root[data-theme="dark"] .project-modal-media{background:linear-gradient(145deg,#1a2a47,#243d63)}
:root[data-theme="dark"] .project-modal-kicker{color:#7fb8f5}
:root[data-theme="dark"] .project-modal-content h2{color:#e8f0fb}
:root[data-theme="dark"] .project-modal-content>p:not(.project-modal-kicker),:root[data-theme="dark"] .project-story p,:root[data-theme="dark"] .project-story ul{color:#a9bbd2}
:root[data-theme="dark"] .project-modal-content h3,:root[data-theme="dark"] .skill-tags h2{color:#9fc2e8}
:root[data-theme="dark"] .project-modal-languages span,:root[data-theme="dark"] .skill-tag-group span{border-color:#2b3d5d;background:#1c2b48;color:#8ec5f7}
:root[data-theme="dark"] .project-modal-close{border-color:#2b3d5d;background:#1c2b48dd;color:#e8f0fb}
:root[data-theme="dark"] .project-modal-close:hover{background:#223552;color:#fff}
:root[data-theme="dark"] .contact-page-link{border-color:#2b3d5d;background:#1c2b48;color:#8ec5f7}
:root[data-theme="dark"] .contact-page-link:hover{background:#223552}
:root[data-theme="dark"] .pg,:root[data-theme="dark"] .pg-lightbox{--pg-accent:#60cdff;--pg-img-shadow:0 10px 28px #00000066;--pg-load:#ffffff26;--pg-nav-bg:#1c2b48eb;--pg-nav-fg:#e8f0fb;--pg-nav-border:1px solid #ffffff2e}
:root[data-theme="dark"] .project-modal-media .pg-thumb{background:#ffffff14}
:root[data-theme="dark"] .project-photo.has-image{border-color:#2b3d5d}
:root[data-theme="dark"] .project-modal-media .project-image-empty{border-color:#ffffff44;background:#ffffff14}
:root[data-theme="dark"] .project-modal-media .project-image-empty small{color:#a9bbd2}
:root[data-theme="dark"] .skill-tags{background:#131f36}
:root[data-theme="dark"] .skill-tag-group b{color:#9fb3cb}
:root[data-theme="dark"] .win-icons button,:root[data-theme="dark"] .desktop-projects{text-shadow:0 2px 4px #000c}
:root[data-theme="dark"] .center-copy p{color:#c4d6ee}
