:root{font-family:"Segoe UI",Arial,sans-serif;color:#203247;background:#f4f6fa;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}.sidebar{position:fixed;inset:0 auto 0 0;width:224px;background:#102c46;color:#fff;padding:32px 20px;display:flex;flex-direction:column}.brand-mark{width:38px;height:38px;border:1px solid #7593ab;border-radius:11px;display:grid;place-items:center;font-size:23px;font-weight:650;margin-bottom:15px}.brand{font-size:23px;font-weight:650;letter-spacing:-.5px}.brand span{display:block;font-size:12px;font-weight:400;letter-spacing:0;color:#b6c7d7;margin-top:5px}nav{margin-top:42px}nav a{display:flex;gap:12px;align-items:center;text-decoration:none;color:#fff;background:#25465f;border-radius:8px;padding:12px 14px;font-size:14px}nav a span{font-size:22px}.local{margin-top:auto;font-size:12px;color:#d4e0e9}.local>span{color:#83cfb5;font-size:10px;margin-right:6px}.local div{margin-top:7px;color:#9db4c8;font-size:11px}main{margin-left:224px;max-width:1450px;padding:36px 46px 24px}header .eyebrow{font-size:10px;font-weight:700;letter-spacing:1.8px;color:#698096}h1{font-size:30px;letter-spacing:-.8px;margin:8px 0}header p{font-size:14px;color:#718094;margin:0}.summary{background:#fff;border:1px solid #e2e8f0;border-radius:12px;width:230px;margin:26px 0 24px;padding:17px 22px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:4px 16px;box-shadow:0 3px 10px #16334f03}.summary>span:first-child{font-size:13px;font-weight:600}.summary strong{font-size:34px;grid-column:2;grid-row:1 / 3;color:#173c5c;line-height:1}.summary-caption{font-size:11px;color:#7b8796}.card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;box-shadow:0 3px 10px #16334f03}.card-heading{padding:19px 24px;display:flex;justify-content:space-between;align-items:center;gap:16px}h2{font-size:16px;font-weight:650;margin:0 0 5px}.card-heading p{font-size:12px;color:#718094;margin:0}.badge{font-size:12px;white-space:nowrap;color:#61748a;background:#f0f4f8;border:1px solid #e2e8f0;padding:6px 12px;border-radius:20px;font-variant-numeric:tabular-nums}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;text-align:left;font-size:12px}thead{background:#f8fafc;color:#718094;font-size:10px;letter-spacing:.7px;text-transform:uppercase}th,td{padding:9px 24px;border-top:1px solid #edf0f4;height:35px}thead th{font-weight:600}tbody th{font-weight:550}tbody tr:hover{background:#f8fafc}.rne{font-family:Consolas,monospace;color:#6b7d90;width:150px;letter-spacing:.3px}td:last-child{width:170px}.status{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:#7b8796;white-space:nowrap}.status:before{content:"";width:6px;height:6px;background:#bec8d2;border-radius:50%}.status.imported{color:#21735d}.status.imported:before{background:#3d9c80}.card-footer{padding:13px 24px;background:#fafbfd;border-top:1px solid #edf0f4;font-size:11px;color:#8490a0}main>footer{font-size:10px;color:#8490a0;margin-top:18px}.error{margin:0 24px 16px;color:#a52d38;font-size:13px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}a:focus-visible{outline:3px solid #83cfb5;outline-offset:3px}
@media(min-width:1450px){main{padding-left:64px;padding-right:64px}}
.ai-copy{margin:20px 0;padding:16px;background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px}#ai-complete{font-family:Consolas,monospace;font-size:12px;line-height:1.5;resize:vertical;min-height:240px}#ai-copy-status{align-self:center;font-size:11px;color:#61748a}
nav a{margin-bottom:7px}nav a:not([aria-current]){background:transparent;color:#bfcedc}nav a:hover{background:#25465f}button{font:inherit;font-size:12px;background:#173f60;color:white;border:1px solid #173f60;border-radius:7px;padding:10px 14px;cursor:pointer}button:hover{filter:brightness(1.12)}button:disabled{opacity:.5;cursor:wait}.secondary{background:#fff;color:#244963;border-color:#d5dfe8}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #77bba9;outline-offset:2px}.import-card{padding:22px 24px;margin-top:24px}.import-card>p{font-size:13px;color:#6c7d8f;line-height:1.6}.import-card h2{margin-bottom:10px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;max-width:620px;margin:18px 0}label{font-size:12px;font-weight:600;color:#3d5369}input:not([type=checkbox]),select,textarea{display:block;width:100%;font:inherit;font-size:12px;border:1px solid #ccd7e2;border-radius:6px;padding:9px;background:#fff;color:#203247;margin-top:7px}input[type=file]{padding:15px;background:#f8fafc;border-style:dashed}.file-picker{display:block;margin:18px 0;max-width:700px}.hint{font-size:11px!important;max-width:760px}#preview{margin-top:24px}.toolbar{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}details{font-size:12px;line-height:1.6;color:#61748a;margin:12px 0}summary{cursor:pointer;color:#234e70}pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:10px}details li{margin-bottom:7px}.mapping-table{margin-top:20px;table-layout:fixed;min-width:740px}.mapping-table th{padding:10px 12px}.mapping-table td{padding:14px 12px;vertical-align:top;width:33%!important}.mapping-table p{margin:7px 0;line-height:1.5}.mapping-table small{display:block;margin-top:6px;font-size:10px;color:#8391a0}.mapping-table textarea{resize:vertical}.checks{display:grid;gap:14px;margin:24px 0}.checks label{font-weight:400;line-height:1.6}.checks input{margin-right:8px}.notice{padding:15px 18px;background:#eaf5f0;border:1px solid #cce6da;border-radius:8px;font-size:13px;line-height:1.6;margin:24px 0}.notice.error{background:#fff1f1;border-color:#efd0d0;color:#9d303a}#warnings:empty{display:none}[hidden]{display:none!important}
@media(max-width:760px){.sidebar{position:static;width:auto;padding:16px 20px;display:block}.brand-mark,.local{display:none}.brand{font-size:19px}.brand span{display:inline;margin-left:12px}nav{margin-top:14px}nav a{padding:7px 12px;width:max-content}main{margin-left:0;padding:24px 16px}.summary{margin:20px 0;width:100%}th,td{padding:9px 14px}.card-heading{padding:17px 14px}.rne{width:auto}td:last-child{width:auto}.card-footer{padding:13px 14px}}

/* Réglages : navigation commune et sous-menus des deux référentiels. */
nav .settings-nav{margin:0 0 7px;color:#bfcedc;font-size:14px;line-height:1.5}
nav .settings-nav>summary{padding:12px 14px;border-radius:8px;color:inherit;cursor:pointer;list-style:none}
nav .settings-nav>summary::-webkit-details-marker{display:none}
nav .settings-nav>summary::after{content:'▸';float:right;margin-left:12px}
nav .settings-nav[open]>summary::after{content:'▾'}
nav .settings-nav>summary:hover,nav .settings-nav[open]>summary{background:#25465f;color:white}
nav .settings-submenu{margin:5px 0 0 13px;padding-left:9px;border-left:1px solid #54718a}
nav .settings-submenu a{font-size:12px;padding:10px 8px;gap:0}
.topbar nav .settings-nav{position:relative;margin:0}
.topbar nav .settings-nav>summary{padding:7px 12px}
.topbar nav .settings-submenu{position:absolute;right:0;top:100%;z-index:20;min-width:210px;margin:5px 0 0;padding:8px;border:1px solid #54718a;border-radius:8px;background:#102c46;box-shadow:0 8px 24px #102c4633}
.topbar nav .settings-submenu a{margin:0;padding:10px 12px}

/* Accueil : présence annuelle des suivis et écoles du secteur public. */
.home-years{margin-top:28px}.year-bar{display:flex;gap:10px;overflow-x:auto;padding:10px 3px 8px}.year-choice{flex:1;min-width:104px;display:grid;gap:7px;text-align:left;padding:13px 15px;border:2px solid #d0d6df;background:#eceff3;color:#617184}.year-choice b{font-size:20px}.year-choice span{font-size:11px;white-space:nowrap}.year-choice.year-partial{background:#fff3df;border-color:#dba24a;color:#805313}.year-choice.year-complete{background:#e2f5ed;border-color:#4da784;color:#185b44}.year-choice[aria-pressed=true]{outline:3px solid #173f60;outline-offset:1px;box-shadow:0 3px 10px #173f6022}.home-summary{display:flex;flex-wrap:wrap;gap:16px;margin:22px 0}.home-summary .summary{width:auto;flex:1;min-width:220px;margin:0}.home-summary .summary strong{font-size:30px}#circos tr.circo-imported,#circos tr.circo-imported:hover{background:#e8f6f0;color:#185b44}#circos tr.circo-imported th{font-weight:700;border-left:4px solid #329578}#circos tr.circo-missing,#circos tr.circo-missing:hover{background:#edf0f4;color:#7c8794}#circos tr.circo-missing th{border-left:4px solid #c7ced7}#circos td:nth-child(3),#circos td:nth-child(4){font-variant-numeric:tabular-nums;text-align:center}#circos .status{font-size:11px}

/* Identité PASP — logo fourni, dimensions d’affichage adaptées. */
.sidebar>.app-logo{display:block;width:80px;height:80px;object-fit:contain;border-radius:50%;background:#fff;border:2px solid #7593ab;margin-bottom:14px;flex:none}
.sidebar .brand{font-size:26px;letter-spacing:.5px}.sidebar .brand span{font-size:13px;letter-spacing:0}
.topbar .app-brand{display:flex;align-items:center;gap:12px;flex:none}.topbar .app-brand .app-logo{width:44px;height:44px;object-fit:contain;border-radius:50%;background:#fff;border:1px solid #7593ab}.topbar .app-brand span{font-size:20px;line-height:1.2}.topbar .app-brand small{display:block;font-size:11px;font-weight:400;color:#bfcedc;margin-top:4px}
@media(max-width:760px){.sidebar>.app-logo{display:inline-block;width:46px;height:46px;margin:0 12px 0 0;vertical-align:middle}.sidebar .brand{display:inline-block;vertical-align:middle;font-size:22px}.sidebar .brand span{display:block;margin:3px 0 0;font-size:11px}}
.login-page{min-height:100vh;display:grid;place-items:center;background:#102c46}.login-main{margin:0;padding:24px;max-width:none;width:min(100%,460px)}.login-card{padding:32px;text-align:center}.login-logo{object-fit:contain;border-radius:50%;background:#fff}.login-card h1{color:#173f60}.login-card>p{color:#61748a;margin:5px 0 24px}.login-card h2{margin-bottom:22px}.login-card form{text-align:left}.login-card label{display:block;margin-top:18px}.login-card button{width:100%;margin-top:22px;font-size:14px}.login-card #login-error{color:#a52d38;line-height:1.5;font-size:13px}.account-controls{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0;color:#bfcedc;font-size:12px}.account-controls button{padding:6px 9px;background:transparent;border-color:#7593ab;color:white;font-size:11px}.topbar .account-controls{margin:0 0 0 auto}.sidebar .account-controls{margin-top:24px}
