:root{--bg:#080c10;--bg2:#0d1419;--panel:rgba(17,25,31,.82);--panel2:rgba(255,255,255,.055);--text:#f6f7f8;--muted:#aab2bb;--line:rgba(255,255,255,.13);--red:#e3262e;--red2:#9d1417;--shadow:0 24px 80px rgba(0,0,0,.45);--radius:26px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,Segoe UI,Roboto,Arial,sans-serif;background:radial-gradient(circle at top left,rgba(150,20,25,.34),transparent 38%),linear-gradient(140deg,var(--bg),#070b0f 62%,#10070a);color:var(--text);line-height:1.55}body.light{--bg:#f7f7f7;--bg2:#fff;--panel:rgba(255,255,255,.86);--panel2:rgba(0,0,0,.045);--text:#16191d;--muted:#5f6873;--line:rgba(0,0,0,.13);background:linear-gradient(145deg,#fff,#f3f4f6)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.container{width:min(1180px,calc(100% - 40px));margin:auto}.site-header{position:sticky;top:0;z-index:30;height:78px;display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100vw - 1180px)/2));background:rgba(5,8,10,.76);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}body.light .site-header{background:rgba(255,255,255,.82)}.brand{display:flex;align-items:center;gap:14px}.brand img{width:54px;height:54px;border-radius:18px;object-fit:cover}.brand strong{display:block;font-size:21px}.brand small{display:block;color:var(--muted)}.nav{display:flex;align-items:center;gap:26px;font-weight:700}.nav a{color:var(--text)}.nav a:hover{color:var(--red)}.nav-cta,.btn.primary{background:linear-gradient(135deg,var(--red),var(--red2));color:#fff!important;border:0;box-shadow:0 14px 34px rgba(227,38,46,.28)}.nav-cta{padding:13px 19px;border-radius:12px}.theme-toggle,.menu-btn{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:12px;padding:12px 14px;font-weight:900;cursor:pointer}.menu-btn{display:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:50px;padding:14px 22px;border-radius:14px;font-weight:900;border:1px solid var(--line);cursor:pointer}.btn.ghost{background:var(--panel2);color:var(--text)}.hero{position:relative;min-height:780px;display:flex;align-items:center;overflow:hidden}.hero-bg{position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,10,13,.65),rgba(7,10,13,.92)),url('/static/assets/cartepro-fond.png') center/cover;opacity:.42}.hero-grid{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}.eyebrow{color:#ff5258;text-transform:uppercase;font-weight:900;letter-spacing:.12em;font-size:13px}.h1,h1{font-size:clamp(42px,6vw,76px);line-height:.98;margin:10px 0 22px}h2{font-size:clamp(30px,4vw,52px);line-height:1.05;margin:0 0 18px}h3{margin:0 0 14px;font-size:24px}.lead{font-size:20px;color:var(--muted);max-width:650px}.hero-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px}.stats{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}.stats span{background:var(--panel2);border:1px solid var(--line);border-radius:999px;padding:10px 14px;color:var(--muted)}.stats b{color:#fff}.hero-visual{position:relative}.hero-main-img{border-radius:32px;box-shadow:var(--shadow);border:1px solid var(--line);transform:rotate(-1deg)}.glass-card{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);backdrop-filter:blur(18px);border-radius:var(--radius)}.contact-mini{position:absolute;left:-36px;bottom:-44px;padding:14px;width:260px}.contact-mini img{border-radius:14px;margin-bottom:12px}.contact-mini strong,.contact-mini span,.contact-mini a{display:block}.contact-mini span{color:var(--muted)}.contact-mini a{color:#ff666b;font-weight:800}.section{padding:100px 0}.section-title{max-width:820px;margin-bottom:34px}.section-title p:not(.eyebrow){color:var(--muted);font-size:18px}.service-grid{display:grid;grid-template-columns:1.3fr 1fr 1fr;gap:18px}.service-card{background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:28px;box-shadow:var(--shadow)}.service-card.big{grid-row:span 2}.service-card .icon{width:48px;height:48px;border-radius:16px;background:rgba(227,38,46,.14);color:#ff555b;display:grid;place-items:center;font-size:25px;margin-bottom:16px}.service-card p{color:var(--muted)}.tag{color:#ff555b!important;font-weight:900;text-transform:uppercase;font-size:12px}.visual-band{background:linear-gradient(180deg,transparent,rgba(255,255,255,.035),transparent)}.two-cols{display:grid;grid-template-columns:1fr 1fr;gap:44px;align-items:center}.visual-panel img{border-radius:28px;border:1px solid var(--line);box-shadow:var(--shadow)}.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}.chips span{border:1px solid var(--line);background:var(--panel2);padding:10px 13px;border-radius:999px;color:var(--muted)}.portfolio-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:34px}.portfolio-card{position:relative;min-height:260px;border-radius:24px;overflow:hidden;border:1px solid var(--line);box-shadow:var(--shadow)}.portfolio-card img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}.portfolio-card:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent,rgba(0,0,0,.78))}.portfolio-card div{position:absolute;z-index:2;left:22px;right:22px;bottom:22px}.portfolio-card b,.portfolio-card span{display:block}.portfolio-card b{font-size:23px}.portfolio-card span{color:#d2d6db}.plaquette-box{display:grid;grid-template-columns:.9fr 1.1fr;gap:36px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:32px;padding:36px;box-shadow:var(--shadow)}.plaquette-box img{border-radius:24px}.contact-section{padding-top:40px}.contact-grid{display:grid;grid-template-columns:.92fr 1.08fr;gap:40px;align-items:start}.contact-help>p:not(.eyebrow){color:var(--muted);font-size:18px}.benefits{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:28px 0}.benefits span,.prepare-grid span{background:var(--panel);border:1px solid var(--line);border-radius:18px;padding:16px}.benefits b,.benefits small,.prepare-grid b,.prepare-grid small{display:block}.benefits small,.prepare-grid small{color:var(--muted)}.prepare-card{background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:24px}.prepare-card p{color:var(--muted)}.prepare-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.quote-card{background:var(--panel);border:1px solid var(--line);border-radius:28px;padding:30px;box-shadow:var(--shadow);position:sticky;top:100px}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;border-bottom:1px solid var(--line);padding-bottom:22px;margin-bottom:24px}.steps span{display:grid;place-items:center;color:var(--muted);position:relative}.steps span:before{content:"";width:38px;height:38px;border-radius:50%;border:1px solid var(--line);display:block;margin-bottom:8px}.steps span.on:before{background:linear-gradient(135deg,var(--red),var(--red2));border-color:transparent}.steps span::after{content:attr(class);position:absolute;top:7px;font-weight:900;color:transparent}.steps span.on{color:var(--text)}.steps small{display:block;font-size:12px}.form-step{display:none}.form-step.is-active{display:block}input,select,textarea{width:100%;min-height:52px;border-radius:14px;border:1px solid var(--line);background:rgba(255,255,255,.055);color:var(--text);padding:14px 16px;font:inherit;margin-bottom:12px}select option{background:#111820;color:#fff}body.light select option{background:#fff;color:#111}textarea{height:140px;resize:vertical}.choice-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:18px}.choice-grid input{display:none}.choice-grid span{display:block;height:100%;border:1px solid var(--line);border-radius:18px;padding:18px;background:var(--panel2);cursor:pointer}.choice-grid input:checked+span{border-color:var(--red);box-shadow:0 0 0 1px var(--red) inset;background:rgba(227,38,46,.12)}.choice-grid b,.choice-grid small{display:block}.choice-grid small{color:var(--muted)}.drop-zone{border:1px dashed var(--line);background:var(--panel2);border-radius:18px;padding:20px;margin:10px 0 12px}.drop-zone input{position:absolute;opacity:0;pointer-events:none}.drop-zone label{display:block;cursor:pointer}.drop-zone small{display:block;color:var(--muted);margin-top:5px}.drop-zone.drag{border-color:var(--red);background:rgba(227,38,46,.1)}#fileName{margin-top:12px;color:var(--muted);font-size:14px;white-space:pre-line}.count{color:var(--muted);font-size:13px;text-align:right;margin-top:-6px;margin-bottom:10px}.form-actions{display:flex;gap:12px}.form-actions .btn.primary{flex:1}.floating-card{position:fixed;right:0;bottom:150px;z-index:20;writing-mode:vertical-rl;background:linear-gradient(135deg,var(--red),var(--red2));color:#fff;padding:18px 12px;border-radius:16px 0 0 16px;font-weight:900;box-shadow:var(--shadow)}.floating-ac{position:fixed;right:32px;bottom:42px;z-index:20;width:70px;height:70px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--red),var(--red2));color:#fff;font-weight:900;font-size:22px;box-shadow:var(--shadow)}.footer{padding:38px 0;background:var(--panel);border-top:1px solid var(--line)}.footer .container{display:flex;gap:16px;align-items:center;justify-content:space-between;color:var(--muted)}.footer strong{color:var(--text)}.reveal{opacity:0;transform:translateY(22px);transition:.7s ease}.reveal.in{opacity:1;transform:none}.merci-page,.error-page,.cardpro-page{min-height:100vh;display:grid;place-items:center;padding:34px;background:radial-gradient(circle at top left,rgba(227,38,46,.22),transparent 35%),linear-gradient(135deg,var(--bg),#14090c)}.merci-card,.error-card,.cardpro-wrap{width:min(900px,100%);text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:34px;padding:44px;box-shadow:var(--shadow)}.merci-icon{width:80px;height:80px;margin:0 auto 22px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,var(--red),var(--red2));font-size:46px}.cardpro-images{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:24px 0}.cardpro-images img{border-radius:20px;border:1px solid var(--line);box-shadow:var(--shadow)}.cardpro-actions{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}.qr{width:160px;margin:20px auto;border-radius:18px;background:#fff;padding:8px}@media (max-width:900px){.menu-btn{display:block}.nav{position:fixed;top:78px;left:0;right:0;display:none;flex-direction:column;align-items:stretch;padding:20px;background:var(--bg2);border-bottom:1px solid var(--line)}.nav.open{display:flex}.hero{min-height:auto;padding:70px 0}.hero-grid,.two-cols,.plaquette-box,.contact-grid{grid-template-columns:1fr}.service-grid,.portfolio-grid{grid-template-columns:1fr}.benefits{grid-template-columns:1fr 1fr}.quote-card{position:relative;top:auto}.hero-visual{margin-top:20px}.contact-mini{position:relative;left:auto;bottom:auto;margin-top:14px;width:100%}.footer .container{display:grid}.floating-card{display:none}}@media (max-width:560px){.container{width:min(100% - 28px,1180px)}.site-header{height:68px}.brand img{width:46px;height:46px}.brand strong{font-size:17px}.brand small{font-size:12px}.nav{top:68px}.hero{padding:48px 0}.hero-main-img,.visual-panel img,.plaquette-box img{border-radius:20px}h1{font-size:42px}.lead{font-size:17px}.section{padding:62px 0}.choice-grid,.benefits,.prepare-grid,.cardpro-images{grid-template-columns:1fr}.quote-card,.prepare-card,.plaquette-box{padding:20px;border-radius:24px}.steps small{font-size:10px}.steps span:before{width:32px;height:32px}.form-actions{flex-direction:column}.floating-ac{width:56px;height:56px;right:18px;bottom:22px}.contact-help{overflow:hidden}.drop-zone{padding:16px}input,select,textarea{font-size:16px}.btn{width:100%}.hero-actions .btn{width:100%}}

/* Carte professionnelle numérique - reprise du style CartePro actuel */
.floating-theme{position:fixed;right:22px;top:22px;z-index:1000;background:rgba(255,255,255,.08);backdrop-filter:blur(12px)}
.merci-body{min-height:100vh;background:var(--bg)}
.merci-text{max-width:650px;margin:0 auto;color:var(--muted);font-size:18px}.merci-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin-top:28px}.merci-actions .secondary{background:rgba(255,255,255,.08);color:var(--text);border-color:var(--line)}
.business-page{min-height:100vh;background:linear-gradient(135deg,rgba(0,0,0,.72),rgba(42,15,15,.82)),url('/static/assets/cartepro-fond.png') center/cover fixed no-repeat;color:#fff}.business-wrap{min-height:100vh;display:grid;place-items:center;padding:96px 24px 42px}.business-card-pro{position:relative;width:min(760px,100%);text-align:center;padding:46px;border-radius:32px;background:rgba(15,16,18,.76);border:1px solid rgba(255,255,255,.14);box-shadow:0 35px 95px rgba(0,0,0,.46);backdrop-filter:blur(18px);overflow:hidden}.business-glow{position:absolute;right:-140px;bottom:-170px;width:360px;height:360px;border-radius:50%;background:radial-gradient(circle,rgba(226,59,59,.38),transparent 66%)}.business-logo-box{position:relative;margin:0 auto 24px;width:min(420px,100%);border-radius:24px;overflow:hidden;border:1px solid rgba(255,255,255,.12);box-shadow:0 18px 55px rgba(0,0,0,.28)}.business-logo-box img{width:100%;display:block}.business-card-pro .eyebrow{position:relative}.business-card-pro h1{position:relative;font-size:clamp(38px,6vw,68px);letter-spacing:-.06em;line-height:.95;margin:0;color:#fff}.business-card-pro h2{position:relative;color:#ff4b45;margin:10px 0 24px}.business-lines{position:relative;display:grid;gap:12px;margin:26px auto;max-width:560px}.business-lines a{padding:15px 18px;border-radius:18px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.11);color:#fff;font-weight:800;text-decoration:none}.business-qr{position:relative;display:flex;align-items:center;justify-content:center;gap:16px;margin:26px auto;color:#dfe3e8;font-weight:800}.business-qr img{width:96px;border-radius:18px;background:#fff;padding:8px}.business-actions{position:relative;display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.business-actions .secondary{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.18)}
@media(max-width:760px){.floating-theme{right:14px;top:14px}.merci-page{padding:18px}.merci-card{padding:44px 22px;border-radius:24px}.business-wrap{padding:76px 16px 26px}.business-card-pro{padding:28px 18px;border-radius:24px}.business-qr{display:grid;text-align:center}.business-actions .btn,.merci-actions .btn{width:100%}}


/* Portfolio + Admin */
.portfolio-hero{position:relative;padding:120px 0 70px;overflow:hidden}
.portfolio-hero:before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 18% 0,rgba(227,38,46,.32),transparent 36%),linear-gradient(120deg,rgba(255,255,255,.05),transparent);pointer-events:none}
.portfolio-hero .container{position:relative}
.portfolio-section{padding-top:45px}
.portfolio-filters{display:grid;grid-template-columns:1fr 260px auto auto;gap:14px;margin-bottom:34px;background:var(--panel);border:1px solid var(--line);border-radius:24px;padding:18px;box-shadow:var(--shadow)}
.portfolio-filters input,.portfolio-filters select,.admin-form input,.admin-form textarea,.admin-login input{width:100%;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:14px;padding:15px 16px;font:inherit;outline:none}
.portfolio-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.portfolio-card{display:block;background:var(--panel);border:1px solid var(--line);border-radius:26px;overflow:hidden;box-shadow:var(--shadow);transition:.25s ease}
.portfolio-card:hover{transform:translateY(-6px);border-color:rgba(227,38,46,.55)}
.portfolio-cover{position:relative;height:260px;background:var(--panel2);overflow:hidden}
.portfolio-cover img{width:100%;height:100%;object-fit:cover;transition:.35s ease}
.portfolio-card:hover .portfolio-cover img{transform:scale(1.045)}
.portfolio-badge{position:absolute;top:14px;left:14px;background:linear-gradient(135deg,var(--red),var(--red2));color:#fff;padding:8px 12px;border-radius:999px;font-weight:900;font-size:12px}
.portfolio-card-content{padding:22px}
.portfolio-card-content .tag,.service-card .tag{display:inline-block;color:#ff666b;font-weight:900;text-transform:uppercase;letter-spacing:.08em;font-size:12px;margin-bottom:10px}
.portfolio-card-content p{color:var(--muted);margin-bottom:0}
.portfolio-placeholder{height:100%;min-height:220px;display:flex;align-items:center;justify-content:center;border-radius:24px;background:linear-gradient(135deg,rgba(227,38,46,.2),rgba(255,255,255,.06));font-size:54px;font-weight:1000;color:#fff}
.empty-state{background:var(--panel);border:1px solid var(--line);border-radius:26px;padding:36px;box-shadow:var(--shadow);text-align:center}
.empty-state p{color:var(--muted)}

.portfolio-detail{padding:110px 0 70px}
.detail-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:34px;align-items:start}
.detail-main-photo{width:100%;height:620px;object-fit:cover;border-radius:32px;border:1px solid var(--line);box-shadow:var(--shadow);background:var(--panel2)}
.thumbs{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}
.thumb{width:92px;height:76px;border:2px solid transparent;border-radius:16px;padding:0;background:transparent;overflow:hidden;cursor:pointer;opacity:.68}
.thumb.active,.thumb:hover{border-color:var(--red);opacity:1}
.thumb img{width:100%;height:100%;object-fit:cover}
.detail-content{padding:34px;position:sticky;top:100px}
.back-link{display:inline-block;color:#ff666b;font-weight:900;margin-bottom:18px}
.detail-content h1{font-size:clamp(36px,4vw,62px)}
.materials{color:var(--muted);background:var(--panel2);border:1px solid var(--line);border-radius:16px;padding:14px 16px}
.detail-description{white-space:pre-line;color:var(--muted);font-size:18px}

.admin-login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.admin-login{width:min(440px,100%);padding:34px}
.admin-login img{width:82px;height:82px;border-radius:24px;margin-bottom:18px}
.admin-login h1{font-size:46px}
.flash{border:1px solid var(--line);border-radius:14px;padding:12px 14px;margin:12px 0;background:var(--panel2);font-weight:800}
.flash.error{border-color:rgba(227,38,46,.55);color:#ff777b}
.flash.success{border-color:rgba(61,220,151,.45);color:#8ff0c5}
.admin-section{padding-top:80px}
.admin-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:24px}
.admin-table{padding:12px}
.admin-row{display:grid;grid-template-columns:84px 1fr auto;gap:18px;align-items:center;padding:14px;border-bottom:1px solid var(--line)}
.admin-row:last-child{border-bottom:0}
.admin-thumb{width:84px;height:68px;border-radius:16px;background:var(--panel2);display:flex;align-items:center;justify-content:center;font-weight:1000;color:#ff666b;overflow:hidden}
.admin-thumb img{width:100%;height:100%;object-fit:cover}
.admin-row span{display:block;color:var(--muted)}
.admin-actions{display:flex;gap:10px;align-items:center}
.admin-actions form{margin:0}
.btn.danger{background:#7f1519;color:#fff;border-color:rgba(255,255,255,.12)}
.narrow{width:min(860px,calc(100% - 40px))}
.admin-form{padding:28px}
.admin-form label{display:block;margin:18px 0 8px;font-weight:900}
.admin-form textarea{resize:vertical}
.checkbox-line{display:flex!important;align-items:center;gap:10px}
.checkbox-line input{width:auto}
.help{color:var(--muted);font-size:14px}
.admin-photo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0}
.admin-photo{background:var(--panel2);border:1px solid var(--line);border-radius:18px;padding:10px}
.admin-photo img{width:100%;height:150px;object-fit:cover;border-radius:12px;margin-bottom:10px}

@media(max-width:900px){
  .portfolio-filters{grid-template-columns:1fr}
  .portfolio-grid{grid-template-columns:1fr 1fr}
  .detail-grid{grid-template-columns:1fr}
  .detail-content{position:static}
  .detail-main-photo{height:420px}
  .admin-row{grid-template-columns:64px 1fr}
  .admin-actions{grid-column:1/-1}
}
@media(max-width:620px){
  .portfolio-grid{grid-template-columns:1fr}
  .portfolio-cover{height:230px}
  .admin-title{align-items:flex-start;flex-direction:column}
  .admin-photo-grid{grid-template-columns:1fr}
}

/* Admin settings */
.container.narrow { max-width: 760px; }
.form-separator { height: 1px; background: rgba(255,255,255,.12); margin: 18px 0; }
.form-help { color: var(--muted, #9ca3af); font-size: .95rem; line-height: 1.5; }
.required { color: #ff8a3d; }
