:root{color-scheme:dark;--bg:#08191e;--gold:#dab779;--ink:#e9e8df;--muted:#9bafb1;--line:#294147}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 system-ui,sans-serif}button,a,input,select{ -webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer;font:inherit;color:inherit;background:#163138;border:1px solid #466067;border-radius:5px;padding:13px 20px;min-height:48px}button:hover{border-color:var(--gold);background:#21434b}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--gold);outline-offset:4px}button:disabled{opacity:.45;cursor:default}.primary{background:var(--gold);color:#192326;border-color:var(--gold);font-weight:750}.primary:hover{background:#edcb8c}header{height:94px;padding:22px 5vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);position:relative;z-index:2}.brand{font-size:11px;letter-spacing:2px;color:var(--ink);text-decoration:none;line-height:1.6;display:grid;grid-template-columns:40px auto;column-gap:12px}.brand img{width:38px;grid-row:span 2}.brand span{font-size:9px;color:var(--gold);letter-spacing:3px}#sound{font-size:11px;padding:8px 12px}.hero{min-height:700px;min-height:calc(100svh - 94px);position:relative;display:flex;align-items:center;padding:8vw;background:linear-gradient(90deg,#08191ef0 0%,#08191e99 45%,#08191e0a),linear-gradient(0deg,#08191e,transparent 35%),url('assets/hero.webp') center/cover}.hero-content{max-width:650px;position:relative}.eyebrow{font:11px/1.6 ui-monospace,monospace;letter-spacing:3px;color:var(--gold);text-transform:uppercase}h1,h2,h3{font-family:Georgia,serif;font-weight:400;line-height:1.05}h1{font-size:clamp(58px,8vw,112px);letter-spacing:-4px;margin:24px 0}h1 em{color:var(--gold);font-weight:400}h2{font-size:clamp(32px,5vw,54px);margin:16px 0 24px}h3{font-size:26px}.intro{max-width:450px;color:#c0ced0;font-size:17px}.meta{display:flex;gap:22px;font-size:11px;color:var(--muted);letter-spacing:1px;margin:30px 0}.hero button{margin:5px 10px 0 0}.case{max-width:1100px;margin:auto;padding:36px 24px 70px}.toolbar{display:flex;justify-content:space-between;gap:10px;align-items:center;flex-wrap:wrap;font-size:12px;color:var(--muted)}.toolbar button{font-size:12px;padding:8px 12px}.progress{display:flex;gap:8px;margin:24px 0 42px}.progress i{height:3px;background:var(--line);flex:1}.progress i.done{background:var(--gold)}.casegrid{display:grid;grid-template-columns:1fr 1fr;gap:55px}.lead{color:var(--muted)}.evidence{background:#ddd2b7;color:#29302d;border-radius:3px;padding:30px;box-shadow:0 15px 50px #0005;transform:rotate(-1deg);position:relative}.evidence:before{content:'PIÈCE À CONVICTION';display:block;font:10px monospace;letter-spacing:3px;border-bottom:1px solid #9e9c87;padding-bottom:12px;margin-bottom:22px;color:#775d40}.evidence h3{font-size:27px}.papertext{font-family:ui-monospace,monospace;font-size:14px;white-space:pre-line}.stamp{display:inline-block;border:2px solid #9b423b;color:#9b423b;padding:3px 12px;transform:rotate(-7deg);font:12px monospace;letter-spacing:2px;margin-top:20px}.puzzle{margin-top:30px}.choices{display:grid;gap:10px;margin:20px 0}.choices button{text-align:left}.hint{font-size:13px;color:var(--muted);border:0;background:none;padding-left:0}.hint-text{border-left:2px solid var(--gold);padding:0 15px;color:#c3c9bd}.feedback{padding:12px 0;min-height:52px;color:#efc18c}.feedback.success{color:#aad7bd}input,select{font:inherit;background:#10292f;color:var(--ink);border:1px solid #62787a;border-radius:4px;min-height:50px;padding:12px;width:100%;margin:8px 0 16px}label{display:block}.digits{display:flex;gap:10px}.digits select{font-size:26px;text-align:center}.row{display:flex;align-items:center;gap:10px;margin:10px 0}.row span{flex:1}.row button{padding:8px 16px}.map{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:20px 0}.map button{font-size:13px;min-height:70px}.map .chosen{background:var(--gold);color:var(--bg)}.badge{color:var(--gold);font-size:11px;letter-spacing:2px}.ending{text-align:center;max-width:750px;margin:50px auto;padding:30px}.ending .seal{width:90px}.ending h1{font-size:90px}.ending p{color:var(--muted)}.actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}footer{padding:30px;text-align:center;border-top:1px solid var(--line);font-size:10px;letter-spacing:3px;color:var(--gold)}footer span{display:block;letter-spacing:1px;color:var(--muted);margin-top:10px}dialog{background:#10272d;color:var(--ink);border:1px solid #63716a;border-radius:6px;padding:28px;max-width:600px;width:calc(100% - 30px);max-height:85svh}dialog::backdrop{background:#000b;backdrop-filter:blur(6px)}dialog .close{float:right}#notes p{border-bottom:1px solid var(--line);padding-bottom:16px}.snow{pointer-events:none;position:fixed;inset:0;z-index:5;background-image:radial-gradient(2px 2px at 20px 40px,#fff8 50%,transparent),radial-gradient(1px 1px at 100px 120px,#fff7 50%,transparent);background-size:240px 240px;animation:snow 25s linear infinite;opacity:.45}@keyframes snow{to{background-position:60px 800px}}@media(max-width:650px){header{height:80px;padding:16px}.brand{font-size:9px;letter-spacing:1px;grid-template-columns:30px auto;gap:0 8px}.brand img{width:28px}.brand span{font-size:8px;letter-spacing:1px}#sound{font-size:10px;max-width:110px}.hero{padding:65px 24px 55px;align-items:flex-end;min-height:calc(100svh - 80px);background-position:62% center;background-image:linear-gradient(0deg,#08191e 8%,#08191ed9 40%,#08191e33 100%),url('assets/hero.webp')}.hero h1{font-size:64px;letter-spacing:-3px}.meta{gap:14px;font-size:10px}.casegrid{grid-template-columns:1fr;gap:30px}.case{padding:24px 20px 50px}.evidence{padding:24px;order:0}.story{order:1}.progress{margin-bottom:26px}.hero button{width:100%}.ending h1{font-size:70px}.ending{padding:20px}.map button{padding:6px;font-size:12px}footer{letter-spacing:1px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;scroll-behavior:auto!important}}
/* Animation 2D — édition Noël 2026 */
:root{--bg:#102d36;--gold:#f4c477;--ink:#fff2d9;--muted:#bdced0;--line:#355661}body{background:radial-gradient(ellipse at 85% 20%,#24546566,transparent 60%),var(--bg)}header{background:#0a242be8;height:84px}.hero{min-height:730px;min-height:calc(100svh - 84px);background:linear-gradient(90deg,#09262be8,#09262b55 55%,#09262b00),linear-gradient(0deg,var(--bg),transparent 35%),url('assets/hero.webp') center/cover;padding:70px 8vw}.hero-content{max-width:640px}h1{font-weight:700;text-shadow:0 4px 0 #071e27,0 10px 40px #0004}h1 em{font-style:normal;color:#ffce7d}h2{color:#fff0d1}.hero .intro{color:#e1e9dc}.primary{border:1px solid #ffe0a4;border-bottom:4px solid #ae793d;border-radius:12px;box-shadow:0 5px 18px #0003;background:linear-gradient(#f9d798,#efb85c);color:#253635}.primary:hover{background:#ffdfa5;transform:translateY(-1px)}button{border-radius:10px;transition:background .15s,transform .15s}button:disabled{transform:none}.cast-section{max-width:1160px;margin:auto;padding:60px 28px 80px}.cast-section h2{max-width:650px}.cast-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:15px;margin-top:32px}.cast-card{padding:0 0 14px;overflow:hidden;min-width:0;background:#153b44;border:1px solid #54737a;box-shadow:0 8px 20px #0003}.cast-card img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;display:block;border-bottom:2px solid var(--gold)}.cast-card span{display:block;font:23px Georgia,serif;color:#ffe0a3;margin:10px 5px 2px}.cast-card small{display:block;font-size:10px;color:var(--muted);line-height:1.4;min-height:28px;padding:0 5px}.case{max-width:1180px}.casegrid{grid-template-columns:1.05fr 1fr;align-items:start;gap:45px}.evidence{background:#fff0cf;color:#3e3e36;border:1px solid #c4a676;border-radius:9px;transform:rotate(.6deg);padding:25px}.evidence h3{color:#69512e}.papertext{font-size:13px;line-height:1.75}.witness-scene{display:block;width:100%;padding:0;background:#1f4047;color:#fff2d9;border:0;overflow:hidden;border-radius:6px;margin:0 0 26px;text-align:left}.witness-scene img{display:block;width:100%;height:auto;aspect-ratio:1.3;object-fit:cover;object-position:center 35%}.witness-scene span{display:block;padding:17px}.witness-scene small{display:block;letter-spacing:2px;color:#f1c582;font-size:10px;margin-bottom:8px}.witness-scene q{font:italic 17px/1.4 Georgia,serif}.gift-inspect{border-radius:18px;overflow:hidden;border:1px solid #9e855b;margin-top:20px}.gift-inspect img{display:block;width:100%;height:auto;aspect-ratio:1.45;object-fit:cover}.micro{font-size:12px;color:var(--muted)}.inspect-buttons{display:flex;gap:7px}.inspect-buttons button{flex:1;padding:10px 6px;font-size:12px}.inspect-buttons .examined{border-color:var(--gold);color:var(--gold)}.tool-result{background:#1b414a;padding:15px;border-radius:9px;min-height:80px;font-size:13px}.digits select{background:#0b232b;border:1px solid #ebc48b;color:#ffdf9c;min-height:60px}.radio-panel{background:linear-gradient(135deg,#254e59,#112b34);border:2px solid #af9364;border-radius:18px;padding:24px;margin:24px 0;box-shadow:inset 0 0 0 5px #0b242b}.radio-panel img{float:right}.radio-panel label{font-size:11px;letter-spacing:1px;max-width:200px;color:#ebce9f}.radio-panel output{font:36px ui-monospace,monospace;color:#ffd58c;display:block;margin:15px 0;background:#071a21;padding:10px;border-radius:4px}.radio-panel p{font-size:12px;color:#d5dbd4;margin:0}input[type=range]{accent-color:#f1c477;padding:0;cursor:pointer}.tuned{color:#a2edbc!important}.illustrated-map{position:relative;background:url('assets/village.webp') center/cover;aspect-ratio:1;gap:0;border-radius:14px;overflow:hidden;border:2px solid #ae9469}.illustrated-map button{background:transparent;border:1px solid #ffedb355;border-radius:0;display:flex;align-items:end;justify-content:center;color:#fff;font-weight:700;text-shadow:0 2px 3px #000,0 0 8px #000;background-image:linear-gradient(0deg,#061d2b88,transparent 40%);padding:8px}.illustrated-map button:hover{background-color:#f4c47733}.illustrated-map button.chosen{background-color:#f4c47766;color:white;box-shadow:inset 0 0 0 3px #ffe2a0}.row{padding:9px;background:#21434e;border-radius:9px;border:1px solid #4f6d76}.row span{padding-left:10px}.decoder{background:#173d47;border:1px solid #637a71;border-radius:12px;padding:18px;margin:22px 0}.decoder summary{cursor:pointer;min-height:48px;padding:10px 0;color:#f2cf91}.decoder label{font-size:13px}.decoder output{font:30px/1.5 ui-monospace,monospace;display:block;color:#ffdc9f;text-align:center;letter-spacing:5px}.alphabet{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.alphabet span{display:flex;flex-direction:column;background:#0f2a33;text-align:center;border-radius:6px;font-size:18px;color:#e5cda0}.alphabet b{font:10px/2 system-ui;color:#b0c7cd}.portrait-large{width:100%;height:auto;border-radius:14px;margin-top:12px}.clue-box{border-left:3px solid var(--gold);background:#21444b;padding:16px}.clue-box p{margin-bottom:0;font-size:14px}blockquote{font:italic 23px/1.4 Georgia,serif;color:#ffdda3;margin:22px 0}#person{max-width:520px}#witnessesDialog{max-width:1000px}#witnessesDialog .cast-section{padding:16px 0}#witnessesDialog .cast-grid{grid-template-columns:repeat(3,1fr)}.final-candidates{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:25px}.final-candidates button{padding:0;overflow:hidden;background:#21454d;border:1px solid #b6a078}.final-candidates img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;display:block}.final-candidates span{font-size:12px;display:block;color:#ffe4ad;padding:8px 2px}.note-icon{width:35px;height:35px;vertical-align:middle;margin-right:10px}.reveal-portrait{width:220px;margin:30px auto 0;padding:8px;border:2px solid var(--gold);border-radius:50%;box-shadow:0 0 60px #f6c76b44;animation:reveal .8s ease-out}.reveal-portrait img{width:100%;display:block;border-radius:50%}.ending .evidence{margin-top:24px}.ending h1{margin:18px 0 30px}.ending .actions{justify-content:center}.feedback.success{background:#173d33;border-left:3px solid #abd7a7;border-radius:4px;padding:16px;margin:16px 0}.progress i{border-radius:3px;height:5px}.progress i.done{box-shadow:0 0 8px #f2cb7788}dialog{border-radius:18px;background:#12333d}dialog .close{position:sticky;top:0;z-index:2;background:#0c252be8}@keyframes reveal{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@media(max-width:900px){.cast-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:650px){header{height:80px}.hero{min-height:760px;min-height:calc(100svh - 80px);padding:270px 24px 40px;background-position:66% center;background-image:linear-gradient(0deg,#102d36 3%,#102d36e0 35%,#102d3611 80%),url('assets/hero-mobile.webp')}.hero h1{font-size:65px}.hero .intro{font-size:16px}.cast-section{padding:35px 20px 45px}.cast-grid{grid-template-columns:repeat(2,1fr);gap:12px}.cast-card span{font-size:24px}.cast-card small{font-size:11px;min-height:20px}.casegrid{grid-template-columns:1fr;gap:24px}.story{order:1}.evidence{order:0;transform:none;padding:20px}.witness-scene{display:flex;align-items:center;margin-bottom:22px}.witness-scene img{width:36%;aspect-ratio:1;height:auto;object-fit:cover;align-self:stretch}.witness-scene span{padding:12px;flex:1}.witness-scene q{font-size:14px}.witness-scene small{font-size:9px;letter-spacing:1px}.papertext{font-size:12px}.evidence:before{margin-bottom:15px}.evidence h3{font-size:25px;margin:15px 0}.toolbar button{font-size:11px;min-height:48px}.toolbar>div{display:flex;gap:6px;flex-wrap:wrap}.toolbar{align-items:start}.case h2{margin-top:10px}.final-candidates{gap:6px}.final-candidates span{font-size:11px}#witnessesDialog .cast-grid{grid-template-columns:repeat(2,1fr)}.meta{flex-wrap:wrap}.ending h1{font-size:75px}.alphabet{grid-template-columns:repeat(7,1fr)}.hero .eyebrow{letter-spacing:2px}.snow{opacity:.3}}
.button-icon{width:22px;height:22px;vertical-align:middle;margin-right:6px}.hero button .button-icon{width:27px;height:27px}.digits select{min-width:0}main{overflow-wrap:break-word}@media(max-width:650px){.decoder output{font-size:24px;letter-spacing:1px}.button-icon{width:18px;height:18px;margin-right:4px}.toolbar #journal .button-icon{display:none}}
/* Dernier acte : le registre brisé */
.registry-board,.dispatch-panel{border:1px solid #7b8a7a;background:#173d47;border-radius:14px;padding:20px;margin:22px 0}.registry-slots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:20px 0}.registry-slot{position:relative;background:#0c2933;border:1px solid #698082;border-radius:10px;padding:10px;min-width:0}.registry-slot label{font-size:11px;color:var(--gold);margin-top:8px}.registry-slot select{font-size:13px;padding:8px 4px;margin:4px 0 0;width:100%;min-width:0}.slot-portrait{display:block;width:100%;aspect-ratio:1;height:auto;object-fit:cover;border-radius:7px}.case-number{position:absolute;top:5px;left:5px;background:#ffe0a0;color:#12313b;border:2px solid #173841;border-radius:50%;width:28px;height:28px;text-align:center;font:bold 17px/24px Georgia,serif}.dispatch-panel h3{color:#ffe1a7}.dispatch-panel ol{padding-left:22px;font-size:14px}.dispatch-panel li{margin-bottom:12px}.dispatch-panel form{border-top:1px solid var(--line);padding-top:22px;margin-top:22px}.dispatch-panel label{font-size:13px}.dispatch-panel .primary{width:100%;white-space:normal}.registry-board .primary{width:100%;white-space:normal}.registry-board .tool-result{font-size:13px;margin-bottom:0}@media(max-width:650px){.registry-slots{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.registry-board,.dispatch-panel{padding:15px}.registry-slot select{font-size:13px}.registry-slot{padding:8px}}
.archive-proof{border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:20px}.archive-proof summary{cursor:pointer;color:var(--gold);min-height:48px;line-height:1.6;padding:12px 0;font-size:13px}.archive-proof .papertext{padding:15px;background:#0b2831;border-radius:7px;line-height:1.8}
/* Hero responsive : média indépendant, sans fond répété ni hauteur imposée. */
.hero{isolation:isolate;overflow:hidden;background:var(--bg);background-image:none;background-repeat:no-repeat}.hero-art{position:absolute;inset:0;display:block;z-index:0}.hero-art img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}.hero::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(90deg,#09262be8,#09262b55 55%,transparent),linear-gradient(0deg,var(--bg),transparent 35%)}.hero-content{z-index:1;min-width:0}
@media(max-width:767px){
 .hero{display:block;min-height:0;height:auto;padding:0;align-items:initial;background:var(--bg);background-image:none}
 .hero-art{position:relative;inset:auto;aspect-ratio:2/1;width:100%;height:auto;overflow:hidden}
 .hero-art img{width:100%;height:auto;aspect-ratio:2/1;object-fit:contain;object-position:center}
 .hero::after{display:none}
 .hero-content{position:relative;max-width:none;padding:26px clamp(20px,5vw,36px) 32px;background:var(--bg)}
 .hero h1{font-size:clamp(46px,12vw,68px);letter-spacing:-2px;line-height:1.04;margin:18px 0 24px}
 .hero .eyebrow{font-size:10px;letter-spacing:2px;margin-top:0}
 .hero .intro{font-size:16px;line-height:1.65;max-width:540px;margin:0}
 .hero .meta{flex-wrap:wrap;gap:10px 16px;margin:24px 0;font-size:10px}
 .hero button{width:100%;margin:0;white-space:normal}
 .hero-content>.eyebrow:last-child{margin:18px 0 0;font-size:9px;letter-spacing:1.5px}
}
