/* Outils gratuits — complète guide.css + feature.css (mêmes jetons). */
.thero{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:40px; align-items:start; padding:14px 0 30px; }
.thero h1{ font-size:clamp(30px,4.4vw,44px); font-weight:800; line-height:1.1; margin:0 0 14px; text-wrap:balance; }
.thero .lead{ font-size:17.5px; margin:0 0 18px; max-width:56ch; }
.thero .mascot{ width:132px; height:auto; margin:4px 0 0; filter:drop-shadow(0 14px 18px rgba(16,40,31,.18)); }

form.tool{ background:var(--card); border:1px solid var(--line); border-radius:24px; padding:22px; box-shadow:var(--shadow); display:grid; gap:18px; }
form.tool .tt{ font-family:"Baloo 2","Inter",sans-serif; font-weight:800; font-size:20px; margin:0; }
.fields{ display:flex; flex-wrap:wrap; gap:12px; }
.fields label{ display:grid; gap:6px; font-size:13px; font-weight:700; color:var(--ink-soft); letter-spacing:.02em; }
.fields input{ width:120px; font:600 20px/1.2 "Inter",sans-serif; color:var(--ink); background:var(--ground); border:1px solid var(--line); border-radius:12px; padding:10px 12px; font-variant-numeric:tabular-nums; }
.fields input:focus-visible{ outline:3px solid var(--pine); outline-offset:1px; }

