/* Finote — portail parents et élèves (ADR-009) : mobile d'abord (320 px), polices système, contraste AA, cibles de 48 px.
   Style « application » : bandeau en dégradé avec l'enfant suivi et des onglets, cartes blanches sur fond lavande,
   tuiles pastel (bleu, violet, vert, ambre), notes colorées selon le niveau.
   Habillage du thème du site (layout.html.twig, ThemeCatalog::identity) : --b couleur principale, --bl la même assombrie
   au contraste AA (texte, bandeau), --bt encre sur --b, --acc couleur d'accent, --pbg fond du thème, --font-head et
   --font-body polices du thème (servies par le site) ; [data-family] et [data-theme] pour les touches propres. */
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body.pt{--ink:#111827;--ink-2:#374151;--muted:#5b6475;--line:#e8eaf0;--soft:color-mix(in srgb,var(--bl,#4338ca) 8%,#fff);--soft-2:color-mix(in srgb,var(--bl,#4338ca) 15%,#fff);
  --shadow:0 1px 2px rgb(16 24 40 / .04),0 6px 18px -8px rgb(16 24 40 / .14);
  margin:0;font:16px/1.5 var(--font-body,ui-sans-serif),system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink);background:color-mix(in srgb,var(--bl,#4338ca) 5%,var(--pbg,#f6f7fb))}
.pt h1,.pt h2,.pt h3,.pt-brand,.pt-child__name b,.pt-big,.pt-tabs a,.pt-btn,.pt-hero__what{font-family:var(--font-head,inherit),system-ui,sans-serif}
.pt a{color:var(--bl,#1d4ed8)}
.pt h1{font-size:1.45rem;line-height:1.25;margin:.4rem 0 1rem;color:var(--bl,#312e81);font-weight:800;letter-spacing:-.01em}
.pt h2{font-size:1.08rem;margin:1.4rem 0 .6rem;font-weight:700}
.fi{width:1.15em;height:1.15em;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.18em}
/* en-tête */
.pt-top{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 16px;background:#fff;color:var(--ink);min-height:58px;border-bottom:3px solid var(--acc,var(--line))}
.pt-top__actions{display:flex;align-items:center;gap:8px;flex:none}
.pt-site{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;font-size:.9rem;font-weight:600;color:var(--ink-2)!important}
.pt-site:hover{background:var(--soft)}
@media (max-width:520px){.pt-site span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}}
.pt-top a{color:var(--ink);text-decoration:none}
.pt-brand{display:flex;align-items:center;gap:10px;font-weight:700;min-width:0}
.pt-brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pt-brand img{border-radius:10px;background:#fff;flex:none;box-shadow:0 0 0 1px var(--line)}
.pt-brand__mark{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--bl,#4338ca);color:#fff;flex:none;overflow:visible!important}
.pt-lang{display:inline-flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;background:var(--soft);font-size:.9rem;font-weight:600;flex:none;color:var(--bl,#312e81)!important}
/* bandeau : enfant suivi + onglets */
.pt-banner{background:linear-gradient(135deg,var(--bl,#4338ca) 0%,color-mix(in srgb,var(--bl,#4338ca) 72%,var(--acc,#1e1b4b)) 100%);color:#fff;padding:16px 16px 0}
.pt-child{display:flex;align-items:center;gap:12px;max-width:860px;margin:0 auto 14px;flex-wrap:wrap}
.pt-child__avatar{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;background:rgb(255 255 255 / .18);border:2px solid rgb(255 255 255 / .55);font-weight:800;flex:none}
.pt-child__name{margin:0;flex:1 1 auto;min-width:0;display:flex;flex-direction:column;line-height:1.25}
.pt-child__name b{font-size:1.15rem}
.pt-child__name span{color:rgb(255 255 255 / .82);font-size:.92rem}
.pt .pt-child__switch{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:999px;background:rgb(255 255 255 / .16);color:#fff;text-decoration:none;font-weight:600;font-size:.9rem}
.pt-tabs{display:flex;gap:4px;overflow-x:auto;scrollbar-width:none;max-width:860px;margin:0 auto}
.pt-tabs::-webkit-scrollbar{display:none}
.pt .pt-tabs a{flex:1 0 auto;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:12px 14px;min-height:48px;text-decoration:none;color:rgb(255 255 255 / .88);font-weight:600;border-radius:12px 12px 0 0;white-space:nowrap}
.pt .pt-tabs a:hover{background:rgb(255 255 255 / .1)}
.pt .pt-tabs a[aria-current]{background:color-mix(in srgb,var(--bl,#4338ca) 5%,var(--pbg,#f6f7fb));color:var(--bl,#312e81)}
.pt-main{max-width:860px;margin:0 auto;padding:18px 16px 28px}
/* cartes */
.pt-card,.pt-hero,.pt-subject,.pt-doc,.pt-row{background:#fff;border:1px solid var(--line);border-radius:16px}
.pt-card{padding:18px;margin:0 0 16px;box-shadow:var(--shadow)}
.pt-card h2{margin-top:0;color:var(--bl,#312e81)}
.pt-card--list .pt-list{margin-bottom:6px}
.pt-card--list .pt-row{border:0;border-top:1px solid var(--line);border-radius:0;min-height:58px;padding:10px 4px}
.pt-card--list .pt-list>li{margin:0}
.pt-card--list .pt-list>li:first-child{border-top:0}
.pt-next p{display:flex;align-items:center;gap:8px;margin:0;font-weight:600}
.pt label{display:block;font-weight:600;margin:12px 0 5px;color:var(--ink-2)}
.pt input:not([type=checkbox]),.pt select{display:block;width:100%;min-height:48px;padding:10px 12px;font:inherit;border:1px solid #c9ced8;border-radius:12px;background:#fff;color:inherit;transition:border-color .15s,box-shadow .15s}
.pt input:not([type=checkbox]):focus,.pt select:focus{outline:none;border-color:var(--bl,#4338ca);box-shadow:0 0 0 4px color-mix(in srgb,var(--bl,#4338ca) 16%,transparent)}
.pt a:focus-visible,.pt button:focus-visible,.pt summary:focus-visible,.pt input:focus-visible,.pt select:focus-visible{outline:3px solid #f5b400;outline-offset:2px}
.pt-skip{position:absolute;left:8px;top:-60px;z-index:9;padding:10px 14px;background:#111827;color:#fff!important;border-radius:8px}.pt-skip:focus{top:8px}
.pt-check{display:flex!important;align-items:center;gap:10px;font-weight:400!important;min-height:48px}
.pt-check input{width:22px;height:22px;flex:none;accent-color:var(--bl,#4338ca)}
.pt-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:10px 20px;margin:10px 0 0;font:inherit;font-weight:700;border:0;border-radius:12px;background:var(--bl,#4338ca);color:#fff!important;text-decoration:none;cursor:pointer;box-shadow:0 6px 16px -8px color-mix(in srgb,var(--bl,#4338ca) 80%,transparent);transition:filter .15s,transform .15s}
.pt-btn:hover{filter:brightness(1.08);transform:translateY(-1px)}
.pt-btn--light{background:var(--soft);color:var(--bl,#312e81)!important;box-shadow:none;border:1px solid var(--soft-2)}
form .pt-btn{width:100%}
.pt-hint,.pt-muted,small{color:var(--muted);font-size:.9rem}
.pt-hint{margin:.4rem 0}
small{display:block}
.pt-msg{display:flex;align-items:center;gap:8px;padding:12px 14px;border-radius:12px;background:#eef1f6;margin:0 0 14px}
.pt-msg--ok{background:#dcfce7;color:#065f46}
.pt-msg--ko{background:#fee2e2;color:#7f1d1d}
.pt-empty{padding:26px 18px;text-align:center;background:#fff;border:1px dashed #c9ced8;border-radius:16px;color:var(--muted)}
/* résultat du moment : tuiles */
.pt-hero{padding:18px;margin:0 0 16px;box-shadow:var(--shadow);background:linear-gradient(180deg,var(--soft),#fff 55%)}
.pt-hero--light{background:#fff}
.pt-hero__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;margin:0 0 14px}
.pt-hero__head .pt-btn{margin:0}
.pt-hero__what{margin:0;font-weight:700;color:var(--bl,#312e81);display:flex;align-items:center;gap:8px}
.pt-hero__nums{display:grid;grid-template-columns:repeat(auto-fit,minmax(92px,1fr));gap:8px}
.pt-hero__nums p{margin:0}
.pt-tile{--k:#1d4ed8;padding:14px 8px;border-radius:14px;text-align:center;background:linear-gradient(135deg,#eff6ff,#dbeafe);border:1px solid color-mix(in srgb,var(--k) 14%,#fff)}
.pt-tile--violet{--k:#7e22ce;background:linear-gradient(135deg,#faf5ff,#f3e8ff)}
.pt-tile--green{--k:#047857;background:linear-gradient(135deg,#f0fdf4,#dcfce7)}
.pt-tile--amber{--k:#a16207;background:linear-gradient(135deg,#fefce8,#fef3c7)}
.pt-hero__label{display:block;font-size:.88rem;color:color-mix(in srgb,var(--k,#1d4ed8) 70%,#111);font-weight:500}
.pt-big{display:block;white-space:nowrap;font-size:clamp(1.45rem,6vw,2.1rem);line-height:1.1;font-weight:800;color:var(--k,#1d4ed8);font-variant-numeric:tabular-nums}
.pt-big--text{font-size:clamp(1rem,4.4vw,1.3rem);line-height:1.6;white-space:normal}
.pt-big--muted{color:var(--k,#555c6b)}
.pt-hero__unit{margin-left:4px;font-size:.95rem;font-weight:600;opacity:.75}
.pt-hero__mention{margin:0}
/* listes et lignes */
.pt-list{list-style:none;margin:0;padding:0}
.pt-list>li{margin:0 0 10px}
.pt-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;min-height:56px;text-decoration:none;color:inherit}
a.pt-row{box-shadow:var(--shadow);transition:transform .15s,border-color .15s}
a.pt-row:hover{transform:translateY(-1px);border-color:var(--soft-2)}
.pt-row span:first-child{min-width:0}
.pt-row__main{flex:1 1 auto;min-width:0}
.pt-row__dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--bl,#4338ca)}
.pt-c1{background:#14b8a6}.pt-c2{background:#f97316}.pt-c3{background:#a855f7}.pt-c4{background:#ef4444}.pt-c5{background:#0ea5e9}
.pt-row__val{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.pt-list--big .pt-row{min-height:68px;flex-wrap:wrap}
.pt-alert{display:flex;align-items:flex-start;gap:8px;padding:12px 14px;border-radius:12px;background:#fef3c7;border:1px solid #fcd34d;color:#78350f}
.pt-alert .fi{margin-top:.2em}
.pt-alert--report{background:#dbeafe;border-color:#93c5fd;color:#1e3a8a}
.pt-alert a{color:inherit;font-weight:700}
.pt-g--good{color:#047857}.pt-g--mid{color:#b45309}.pt-g--weak{color:#b91c1c}
.pt-low{color:#b91c1c}
.pt-low-tag{font-size:.75rem;font-weight:700;color:#b91c1c;background:#fee2e2;border-radius:999px;padding:1px 8px}
.pt-code{font-weight:600;color:#92400e;background:#fef3c7;border-radius:999px;padding:1px 10px;font-size:.88rem}
.pt-new{color:#047857;font-weight:700;font-size:.85rem;background:#dcfce7;border-radius:999px;padding:1px 10px}
.pt-pick{display:grid;grid-template-columns:1fr;gap:4px;margin:0 0 12px;padding:12px 16px;background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow)}
.pt-summary{font-size:1.05rem;margin:.8rem 0 0;padding:14px 16px;border-radius:14px;background:linear-gradient(90deg,#dcfce7,#f0fdf4);color:#065f46}
.pt-summary b{font-size:1.25rem}
/* notes par matière */
.pt-subject{padding:0;margin:14px 0;overflow:hidden;box-shadow:var(--shadow)}
.pt-subject h2{margin:0;font-size:1.05rem;padding:14px 16px 4px;color:var(--bl,#312e81)}
.pt-subject h2 small{display:inline;font-weight:500;margin-left:4px}
.pt-subject__avg{margin:0;padding:0 16px 12px;color:var(--ink-2)}
.pt-table{width:100%;border-collapse:collapse;font-size:.95rem;background:#fff}
.pt-table th,.pt-table td{text-align:left;padding:11px 14px;border-top:1px solid var(--line);vertical-align:top}
.pt-table thead tr{background:linear-gradient(90deg,var(--soft),#fdf2f8)}
.pt-table thead th{font-size:.8rem;font-weight:700;color:var(--bl,#312e81);border-top:0}
.pt-table td:nth-child(n+2),.pt-table th:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums}
.pt-table__total th,.pt-table__total td{background:#dcfce7;color:#065f46;font-weight:700}
.pt-subject .pt-table{border-top:1px solid var(--line)}
main>.pt-table{border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:var(--shadow)}
.pt-up{color:#047857;font-weight:600}.pt-down{color:#b91c1c;font-weight:600}
/* graphique d'évolution */
.pt-figure{margin:0 0 14px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:var(--shadow)}
.pt-chart{display:block;width:100%;height:auto}
.pt-grid{stroke:#eceef3;stroke-width:1}
.pt-pass{stroke:#9aa1ae;stroke-width:1.5;stroke-dasharray:2 3}
.pt-axis{font-size:10px;fill:var(--muted)}
.pt-label{font-size:11px;font-weight:700;fill:#111827}
.pt-line{fill:none;stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}
.pt-line--me{stroke:var(--bl,#4338ca)}
.pt-line--class{stroke:#9aa1ae;stroke-dasharray:5 4}
.pt-dot{fill:var(--bl,#4338ca);stroke:#fff;stroke-width:2}
.pt-dot--class{fill:#9aa1ae}
.pt-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:.9rem;padding:8px 4px 0}
.pt-key{display:inline-block;width:22px;height:0;border-top:3px solid var(--bl,#4338ca);margin-left:6px}
.pt-key--class{border-top:3px dashed #9aa1ae}
.pt-key--pass{border-top:2px dotted #9aa1ae}
/* bulletins et documents */
.pt-doc{padding:14px 16px;box-shadow:var(--shadow)}
.pt-doc p{margin:.2rem 0}
.pt-doc__title{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}
.pt-doc__actions{display:flex;flex-wrap:wrap;gap:8px}
.pt-doc__actions .pt-btn{margin:6px 0 0}
/* pied */
.pt-foot{max-width:860px;margin:0 auto;padding:8px 16px 36px;color:var(--muted)}
.pt-foot__links{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 10px}
.pt-foot__links a{display:inline-flex;align-items:center;gap:6px;padding:10px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);text-decoration:none;font-weight:600;font-size:.92rem;color:var(--ink-2)}
.pt-foot__links a:hover{border-color:var(--soft-2);color:var(--bl,#312e81)}
.pt-foot a{display:inline-flex}
.pt-foot__app{display:block;font-size:.85rem}
.pt-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
body[data-offline]:not([data-offline=""])::before{content:attr(data-offmsg) " " attr(data-offline);display:block;padding:10px 16px;background:#111827;color:#fff;font-size:.95rem}
/* connexion : trois cartes côte à côte sur grand écran */
.pt-card[id] h2{display:flex;align-items:center;gap:10px}
.pt-card[id] h2 .fi{width:34px;height:34px;padding:7px;border-radius:10px;background:var(--soft);color:var(--bl,#4338ca)}
@media (min-width:600px){.pt-pick{grid-template-columns:auto 1fr auto;align-items:center}.pt-pick .pt-btn,form.pt-pick .pt-btn{width:auto;margin:0}.pt-pick label{margin:0}.pt h1{font-size:1.7rem}}
@media (forced-colors:active){.pt-line--me,.pt-dot{stroke:CanvasText}}
@media (prefers-reduced-motion:reduce){.pt-btn,a.pt-row{transition:none}.pt-btn:hover,a.pt-row:hover{transform:none}}
.pt-notify{border:0;border-top:1px solid var(--line);margin:12px 0 0;padding:10px 0 0}.pt-notify legend{padding:0}.pt-notify .pt-check{display:inline-flex!important;margin-right:18px}
.pt-welcome{display:flex;align-items:center;gap:14px;margin:4px 0 18px;padding:20px;border-radius:18px;background:linear-gradient(135deg,var(--bl,#4338ca),color-mix(in srgb,var(--bl,#4338ca) 72%,var(--acc,#1e1b4b)));color:#fff;box-shadow:var(--shadow)}
.pt-welcome__ico{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:rgb(255 255 255 / .16);flex:none}
.pt-welcome__ico .fi{width:28px;height:28px}
.pt .pt-welcome h1{margin:0;color:#fff}
.pt-welcome p{margin:2px 0 0;color:rgb(255 255 255 / .85)}
@media (min-width:900px){.pt-login{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;align-items:start}.pt-login .pt-card{margin:0}.pt-main:has(.pt-login){max-width:1100px}}

/* touches propres aux familles de thèmes : Educeet (boutons en pilule, onglets arrondis), Horizon (formes du thème) */
[data-family="educeet"] .pt-btn{border-radius:999px}
[data-family="educeet"] .pt .pt-tabs a,[data-family="educeet"] .pt-tabs a{border-radius:14px 14px 0 0}
[data-theme="savane"] .pt-card,[data-theme="savane"] .pt-hero,[data-theme="savane"] .pt-subject{border-radius:22px 6px 22px 6px}
[data-theme="academie"] .pt-card,[data-theme="academie"] .pt-hero,[data-theme="academie"] .pt-subject,[data-theme="academie"] .pt-btn{border-radius:6px}
[data-theme="eveil"] .pt-card,[data-theme="eveil"] .pt-hero,[data-theme="eveil"] .pt-subject{border-radius:24px}
