:root{
  --pg-bg:#f2f5fa;--pg-card:#fff;--pg-text:#172033;--pg-muted:#6f7b8d;--pg-line:#dde4ee;
  --pg-navy:#2b4167;--pg-navy2:#203653;--pg-blue:#1686ce;--pg-blue-soft:#edf6fd;
  --pg-green:#11845b;--pg-green-soft:#eaf8f2;--pg-red:#bb3028;--pg-red-soft:#fff0ef;
  --pg-shadow:0 18px 45px rgba(31,52,82,.10);--pg-radius:22px;
}
*{box-sizing:border-box}html{background:var(--pg-bg)}body{margin:0;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;color:var(--pg-text);background:var(--pg-bg);-webkit-font-smoothing:antialiased}a{color:inherit}.portal-shell{width:min(1180px,calc(100% - 34px));margin-inline:auto}.portal-page{min-height:100vh;display:flex;flex-direction:column;background:linear-gradient(180deg,#f7f9fc 0,#f2f5fa 220px)}
.portal-topbar{position:sticky;top:0;z-index:80;background:rgba(255,255,255,.93);backdrop-filter:blur(18px);border-bottom:1px solid rgba(214,223,235,.88)}.portal-topbar-inner{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:20px}.portal-brand{display:flex;align-items:center;gap:18px;text-decoration:none;min-width:0}.portal-brand img{width:215px;max-width:38vw;height:auto;display:block}.portal-brand>span{display:flex;flex-direction:column;gap:2px;padding-left:17px;border-left:1px solid var(--pg-line);white-space:nowrap}.portal-brand strong{font-size:15px;color:var(--pg-navy);letter-spacing:-.01em}.portal-brand small{font-size:11px;color:var(--pg-muted)}.portal-top-actions{display:flex;align-items:center;gap:10px}.portal-admin-link{min-height:44px;display:flex;align-items:center;gap:7px;padding:0 14px;border-radius:14px;text-decoration:none;font-weight:800;font-size:13px;color:#43526a;background:#f7f9fc;border:1px solid var(--pg-line)}.portal-admin-link.active,.portal-admin-link:hover{color:var(--pg-navy);background:#edf2f8;border-color:#cbd8e8}.portal-user-wrap{position:relative}.portal-user-chip{border:1px solid var(--pg-line);background:#fff;border-radius:18px;padding:6px 9px 6px 7px;min-height:52px;display:flex;align-items:center;gap:9px;cursor:pointer;box-shadow:0 6px 18px rgba(30,48,75,.06)}.portal-avatar,.portal-user-avatar-lg{display:grid;place-items:center;background:#edf2fa;color:var(--pg-navy);font-weight:900}.portal-avatar{width:38px;height:38px;border-radius:13px;font-size:14px}.portal-user-copy{display:flex;flex-direction:column;align-items:flex-start;min-width:0;max-width:185px}.portal-user-copy strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.portal-user-copy small{font-size:10px;color:var(--pg-muted);margin-top:2px}.portal-chevron{color:#8d99aa;font-size:14px}.portal-user-panel{position:absolute;right:0;top:calc(100% + 9px);width:235px;background:#fff;border:1px solid var(--pg-line);border-radius:17px;padding:7px;box-shadow:0 18px 50px rgba(26,43,68,.16)}.portal-user-panel[hidden]{display:none}.portal-user-panel a{display:block;text-decoration:none;padding:11px 12px;border-radius:11px;font-size:13px;font-weight:750;color:#34445b}.portal-user-panel a:hover{background:#f2f5f9}.portal-user-panel a.logout{color:#a72a25;border-top:1px solid #edf0f5;margin-top:4px;padding-top:12px}
.portal-main{flex:1;padding-top:30px;padding-bottom:38px}.portal-alert{border:1px solid;border-radius:15px;padding:12px 14px;margin:0 0 16px;font-size:13px;font-weight:750}.portal-alert-success{background:#edf9f4;color:#176342;border-color:#c8eadb}.portal-alert-error{background:var(--pg-red-soft);color:#8f251f;border-color:#efc7c3}.portal-alert-info{background:#edf5fc;color:#275d85;border-color:#cbdff0}
.portal-hero{position:relative;overflow:hidden;min-height:205px;border-radius:30px;padding:32px 36px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,#243b61 0,#2f527f 60%,#3470a0 100%);color:#fff;box-shadow:0 22px 50px rgba(30,53,87,.17)}.portal-hero:after{content:"";position:absolute;width:330px;height:330px;border-radius:50%;right:-95px;top:-150px;background:rgba(255,255,255,.07)}.portal-hero-copy{position:relative;z-index:2;max-width:710px}.portal-eyebrow{font-size:10px;font-weight:900;letter-spacing:.16em;color:#7e8da2}.portal-hero .portal-eyebrow{color:#bcd2eb}.portal-hero h1{font-size:36px;line-height:1.05;margin:9px 0 12px;letter-spacing:-.04em}.portal-hero p{max-width:650px;margin:0;color:#d9e4f2;font-size:15px;line-height:1.55}.portal-hero-mark{position:relative;z-index:1;font-size:88px;opacity:.12;margin-right:34px;transform:rotate(-12deg)}.portal-section-head{display:flex;align-items:end;justify-content:space-between;gap:14px;margin:28px 4px 14px}.portal-section-head h2{font-size:20px;margin:4px 0 0;letter-spacing:-.02em}.portal-count-badge{font-size:11px;font-weight:800;color:#5b6a7e;background:#fff;border:1px solid var(--pg-line);border-radius:999px;padding:7px 10px}.portal-admin-section-head{margin-top:32px}
.portal-app-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px}.portal-app-card{position:relative;min-height:155px;background:#fff;border:1px solid var(--pg-line);border-radius:24px;padding:20px;display:grid;grid-template-columns:58px 1fr 34px;align-items:center;gap:16px;text-decoration:none;box-shadow:0 8px 26px rgba(28,47,75,.06);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.portal-app-card:hover{transform:translateY(-2px);border-color:#c5d3e5;box-shadow:0 18px 38px rgba(28,47,75,.11)}.portal-app-icon{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(145deg,#edf3fa,#f7f9fc);border:1px solid #dce5f0;font-size:29px}.portal-app-content{min-width:0}.portal-app-status{display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:850;color:#3b8064;background:#edf8f3;border-radius:999px;padding:5px 8px}.portal-app-status i{width:7px;height:7px;border-radius:50%;background:#27a777}.portal-app-status.admin{color:#48617f;background:#edf2f8}.portal-app-status.admin i{background:#617fa6}.portal-app-content h3{font-size:18px;margin:9px 0 5px;color:#223653;letter-spacing:-.02em}.portal-app-content p{font-size:12px;line-height:1.48;color:var(--pg-muted);margin:0}.portal-app-arrow{width:32px;height:32px;border-radius:11px;display:grid;place-items:center;background:#f2f5f9;color:#526a89;font-size:18px;font-weight:900}.portal-admin-card{background:linear-gradient(135deg,#fff 0,#f8fafc 100%)}.portal-empty-card{background:#fff;border:1px dashed #cdd7e5;border-radius:24px;text-align:center;padding:42px 20px;color:var(--pg-muted)}.portal-empty-card>div{font-size:34px}.portal-empty-card h3,.portal-empty-card h1{color:#273b59;margin:12px 0 6px}.portal-empty-card p{margin:0 auto 20px;max-width:520px}
.portal-footer{margin-top:auto;border-top:1px solid #dce3ed;background:rgba(255,255,255,.62)}.portal-footer-inner{min-height:58px;display:flex;align-items:center;justify-content:center;color:#8a96a7;font-size:10px;font-weight:700;letter-spacing:.03em}
.portal-page-head{background:#fff;border:1px solid var(--pg-line);border-radius:25px;padding:20px 22px;display:grid;grid-template-columns:58px 1fr auto;align-items:center;gap:16px;box-shadow:0 8px 25px rgba(31,49,73,.05)}.portal-page-icon{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;background:#edf2f8;font-size:27px}.portal-page-head h1{font-size:24px;margin:3px 0 4px;letter-spacing:-.03em}.portal-page-head p{margin:0;color:var(--pg-muted);font-size:12px}.portal-page-back{white-space:nowrap}.portal-two-col{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;margin-top:18px}.portal-card{background:#fff;border:1px solid var(--pg-line);border-radius:23px;padding:22px;box-shadow:0 8px 24px rgba(31,49,73,.05)}.portal-card-head h2{font-size:19px;margin:4px 0 18px}.portal-info-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.portal-info-grid>div{border:1px solid #e4e9f0;border-radius:15px;background:#fafbfd;padding:13px}.portal-info-grid span{display:block;color:var(--pg-muted);font-size:10px;margin-bottom:5px}.portal-info-grid strong{font-size:13px;color:#33465f}
.portal-form-stack{display:grid;gap:14px}.portal-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.portal-field{display:grid;gap:6px}.portal-field>span{font-size:11px;color:#415069;font-weight:850}.portal-field small{color:#7e8999;font-size:10px;line-height:1.4}.portal-input,.portal-field>input,.portal-field>select{width:100%;min-height:46px;border:1px solid #cfd8e5;border-radius:13px;background:#fff;padding:10px 12px;color:var(--pg-text);font:inherit;font-size:14px;outline:none}.portal-input:focus,.portal-field>input:focus,.portal-field>select:focus{border-color:#7793b8;box-shadow:0 0 0 4px rgba(43,65,103,.10)}.portal-input-wrap{display:flex;min-height:50px;border:1px solid #cfd8e5;border-radius:14px;background:#fff;overflow:hidden}.portal-input-wrap:focus-within{border-color:#7793b8;box-shadow:0 0 0 4px rgba(43,65,103,.10)}.portal-input-wrap i{width:50px;display:grid;place-items:center;background:#f7f9fc;border-right:1px solid #e3e8ef;font-style:normal}.portal-input-wrap input{min-width:0;flex:1;border:0;padding:10px 12px;font:inherit;outline:0}.portal-btn{min-height:44px;border:1px solid var(--pg-line);border-radius:13px;padding:9px 14px;font:inherit;font-size:12px;font-weight:850;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px}.portal-btn-primary{background:var(--pg-navy);border-color:var(--pg-navy);color:#fff}.portal-btn-primary:hover{background:var(--pg-navy2)}.portal-btn-light{background:#fff;color:#41516a}.portal-btn-light:hover{background:#f5f7fa}.portal-btn-danger{background:#fff4f3;border-color:#efcbc7;color:#a72b25}.portal-btn-small{min-height:38px;padding:7px 11px;font-size:11px}.portal-btn-block{width:100%}
.portal-login-page{min-height:100vh;background:radial-gradient(circle at 50% -15%,#e4ebf5 0,#f5f7fa 43%,#edf1f6 100%)}.portal-login-shell{min-height:100vh;display:grid;place-items:center;align-content:center;padding:26px}.portal-login-card{width:min(100%,450px);background:#fff;border:1px solid var(--pg-line);border-radius:28px;padding:30px;box-shadow:0 24px 64px rgba(30,50,78,.15)}.portal-login-logo-wrap{display:grid;place-items:center;padding:3px 0 18px}.portal-login-logo{width:min(315px,88%);height:auto}.portal-login-title{text-align:center;font-size:27px;font-weight:950;color:var(--pg-navy);letter-spacing:-.035em}.portal-login-sub{text-align:center;color:var(--pg-muted);font-size:13px;margin:5px 0 22px}.portal-login-footer{width:min(100%,450px);text-align:center;color:#8b96a6;font-size:10px;padding:11px}.portal-password-rules{text-align:center;font-size:10px;line-height:1.5;color:#778395;margin-top:-4px}
.portal-admin-toolbar{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:16px 2px 12px}.portal-admin-summary{display:flex;align-items:baseline;gap:6px;color:#7c899b;font-size:11px}.portal-admin-summary strong{font-size:22px;color:#2c4268}.portal-admin-note{font-size:11px;color:#66758a;background:#edf2f8;border:1px solid #dae3ee;border-radius:12px;padding:9px 12px}.portal-user-list{display:grid;gap:12px}.portal-user-card{background:#fff;border:1px solid var(--pg-line);border-radius:22px;padding:16px 17px;box-shadow:0 7px 22px rgba(31,49,73,.045);display:grid;grid-template-columns:minmax(265px,1fr) minmax(330px,1.25fr);gap:14px 20px;align-items:center;scroll-margin-top:100px}.portal-user-card.is-disabled{background:#f7f8fa;opacity:.78}.portal-user-main{display:flex;align-items:center;gap:12px;min-width:0}.portal-user-avatar-lg{width:48px;height:48px;border-radius:16px;flex:0 0 auto}.portal-user-identity{min-width:0}.portal-user-name-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.portal-user-name-row h3{font-size:15px;margin:0;color:#263b59}.portal-user-identity p{font-size:10px;color:#7b8798;margin:5px 0 0}.portal-protected-badge,.portal-user-badge,.portal-disabled-badge{font-size:9px;font-weight:850;border-radius:999px;padding:4px 7px}.portal-protected-badge{color:#4f6179;background:#edf2f8}.portal-user-badge{color:#36765d;background:#edf8f3}.portal-disabled-badge{color:#8b5551;background:#f8eceb}.portal-access-panel{border-left:1px solid #edf0f4;padding-left:18px}.portal-access-title{display:block;color:#778498;font-size:9px;font-weight:900;letter-spacing:.08em;text-transform:uppercase;margin-bottom:7px}.portal-access-switches{display:grid;gap:5px}.portal-access-row,.portal-create-access-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.portal-access-row{margin:0}.portal-access-label{display:flex;align-items:center;gap:8px;min-width:0}.portal-access-label>b{width:29px;height:29px;display:grid;place-items:center;border-radius:9px;background:#f2f5f9;font-size:16px;flex:0 0 auto}.portal-access-label>span{min-width:0}.portal-access-label strong{display:block;font-size:11px;color:#334760}.portal-access-label small{display:block;font-size:9px;color:#8a95a4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:330px}.portal-user-actions{grid-column:1/-1;border-top:1px solid #edf0f4;padding-top:12px;display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.portal-user-actions form{margin:0}.ios-switch{position:relative;display:inline-flex;width:45px;height:27px;flex:0 0 auto}.ios-switch input{position:absolute;opacity:0;width:0;height:0}.ios-slider{position:absolute;inset:0;border-radius:999px;background:#cfd6df;transition:.2s;box-shadow:inset 0 0 0 1px rgba(40,55,75,.06)}.ios-slider:before{content:"";position:absolute;width:23px;height:23px;left:2px;top:2px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(0,0,0,.23);transition:.2s}.ios-switch input:checked+.ios-slider{background:#35c759}.ios-switch input:checked+.ios-slider:before{transform:translateX(18px)}.ios-switch input:focus-visible+.ios-slider{outline:3px solid rgba(36,74,122,.2);outline-offset:2px}.ios-switch.is-locked{opacity:.66}.portal-create-access{border:1px solid #e0e6ef;border-radius:15px;padding:12px;background:#fafbfd;display:grid;gap:10px}.portal-role-info{padding:10px 12px;border-radius:12px;background:#eef3f8;color:#52647d;font-size:11px;font-weight:800}.portal-modal-hint{display:block;text-align:center;color:#7e8998;font-size:10px}.portal-modal-copy{font-size:12px;color:#5d6a7d;margin:0 0 14px}
.portal-modal[hidden]{display:none}.portal-modal{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:18px}.portal-modal-backdrop{position:absolute;inset:0;border:0;background:rgba(19,29,45,.52);backdrop-filter:blur(3px)}.portal-modal-card{position:relative;z-index:1;width:min(100%,600px);max-height:calc(100vh - 36px);overflow:auto;background:#fff;border:1px solid rgba(255,255,255,.8);border-radius:24px;padding:20px;box-shadow:0 30px 90px rgba(15,28,46,.28)}.portal-modal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:17px}.portal-modal-head h2{font-size:20px;margin:4px 0 0}.portal-modal-close{width:38px;height:38px;border:1px solid #dfe5ed;border-radius:12px;background:#f8fafc;cursor:pointer;color:#5a687b;font-weight:900}body.modal-open{overflow:hidden}.portal-error-card{margin-top:40px}
@media(max-width:820px){.portal-brand>span{display:none}.portal-brand img{max-width:240px;width:185px}.portal-topbar-inner{min-height:72px}.portal-admin-link span{display:none}.portal-admin-link{width:44px;padding:0;justify-content:center}.portal-user-copy{display:none}.portal-user-chip{padding-right:6px}.portal-chevron{display:none}.portal-two-col{grid-template-columns:1fr}.portal-user-card{grid-template-columns:1fr}.portal-access-panel{border-left:0;border-top:1px solid #edf0f4;padding:12px 0 0}.portal-user-actions{grid-column:auto}.portal-page-head{grid-template-columns:50px 1fr}.portal-page-icon{width:50px;height:50px;border-radius:15px}.portal-page-back{grid-column:1/-1;width:100%}.portal-admin-toolbar{align-items:flex-start;flex-direction:column}.portal-admin-note{width:100%}}
@media(max-width:600px){.portal-shell{width:min(100% - 22px,1180px)}.portal-main{padding-top:16px;padding-bottom:24px}.portal-topbar-inner{min-height:68px}.portal-brand img{width:170px;max-width:54vw}.portal-avatar{width:36px;height:36px}.portal-hero{min-height:178px;padding:24px 22px;border-radius:23px}.portal-hero h1{font-size:27px}.portal-hero p{font-size:12px}.portal-hero-mark{display:none}.portal-section-head{margin-top:21px}.portal-section-head h2{font-size:17px}.portal-app-grid{grid-template-columns:1fr}.portal-app-card{min-height:132px;border-radius:20px;padding:16px;grid-template-columns:50px 1fr 28px;gap:12px}.portal-app-icon{width:50px;height:50px;border-radius:15px;font-size:24px}.portal-app-content h3{font-size:16px;margin-top:7px}.portal-app-content p{font-size:11px}.portal-app-arrow{width:28px;height:28px}.portal-page-head{padding:16px;border-radius:20px}.portal-page-head h1{font-size:20px}.portal-card{padding:17px;border-radius:20px}.portal-info-grid{grid-template-columns:1fr}.portal-form-grid{grid-template-columns:1fr}.portal-login-shell{padding:17px}.portal-login-card{padding:24px 20px;border-radius:23px}.portal-login-logo{width:min(290px,92%)}.portal-login-title{font-size:25px}.portal-user-card{padding:13px;border-radius:19px}.portal-access-label small{max-width:205px}.portal-user-actions{display:grid;grid-template-columns:1fr 1fr}.portal-user-actions .portal-btn,.portal-user-actions form,.portal-user-actions form .portal-btn{width:100%}.portal-modal{padding:10px}.portal-modal-card{max-height:calc(100vh - 20px);border-radius:21px;padding:17px}.portal-footer-inner{min-height:50px}}

/* V20 — catégories utilisateurs */
.portal-profile-badge{font-size:9px;font-weight:900;border-radius:999px;padding:4px 7px;letter-spacing:.03em}.portal-profile-admin{color:#28466f;background:#e9f0f9}.portal-profile-responsable{color:#8a5a12;background:#fff3d9}.portal-profile-user{color:#36765d;background:#edf8f3}.portal-field select.portal-input{appearance:auto}

/* V23 — portail compact, catalogue complet et cartes d'accès verrouillées */
.portal-main{padding-top:18px;padding-bottom:28px}
.portal-hero.portal-hero-compact{min-height:112px;border-radius:22px;padding:18px 22px;box-shadow:0 14px 32px rgba(30,53,87,.13)}
.portal-hero.portal-hero-compact:after{width:220px;height:220px;right:-70px;top:-105px}
.portal-hero-compact .portal-hero-copy{max-width:760px}
.portal-hero-compact h1{font-size:27px;margin:5px 0 6px;line-height:1.05}
.portal-hero-compact p{font-size:12px;line-height:1.35}
.portal-hero-compact .portal-hero-mark{font-size:56px;margin-right:20px}
.portal-apps-head{margin-top:17px;margin-bottom:9px}
.portal-section-head{margin-bottom:10px}
.portal-section-head h2{font-size:17px;margin-top:3px}
.portal-count-badge{font-size:9px;padding:5px 8px}
.portal-app-grid-compact,.portal-admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.portal-app-grid-compact .portal-app-card,.portal-admin-grid .portal-app-card{min-height:108px;border-radius:18px;padding:13px;grid-template-columns:44px minmax(0,1fr) 28px;gap:10px;box-shadow:0 6px 18px rgba(28,47,75,.05)}
.portal-app-grid-compact .portal-app-icon,.portal-admin-grid .portal-app-icon{width:44px;height:44px;border-radius:14px;font-size:23px}
.portal-app-grid-compact .portal-app-status,.portal-admin-grid .portal-app-status{font-size:8px;padding:4px 6px;gap:4px}
.portal-app-grid-compact .portal-app-status i,.portal-admin-grid .portal-app-status i{width:6px;height:6px}
.portal-app-grid-compact .portal-app-content h3,.portal-admin-grid .portal-app-content h3{font-size:14px;margin:6px 0 3px}
.portal-app-grid-compact .portal-app-content p,.portal-admin-grid .portal-app-content p{font-size:9.5px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.portal-app-grid-compact .portal-app-arrow,.portal-admin-grid .portal-app-arrow{width:27px;height:27px;border-radius:9px;font-size:15px}
.portal-app-card.is-locked{background:#eef1f5;border-color:#d8dee7;box-shadow:none;color:#7c8795;cursor:not-allowed;filter:saturate(.35)}
.portal-app-card.is-locked:hover{transform:none;border-color:#d8dee7;box-shadow:none}
.portal-app-card.is-locked .portal-app-icon{background:#e2e6eb;border-color:#d1d7df;opacity:.75}
.portal-app-card.is-locked .portal-app-content h3{color:#727d8b}
.portal-app-card.is-locked .portal-app-content p{color:#929ba7}
.portal-app-status.locked{color:#707a87;background:#e1e5ea}
.portal-app-status.locked i{background:#9aa3ad}
.portal-app-card.is-locked .portal-app-arrow{background:#e1e5ea;color:#7d8792;font-size:12px}
.portal-admin-section-head{margin-top:20px}
@media(max-width:600px){
  .portal-main{padding-top:10px;padding-bottom:18px}
  .portal-hero.portal-hero-compact{min-height:92px;padding:13px 15px;border-radius:18px}
  .portal-hero-compact h1{font-size:20px;margin:3px 0 4px}
  .portal-hero-compact p{font-size:9.5px;line-height:1.25;max-width:90%}
  .portal-hero-compact .portal-eyebrow{font-size:8px}
  .portal-apps-head{margin:12px 2px 7px}
  .portal-section-head h2{font-size:14px}
  .portal-count-badge{font-size:7.5px;padding:4px 6px}
  .portal-app-grid-compact,.portal-admin-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
  .portal-app-grid-compact .portal-app-card,.portal-admin-grid .portal-app-card{min-height:105px;border-radius:15px;padding:9px;grid-template-columns:35px minmax(0,1fr);gap:7px;align-items:start}
  .portal-app-grid-compact .portal-app-icon,.portal-admin-grid .portal-app-icon{width:35px;height:35px;border-radius:11px;font-size:18px}
  .portal-app-grid-compact .portal-app-arrow,.portal-admin-grid .portal-app-arrow{display:none}
  .portal-app-grid-compact .portal-app-status,.portal-admin-grid .portal-app-status{font-size:6.7px;padding:3px 4px;white-space:nowrap}
  .portal-app-grid-compact .portal-app-content h3,.portal-admin-grid .portal-app-content h3{font-size:11.5px;margin:5px 0 3px;line-height:1.15}
  .portal-app-grid-compact .portal-app-content p,.portal-admin-grid .portal-app-content p{font-size:8px;line-height:1.2;-webkit-line-clamp:2}
  .portal-admin-section-head{margin-top:15px}
}
@media(max-width:350px){
  .portal-hero-compact p{display:none}
  .portal-hero.portal-hero-compact{min-height:74px}
  .portal-app-grid-compact .portal-app-card,.portal-admin-grid .portal-app-card{min-height:98px;padding:8px;grid-template-columns:31px minmax(0,1fr);gap:6px}
  .portal-app-grid-compact .portal-app-icon,.portal-admin-grid .portal-app-icon{width:31px;height:31px;font-size:16px}
  .portal-app-grid-compact .portal-app-content p,.portal-admin-grid .portal-app-content p{-webkit-line-clamp:1}
}

/* V25 — changement obligatoire du mot de passe à la première connexion */
.portal-password-first-modal{z-index:500}
.portal-password-backdrop{cursor:default;background:rgba(16,27,44,.68);backdrop-filter:blur(7px)}
.portal-password-first-card{width:min(100%,470px);text-align:left;padding:24px;border-radius:24px;overflow:visible}
.portal-password-first-icon{width:58px;height:58px;border-radius:18px;display:grid;place-items:center;margin:0 auto 13px;background:#edf3fa;border:1px solid #dce5f0;font-size:29px}
.portal-password-first-heading{text-align:center;margin-bottom:18px}.portal-password-first-heading h2{font-size:22px;line-height:1.12;margin:5px 0 8px;color:var(--pg-navy)}.portal-password-first-heading p{font-size:12px;line-height:1.45;color:var(--pg-muted);margin:0 auto;max-width:390px}
.portal-password-checks{display:grid;grid-template-columns:1fr 1fr;gap:7px 10px;padding:11px 12px;border-radius:14px;background:#f6f8fb;border:1px solid #e2e7ef;color:#7b8796;font-size:10px;font-weight:800}.portal-password-checks span.ok{color:var(--pg-green)}
.portal-password-first-note{text-align:center;color:#8994a2;font-size:10px;font-weight:750;margin:12px 0 0}.portal-password-first-card .portal-btn:disabled{opacity:.46;cursor:not-allowed;box-shadow:none}
@media(max-width:600px){.portal-password-first-card{padding:19px 16px;border-radius:21px}.portal-password-first-icon{width:50px;height:50px;border-radius:15px;font-size:25px}.portal-password-first-heading h2{font-size:19px}.portal-password-checks{grid-template-columns:1fr;font-size:10px}}


/* V26 — nom complet visible dans le bouton utilisateur */
.portal-person-avatar{font-size:18px}
@media(max-width:820px){
  .portal-user-copy{display:flex!important;max-width:122px}
  .portal-user-copy strong{font-size:10px;max-width:122px}
  .portal-user-copy small{display:none}
  .portal-user-chip{padding:5px 7px 5px 5px;gap:6px}
  .portal-person-avatar{width:32px;height:32px;border-radius:11px;font-size:15px}
}
@media(max-width:600px){
  .portal-brand img{width:142px;max-width:42vw}
  .portal-topbar-inner{gap:7px}
  .portal-top-actions{gap:5px}
  .portal-user-copy{max-width:102px}
  .portal-user-copy strong{max-width:102px;font-size:9px}
}
@media(max-width:380px){
  .portal-brand img{width:124px}
  .portal-user-copy{max-width:88px}
  .portal-user-copy strong{max-width:88px;font-size:8.5px}
  .portal-person-avatar{display:none}
  .portal-user-chip{min-height:38px;padding:5px 6px}
}

/* V26.1 — afficher réellement Prénom NOM dans le bouton utilisateur */
.portal-user-copy strong{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.08;text-align:left}
@media(max-width:600px){.portal-user-copy{max-width:118px}.portal-user-copy strong{max-width:118px;font-size:9px}}
@media(max-width:380px){.portal-user-copy{max-width:100px}.portal-user-copy strong{max-width:100px;font-size:8.2px}}

/* V27 — droits des applications directement dans le popup Modifier */
.portal-user-card{grid-template-columns:1fr;gap:11px}
.portal-user-actions{grid-column:auto}
#editApplicationAccess{margin-top:2px}
#editApplicationAccess .portal-create-access-row{min-height:42px}
#editApplicationAccess .portal-role-info{margin-top:2px}
@media(max-width:820px){.portal-user-card{grid-template-columns:1fr}}


/* V32 — liste utilisateurs compacte, tri NOM/Prénom et chips d'accès */
.portal-user-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.portal-user-card{min-width:0;padding:13px 14px;border-radius:18px;gap:9px;align-content:start}
.portal-user-main{align-items:flex-start;gap:10px}
.portal-user-avatar-lg{width:40px;height:40px;border-radius:13px;font-size:12px}
.portal-user-name-row{gap:5px}
.portal-user-name-row h3{font-size:13px;line-height:1.15;min-width:0}
.portal-user-identity p{font-size:9px;margin-top:4px}
.portal-protected-badge,.portal-profile-badge,.portal-disabled-badge{font-size:7.5px;padding:3px 5px}
.portal-user-app-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.portal-user-app-chip{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:4px 7px;border:1px solid #dce5ef;border-radius:999px;background:#f3f7fb;color:#496078;font-size:8.5px;font-weight:850;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.portal-user-app-chip b{font-size:10px;line-height:1;flex:0 0 auto}
.portal-user-app-chip.is-none{background:#f2f3f5;color:#8b949f;border-color:#e0e4e9}
.portal-user-actions{padding-top:9px;gap:5px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.portal-user-actions .portal-btn,.portal-user-actions form,.portal-user-actions form .portal-btn{width:100%;min-width:0}
.portal-user-actions .portal-btn-small{min-height:34px;padding:6px 7px;font-size:9px;line-height:1.15;white-space:normal}
@media(max-width:1050px){.portal-user-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){
  .portal-user-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
  .portal-user-card{padding:9px;border-radius:15px;gap:7px}
  .portal-user-main{gap:7px}
  .portal-user-avatar-lg{width:31px;height:31px;border-radius:10px;font-size:9px}
  .portal-user-name-row{gap:3px}
  .portal-user-name-row h3{font-size:10px;line-height:1.12;width:100%}
  .portal-user-identity p{font-size:7.5px;margin-top:3px;overflow-wrap:anywhere}
  .portal-protected-badge,.portal-profile-badge,.portal-disabled-badge{font-size:6.3px;padding:2px 4px}
  .portal-user-app-chips{gap:3px;margin-top:5px}
  .portal-user-app-chip{font-size:6.8px;padding:3px 5px;gap:2px}
  .portal-user-app-chip b{font-size:8px}
  .portal-user-actions{gap:4px;padding-top:6px}
  .portal-user-actions .portal-btn-small{min-height:31px;padding:5px 4px;font-size:7.2px}
}
@media(max-width:360px){
  .portal-user-list{gap:5px}
  .portal-user-card{padding:8px 7px}
  .portal-user-avatar-lg{display:none}
  .portal-user-name-row h3{font-size:9.5px}
  .portal-user-app-chip{max-width:100%;font-size:6.3px;padding:3px 4px}
  .portal-user-actions .portal-btn-small{font-size:6.7px}
}

/* V36 — taille d'en-tête de référence pour toutes les applications */
.portal-topbar-inner{min-height:82px!important;height:82px!important;gap:20px!important}.portal-brand{gap:18px!important}.portal-brand img{width:215px!important;max-width:38vw!important;max-height:42px!important}.portal-brand>span{padding-left:17px!important}.portal-brand strong{font-size:15px!important}.portal-brand small{font-size:11px!important}.portal-user-chip{min-height:52px!important;padding:6px 9px 6px 7px!important;border-radius:18px!important;gap:9px!important}.portal-avatar{width:38px!important;height:38px!important;border-radius:13px!important}.portal-user-copy{max-width:185px!important}.portal-user-copy strong{font-size:13px!important;max-width:185px!important}.portal-user-copy small{font-size:10px!important}.portal-admin-link{min-height:44px!important}
@media(max-width:820px){.portal-brand>span{display:none!important}.portal-brand img{width:185px!important;max-width:240px!important}.portal-topbar-inner{min-height:72px!important;height:72px!important}.portal-user-copy{display:flex!important;max-width:122px!important}.portal-user-copy strong{font-size:10px!important;max-width:122px!important}.portal-user-copy small{display:none!important}.portal-user-chip{padding:5px 7px 5px 5px!important;gap:6px!important}.portal-avatar{width:32px!important;height:32px!important;border-radius:11px!important}}
@media(max-width:600px){.portal-topbar-inner{min-height:68px!important;height:68px!important;gap:7px!important}.portal-brand img{width:170px!important;max-width:54vw!important}.portal-top-actions{gap:5px!important}.portal-user-copy{max-width:118px!important}.portal-user-copy strong{max-width:118px!important;font-size:9px!important}.portal-user-chip{min-height:44px!important}.portal-avatar{width:34px!important;height:34px!important}}
@media(max-width:380px){.portal-brand img{width:124px!important}.portal-user-copy{max-width:100px!important}.portal-user-copy strong{max-width:100px!important;font-size:8.2px!important}.portal-avatar{display:none!important}.portal-user-chip{min-height:38px!important;padding:5px 6px!important}}