fieldset.seg{ border:0; margin:0; padding:0; }
fieldset.seg legend{ font-size:13px; font-weight:700; color:var(--ink-soft); letter-spacing:.02em; margin-bottom:8px; padding:0; }
.seg .opts{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.seg.two .opts{ grid-template-columns:repeat(2,minmax(0,1fr)); }
.seg label{ position:relative; cursor:pointer; }
.seg input{ position:absolute; opacity:0; inset:0; margin:0; cursor:pointer; }
.seg span{ display:grid; gap:2px; text-align:center; padding:10px 6px; border:1px solid var(--line); border-radius:12px; background:var(--ground); font-weight:700; font-size:14.5px; }
.seg span small{ font-weight:500; font-size:12px; color:var(--ink-soft); }
.seg input:checked + span{ background:var(--pine-tint); border-color:var(--pine); color:var(--pine-deep); }
.seg input:focus-visible + span{ outline:3px solid var(--pine); outline-offset:2px; }

.result{ background:var(--pine-tint); border-radius:16px; padding:16px 18px; min-height:92px; }
.result p{ margin:0; }
.r-big{ font-family:"Baloo 2","Inter",sans-serif; font-weight:800; font-size:clamp(34px,6vw,46px); line-height:1.05; color:var(--pine-deep); font-variant-numeric:tabular-nums; }
.r-approx{ font-family:"Inter",sans-serif; font-size:15px; font-weight:600; color:var(--ink-soft); }
.r-unit{ font-family:"Inter",sans-serif; font-size:16px; font-weight:700; color:var(--ink); }
.r-stage{ margin:10px 0 6px !important; }
.chip{ display:inline-block; font-size:13px; font-weight:700; letter-spacing:.03em; text-transform:uppercase; background:var(--card); color:var(--pine-deep); border-radius:999px; padding:4px 11px; }
.r-text{ font-size:14.5px; color:var(--ink); }
.r-hint{ font-size:14.5px; color:var(--ink-soft); }
.r-level{ margin:10px 0 8px !important; font-weight:700; font-size:15px; border-radius:10px; padding:9px 12px; }
.r-level.ok{ background:var(--card); color:var(--pine-deep); }
.r-level.warn{ background:#FFF4DC; color:#7A4E00; }
.r-level.alert{ background:#FDE7E5; color:#9B1C14; }
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .r-level.warn{ background:#3A2E12; color:#F6D58E; } :root:not([data-theme="light"]) .r-level.alert{ background:#3D1A17; color:#FFB4AC; } }
:root[data-theme="dark"] .r-level.warn{ background:#3A2E12; color:#F6D58E; }
:root[data-theme="dark"] .r-level.alert{ background:#3D1A17; color:#FFB4AC; }

.counter{ display:grid; justify-items:center; gap:12px; }
.tap{ width:min(220px,62vw); aspect-ratio:1; border-radius:50%; border:0; cursor:pointer; background:radial-gradient(circle at 35% 30%,var(--leaf),var(--pine-deep)); color:#fff; font:800 18px/1.2 "Baloo 2","Inter",sans-serif; box-shadow:var(--shadow), 0 18px 40px -16px rgba(11,122,90,.6); display:grid; place-content:center; gap:2px; touch-action:manipulation; -webkit-tap-highlight-color:transparent; }
.tap .count{ font-size:56px; line-height:1; font-variant-numeric:tabular-nums; }
.tap:disabled{ background:var(--line); color:var(--ink-soft); box-shadow:none; cursor:not-allowed; }
.tap:focus-visible{ outline:4px solid var(--pine); outline-offset:4px; }
.tap.pulse{ animation:tp .18s ease-out; }
@keyframes tp{ from{ transform:scale(.94); } to{ transform:scale(1); } }
.clock{ font:700 18px/1 "Inter",sans-serif; font-variant-numeric:tabular-nums; color:var(--ink-soft); min-height:18px; }
.start{ justify-self:center; }
button.btn{ font-family:inherit; }

.tsec .txt{ max-width:68ch; }
.tsec .txt h2{ font-size:clamp(22px,2.8vw,27px); margin:0 0 10px; }
.tsec .txt h2:not(:first-child){ margin-top:26px; }
.tsec .txt ul{ padding-left:20px; }
.tsec .txt li{ margin:6px 0; }

@media (max-width:820px){ .thero{ grid-template-columns:1fr; gap:22px; } .thero .mascot{ display:none; } }
@media (max-width:520px){ .seg .opts{ grid-template-columns:repeat(2,minmax(0,1fr)); } form.tool{ padding:18px; } }
@media (prefers-reduced-motion:reduce){ .tap.pulse{ animation:none; } }

/* Calendrier chiot / chaton */
.fields input.date{ width:auto; min-width:170px; font-size:17px; }
.cal{ overflow-x:auto; margin:10px 0; border:1px solid var(--line); border-radius:12px; background:var(--ground); }
.cal table{ width:100%; border-collapse:collapse; font-size:14px; font-variant-numeric:tabular-nums; }
.cal th, .cal td{ text-align:left; padding:8px 10px; border-bottom:1px solid var(--line); vertical-align:top; }
.cal th{ font-size:12.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-soft); }
.cal tr:last-child td{ border-bottom:0; }
.cal tr.past td{ color:var(--ink-soft); }
.cal small{ font-size:12px; }

/* Modèles imprimables : affiche animal perdu + carnet de santé (25/10/2026) */
.seg.three .opts{ grid-template-columns:repeat(3,minmax(0,1fr)); }
.fields.txt{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); }
.fields.txt label{ min-width:0; }
.fields.txt input, .fields.txt select{ width:100%; box-sizing:border-box; font-size:16px; font-weight:500; }
.fields.txt input[type=file]{ font-size:14px; padding:8px; }
.fields.txt label:nth-child(2){ grid-column:1 / -1; }
.checks{ display:grid; gap:8px; font-size:14.5px; }
.checks label{ display:flex; gap:10px; align-items:flex-start; cursor:pointer; }
.checks input{ width:18px; height:18px; margin:2px 0 0; accent-color:var(--pine); }
.pactions{ display:grid; gap:8px; justify-items:center; text-align:center; }
.phint{ font-size:13px; color:var(--ink-soft); }
.sheet{ background:#fff; color:#111; border:1px solid var(--line); box-shadow:var(--shadow); aspect-ratio:210/297; width:100%; max-width:520px; margin:0 auto; padding:5.5%; box-sizing:border-box; display:flex; flex-direction:column; gap:1.2%; font-family:Arial,Helvetica,sans-serif; overflow:hidden; container-type:inline-size; }
.sheet p{ margin:0; }
.poster .pband{ background:#C8102E; color:#fff; display:flex; justify-content:space-between; align-items:baseline; padding:2% 4%; border-radius:1.5cqw; }
.poster .pword{ font-weight:900; font-size:17cqw; line-height:1; letter-spacing:.02em; }
.poster .psp{ font-weight:800; font-size:7cqw; }
.poster .pphoto{ flex:1 1 auto; min-height:0; border:0.6cqw dashed #999; border-radius:1.5cqw; display:grid; place-items:center; overflow:hidden; background:#f4f4f4; position:relative; }
.poster .pphoto img{ width:100%; height:100%; object-fit:contain; position:absolute; inset:0; background:#fff; }
.poster .pph{ color:#777; font-size:3.4cqw; text-align:center; padding:4%; }
.poster .pname{ font-weight:900; font-size:11cqw; line-height:1.05; text-align:center; margin-top:1%; }
.poster .pdesc{ font-size:4.2cqw; line-height:1.3; text-align:center; }
.poster .pwhere{ font-weight:700; font-size:4.4cqw; text-align:center; }
.poster .pcall{ font-size:4cqw; text-align:center; margin-top:auto; }
.poster .ptel{ font-weight:900; font-size:9.5cqw; line-height:1.1; text-align:center; color:#C8102E; font-variant-numeric:tabular-nums; }
.poster .pnotes{ font-size:3.6cqw; line-height:1.35; text-align:center; }
.poster .pfoot{ font-size:2.6cqw; color:#666; text-align:center; border-top:1px solid #ddd; padding-top:1.5%; }
.sheets{ display:grid; gap:18px; }
.bpage{ gap:2%; font-size:3cqw; }
.bpage header, .bpage footer{ display:block; position:static; padding:0; margin:0; background:none; border:0; box-shadow:none; height:auto; }
.bpage header .bk{ font-size:2.6cqw; color:#0B7A5A; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.bpage h3{ margin:1% 0 0; font-size:7cqw; font-weight:900; font-family:inherit; color:#111; }
.bpage .bsub{ color:#555; font-size:2.9cqw; margin-top:1%; }
.bpage table{ width:100%; border-collapse:collapse; flex:1 1 auto; }
.bpage th{ text-align:left; font-size:2.6cqw; text-transform:uppercase; letter-spacing:.04em; color:#444; border-bottom:2px solid #333; padding:1% 1.5%; }
.bpage td{ border-bottom:1px solid #bbb; height:4.6cqw; padding:0 1.5%; }
.bpage td:not(:last-child), .bpage th:not(:last-child){ border-right:1px solid #ddd; }
.bpage footer{ margin-top:auto !important; font-size:2.3cqw; color:#777; border-top:1px solid #ddd; padding-top:1.5%; }
.bid{ display:grid; grid-template-columns:1fr 1fr; gap:2% 4%; margin:2% 0 0; }
.bid div{ border-bottom:1px solid #bbb; padding:1% 0; }
.bid div:nth-child(7), .bid div:nth-child(8), .bid div:nth-child(9){ grid-column:1 / -1; }
.bid dt{ font-size:2.5cqw; text-transform:uppercase; letter-spacing:.04em; color:#555; }
.bid dd{ margin:0; font-size:3.6cqw; font-weight:700; min-height:1.4em; }
.bphoto{ width:30%; aspect-ratio:1; border:0.5cqw dashed #999; display:grid; place-items:center; color:#888; margin:3% 0 0; border-radius:1.5cqw; }
.bpage h4{ margin:3% 0 0; font-size:3.4cqw; font-family:inherit; }
.blines{ flex:1 1 auto; background:repeating-linear-gradient(to bottom, transparent 0, transparent calc(5.5cqw - 1px), #bbb calc(5.5cqw - 1px), #bbb 5.5cqw); min-height:20cqw; }
@media (max-width:520px){ .fields.txt{ grid-template-columns:1fr; } }
@media print{
  @page{ size:A4; margin:10mm; }
  body:has(form.printable.printing) > *:not(main), body:has(form.printable.printing) main > *:not(.thero), body:has(form.printable.printing) .thero > div:first-child, form.printable.printing > *:not(.sheet):not(.sheets){ display:none !important; }
  body:has(form.printable.printing){ background:#fff; }
  body:has(form.printable.printing) main, body:has(form.printable.printing) .thero{ display:block; padding:0; margin:0; max-width:none; }
  form.printable.printing{ display:block; border:0; box-shadow:none; padding:0; background:none; }
  .printing .sheet{ max-width:none; width:190mm; height:277mm; aspect-ratio:auto; border:0; box-shadow:none; margin:0; padding:8mm; break-after:page; page-break-after:always; }
  .printing .sheets{ display:block; }
  .printing .sheet:last-child{ break-after:auto; page-break-after:auto; }
  .poster .pband, .poster .ptel{ -webkit-print-color-adjust:exact; print-color-adjust:exact; }
}
