
:root{--green:#174d42;--ink:#183e35;--red:#b94538;--gold:#c29850;--paper:#fbf7ee;--muted:#778079}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.55 system-ui,sans-serif}button,input,textarea,select{font:inherit}button,a,input,textarea,select{outline-offset:5px}button{cursor:pointer}button{border:1px solid #dddcd0;background:#fffaf1;color:var(--ink);border-radius:10px;padding:11px 17px;font-weight:650;transition:transform .18s,background .18s}button:hover{transform:translateY(-2px);background:#eee9dd}button:disabled{opacity:.6;cursor:wait}.primary{background:var(--green);color:white;border-color:var(--green)}.primary:hover{background:#236454}.quiet{background:transparent;border:0;padding:8px;color:var(--muted)}header{max-width:1320px;padding:26px 40px;display:flex;align-items:center;justify-content:space-between;margin:auto;border-bottom:1px solid #e3dfd2}.brand{font-size:27px;color:var(--green);text-decoration:none;display:flex;gap:12px;align-items:center}.brand span{font:700 25px Georgia,serif}.brand i{font-weight:400}.head-right{display:flex;align-items:center;gap:20px;font-size:12px}main{max-width:1240px;margin:auto;padding:35px 32px 70px}h1,h2,h3{font-family:Georgia,serif;line-height:1.12;font-weight:400}h1{font-size:clamp(42px,5.5vw,72px);letter-spacing:-2px;margin:22px 0}h1 em{color:var(--red);font-weight:400}h2{font-size:30px;margin:10px 0 22px}h3{font-size:24px;margin:12px 0}.eyebrow{font-size:10px;font-weight:750;letter-spacing:2px;color:#977d4a}.muted{color:var(--muted);font-size:12px}.login{display:grid;grid-template-columns:1.2fr 1fr;gap:80px;align-items:center;min-height:680px}.intro>p,.hero p{color:#7b8276}.login-card{padding:42px;background:#fffdf7;border:1px solid #e4dfd1;border-radius:22px;box-shadow:0 15px 60px #24483908;display:flex;flex-direction:column;gap:16px}.login-card h2{font-size:34px;margin:3px 0 12px}.seal{background:#f0e8d8;color:#ad8548;border-radius:50%;width:54px;height:54px;text-align:center;line-height:54px;font-size:28px;margin-bottom:10px}label{display:block;font-size:12px;font-weight:650}input,textarea,select{display:block;width:100%;margin-top:6px;padding:12px 14px;border:1px solid #dadccf;border-radius:8px;background:#fffefa;color:var(--ink)}textarea{min-height:90px;resize:vertical}.login-card .primary{margin-top:9px;display:flex;justify-content:space-between}.login-card .muted{text-align:center}.village{height:240px;position:relative;max-width:420px;border-bottom:3px solid #e1dacb}.house{position:absolute;bottom:0;left:135px;width:130px;height:110px;background:#b95443;border-radius:4px}.roof{position:absolute;top:-63px;left:-20px;width:0;height:0;border-left:85px solid transparent;border-right:85px solid transparent;border-bottom:70px solid var(--green);filter:drop-shadow(0 -6px 0 #fff)}.window{position:absolute;left:20px;top:26px;width:35px;height:35px;background:#f9d990;color:#be8a39;text-align:center;line-height:35px;box-shadow:0 0 30px #f4ce7555;animation:glow 4s ease-in-out infinite}.door{width:28px;height:55px;background:#623e31;position:absolute;bottom:0;right:24px;border-radius:15px 15px 0 0}.tree{position:absolute;color:#235a4b;font-size:160px;line-height:1;bottom:-18px}.t1{left:8px}.t2{right:12px;font-size:200px}.parcel{position:absolute;bottom:0;font-size:42px;left:100px}.p2{left:260px;font-size:35px}.star{position:absolute;left:190px;top:0;color:var(--gold);font-size:50px;animation:glow 3s infinite}.hero{display:flex;align-items:center;justify-content:space-between;margin:22px 0 35px}.hero h1{font-size:60px}.hero-art{display:flex;align-items:center;color:var(--gold);font-size:40px;padding-right:40px}.hero-art span{font-size:125px;filter:drop-shadow(0 12px 12px #21422a15);animation:sway 5s ease-in-out infinite}nav{display:flex;gap:6px}nav button{border:0;background:transparent;font-size:13px}nav button.active{background:var(--green);color:white}.people{display:flex;gap:15px;overflow:auto;padding:6px 0 25px}.person{min-width:110px;display:flex;flex-direction:column;align-items:center;background:transparent;border:1px solid transparent}.person.active{border-color:#c6cfbf;background:#f0f1e7}.avatar{width:56px;height:56px;display:grid;place-items:center;border-radius:50%;background:#eee4d2;font-size:27px;margin-bottom:7px}.person:nth-child(2n) .avatar{background:#e4e9df}.person small{font-size:10px;color:var(--muted)}.section-heading{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #e1ddcf;padding-top:28px;margin-bottom:8px}.section-heading h2{margin-bottom:10px}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:23px}.card{background:#fffef9;border:1px solid #e6e0d3;border-radius:15px;overflow:hidden;animation:appear .4s both;transition:transform .2s,box-shadow .2s}.card:hover{transform:translateY(-5px);box-shadow:0 14px 25px #2443300b}.card.selected{outline:2px solid var(--green)}.gift-image{height:200px;background:#eceee4;display:flex;align-items:center;justify-content:center;position:relative}.gift-image img{width:100%;height:100%;object-fit:contain;padding:15px}.placeholder{font-size:65px;filter:drop-shadow(0 8px 10px #3331)}.card:nth-child(3n+2) .gift-image{background:#f4e8de}.card:nth-child(3n+3) .gift-image{background:#e9eaf0}.badge{position:absolute;left:13px;top:13px;background:#fffdf4eb;color:#817047;padding:5px 9px;border-radius:30px;font-size:10px}.card-body{padding:21px}.card-body h3{font-size:23px;overflow-wrap:anywhere}.card-body p{font-size:12px;color:#798176;white-space:pre-wrap;overflow-wrap:anywhere}.card-body .owner{font-size:10px;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;color:#a28754}.card-body a{color:var(--green);font-size:12px;display:inline-block;margin:5px 0 15px}.card-foot{display:flex;gap:8px;flex-wrap:wrap}.card-foot button{font-size:12px;padding:9px 12px}.card.locked{opacity:.68}.empty{grid-column:1/-1;padding:50px;text-align:center;border:1px dashed #d8d5c6;border-radius:18px}.empty span{font-size:45px}.empty p{color:var(--muted)}.basket{position:sticky;bottom:20px;margin:30px auto 0;max-width:650px;background:#fffdf5;box-shadow:0 5px 50px #172f3725;border:1px solid #ccd1bd;border-radius:16px;padding:16px 22px;display:flex;align-items:center;justify-content:space-between;gap:15px}.basket small{display:block;color:var(--muted)}footer{border-top:1px solid #e7e1d4;max-width:1240px;margin:auto;padding:25px 32px;color:#9b9d8e;font-size:11px;display:flex;justify-content:space-between}dialog{border:1px solid #ddd9cd;border-radius:20px;padding:34px;width:min(530px,94vw);max-height:90vh;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#183e3580;backdrop-filter:blur(4px)}.close{float:right;border:0;background:none;font-size:24px;padding:0 4px}dialog form{display:grid;gap:16px}.check{display:flex;gap:10px;align-items:center}.check input{width:auto;margin:0}#toast{position:fixed;bottom:30px;left:50%;transform:translateX(-50%);background:var(--green);color:white;padding:15px 25px;max-width:90vw;border-radius:12px;box-shadow:0 5px 30px #0002;z-index:10}.admin-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px;background:#fffdf6;border-bottom:1px solid #e5dece}.admin-row small{display:block}.admin-row button{font-size:11px;padding:7px}.admin-section{margin:30px 0}.snow{position:fixed;inset:0;pointer-events:none;z-index:-1;background-image:radial-gradient(2px 2px at 20% 10%,#d8d0bb 50%,transparent 60%),radial-gradient(2px 2px at 70% 40%,#d8d0bb 50%,transparent 60%),radial-gradient(2px 2px at 40% 80%,#d8d0bb 50%,transparent 60%);background-size:350px 350px;animation:snow 35s linear infinite}.letter .hero{background:#fffdf4;border:1px solid #e4ddca;border-radius:20px;padding:30px}.letter .hero h1{font-style:italic}.letter .hero-label{color:var(--red)}[hidden]{display:none!important}@keyframes snow{to{background-position:80px 350px}}@keyframes sway{50%{transform:rotate(3deg)}}@keyframes glow{50%{opacity:.55}}@keyframes appear{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}@media(max-width:850px){.login{gap:30px}.hero-art{padding:0}.hero-art span{font-size:90px}.cards{grid-template-columns:repeat(2,1fr)}h1,.hero h1{font-size:47px}.login-card{padding:25px}}@media(max-width:600px){header{padding:20px}.brand span{font-size:22px}.head-right{font-size:10px;gap:4px}main{padding:20px 18px 45px}.login{display:block;min-height:0}.intro{padding:20px 10px}.village{height:180px;transform:scale(.8);transform-origin:bottom left;margin-top:-20px}.login-card{margin-top:25px}.hero{margin:25px 0}.hero h1{font-size:39px}.hero-art{display:none}.hero p{font-size:13px}.people{gap:4px}.person{min-width:85px;padding:9px}.cards{grid-template-columns:1fr}.gift-image{height:220px}.section-heading{align-items:flex-start;gap:10px}.section-heading h2{font-size:26px}.section-heading .eyebrow{font-size:8px}#actions button{font-size:11px;padding:9px}.basket{padding:13px;font-size:12px}.basket button{font-size:11px}footer{display:block;padding:20px}footer span{display:block;margin-top:7px}.admin-row{flex-wrap:wrap}.letter .hero{padding:20px}}
.card-body .price{color:var(--green);font-size:20px;font-weight:700}.price small{font-size:10px;font-weight:400;color:var(--muted)}.adult-note{padding:10px;background:#f2efdf;border-left:2px solid #c29850;border-radius:4px}
nav{flex-wrap:wrap}

/* Village de Noël : scène immersive, atelier en papier et lumière chaude. */
:root{--green:#215447;--ink:#233d38;--red:#b33e3c;--gold:#d7b773;--paper:#faf6eb;--muted:#68766c}
body{background:#091b2a;isolation:isolate}.landscape{position:fixed;inset:0;z-index:-3;background:linear-gradient(90deg,#06182675,transparent 75%),url('/static/village.png') center top/cover no-repeat}.landscape:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#03172325 0%,#071e2220 45%,#05141dd9 100%)}
.aurora{position:fixed;top:-30%;left:15%;width:65%;height:80%;z-index:-2;pointer-events:none;background:radial-gradient(ellipse,#31cfa219,transparent 65%);filter:blur(45px);animation:aurora 14s ease-in-out infinite alternate}
header{color:#fbf3d7;border-bottom:1px solid #e9d6a72e;max-width:1420px;padding:25px 40px;position:relative}.brand{color:#f3d99f;font-size:30px}.brand span{font-size:29px}.head-right{color:#fff1d2}.head-right .quiet{color:#f9e8be;background:#0c243a90;border:1px solid #e6d7ad33;border-radius:30px;font-size:11px}.head-right .quiet:hover{background:#243e4c}.garland{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-around;pointer-events:none;z-index:4;border-top:2px solid #284c40}.garland i{width:6px;height:11px;background:#ffe8ae;box-shadow:0 0 12px 3px #ffc66b8c;border-radius:0 0 8px 8px;animation:bulb 3s infinite alternate}.garland i:nth-child(3n){background:#ffb797;animation-delay:1s}.garland i:nth-child(2n){height:16px;animation-delay:2s}
main{max-width:1320px;padding:25px 32px 70px}nav{display:flex;gap:8px;padding:9px;background:#07233890;border:1px solid #f7e3ac33;border-radius:40px;backdrop-filter:blur(15px);width:fit-content;margin:0 auto}nav button{color:#f0e5cd;border-radius:30px;padding:10px 20px}nav button:hover{background:#ffffff12}nav button.active{background:#f3dfb5;color:#253f38;box-shadow:0 3px 15px #0002}
.hero{min-height:350px;margin:20px 0 35px;color:#fff8e6;position:relative}.hero>div:first-child{max-width:700px}.hero .eyebrow{color:#f4d899;letter-spacing:3px}.hero h1{font-size:clamp(45px,6vw,78px);line-height:1.05;letter-spacing:-2px;text-shadow:0 3px 26px #021521c0;margin:20px 0}.hero h1 em{color:#f9d897}.hero p{color:#f5ead0;text-shadow:0 2px 8px #051726;font-size:15px;max-width:480px}.countdown{width:205px;min-height:205px;text-align:center;padding:23px 15px;color:#fbe4ae;background:linear-gradient(135deg,#102b37d9,#092132ab);border:1px solid #eacb7c80;border-radius:100px 100px 24px 24px;box-shadow:inset 0 0 0 6px #d8bc7220,0 15px 45px #0003;backdrop-filter:blur(8px);flex-shrink:0;margin:15px 30px 0 20px}.countdown span{display:block;font-size:8px;letter-spacing:1.6px}.countdown b{display:block;font:64px/1.2 Georgia,serif;margin:10px 0}.countdown small{display:block;font-size:8px;font-style:italic;margin-top:15px;color:#d2c5a3}
.workshop{background:#faf6ed;border-radius:26px;box-shadow:0 25px 90px #0005,inset 0 0 0 1px #fff;padding:32px;position:relative;border-top:4px solid #cfb177}.workshop-ribbon{text-align:center;font-size:9px;letter-spacing:3px;color:#9b773a;margin-top:-10px;margin-bottom:25px}.people{justify-content:center;gap:15px}.person{border-radius:18px;min-width:120px;padding:12px 16px;font-size:13px}.person.active{background:#edf0e5;border-color:#b9cbb8}.avatar{width:60px;height:60px;font-size:30px;box-shadow:inset 0 0 0 3px #ffffff90,0 4px 12px #37443110}.section-heading{padding-top:25px;margin-top:10px}.section-heading .eyebrow{color:#967645}.section-heading h2{font-size:34px}.cards{gap:22px}.card{border-radius:18px;background:#fffdf8;box-shadow:0 4px 15px #243b2c07}.card:hover{box-shadow:0 14px 30px #243b2c17;transform:translateY(-6px)}.gift-image{height:205px;background:radial-gradient(ellipse at 50% 40%,#fffdf3,#e5ebde);overflow:hidden}.gift-image:after{content:'✦';position:absolute;right:20px;bottom:14px;font-size:35px;color:#bd995740}.card:nth-child(3n+2) .gift-image{background:radial-gradient(ellipse at 50% 40%,#fff7ec,#efe0d6)}.card:nth-child(3n+3) .gift-image{background:radial-gradient(ellipse at 50% 40%,#fcf7ff,#e4dfed)}.placeholder{font-size:78px;animation:float 5s ease-in-out infinite}.card:nth-child(2n) .placeholder{animation-delay:-2s}.badge{color:#775622;border:1px solid #e0ca9a;font-size:10px;background:#fff9eae8}.card-body{padding:23px}.card-body h3{font-size:25px}.card-body p{color:#637168}.card-foot button{border-radius:9px}.primary{background:linear-gradient(135deg,#2c6653,#194438);border-color:#194438;box-shadow:0 3px 10px #173c3718}.primary:hover{background:linear-gradient(135deg,#3a7c66,#215447)}.primary:disabled{cursor:wait}.basket{background:#173e35;color:#fff6dd;border-color:#b99450;box-shadow:0 10px 35px #06291d55}.basket small{color:#d0dbc7}.basket .primary{background:#edd8aa;color:#1e4437;border-color:#edd8aa}.admin-row{border-radius:10px;margin-bottom:5px}.admin-section .muted{font-size:13px}footer{border-color:#d8c39533;color:#e1d4b7;padding-top:0;font-size:11px}footer span{color:#f3d699}
.login{min-height:calc(100vh - 230px);gap:80px;grid-template-columns:1.2fr .85fr}.intro{color:#fff5dd;align-self:center;padding-bottom:50px}.intro .eyebrow{color:#f0d6a1;font-size:9px}.intro h1{font-size:clamp(50px,6vw,85px);text-shadow:0 4px 25px #001a2ad9}.intro h1 em{color:#f7d596}.intro>p{color:#efe8d5;font-size:16px;text-shadow:0 2px 12px #001b2a}.welcome-stamp{display:inline-flex;gap:18px;align-items:center;border:1px solid #e5cf9b65;border-radius:30px;padding:10px 20px;color:#f3d69b;font-size:8px;letter-spacing:2px;margin-top:25px;background:#0b253963}.login-card{background:#fcf8eef7;border:1px solid #eddaad;border-radius:24px;box-shadow:0 20px 80px #0005;padding:38px;position:relative;border-top:4px solid #bc8c49}.login-card:after{content:'✦';position:absolute;right:30px;top:25px;color:#c8a05a;font-size:36px}.seal{background:#9b3534;color:#f7ddb0;box-shadow:0 0 0 4px #a44b3720;border:1px solid #e8b778}.login-card h2{font-size:31px}.login-card label{font-size:12px}.login-card input{background:#fffdf6}.login-card .eyebrow{font-size:9px}
.letter .hero{background:none;border:0;border-radius:0;padding:0}.letter .hero h1{font-style:normal}.letter .workshop{background:repeating-linear-gradient(#fbf7ec 0,#fbf7ec 31px,#c2b78a14 32px);border-top:4px solid #b4443f}.letter .workshop-ribbon{color:#a53e37}.letter .card{border:1px solid #dfd0ac}.letter #section-title{font-style:italic;font-size:38px}
.snow{position:fixed;inset:0;z-index:3;pointer-events:none;background:none;animation:none;overflow:hidden}.flake{position:absolute;top:-20px;width:4px;height:4px;background:#fff9e8;border-radius:50%;box-shadow:0 0 5px #fff6;opacity:.65;animation:fall 16s linear infinite}.flake:nth-child(3n){width:2px;height:2px;opacity:.45;animation-duration:23s}.flake:nth-child(4n){width:6px;height:6px;filter:blur(1px);animation-duration:12s}
.flake:nth-child(1){left:37%;animation-delay:-7s}
.flake:nth-child(2){left:74%;animation-delay:-14s}
.flake:nth-child(3){left:11%;animation-delay:-21s}
.flake:nth-child(4){left:48%;animation-delay:-4s}
.flake:nth-child(5){left:85%;animation-delay:-11s}
.flake:nth-child(6){left:22%;animation-delay:-18s}
.flake:nth-child(7){left:59%;animation-delay:-1s}
.flake:nth-child(8){left:96%;animation-delay:-8s}
.flake:nth-child(9){left:33%;animation-delay:-15s}
.flake:nth-child(10){left:70%;animation-delay:-22s}
.flake:nth-child(11){left:7%;animation-delay:-5s}
.flake:nth-child(12){left:44%;animation-delay:-12s}
.flake:nth-child(13){left:81%;animation-delay:-19s}
.flake:nth-child(14){left:18%;animation-delay:-2s}
.flake:nth-child(15){left:55%;animation-delay:-9s}
.flake:nth-child(16){left:92%;animation-delay:-16s}
.flake:nth-child(17){left:29%;animation-delay:-23s}
.flake:nth-child(18){left:66%;animation-delay:-6s}
.flake:nth-child(19){left:3%;animation-delay:-13s}
.flake:nth-child(20){left:40%;animation-delay:-20s}
.flake:nth-child(21){left:77%;animation-delay:-3s}
.flake:nth-child(22){left:14%;animation-delay:-10s}
.flake:nth-child(23){left:51%;animation-delay:-17s}
.flake:nth-child(24){left:88%;animation-delay:-0s}
.flake:nth-child(25){left:25%;animation-delay:-7s}
.flake:nth-child(26){left:62%;animation-delay:-14s}
.flake:nth-child(27){left:99%;animation-delay:-21s}
.flake:nth-child(28){left:36%;animation-delay:-4s}

.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}.motion-paused .snow{visibility:hidden}
@keyframes fall{to{transform:translate(75px,105vh)}}@keyframes float{50%{transform:translateY(-8px) rotate(3deg)}}@keyframes aurora{to{transform:translateX(15%) rotate(15deg);opacity:.5}}@keyframes bulb{to{opacity:.45;box-shadow:0 0 5px #ffc66b55}}
@media(max-width:1000px){.person{min-width:96px}.people{gap:5px}.workshop{padding:25px}.login{gap:35px}.countdown{margin-right:0;width:170px;min-height:180px}.countdown b{font-size:55px}}
@media(max-width:650px){header{padding:24px 18px 18px;gap:12px;align-items:flex-start}.brand span{font-size:23px}.brand{font-size:23px;gap:7px}.head-right{flex-wrap:wrap;justify-content:flex-end;gap:7px;max-width:155px}.head-right #identity{width:100%;text-align:right;font-size:10px}.head-right .quiet{padding:5px 8px;font-size:9px}main{padding:16px 13px 40px}.landscape{background-position:62% top}.hero{min-height:325px;align-items:flex-start;margin:25px 5px}.hero h1{font-size:47px;max-width:260px}.hero .eyebrow{font-size:8px;letter-spacing:1px}.hero p{max-width:240px;font-size:12px}.countdown{position:absolute;right:0;bottom:5px;width:105px;min-height:120px;padding:13px 8px;border-radius:55px 55px 15px 15px}.countdown b{font-size:36px;margin:4px 0}.countdown span{font-size:6px;letter-spacing:.8px}.countdown small{display:none}nav{max-width:100%;border-radius:18px;justify-content:center;gap:1px;padding:5px}nav button{font-size:10px;padding:8px 10px}.workshop{border-radius:20px;padding:22px 15px}.workshop-ribbon{font-size:7px;letter-spacing:2px;margin-bottom:18px}.people{justify-content:flex-start;margin:0 -5px}.person{min-width:87px;padding:9px}.avatar{width:49px;height:49px;font-size:25px}.section-heading h2{font-size:27px}.section-heading{padding-top:22px}.section-heading .eyebrow{font-size:7px;letter-spacing:1px}.gift-image{height:220px}.login{display:flex;flex-direction:column;gap:25px;min-height:0}.intro{padding:20px 10px 0;align-self:stretch}.intro h1{font-size:56px;letter-spacing:-2px}.intro>p{font-size:13px}.welcome-stamp{margin-top:12px;font-size:7px;padding:8px 14px}.login-card{width:100%;padding:28px;margin-top:0}.login-card h2{font-size:29px}.letter .hero{padding:0}.letter #section-title{font-size:31px}footer{padding:0 20px 30px}.snow .flake:nth-child(2n){display:none}.basket{bottom:10px}.basket b{font-size:12px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.snow{display:none}}
@media print{body{background:white;color:#193c33}.landscape,.snow,.aurora,.garland,header,nav,.hero,#people,.demo-bar,#actions,.card-foot,footer,#basket{display:none!important}main,.workshop{padding:0;box-shadow:none;border:none}.cards{display:block}.card{break-inside:avoid;margin-bottom:20px;box-shadow:none}.gift-image{height:100px}.card-body a:after{content:' (' attr(href) ')';font-size:10px}.card-body{padding:10px}*{animation:none!important}}
/* Un seul atelier enfants, avec des lettres et des boutons à leur échelle. */
.photo-preview{display:block;width:100%;height:180px;object-fit:contain;background:#eee9dc;border:1px dashed #d4bd86;border-radius:12px;margin-top:12px}.gift-image img{padding:10px;object-fit:contain}.gift-image:has(img):after{display:none}.funding{background:#eff3e9;border:1px solid #cdd9bd;border-radius:13px;padding:14px;margin:12px 0 16px;display:grid;gap:6px}.funding>span{font-size:12px;font-weight:750;color:#345b42}.funding strong{font-size:24px;color:#234d3d}.funding small{font-size:11px;font-weight:400;color:#5e7162}.funding>b{font-size:12px;color:#385d47}progress{display:block;appearance:none;width:100%;height:10px;border:0;border-radius:20px;overflow:hidden;background:#d9dfd0}progress::-webkit-progress-bar{background:#d9dfd0;border-radius:20px}progress::-webkit-progress-value{background:linear-gradient(90deg,#448964,#c3a15b);border-radius:20px}progress::-moz-progress-bar{background:#448964}.summary-mode{display:block}.summary-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.summary-stats>div{padding:20px;border-radius:15px;background:#ecf0e5;border:1px solid #d7decc;display:flex;gap:14px;align-items:center}.summary-stats>div:nth-child(2){background:#faf0db}.summary-stats>div:nth-child(3){background:#efe9e0}.summary-stats b{font:38px Georgia,serif}.summary-stats span{font-size:12px}.summary-search{margin:25px 0}.summary-search input{max-width:550px}.summary-section{margin-top:30px}.summary-section h3{font-size:25px}.summary-section h3>span{font:12px system-ui;background:#e5e9dc;border-radius:20px;padding:5px 10px}.table-scroll{overflow:auto;border:1px solid #e3dccb;border-radius:12px}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px;background:#fffdf7}th{background:#eaf0e5;color:#486049;text-transform:uppercase;letter-spacing:.8px;font-size:9px;white-space:nowrap}th,td{padding:13px 14px;border-bottom:1px solid #e8e5db;vertical-align:top}td:nth-child(2){width:30%;min-width:170px}td:nth-child(3){min-width:170px}td button{padding:6px 10px;font-size:10px}.who-label{font-weight:700;color:#28543c}td progress{margin:7px 0;height:7px}details{font-size:11px}summary{cursor:pointer;color:#42654c}details>div{padding:4px 0}.available{font-size:11px;background:#e8f0df;color:#4c6946;padding:4px 8px;border-radius:20px}.letter .workshop{background:radial-gradient(ellipse at top,#fffef9,#f8edda);border:2px solid #ecd6ab;border-top:7px solid #bd453e;box-shadow:0 20px 70px #0005}.letter .workshop-ribbon{font-size:11px;letter-spacing:2px}.letter .people{display:flex;justify-content:center;gap:22px;overflow:visible;padding:5px 0 30px}.letter .person{background:#fffdf7;min-width:160px;padding:18px 24px;border-radius:25px;border:2px solid #e5d4af;box-shadow:0 7px 0 #e9dcc1;transition:transform .2s,border-color .2s}.letter .person.active{background:#f2f6e8;border-color:#547756;transform:translateY(-4px);box-shadow:0 9px 0 #cbd7bd}.letter .person:nth-child(2){background:#fff2eb}.letter .person:nth-child(3){background:#f5effc}.letter .person b{font:700 27px Georgia,serif}.letter .person small{font-size:13px;color:#58654e;margin-top:7px}.letter .avatar{width:80px;height:80px;font-size:43px;margin-bottom:10px}.letter .hero p{font-size:20px;max-width:650px}.letter .hero h1{font-size:70px}.letter .section-heading{border-color:#decb9e;padding-top:25px}.letter #section-title{font-size:40px;font-style:normal}.letter .section-heading .eyebrow{font-size:11px}.letter .cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:25px}.letter .card{border-radius:23px;border:2px solid #e8d7b0;box-shadow:0 5px 0 #eadfc6}.letter .card-body{padding:26px}.letter .card-body h3{font-size:31px;line-height:1.2}.letter .card-body p{font-size:18px;line-height:1.65;color:#4e6153}.letter .card-body .owner{font-size:12px}.letter .gift-image{height:250px}.letter .placeholder{font-size:100px}.letter .badge{font-size:12px;padding:8px 14px}.letter .card-foot button{font-size:16px;padding:12px 18px}.letter #actions button{font-size:17px;padding:16px 22px;border-radius:15px}.child-welcome{grid-column:1/-1;text-align:center;padding:25px 20px 45px}.child-welcome>span{font-size:75px;display:inline-block;animation:float 5s ease-in-out infinite}.child-welcome h2{font-size:40px;color:#994139;margin-bottom:16px}.child-welcome p{font-size:21px;line-height:1.7;color:#57705b}.child-welcome>div{font-size:35px;letter-spacing:15px}.letter dialog label{font-size:16px}.letter dialog h2{font-size:35px}.letter dialog input,.letter dialog textarea,.letter dialog select{font-size:18px}.letter dialog .primary{font-size:18px}.letter .empty p{font-size:18px}.letter .empty h3{font-size:30px}
@media(max-width:750px){.letter .people{gap:9px;flex-wrap:wrap}.letter .person{min-width:95px;padding:12px 13px}.letter .person b{font-size:22px}.letter .person small{font-size:10px}.letter .avatar{width:57px;height:57px;font-size:32px}.letter .hero h1{font-size:48px}.letter .hero p{font-size:17px;max-width:270px}.letter .cards{grid-template-columns:1fr}.letter #section-title{font-size:30px}.letter .section-heading{flex-direction:column;gap:12px}.letter #actions{width:100%}.letter #actions button{width:100%;font-size:18px}.letter .card-body h3{font-size:29px}.child-welcome h2{font-size:32px}.child-welcome p{font-size:18px}.summary-stats{gap:7px}.summary-stats>div{flex-direction:column;gap:5px;text-align:center;padding:12px 6px}.summary-stats b{font-size:30px}.summary-stats span{font-size:10px}.letter .hero{min-height:330px}.demo-bar{flex-wrap:wrap}.table-scroll{margin:0 -6px}.letter .gift-image{height:235px}}
.letter .cards:has(>.card:only-child){grid-template-columns:minmax(0,680px);justify-content:center}.letter[data-person="2"] .workshop{border-top-color:#c8758c}.letter[data-person="3"] .workshop{border-top-color:#9176b0}.letter[data-person="2"] #section-title{color:#a24f67}.letter[data-person="3"] #section-title{color:#75508e}
.overview .hero{min-height:115px;margin:20px 0}.overview .hero h1{font-size:36px;line-height:1.1;margin:10px 0}.overview .hero .eyebrow,.overview .hero p,.overview .countdown{display:none}.overview .hero h1 br{display:none}.overview .hero h1 em:before{content:' '}.overview .workshop{padding-top:24px}.overview .section-heading{margin-top:0;padding-top:0;border:0}.overview .workshop-ribbon{display:none}.summary-section details[open] summary{margin:5px 0}.summary-section td details>div{font-size:12px}
.list-permissions{border:1px solid #d6d9c6;border-radius:12px;padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:5px 0}.list-permissions legend{font-size:13px;font-weight:700;padding:0 8px}.list-permissions .check{font-size:14px;gap:10px}.list-permissions input{width:19px;height:19px;accent-color:#286149}.list-permissions small{grid-column:1/-1;font-size:11px;color:#6d7869;margin-top:5px}
.local-modes{display:flex;justify-content:center;gap:10px;margin:0 auto 18px}.local-modes button{background:#102e3bd9;color:#fbeac7;border:1px solid #e2c58d70;border-radius:25px;padding:11px 22px}.local-modes button:hover{background:#214a48}.recipient-fixed{background:#edf1e5;padding:12px 16px;border-radius:12px;font-size:16px}.letter .recipient-fixed{font-size:19px}.demo-bar button{padding:6px 10px;font-size:11px}
.family-groups{display:flex;gap:12px;flex-wrap:wrap;padding:0 0 24px;border-bottom:1px solid #e3d8c0;margin-bottom:20px}.family-groups button{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-radius:14px;background:#fffdf7;border:1px solid #dcd6c3;padding:12px 18px}.family-groups button>span{font-size:23px}.family-groups button.active{background:#244f41;color:#fff5dc;border-color:#244f41}.family-groups small{width:100%;font-size:9px;text-align:right;font-weight:400}.family-note{display:flex;align-items:center;gap:20px;padding:20px;background:#eef1e7;border-radius:18px;margin:10px 0 25px}.family-note>span{font-size:50px}.family-note h3{margin:0 0 8px}.family-note p{font-size:13px;color:#63715e;margin:0}.own-people-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.own-person{border:1px solid #ded5bd;border-radius:20px;padding:25px;background:#fffdf7;text-align:center;box-shadow:0 4px 0 #e5ddc7}.own-person .avatar{margin:0 auto 12px}.own-person>p{font-size:12px;color:#78816d}.own-person>div{display:flex;justify-content:center;flex-wrap:wrap;gap:5px;margin-top:15px}.own-person>div button{font-size:11px;padding:7px 11px}@media(max-width:800px){.own-people-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:550px){.family-groups{gap:8px}.family-groups button{padding:8px 12px;font-size:11px}.own-people-grid{grid-template-columns:1fr}.family-note{align-items:flex-start;padding:15px;gap:12px}.family-note>span{font-size:30px}.family-note p{font-size:12px}}
.sharing-info{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 20px;margin-bottom:20px;background:#eef2e7;border:1px solid #d7dfc8;border-radius:16px}.sharing-info b{font-size:13px}.sharing-chips{display:flex;justify-content:center;flex-wrap:wrap;gap:6px;margin:12px 0 18px}.sharing-chips>span{font-size:10px;font-weight:600;line-height:1.4;border-radius:20px;padding:6px 10px;background:#e8efe0;color:#3f6042;border:1px solid #d0ddc3}.sharing-chips .chip-private{background:#f7eedb;color:#8c6b37;border-color:#e9d7b3}.sharing-chips .chip-owner{background:#e1eade;color:#2d593c}.sharing-info .sharing-chips{justify-content:flex-start;margin-bottom:0}.sharing-info button{font-size:12px;flex-shrink:0}.own-person .sharing-chips{min-height:50px;align-content:center}.own-person .primary{margin-top:8px}@media(max-width:650px){.sharing-info{display:block}.sharing-info button{margin-top:12px}.own-person .sharing-chips{min-height:0}}
.own-people-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.own-person{display:flex;flex-direction:column;align-items:center;padding:22px 16px}.own-person h3{min-height:54px;display:grid;place-items:center;font-size:24px;margin:7px 0}.own-person>.primary{margin-top:auto}.own-person:nth-child(4n+2){background:#fff7f0}.own-person:nth-child(4n+3){background:#f3f7ed}.own-person:nth-child(4n+4){background:#f7f1fb}.own-person>div:last-child{margin-top:15px}.own-person .sharing-chips{margin-bottom:20px}@media(max-width:1050px){.own-people-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:550px){.own-people-grid{grid-template-columns:1fr}.own-person h3{min-height:0}}
.avatar{overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.config-family-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0 25px}.config-family-tabs button{border-radius:16px;padding:16px 20px;background:#fffdf7}.config-family-tabs button.active{background:#265341;color:#fff1d2}.config-family-tabs small{display:block;margin-top:5px;font-size:10px}.config-family-panel{background:#fffdf7;border:1px solid #e3dac5;border-radius:20px;padding:24px}.config-family-controls{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.config-family-controls button{font-size:11px;padding:9px 12px}.config-family-controls .check{width:100%;margin-top:10px}.config-members{display:grid;grid-template-columns:1fr 1fr;gap:14px}.config-member{display:flex;align-items:center;gap:14px;background:#f4f1e5;border:1px solid #e2d8c1;border-radius:16px;padding:16px;flex-wrap:wrap}.config-member .avatar{width:66px;height:66px;margin:0;flex-shrink:0}.config-member h3{font-size:23px;margin:0 0 7px}.config-member>div{flex:1;min-width:130px}.config-member button{font-size:11px;padding:8px 12px}.member-type{display:inline-block;border-radius:20px;background:#e3eadc;color:#526547;font-size:10px;padding:5px 10px}.members-editor{border:1px solid #dcd2b9;border-radius:14px;padding:15px}.members-editor legend{font-size:13px;font-weight:700;padding:0 8px}.member-row{display:grid;grid-template-columns:1fr 145px 30px;gap:7px;align-items:center;margin-bottom:8px}.member-row input,.member-row select{margin:0;font-size:12px;padding:9px}.member-row button{padding:4px}.member-photo-edit{display:flex;align-items:center;gap:15px}.member-photo-edit .avatar{width:75px;height:75px;margin:0}.member-photo-edit button{font-size:12px}#avatar-canvas{width:100%;height:auto;max-width:500px;display:block;border-radius:16px;margin:15px 0;touch-action:none;cursor:crosshair}#avatar-zoom{padding:0;accent-color:#245c48}#avatar-save{margin-top:20px;width:100%}@media(max-width:750px){.config-members{grid-template-columns:1fr}.config-family-panel{padding:16px}.config-family-tabs button{padding:10px 13px;font-size:11px}.member-row{grid-template-columns:1fr 125px 25px}.config-family-panel .section-heading{flex-wrap:wrap}.member-photo-edit{flex-wrap:wrap}}

.member-row .check{margin:0;font-size:12px;gap:7px}.member-row input[type=checkbox]{width:18px;height:18px;padding:0;flex-shrink:0}.danger{color:#a83c37;border-color:#dfb9ae;background:#fff5ef}

#dialog pre{white-space:pre-wrap;overflow-wrap:anywhere;background:#f0eadc;padding:14px;border-radius:10px;font-size:12px}#dialog details{margin-top:20px}#dialog summary{cursor:pointer;font-weight:bold}

#avatar-canvas{cursor:grab}#avatar-canvas:active{cursor:grabbing}.crop-moves{display:flex;justify-content:center;gap:8px;flex-wrap:wrap;margin:12px 0}.crop-moves button{min-width:44px;min-height:44px}

.family-access{padding:20px;margin:16px 0;background:#f0f3eb;border-radius:18px}.email-chip{display:inline-block;padding:8px 12px;margin:4px 4px 4px 0;background:#fff;border:1px solid #d4dccd;border-radius:12px;overflow-wrap:anywhere}.family-email-row{display:flex;gap:12px;align-items:center}.family-email-row label{flex:1;min-width:0}.family-email-row input{width:100%}@media(max-width:600px){.family-email-row{align-items:flex-start;flex-direction:column;gap:0}.family-email-row label{width:100%}}
