:root{
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
  --table:#22458A; --table2:#1B3566;
  --paper:#F7F4EE; --paper-edge:#E4DFD3; --fold:#DCD5C6;
  --ink:#1E2430; --ink-soft:#5A6070;
  --ribbon:#8E1F2F; --blue:#24406B;
  --bar:72px; --haut:52px; --gap:clamp(8px,1.4vw,18px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){--table:#161B17;--table2:#0F1310;--paper:#E9E4D8;--paper-edge:#CFC8B8;--fold:#C9C1AF}
}
:root[data-theme="dark"]{--table:#161B17;--table2:#0F1310;--paper:#E9E4D8;--paper-edge:#CFC8B8;--fold:#C9C1AF}
*,*::before,*::after{box-sizing:inherit}
html{height:100%;scroll-padding-top:env(safe-area-inset-top,0px)}
body{
  margin:0;height:100%;
  background:radial-gradient(ellipse at center,var(--table) 0%,var(--table2) 100%);
  font-family:"Crimson Pro",Georgia,"Times New Roman",serif;color:var(--ink);
  display:flex;flex-direction:column;
  padding:var(--haut) 0 var(--bar);
}

/* barres du haut et du bas */
.topbar,.dock{position:fixed;left:0;right:0;z-index:50;
  background:linear-gradient(180deg,#2F5BA8 0%,#22458A 55%,#1B3566 100%);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.topbar{top:0;height:calc(var(--haut) + env(safe-area-inset-top,0px));
  padding:env(safe-area-inset-top,0px) calc(18px + env(safe-area-inset-right,0px)) 0 calc(18px + env(safe-area-inset-left,0px));
  border-bottom:2px solid #12254A;box-shadow:0 3px 10px rgba(0,0,0,.3);display:flex;align-items:center;gap:20px}
.brand{display:flex;align-items:center;gap:12px;font-family:"Cormorant Garamond",Georgia,serif;font-weight:700;font-size:clamp(1.1rem,1.8vw,1.45rem);color:#F5C842;text-shadow:0 1px 2px rgba(0,0,0,.45);white-space:nowrap;letter-spacing:.01em}
.sceau{width:36px;height:36px;flex:0 0 auto;filter:drop-shadow(0 2px 3px rgba(0,0,0,.5))}
.tabs{flex:1;min-width:0;display:flex;justify-content:safe center;gap:6px;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{all:unset;cursor:pointer;color:#EEF2FF;padding:5px 16px;border-radius:999px;font-size:1.02rem;white-space:nowrap;transition:background .15s}
.tab:hover{background:rgba(255,255,255,.12)}
.tab[aria-current="page"]{background:#EEF2FF;color:#1B3566}
.tab:focus-visible{outline:2px solid #F5C842;outline-offset:2px}

.dock{bottom:0;height:calc(var(--bar) + env(safe-area-inset-bottom,0px));
  padding:10px calc(16px + env(safe-area-inset-right,0px)) calc(10px + env(safe-area-inset-bottom,0px)) calc(16px + env(safe-area-inset-left,0px));
  border-top:2px solid #12254A;box-shadow:0 -3px 10px rgba(0,0,0,.3);display:flex;align-items:center;gap:14px}
.dock .home{flex:0 0 auto;width:52px;height:52px;border-radius:12px;border:0;cursor:pointer;display:grid;place-items:center;background:rgba(255,255,255,.14);transition:background .15s}
.dock .home:hover{background:rgba(255,255,255,.24)}
.dock .sep{flex:0 0 1px;height:36px;background:rgba(255,255,255,.28)}
.dock .apps{flex:1;min-width:0;display:flex;align-items:center;justify-content:safe center;gap:12px;overflow-x:auto;padding:6px 2px;scrollbar-width:none}
.dock .apps::-webkit-scrollbar{display:none}
.dock .app{flex:0 0 auto;width:52px;height:52px;border-radius:13px;display:grid;place-items:center;border:0;cursor:pointer;background:var(--c);transition:transform .15s;box-shadow:inset 0 -2px 0 rgba(0,0,0,.15)}
.dock .app svg{width:28px;height:28px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.dock .app:hover{transform:translateY(-5px)}
.dock button:focus-visible{outline:2px solid #F5C842;outline-offset:3px}

/* livre */
.book{position:relative;width:100%;flex:1 1 auto;min-height:0;display:grid;grid-template-columns:1fr 1fr;perspective:2400px}
.page{position:relative;background:var(--paper);overflow:auto;padding:clamp(20px,4vw,52px);display:flex;flex-direction:column}
.page.left{border-radius:0;
  background:linear-gradient(to left,rgba(0,0,0,.14),rgba(0,0,0,0) 9%),var(--paper);
  box-shadow:none}
.page.right{border-radius:0;
  background:linear-gradient(to right,rgba(0,0,0,.14),rgba(0,0,0,0) 9%),var(--paper);
  box-shadow:none}
.page.left.bleu,.page.right.bleu{color:#EEF2FF;padding:clamp(16px,2.6vw,36px);
  background:linear-gradient(to right,rgba(0,0,0,.3),rgba(0,0,0,0) 9%),radial-gradient(ellipse at 50% 22%,#3F72C8 0%,#22458A 50%,#172E5E 100%)}
.page.left.noir{color:#F5C842;
  background:linear-gradient(to left,rgba(255,255,255,.07),rgba(255,255,255,0) 9%),radial-gradient(ellipse at 40% 30%,#1A1A1A 0%,#050505 100%)}
.noir .sub,.noir .folio{color:#E0B83C}
.page.left.bleu{background:linear-gradient(to left,rgba(0,0,0,.3),rgba(0,0,0,0) 9%),radial-gradient(ellipse at 50% 22%,#3F72C8 0%,#22458A 50%,#172E5E 100%)}
.page.right.rouge{color:#B8860B;
  background:linear-gradient(to right,rgba(0,0,0,.08),rgba(0,0,0,0) 8%),#FFFFFF}
.rouge .sub,.rouge .folio{color:#9A7209}
.page.right.rouge{padding-top:clamp(12px,1.6vw,22px)}
.rouge h1{margin:0;text-align:center}
.rouge .sub{text-align:center;max-width:none}
.illus{flex:1 1 auto;min-height:170px;display:flex;align-items:center;justify-content:center;padding:clamp(10px,2vh,24px) 0}
.illus svg{display:block;width:100%;height:100%;max-height:100%;filter:drop-shadow(0 6px 14px rgba(0,0,0,.35))}
.rouge .sub{margin-top:auto;margin-bottom:0;font-size:clamp(.85rem,1.1vw,1rem)}
.page.right.rouge{padding-bottom:clamp(12px,1.6vw,22px)}
.rouge .folio{margin-top:0}
.carres{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;padding:clamp(12px,2.5vh,30px) 0;container-type:size}
.grand-carre{width:min(100%,46vh);width:min(100cqw,100cqh);aspect-ratio:1;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:clamp(8px,1.2vw,14px);
  padding:clamp(8px,1.2vw,14px);border:2px solid #C9A227;border-radius:8px;background:rgba(0,0,0,.02);box-shadow:0 10px 24px rgba(0,0,0,.08)}
.carre{border:1.5px solid rgba(185,140,20,.6);border-radius:5px;background:rgba(0,0,0,.025);box-shadow:inset 0 0 0 1px rgba(255,255,255,.04)}
.rouge .sub{margin-top:0}
.page.left.blanc{background:linear-gradient(to left,rgba(0,0,0,.08),rgba(0,0,0,0) 8%),#FFFFFF;color:#1E2430}
.page.right.blanc{background:linear-gradient(to right,rgba(0,0,0,.08),rgba(0,0,0,0) 8%),#FFFFFF;color:#1E2430}
.jeux{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}
.jeu{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:14px;width:100%;padding:12px 14px;border:1px solid #E3E1DA;border-radius:12px;background:#fff;transition:border-color .15s,box-shadow .15s}
.jeu:hover{border-color:#C9C4B6;box-shadow:0 4px 14px rgba(0,0,0,.06)}
.jeu[aria-current="true"]{border-color:#24406B;box-shadow:0 0 0 2px rgba(36,64,107,.15)}
.jeu:focus-visible{outline:2px solid #24406B;outline-offset:2px}
.jeu-ic{flex:0 0 auto;width:48px;height:48px;border-radius:12px;display:grid;place-items:center}
.jeu-ic svg{width:26px;height:26px;fill:#fff}
.jeu-txt{flex:1;min-width:0;display:flex;flex-direction:column}
.jeu-txt strong{font-family:"Cormorant Garamond",Georgia,serif;font-size:1.3rem;line-height:1.1}
.jeu-txt span{font-size:.95rem;color:#5A6070}
.jeu-etat{flex:0 0 auto;font-size:.88rem;font-style:italic;color:#5A6070;border:1px solid #E3E1DA;border-radius:999px;padding:2px 10px}
.attente-jeu{margin:auto 0;text-align:center}
.attente-jeu p{margin:0 auto}
.tete-jeu{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.tete-jeu h2{margin-bottom:.35em}
.plein-ecran{font-size:.95rem;color:#24406B;white-space:nowrap}
.cadre-jeu{flex:1 1 auto;min-height:260px;border:1px solid #E3E1DA;border-radius:10px;overflow:hidden;background:#000}
.cadre-jeu iframe{display:block;width:100%;height:100%;border:0}
.aide-jeu{font-size:.88rem;font-style:italic;color:#5A6070;margin:8px 0 0;max-width:none;text-align:center}
.regle{position:absolute;top:0;bottom:0;left:50%;width:44px;transform:translateX(-50%);z-index:15;pointer-events:none;
  border-left:1px solid rgba(8,18,45,.7);border-right:1px solid rgba(8,18,45,.7);
  box-shadow:0 0 12px rgba(0,0,0,.45),inset 0 0 0 1px rgba(200,220,255,.25);
  background:
    url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2020%20280%22%20width%3D%2220%22%20height%3D%22280%22%20fill%3D%22none%22%20stroke%3D%22%23F5C842%22%20stroke-width%3D%221.8%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cg%3E%3Cellipse%20cx%3D%2210%22%20cy%3D%229%22%20rx%3D%224%22%20ry%3D%225.5%22/%3E%3Cpath%20d%3D%22M3.5%2016H16.5M10%2014.5V34%22/%3E%3C/g%3E%3Cg%20transform%3D%22translate%280%2040%29%22%3E%3Cpath%20d%3D%22M2%2020Q10%2012%2018%2020Q10%2025%202%2020Z%22/%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2219.6%22%20r%3D%222.2%22%20fill%3D%22%23F5C842%22/%3E%3Cpath%20d%3D%22M3%2013.5Q10%209.5%2018%2013.5M8%2023.5L7%2030Q7%2033%2010%2032.5M12.5%2023.5Q16%2028%2013.5%2032%22/%3E%3C/g%3E%3Cg%20transform%3D%22translate%280%2080%29%22%3E%3Cpath%20d%3D%22M2%2032L10%209L18%2032Z%22/%3E%3Cpath%20d%3D%22M10%209L12.5%2032M5%2024H15%22/%3E%3C/g%3E%3Cg%20transform%3D%22translate%280%20120%29%22%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%227%22%20r%3D%223%22%20fill%3D%22%23F5C842%22/%3E%3Cellipse%20cx%3D%2210%22%20cy%3D%2222%22%20rx%3D%224.5%22%20ry%3D%227%22/%3E%3Cpath%20d%3D%22M10%2015V29M5.5%2018L2%2015M14.5%2018L18%2015M5.5%2023L2%2023M14.5%2023L18%2023M6%2027L3%2031M14%2027L17%2031%22/%3E%3C/g%3E%3Cg%20transform%3D%22translate%280%20160%29%22%3E%3Cpath%20d%3D%22M10%2012V34M6%2034H14M4%206H16M4%2010H16M4%2014H16M5%206V16M15%206V16%22/%3E%3C/g%3E%3Cg%20transform%3D%22translate%280%20200%29%22%3E%3Cpath%20d%3D%22M11%2034C9%2026%208%2018%2010%208C11%204%2013%203%2013%203C12%208%2013%2014%2015%2020C16%2025%2014%2030%2011%2034Z%22/%3E%3Cpath%20d%3D%22M11%2032C11%2024%2011.5%2016%2013%205%22/%3E%3C/g%3E%3Cg%20transform%3D%22translate%280%20240%29%22%3E%3Ccircle%20cx%3D%2210%22%20cy%3D%2217%22%20r%3D%225%22%20fill%3D%22%23F5C842%22/%3E%3Cpath%20d%3D%22M4%2017C1%2015%201%2012%201%2012M16%2017C19%2015%2019%2012%2019%2012M5%2021H2M15%2021H18M10%2011V8%22/%3E%3C/g%3E%3C/svg%3E") right 3px top 6px/16px 224px repeat-y,
    linear-gradient(to right,#162C57,#2F5BA8 30%,#6D96DB 50%,#2F5BA8 70%,#162C57)}
.ribbon{position:absolute;top:0;left:calc(50% - 36px);width:14px;height:22%;background:var(--ribbon);clip-path:polygon(0 0,100% 0,100% 100%,50% 88%,0 100%);z-index:5}

.leaf{position:absolute;top:0;width:50%;height:100%;transform-style:preserve-3d;z-index:10;display:none;transition:transform .8s cubic-bezier(.45,.05,.3,1)}
.leaf.next{left:50%;transform-origin:left center}
.leaf.prev{left:0;transform-origin:right center}
.leaf .face{position:absolute;inset:0;backface-visibility:hidden;box-shadow:none;overflow:hidden}
.leaf .back{transform:rotateY(180deg)}

/* coins cornés pour tourner les pages */
.corner{position:absolute;bottom:0;width:90px;height:90px;z-index:20;border:0;padding:0;background:none;cursor:pointer}
.corner::before{content:"";position:absolute;bottom:0;width:30px;height:30px;transition:width .2s,height .2s;filter:drop-shadow(0 0 3px rgba(0,0,0,.28))}
.corner.next{right:0}
.corner.next::before{right:0;background:linear-gradient(to top left,var(--table2) 50%,var(--fold) 50%)}
.corner.prev{left:0}
.corner.prev::before{left:0;background:linear-gradient(to top right,var(--table2) 50%,var(--fold) 50%)}
.corner:hover::before,.corner:focus-visible::before{width:52px;height:52px}
.corner:focus-visible{outline:none}
.corner[hidden]{display:none}

/* contenu */
h1{font-family:"Cormorant Garamond",Georgia,serif;font-weight:700;font-size:clamp(2.2rem,5.4vw,4.6rem);line-height:.92;margin:auto 0 .35em;letter-spacing:-.01em}
h2{font-family:"Cormorant Garamond",Georgia,serif;font-weight:700;font-size:clamp(1.5rem,3vw,2.3rem);margin:0 0 .5em;line-height:1.05}
p{font-size:clamp(.95rem,1.35vw,1.15rem);line-height:1.6;margin:0 0 .9em;max-width:34em}
.lettrine::first-letter{float:left;font-family:"Cormorant Garamond",serif;font-weight:700;font-size:3.6em;line-height:.8;padding:.06em .08em 0 0;color:var(--blue)}
.sub{font-style:italic;color:var(--ink-soft);font-size:clamp(1rem,1.6vw,1.3rem)}
.folio{margin-top:auto;padding-top:12px;font-style:italic;color:var(--ink-soft);font-size:.9rem;text-align:center}
.projet{margin-bottom:1.1em}
.projet strong{font-family:"Cormorant Garamond",serif;font-size:1.25em;display:block}
.projet p{margin:0}
blockquote{margin:auto 0;font-family:"Cormorant Garamond",serif;font-style:italic;font-size:clamp(1.3rem,2.6vw,2rem);line-height:1.25;color:var(--blue)}
form{display:flex;flex-direction:column;gap:10px;max-width:26em}
input,textarea{font:inherit;font-size:1rem;background:transparent;border:0;border-bottom:1px solid var(--ink-soft);padding:6px 2px;color:var(--ink)}
textarea{resize:none;min-height:70px}
input:focus,textarea:focus{outline:none;border-bottom-color:var(--blue)}
.btn{align-self:flex-start;font:inherit;font-weight:600;background:var(--blue);color:#fff;border:0;padding:8px 18px;border-radius:3px;cursor:pointer;white-space:nowrap}
.btn:focus-visible{outline:2px solid var(--ribbon);outline-offset:3px}
.merci{color:var(--blue);font-style:italic}

/* page avatar bleue */
.bleu h2{color:#fff;margin-bottom:.2em}
.stage{position:relative;flex:1 1 auto;min-height:190px;cursor:grab;touch-action:none;
  background:radial-gradient(ellipse at 50% 88%,rgba(0,0,0,.25) 0,rgba(0,0,0,0) 38%)}
.stage:active{cursor:grabbing}
.stage canvas,.stage img{position:absolute;inset:0;display:block;width:100%;height:100%}
.astuce{position:absolute;left:0;right:0;bottom:4px;text-align:center;font-style:italic;font-size:.85rem;opacity:.6;pointer-events:none;z-index:1}
.modeles{margin:14px 0 0;padding-top:12px;border-top:1px solid rgba(238,242,255,.18)}
.bleu .stage{margin-top:10px}
.hasard{border-style:dashed}
.groupes{display:inline-flex;gap:2px;background:rgba(0,0,0,.25);padding:3px;border-radius:999px;margin-right:4px}
.grp{all:unset;cursor:pointer;padding:2px 12px;border-radius:999px;font-size:.92rem;color:#DCE4FA}
.grp[aria-selected="true"]{background:#F2C14E;color:#1B2A4A}
.grp:focus-visible{outline:2px solid #fff;outline-offset:2px}
.cats{display:flex;gap:4px;background:rgba(0,0,0,.22);padding:4px;border-radius:999px;margin:10px 0;width:fit-content;max-width:100%;overflow-x:auto;scrollbar-width:none}
.cat{all:unset;cursor:pointer;padding:4px 16px;border-radius:999px;font-size:.98rem;color:#DCE4FA;white-space:nowrap}
.cat:hover{background:rgba(238,242,255,.1)}
.cat[aria-selected="true"]{background:#EEF2FF;color:#1B3566}
.cat:focus-visible{outline:2px solid #F2C14E;outline-offset:2px}
.reglages{min-height:5.2em}
.hint{text-align:center;font-style:italic;font-size:.9rem;opacity:.75;margin:2px 0 10px;max-width:none}
.reglages{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:8px 14px;margin-bottom:12px}
.lbl{font-style:italic;opacity:.85;font-size:1rem}
.line{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chip{all:unset;cursor:pointer;padding:3px 12px;border-radius:999px;border:1px solid rgba(238,242,255,.45);font-size:.98rem;line-height:1.4;transition:background .15s}
.chip:hover{background:rgba(238,242,255,.12)}
.chip[aria-checked="true"]{background:#EEF2FF;color:#1B3566;border-color:#EEF2FF}
.sw{all:unset;cursor:pointer;width:24px;height:24px;border-radius:50%;background:var(--c);border:2px solid rgba(255,255,255,.35)}
.sw[aria-checked="true"]{border-color:#fff;box-shadow:0 0 0 2px #1B3566,0 0 0 4px #fff}
.chip:focus-visible,.sw:focus-visible{outline:2px solid #F2C14E;outline-offset:2px}
.choix{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap}
.choix input{flex:1;min-width:8em;color:#fff;border-bottom-color:rgba(238,242,255,.6)}
.choix input::placeholder{color:rgba(238,242,255,.65)}
.choix input:focus{border-bottom-color:#F2C14E}
.bleu .btn{background:#F2C14E;color:#1B2A4A}
.bleu .btn:focus-visible{outline-color:#fff}
.bleu .merci{color:#FFE39A;margin:.6em 0 0}


/* page musique */
.page.right.noir{color:#F5C842;
  background:linear-gradient(to right,rgba(255,255,255,.07),rgba(255,255,255,0) 9%),radial-gradient(ellipse at 60% 30%,#1A1A1A 0%,#050505 100%)}
.noir h2{color:#F5C842}
.pistes{list-style:none;margin:0 0 10px;padding:0}
.piste{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:12px;width:100%;padding:7px 8px;border-radius:8px;color:#EDE6D3;text-decoration:none}
.piste:hover,.piste:focus-visible{background:rgba(245,200,66,.1)}
.piste[aria-current="true"]{background:rgba(245,200,66,.16)}
.jouer{flex:0 0 auto;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:#E0455B}
.jouer svg{width:13px;height:13px;fill:#fff;margin-left:2px}
.titre{display:block;font-size:clamp(.98rem,1.25vw,1.08rem);line-height:1.25}
.genre{display:block;font-size:.88rem;font-style:italic;color:#B9AF95}
.barre-mus{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:auto;font-size:.88rem;font-style:italic;color:#8E866F}
.melanger{font:inherit;font-style:normal;font-size:.95rem;background:transparent;color:#F5C842;border:1px solid rgba(245,200,66,.5);border-radius:999px;padding:3px 14px;cursor:pointer}
.melanger:hover{background:rgba(245,200,66,.12)}
.melanger:focus-visible{outline:2px solid #F5C842;outline-offset:2px}
.lecteur{width:100%;aspect-ratio:16/9;background:#000;border:1px solid rgba(245,200,66,.3);margin:6px 0 14px}
.lecteur iframe{display:block;width:100%;height:100%;border:0}
.attente{margin:auto 0;text-align:center}
.attente .note{color:#EDE6D3;opacity:.7;font-size:.98rem;max-width:26em;margin:1em auto 0}
.noir .sub{color:#E0B83C}
.visu{display:block;width:100%;flex:1 1 auto;min-height:130px}
.avancee{height:4px;background:rgba(245,200,66,.2);border-radius:2px;overflow:hidden;margin-top:8px}
#mBarre{height:100%;width:0;background:#F5C842}
.temps{display:flex;justify-content:space-between;font-size:.85rem;color:#B9AF95;margin-top:4px}
.controles{display:flex;justify-content:center;align-items:center;gap:18px;margin:10px 0 8px}
.ctl{width:42px;height:42px;border-radius:50%;border:1px solid rgba(245,200,66,.5);background:transparent;display:grid;place-items:center;cursor:pointer}
.ctl svg{width:14px;height:14px;fill:#F5C842}
.ctl.gros{width:58px;height:58px;background:#F5C842;border:0}
.ctl.gros svg{width:18px;height:18px;fill:#0A0A0A;margin-left:2px}
.ctl:hover{transform:scale(1.06)}
.ctl:focus-visible,.piste:focus-visible{outline:2px solid #F5C842;outline-offset:2px}
.volume{display:flex;align-items:center;justify-content:center;gap:10px;font-style:italic;font-size:.92rem;color:#B9AF95}
.volume input{accent-color:#F5C842;width:min(200px,55%)}



/* avatar depuis une photo */
.photo{background:rgba(242,193,78,.18);border-color:#F2C14E}
.statut{font-style:italic;color:#FFE39A;margin:6px 0 0;font-size:.95rem}
.camera{position:fixed;inset:0;z-index:80;background:rgba(5,10,25,.72);display:grid;place-items:center;padding:16px}
.camera[hidden]{display:none}
.camera-boite{position:relative;width:min(460px,100%);background:#172E5E;color:#EEF2FF;border:1px solid rgba(242,193,78,.5);border-radius:14px;padding:22px 22px 20px;box-shadow:0 20px 50px rgba(0,0,0,.5)}
.camera h3{font-family:"Cormorant Garamond",Georgia,serif;font-size:1.7rem;margin:0 0 12px;color:#F5C842}
.camera-vue{border-radius:10px;overflow:hidden;background:#000;margin-bottom:12px;aspect-ratio:4/3}
.camera-vue img{width:100%;height:100%;object-fit:contain;display:block}
.camera-vue.pointer img{cursor:crosshair}
.pastille{display:inline-block;width:14px;height:14px;border-radius:50%;vertical-align:-2px;margin:0 4px;border:1px solid rgba(255,255,255,.6)}
.sablier{display:inline-block;width:16px;height:16px;border:2px solid rgba(242,193,78,.35);border-top-color:#F2C14E;border-radius:50%;animation:tourne .8s linear infinite;vertical-align:-3px;margin-right:8px}
@keyframes tourne{to{transform:rotate(360deg)}}
.camera-vue video{width:100%;height:100%;object-fit:cover;transform:scaleX(-1);display:block}
.camera-note{font-size:.98rem;line-height:1.5;opacity:.85;margin:0 0 14px}
.camera-actions{display:flex;gap:10px;flex-wrap:wrap}
.camera .btn{background:#F2C14E;color:#1B2A4A}
.camera .btn.secondaire{background:transparent;color:#F2C14E;border:1px solid #F2C14E}
.camera-fermer{position:absolute;top:10px;right:12px;background:none;border:0;color:#EEF2FF;font-size:1.7rem;cursor:pointer;line-height:1}
.camera button:focus-visible{outline:2px solid #fff;outline-offset:2px}


/* dock verrouillé tant que l'avatar n'est pas validé */
.dock .apps.verrou{display:none}
.verrou-msg{flex:1;margin:0;text-align:center;color:#F3E6CC;font-style:italic;font-size:1rem;opacity:.85;max-width:none}
.verrou-msg[hidden]{display:none}
.dock .app.apparait{animation:apparait .45s cubic-bezier(.3,1.5,.5,1) both}
@keyframes apparait{from{opacity:0;transform:translateY(16px) scale(.6)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.dock .app.apparait{animation:none}}


/* recherche */
.recherche{position:relative;flex:0 1 300px;min-width:0;display:flex;align-items:center}
.recherche input{width:100%;height:32px;border-radius:999px;border:1px solid #12254A;background:#F2F5FC;color:#1B2A4A;padding:0 14px 0 34px;font:inherit;font-size:.98rem;box-shadow:inset 0 1px 2px rgba(0,0,0,.2)}
.recherche input::placeholder{color:#6A7894}
.recherche input:focus{outline:2px solid #F5C842;outline-offset:1px}
.recherche input::-webkit-search-cancel-button{cursor:pointer}
.loupe{position:absolute;left:4px;top:50%;transform:translateY(-50%);width:28px;height:28px;border:0;background:none;padding:0;display:grid;place-items:center;cursor:pointer;z-index:1}
.loupe svg{width:17px;height:17px;fill:none;stroke:#1F3E7C;stroke-width:2.2;stroke-linecap:round}
.resultats{position:absolute;top:calc(100% + 8px);left:0;width:max(100%,320px);max-height:min(60vh,420px);overflow:auto;list-style:none;margin:0;padding:6px;
  background:#FFFDF8;border:1px solid #D9CDB5;border-radius:12px;box-shadow:0 14px 34px rgba(0,0,0,.28);z-index:90;font-family:"Crimson Pro",Georgia,serif}
.resultats[hidden]{display:none}
.resultats li{padding:8px 10px;border-radius:8px;cursor:pointer;color:#2A2016;display:flex;flex-direction:column;gap:1px}
.resultats li.actif,.resultats li:hover{background:#F3E6CC}
.resultats .r-titre{font-size:1.02rem;font-weight:600}
.resultats .r-type{font-size:.78rem;font-style:italic;color:#8A7358;margin-left:6px;font-weight:400}
.resultats .r-extrait{font-size:.9rem;color:#5A5048;line-height:1.35}
.resultats mark{background:#F5D77A;color:inherit;border-radius:2px;padding:0 1px}
.resultats .vide{cursor:default;color:#8A7358;font-style:italic}
.resultats .vide:hover{background:none}
@media (max-width:700px){
  .recherche{flex:0 0 32px;height:32px}
  .recherche input{display:none}
  .loupe{left:0;width:32px;height:32px;border-radius:50%;background:#F2F5FC}
  .recherche.ouverte{position:fixed;left:8px;right:8px;top:calc(env(safe-area-inset-top,0px) + (var(--haut) - 34px) / 2);height:34px;z-index:60}
  .recherche.ouverte input{display:block;height:34px;background:#F2F5FC}
  .recherche.ouverte .loupe{left:4px;width:28px;height:28px;background:none}
  .resultats{width:100%}
}

@media (max-width:700px){
  :root{--bar:62px;--haut:48px}
  body{height:auto;min-height:100%}
  .book{grid-template-columns:1fr;flex:none}
  .page{min-height:60vh}
  .page.left{border-radius:0;box-shadow:none;background:linear-gradient(to top,rgba(0,0,0,.12),rgba(0,0,0,0) 6%),var(--paper)}
  .page.right{border-radius:0;box-shadow:none;background:linear-gradient(to bottom,rgba(0,0,0,.12),rgba(0,0,0,0) 6%),var(--paper)}
  .page.left.noir{background:linear-gradient(to top,rgba(255,255,255,.07),rgba(255,255,255,0) 6%),radial-gradient(ellipse at 40% 30%,#1A1A1A 0%,#050505 100%)}
  .page.right.noir{background:linear-gradient(to bottom,rgba(255,255,255,.07),rgba(255,255,255,0) 6%),radial-gradient(ellipse at 60% 30%,#1A1A1A 0%,#050505 100%)}
  .page.left.bleu{background:linear-gradient(to top,rgba(0,0,0,.3),rgba(0,0,0,0) 6%),radial-gradient(ellipse at 50% 22%,#3F72C8 0%,#22458A 50%,#172E5E 100%)}
  .page.right.rouge{background:linear-gradient(to bottom,rgba(0,0,0,.08),rgba(0,0,0,0) 6%),#FFFFFF}
  .page.right.bleu{background:linear-gradient(to bottom,rgba(0,0,0,.3),rgba(0,0,0,0) 6%),radial-gradient(ellipse at 50% 22%,#3F72C8 0%,#22458A 50%,#172E5E 100%)}
  .stage{flex:none;height:320px}
  .ribbon{left:auto;right:28px;height:60px}
  .regle{display:none}
  .leaf{display:none!important}
  .topbar{gap:12px}
  .sceau{width:30px;height:30px}
  .tab{padding:6px 12px;font-size:1rem}
  .dock{gap:10px}
  .dock .home,.dock .app{width:44px;height:44px}
  .dock .app svg{width:24px;height:24px}
}


/* téléphone : les pages défilent de gauche à droite et s'arrêtent au milieu du dock */
@media (max-width:700px){
  :root{--haut-page:calc(100vh - env(safe-area-inset-top,0px) - var(--haut) - (var(--bar) + env(safe-area-inset-bottom,0px)) / 2)}
  @supports (height:100dvh){ :root{--haut-page:calc(100dvh - env(safe-area-inset-top,0px) - var(--haut) - (var(--bar) + env(safe-area-inset-bottom,0px)) / 2)} }
  body{height:auto;min-height:0;padding-bottom:0;overflow:hidden}
  .book{display:flex;flex:none;height:var(--haut-page);overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .book::-webkit-scrollbar{display:none}
  .book > .page{flex:0 0 100%;width:100%;height:var(--haut-page);min-height:var(--haut-page);scroll-snap-align:start;scroll-snap-stop:always;
    padding-bottom:calc((var(--bar) + env(safe-area-inset-bottom,0px)) / 2 + 20px)}
  .page.left{background:linear-gradient(to left,rgba(0,0,0,.14),rgba(0,0,0,0) 9%),var(--paper)}
  .page.right{background:linear-gradient(to right,rgba(0,0,0,.14),rgba(0,0,0,0) 9%),var(--paper)}
  .page.left.bleu{background:linear-gradient(to left,rgba(0,0,0,.3),rgba(0,0,0,0) 9%),radial-gradient(ellipse at 50% 22%,#3F72C8 0%,#22458A 50%,#172E5E 100%)}
  .page.right.rouge{background:linear-gradient(to right,rgba(0,0,0,.08),rgba(0,0,0,0) 8%),#FFFFFF}
  .page.left.noir{background:linear-gradient(to left,rgba(255,255,255,.07),rgba(255,255,255,0) 9%),radial-gradient(ellipse at 40% 30%,#1A1A1A 0%,#050505 100%)}
  .page.right.noir{background:linear-gradient(to right,rgba(255,255,255,.07),rgba(255,255,255,0) 9%),radial-gradient(ellipse at 60% 30%,#1A1A1A 0%,#050505 100%)}
  .page.left.blanc{background:linear-gradient(to left,rgba(0,0,0,.08),rgba(0,0,0,0) 8%),#FFFFFF}
  .page.right.blanc{background:linear-gradient(to right,rgba(0,0,0,.08),rgba(0,0,0,0) 8%),#FFFFFF}
  .page.left.bleu,.page.right.bleu{padding-bottom:calc((var(--bar) + env(safe-area-inset-bottom,0px)) / 2 + 16px)}
  .page.right.rouge{padding-bottom:calc((var(--bar) + env(safe-area-inset-bottom,0px)) / 2 + 20px)}
  .stage{flex:1 1 auto;height:auto;min-height:170px}
  .corner,.ribbon{display:none}
}

/* ---- ordinateur : livre bord à bord, textes plus petits pour ne pas paraître zoomé ---- */
@media (min-width:701px){
  .page{padding:clamp(18px,2.6vw,38px)}
  h1{font-size:clamp(1.9rem,3.6vw,3.3rem)}
  .rouge h1{font-size:clamp(1.9rem,3.4vw,3rem)}
  h2{font-size:clamp(1.3rem,2vw,1.85rem)}
  p{font-size:clamp(.9rem,1vw,1.02rem)}
  .sub{font-size:clamp(.95rem,1.15vw,1.12rem)}
  .rouge .sub{font-size:clamp(.82rem,.9vw,.95rem)}
  blockquote{font-size:clamp(1.2rem,1.9vw,1.7rem)}
  .lettrine::first-letter{font-size:3.2em}
  .page.left.bleu,.page.right.bleu{padding:clamp(14px,2vw,28px)}
  .chip,.cat{font-size:.92rem}
  .grp{font-size:.86rem}
  .lbl{font-size:.94rem}
  .sw{width:22px;height:22px}
  .btn{font-size:.95rem;padding:7px 16px}
  .titre{font-size:.98rem}
  .genre{font-size:.84rem}
  .jeu-txt strong{font-size:1.15rem}
  .jeu-txt span{font-size:.9rem}
  .grand-carre{width:min(100cqw,100cqh,420px)}
}
.page.right.rouge{display:grid;grid-template-rows:minmax(auto,1fr) minmax(0,3.2fr) minmax(auto,1fr);justify-items:center}
.rouge h1{align-self:start}
.rouge .carres{grid-row:2;align-self:stretch;justify-self:stretch;padding:0}
.rouge .sub{grid-row:3;align-self:end}
@media (min-width:701px){ .page.right.rouge{padding-left:calc(clamp(18px,2.6vw,38px) + 22px)} }

/* tiroir d'applications (téléphone) */
.dock .app.plus{display:none}
.tiroir{position:fixed;left:10px;right:10px;bottom:calc(var(--bar) + env(safe-area-inset-bottom,0px) + 10px);z-index:70;
  background:#F4F7FD;border:1px solid #C9D5EE;border-radius:18px;box-shadow:0 16px 40px rgba(0,0,0,.4);padding:16px 12px;animation:monte .2s ease-out}
.tiroir[hidden]{display:none}
@keyframes monte{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.tiroir-grille{display:grid;grid-template-columns:repeat(4,1fr);gap:14px 6px}
.tiroir-app{all:unset;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:.8rem;color:#1B2A4A;text-align:center}
.tiroir-app span.ic{width:52px;height:52px;border-radius:13px;display:grid;place-items:center;background:var(--c);box-shadow:inset 0 -2px 0 rgba(0,0,0,.15)}
.tiroir-app svg{width:28px;height:28px;fill:none;stroke:#fff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.tiroir-app:focus-visible span.ic{outline:2px solid #6B4424;outline-offset:2px}
@media (max-width:700px){
  .dock{gap:10px}
  .dock{gap:6px}
  .dock .apps{overflow:visible;justify-content:space-between;gap:6px;padding:0}
  .dock .home,.dock .app{width:42px;height:42px}
  .dock .apps .app:nth-child(n+5){display:none}
  .dock .app.plus{display:grid}
}
.grand-carre{position:relative}
.cercle{position:absolute;left:50%;top:50%;width:40%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;
  background:#FFFFFF;border:2px solid #C9A227;box-shadow:0 0 0 6px #FFFFFF,0 0 0 7.5px rgba(185,140,20,.6),0 8px 20px rgba(0,0,0,.1);overflow:hidden}
.cercle img.portrait-cercle{display:block;width:100%;height:100%;object-fit:cover;border-radius:50%;pointer-events:none}
.cercle img.portrait-cercle[hidden],.avatar-haut img[hidden]{display:none}
.rouge h1.titre-plein{white-space:nowrap;line-height:1;width:100%;text-align:center;letter-spacing:0}
.meteo-cherche{display:flex;flex-direction:row;align-items:center;max-width:none;gap:8px;margin:0 0 10px}
.meteo-cherche input{flex:1;min-width:0;border:1px solid #D9D5CB;border-radius:999px;padding:7px 14px;font-size:.95rem}
.meteo-cherche input:focus{outline:2px solid #24406B;outline-offset:1px}
.meteo-cherche .btn{border-radius:999px}
.meteo-msg{font-size:.9rem;font-style:italic;color:#5A6070;margin:0 0 8px}
.villes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;overflow:auto}
.ville{all:unset;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:12px;width:100%;padding:8px 12px;border:1px solid #E3E1DA;border-radius:10px;background:#fff}
.ville:hover{border-color:#C9C4B6}
.ville[aria-current="true"]{border-color:#24406B;box-shadow:0 0 0 2px rgba(36,64,107,.15)}
.ville:focus-visible{outline:2px solid #24406B;outline-offset:2px}
.v-ic{font-size:1.5rem;width:32px;text-align:center}
.v-nom{flex:1;min-width:0;display:flex;flex-direction:column}
.v-nom strong{font-size:1.02rem}
.v-nom span{font-size:.82rem;color:#5A6070;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v-t{font-family:"Cormorant Garamond",Georgia,serif;font-weight:700;font-size:1.6rem;color:#24406B}
.sites-meteo{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0 0;max-width:none}
.sites-meteo a{font-size:.85rem;color:#24406B;text-decoration:none;border:1px solid #D9D5CB;border-radius:999px;padding:2px 10px}
.sites-meteo a:hover{background:#F2F0EA}
.lien-btn{display:inline-block;text-decoration:none}
.cadre-agenda{background:#fff}
.msg-illus{flex:1 1 auto;min-height:120px;display:flex;align-items:center;justify-content:center;padding:10px 0}
.msg-illus svg{width:min(70%,300px);height:auto;max-height:100%;filter:drop-shadow(0 8px 16px rgba(0,0,0,.12))}
.msg-accroche{font-family:"Cormorant Garamond",Georgia,serif;font-weight:700;font-size:clamp(1.3rem,2vw,1.8rem);line-height:1.2;text-align:center;margin:0 auto .3em}
.page.blanc .msg-accroche + .sub{text-align:center;margin:0 auto}
.connexion{margin:auto;width:min(100%,360px);padding:26px 24px;border:1px solid #E3E1DA;border-radius:16px;background:#fff;box-shadow:0 10px 30px rgba(0,0,0,.06)}
.connexion h2{text-align:center}
.connexion form{max-width:none;gap:14px}
.connexion label{display:flex;flex-direction:column;gap:5px;font-size:.92rem;color:#3A4050}
.connexion input{border:1px solid #D9D5CB;border-radius:10px;padding:10px 12px;font-size:1rem;background:#FCFBF8}
.connexion input:focus{outline:2px solid #24406B;outline-offset:1px;border-color:#24406B}
.cx-btn{align-self:stretch;text-align:center;padding:11px 18px;border-radius:10px;font-size:1rem}
.cx-info{margin:0;font-size:.9rem;font-style:italic;color:#24406B;text-align:center}
.cx-liens{display:flex;justify-content:center;gap:8px;margin-top:14px;font-size:.9rem;color:#8A8F9C}
.cx-liens a{color:#24406B}
.nom-site{flex:0 0 auto;font-family:"Cormorant Garamond",Georgia,serif;font-weight:700;font-size:clamp(1.1rem,1.8vw,1.45rem);color:#F5C842;text-shadow:0 1px 2px rgba(0,0,0,.4);white-space:nowrap;letter-spacing:.01em}
@media (max-width:700px){ .nom-site{font-size:1rem} }
/* maison = accueil + avatar */
.dock .home{position:relative;overflow:visible}
.home-avatar{position:absolute;inset:3px;width:calc(100% - 6px);height:calc(100% - 6px);border-radius:50%;object-fit:cover;
  background:radial-gradient(circle at 50% 35%,#3F72C8,#172E5E);border:2px solid #F5C842;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.home.a-avatar .home-maison{position:absolute;right:-6px;bottom:-6px;width:22px;height:22px;padding:3px;border-radius:50%;background:#FFFFFF;box-shadow:0 1px 3px rgba(0,0,0,.35)}
/* dragons qui volent sur la page de droite */
.ciel{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2}
.vol{position:absolute;top:var(--haut);left:0;width:clamp(56px,var(--taille),260px);animation:traverse var(--duree) linear var(--dec) infinite}
.vol.inverse{animation-name:traverse-inverse}
.vol.inverse .miroir{transform:scaleX(-1)}
.dragon{display:block;width:100%;height:auto;overflow:visible;animation:onde 2.4s ease-in-out infinite;filter:drop-shadow(0 10px 10px rgba(0,0,0,.35))}
.aile-avant,.aile-arriere{transform-box:fill-box;transform-origin:50% 100%}
.aile-avant{animation:battement .7s ease-in-out infinite alternate}
.aile-arriere{animation:battement-arriere .7s ease-in-out infinite alternate}
.flamme{transform-box:fill-box;transform-origin:0% 50%;opacity:0;animation:souffle var(--duree,16s) linear var(--dec,0s) infinite}
@keyframes traverse{0%{left:-35%;transform:translateY(0)}25%{transform:translateY(40%)}50%{transform:translateY(5%)}75%{transform:translateY(45%)}100%{left:110%;transform:translateY(0)}}
@keyframes traverse-inverse{0%{left:110%;transform:translateY(0)}25%{transform:translateY(40%)}50%{transform:translateY(5%)}75%{transform:translateY(45%)}100%{left:-35%;transform:translateY(0)}}
@keyframes onde{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(8%) rotate(3deg)}}
@keyframes battement{from{transform:scaleY(1) rotate(0)}to{transform:scaleY(-.55) rotate(-6deg)}}
@keyframes battement-arriere{from{transform:scaleY(.9)}to{transform:scaleY(-.45)}}
@keyframes souffle{0%,44%{opacity:0;transform:scaleX(.2)}47%{opacity:1;transform:scaleX(1)}53%{opacity:1;transform:scaleX(1.1)}56%,100%{opacity:0;transform:scaleX(.3)}}
/* petit fantôme sur la page de gauche */
.fantome{position:absolute;top:3%;left:60%;width:clamp(40px,8%,64px);opacity:.9;animation:erre 14s ease-in-out infinite;filter:drop-shadow(0 8px 10px rgba(0,0,0,.3))}
.fantome svg{display:block;width:100%;height:auto;animation:flotte 2.6s ease-in-out infinite}
@keyframes erre{0%,100%{left:60%;top:3%}25%{left:82%;top:8%}50%{left:70%;top:14%}75%{left:52%;top:6%}}
@keyframes flotte{0%,100%{transform:translateY(0) rotate(-4deg)}50%{transform:translateY(-12%) rotate(4deg)}}
@media (prefers-reduced-motion:reduce){
  .vol,.dragon,.aile-avant,.aile-arriere,.fantome,.fantome svg{animation:none} .flamme{animation:none;opacity:0}
  .vol:not(:first-child){display:none} .vol:first-child{left:auto;right:6%}}
/* drone */
.ciel-drone{z-index:4}
.drone{position:absolute;left:0;top:0;width:clamp(80px,17%,140px);opacity:0;will-change:transform;filter:drop-shadow(0 12px 12px rgba(0,0,0,.4))}
.drone svg{display:block;width:100%;height:auto;overflow:visible;animation:plane 1.6s ease-in-out infinite}
.helice{transform-box:fill-box;transform-origin:50% 50%;animation:tourne-helice .09s linear infinite}
@keyframes tourne-helice{0%{transform:scaleX(1)}50%{transform:scaleX(.25)}100%{transform:scaleX(1)}}
@keyframes plane{0%,100%{transform:translateY(0)}50%{transform:translateY(-5%)}}
.led{animation:clignote 1.2s steps(1) infinite}.led.verte{animation-delay:.6s}
@keyframes clignote{0%{opacity:1}50%{opacity:.15}}
.faisceau{animation:scan 2.2s ease-in-out infinite}
@keyframes scan{0%,100%{opacity:.35}50%{opacity:.85}}
.objectif{filter:drop-shadow(0 0 3px #5FF0FF)}
@media (prefers-reduced-motion:reduce){.drone svg,.helice,.led,.faisceau{animation:none}}
/* le cercle devient un portail */
.ciel-portail{z-index:3}
.sortie{position:absolute;left:0;top:0;will-change:transform,opacity}
.sortie .dragon{animation-duration:2s}
.cercle{background:radial-gradient(circle,#FFFFFF 0%,#FBF7EA 70%,#F3EAD0 100%)}
.cercle.ouvre{animation:portail 1.4s ease-out}
@keyframes portail{0%{filter:brightness(1)}30%{filter:brightness(1.6) drop-shadow(0 0 18px #F5C842)}100%{filter:brightness(1)}}
/* la règle devient une épée égyptienne dans son fourreau */
.epee-garde{position:absolute;top:8px;left:50%;width:90px;transform:translateX(-50%);z-index:16;pointer-events:none;filter:drop-shadow(0 3px 5px rgba(0,0,0,.45))}
.epee-bout{position:absolute;bottom:0;left:50%;width:44px;transform:translateX(-50%);z-index:16;pointer-events:none;filter:drop-shadow(0 3px 5px rgba(0,0,0,.45))}
.epee-garde svg,.epee-bout svg{display:block;width:100%;height:auto}
@media (max-width:700px){.epee-garde,.epee-bout{display:none}}
/* ruban accroché à l'épée */
.ribbon{top:10px!important;left:calc(50% + 22px)!important;height:24%!important;z-index:17!important;filter:drop-shadow(1px 2px 2px rgba(0,0,0,.4))}
.noeud{position:absolute;top:2px;left:calc(50% + 14px);width:30px;z-index:18;pointer-events:none;filter:drop-shadow(0 2px 2px rgba(0,0,0,.4))}
.noeud svg{display:block;width:100%;height:auto}
@media (max-width:700px){.noeud{display:none}}
/* barre de recherche jusqu'au milieu, en forme de lame avec la pointe */
@media (min-width:701px){
  .topbar{padding-right:50%}
  .recherche{flex:1 1 auto;max-width:none;filter:drop-shadow(0 0 .8px #12254A) drop-shadow(0 1px 1px rgba(0,0,0,.35))}
  .recherche input{border:0;border-radius:999px 0 0 999px;padding-right:34px;
    clip-path:polygon(0 0,calc(100% - 26px) 0,100% 50%,calc(100% - 26px) 100%,0 100%)}
  .recherche input:focus{outline:none;box-shadow:inset 0 0 0 2px #F5C842}
}
/* graduations 0 à 33 */
.regle .grad{position:absolute;left:0;right:0;height:0}
.regle .grad i{position:absolute;left:0;top:-.75px;width:9px;height:1.5px;background:#EEF2FF}
.regle .grad i.d{left:auto;right:0;width:4px;opacity:.7}
.regle .grad b{position:absolute;left:10px;top:0;transform:translateY(-50%);font:700 9.5px/1 "Crimson Pro",Georgia,serif;color:#EEF2FF;text-shadow:0 1px 1px rgba(0,0,0,.5)}
.regle .mini{position:absolute;left:0;width:4px;height:1px;background:rgba(238,242,255,.7)}
.regle .mini.demi{width:7px;background:rgba(238,242,255,.9)}
.regle .grad b{font-size:11px}
/* accueil : panneau bleu de l'avatar à gauche, puis espace blanc */
.page.left.avatar-blanc{padding:0;flex-direction:row;background:linear-gradient(to left,rgba(0,0,0,.08),rgba(0,0,0,0) 8%),#FFFFFF;overflow:hidden}
.panneau-avatar{flex:0 0 var(--largeur-avatar,58%);min-width:0;display:flex;flex-direction:column;overflow:auto;color:#EEF2FF;
  padding:clamp(14px,2vw,28px);background:radial-gradient(ellipse at 50% 22%,#3F72C8 0%,#22458A 50%,#172E5E 100%);box-shadow:4px 0 14px rgba(0,0,0,.15)}
.espace-blanc{flex:1 1 auto}
@media (max-width:700px){
  .page.left.avatar-blanc{padding:0!important;background:#FFFFFF}
  .panneau-avatar{flex:1 1 100%!important;padding-bottom:calc((var(--bar) + env(safe-area-inset-bottom,0px)) / 2 + 16px)}
  .espace-blanc{display:none}
}
.panneau-avatar > *{flex-shrink:0}
.panneau-avatar .stage{flex:1 1 auto;min-height:130px}
.panneau-avatar .cats{width:100%}
.panneau-avatar .cats{gap:2px;padding:3px}
.panneau-avatar .cat{flex:1 1 auto;text-align:center;padding:4px 5px;font-size:.84rem}
.panneau-avatar h2{font-size:clamp(1.2rem,1.6vw,1.5rem)}
.panneau-avatar .chip{font-size:.86rem;padding:2px 10px}
.panneau-avatar .reglages{gap:6px 10px;margin-bottom:8px}
.panneau-avatar .modeles{margin-top:10px;padding-top:8px}
.panneau-avatar .choix input{min-width:0;flex:1 1 100%}
.panneau-avatar .choix .btn{flex:1 1 100%;text-align:center}
.haut-photo{align-self:flex-start;margin:0 0 8px}
.panneau-avatar .stage{margin:4px 0 8px}
.panneau-avatar .choix{gap:6px}
/* trône royal dans l'espace blanc */
.espace-blanc{display:flex;align-items:stretch;justify-content:center;padding:6px 4px;min-width:0;overflow:hidden}
.trone{display:block;width:100%;height:100%;overflow:visible}
.trone .rayons{transform-box:view-box;transform-origin:150px 170px;animation:rayons 60s linear infinite}
@keyframes rayons{to{transform:rotate(360deg)}}
.trone .nuage{filter:drop-shadow(0 4px 6px rgba(80,110,160,.18))}
.trone .nuage.na{animation:derive-a 9s ease-in-out infinite alternate}
.trone .nuage.nb{animation:derive-b 11s ease-in-out infinite alternate}
@keyframes derive-a{from{transform:translateX(-7px)}to{transform:translateX(7px)}}
@keyframes derive-b{from{transform:translateX(6px)}to{transform:translateX(-6px)}}
.trone .gemme{animation:brille 3s ease-in-out infinite}
.trone .gemme:nth-of-type(3n){animation-delay:1s}.trone .gemme:nth-of-type(3n+1){animation-delay:2s}
@keyframes brille{0%,100%{filter:brightness(1)}50%{filter:brightness(1.5) drop-shadow(0 0 3px #fff)}}
@media (prefers-reduced-motion:reduce){.trone .rayons,.trone .nuage,.trone .gemme{animation:none}}
/* grand carré en bas de la page, coiffé d'un chapeau */
.page.right.rouge{grid-template-rows:minmax(0,1fr) minmax(0,52%) auto!important}
.rouge .chapeau{grid-row:1;align-self:end;justify-self:center;height:100%;max-height:300px;width:100%;margin-bottom:-26px;position:relative;z-index:1;display:flex;justify-content:center;align-items:flex-end;pointer-events:none}
.rouge .chapeau svg{display:block;height:100%;width:auto;overflow:visible;max-width:min(100%,440px);filter:drop-shadow(0 8px 10px rgba(0,0,0,.2))}
.rouge .carres{grid-row:2;align-items:flex-end}
.rouge .sub{margin-top:12px!important}
.etoile-pendue{transform-box:view-box;transform-origin:239px 24px;animation:balance 2.8s ease-in-out infinite;filter:drop-shadow(0 0 4px rgba(245,200,66,.7))}
@keyframes balance{0%,100%{transform:rotate(-10deg)}50%{transform:rotate(10deg)}}
@media (prefers-reduced-motion:reduce){.etoile-pendue{animation:none}}
/* trésor autour du grand carré */
.tresor{position:absolute;pointer-events:none;z-index:2;overflow:visible;filter:drop-shadow(0 4px 5px rgba(0,0,0,.2))}
.tresor-g{left:-50%;bottom:-6%;width:88%}
.tresor-d{right:-50%;bottom:-6%;width:88%}
.tresor-bas{left:-10%;bottom:-6%;width:120%;z-index:3}
@media (max-width:700px){.tresor-g{left:-8%;width:56%}.tresor-d{right:-8%;width:56%}}
/* petite tortue qui se promène */
.tortue{position:absolute;bottom:clamp(4px,1vh,10px);left:0;width:clamp(44px,8%,70px);z-index:4;pointer-events:none;animation:promenade 46s linear infinite}
.tortue svg{display:block;width:100%;height:auto;animation:dandine .9s ease-in-out infinite;filter:drop-shadow(0 3px 3px rgba(0,0,0,.2))}
.tortue .patte{transform-box:fill-box;transform-origin:50% 0;animation:pas .9s ease-in-out infinite alternate}
.tortue .p2{animation-delay:.45s}
@keyframes promenade{0%{left:-12%;transform:scaleX(1)}48%{left:92%;transform:scaleX(1)}50%{left:92%;transform:scaleX(-1)}98%{left:-12%;transform:scaleX(-1)}100%{left:-12%;transform:scaleX(1)}}
@keyframes dandine{0%,100%{transform:translateY(0) rotate(-1.5deg)}50%{transform:translateY(-4%) rotate(1.5deg)}}
@keyframes pas{from{transform:rotate(-14deg)}to{transform:rotate(14deg)}}
@media (prefers-reduced-motion:reduce){.tortue,.tortue svg,.tortue .patte{animation:none}.tortue{left:6%}}
/* le chapeau parle */
.chapeau-parle{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:min(100%,440px);height:100%;border:0;background:none;cursor:pointer;pointer-events:auto;z-index:2;border-radius:40% 40% 10% 10%}
.chapeau-parle:focus-visible{outline:2px solid #2F5BA8;outline-offset:2px}
.bouche-chapeau{transform-box:fill-box;transform-origin:50% 15%}
.chapeau.parle .bouche-chapeau{animation:mache .18s ease-in-out infinite alternate}
@keyframes mache{from{transform:scaleY(.45)}to{transform:scaleY(1.25)}}
.chapeau.parle svg{animation:hoche 1.2s ease-in-out infinite}
@keyframes hoche{0%,100%{transform:rotate(-1.5deg)}50%{transform:rotate(1.5deg)}}
.bulle{position:absolute;top:22%;left:2%;max-width:min(46%,230px);padding:10px 14px;background:#FFFDF6;border:2px solid #C9A227;border-radius:16px;
  font-family:"Crimson Pro",Georgia,serif;font-size:clamp(.88rem,1.05vw,1rem);line-height:1.35;color:#1B2A4A;box-shadow:0 8px 20px rgba(0,0,0,.15);
  opacity:0;transform:translateY(6px) scale(.96);transition:opacity .25s,transform .25s;z-index:3;pointer-events:none}
.bulle.visible{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){.chapeau.parle .bouche-chapeau,.chapeau.parle svg{animation:none}}
.chapeau-muet{position:absolute;top:22%;right:4%;z-index:3;width:40px;height:40px;border-radius:50%;border:1.5px solid #C9A227;background:#FFFDF6;cursor:pointer;pointer-events:auto;font-size:21px;line-height:1;box-shadow:0 3px 8px rgba(0,0,0,.15);transition:transform .15s}
.chapeau-muet:hover{transform:scale(1.08)}
.chapeau-muet:focus-visible{outline:2px solid #2F5BA8;outline-offset:2px}
/* ton avatar aussi en haut à droite */
.avatar-haut{position:absolute;right:calc(14px + env(safe-area-inset-right,0px));top:calc(env(safe-area-inset-top,0px) + (var(--haut) - 40px) / 2);
  width:40px;height:40px;border-radius:50%;border:2px solid #F5C842;padding:0;cursor:pointer;overflow:hidden;
  background:radial-gradient(circle at 50% 35%,#3F72C8,#172E5E);box-shadow:0 2px 6px rgba(0,0,0,.35);display:grid;place-items:center}
.avatar-haut img{width:100%;height:100%;object-fit:cover;display:block}
.avatar-haut .avatar-vide{width:24px;height:24px;fill:none;stroke:#EEF2FF;stroke-width:1.8;stroke-linecap:round}
.avatar-haut.rempli .avatar-vide{display:none}
.avatar-haut:hover{transform:scale(1.06)}
.avatar-haut:focus-visible{outline:2px solid #F5C842;outline-offset:3px}
@media (max-width:700px){.avatar-haut{width:34px;height:34px;top:calc(env(safe-area-inset-top,0px) + (var(--haut) - 34px) / 2)}}
/* page qui tourne : pas d'animations ni de calques volants sur la feuille */
.leaf .face *{animation:none!important;transition:none!important}
.leaf .ciel,.leaf .tortue,.leaf .bulle,.leaf .chapeau-muet{display:none!important}
@media (prefers-reduced-motion:reduce){.leaf,.corner::before{transition:none}}

/* ---- dock : 5 applications bien espacées ---- */
.dock .apps{gap:clamp(18px,3.2vw,44px)}
.dock .apps .app[hidden]{display:none!important}
@media (max-width:700px){
  .dock .apps{justify-content:space-evenly;gap:6px}
  .dock .apps .app:nth-child(n+5){display:grid}
  .dock .app.plus{display:none!important}
}
/* ---- accueil en noir et blanc, sauf les cadres bleus ---- */
.page.right.rouge{filter:grayscale(1)}
.page.left.avatar-blanc .espace-blanc{filter:grayscale(1)}

/* ---- dock équilibré : applications réparties régulièrement ---- */
.dock .apps{justify-content:space-evenly;gap:8px;max-width:none;margin:0}

/* ---- pages blanches : contenu en noir et blanc ---- */
.page.blanc{filter:grayscale(1)}

/* ---- dock uniforme : toutes les icônes réparties à égale distance sur toute la largeur ---- */
.dock{justify-content:space-evenly!important;gap:0!important}
.dock .apps{display:contents!important}
.dock .sep,.dock .verrou-msg,.dock .app.plus{display:none!important}
.dock .apps .app[hidden]{display:none!important}
.dock .app,.dock .home{flex:0 0 auto!important;margin:0!important}
@media (max-width:700px){.dock .apps .app:nth-child(n+5){display:grid!important}}

/* ---- grand titre Robot Machine World en haut de la page de droite ---- */
.page.right.rouge{grid-template-rows:auto minmax(0,1fr) minmax(0,48%) auto!important}
.rouge h1.titre-plein{grid-row:1;align-self:start;margin:0 0 4px!important;color:#1E2430;position:relative;z-index:3;font-family:"Cormorant Garamond",Georgia,serif;font-weight:700}
.rouge .chapeau{grid-row:2!important}
.rouge .carres{grid-row:3!important}
.rouge .sub{grid-row:4!important}