/* Nethor 2 — couche mobile indépendante de la présentation desktop */
.mobile-week-list,.mobile-drawer-backdrop{display:none}
.login-install{margin-top:23px;padding-top:19px;border-top:1px solid #e8edf6;display:grid;gap:9px}
.login-install>span{color:#72839e;font-size:11px;line-height:1.5}
.login-install-btn{border:1px solid #d7e3f6;background:#f6f9ff;color:#315eab;font-weight:750;border-radius:10px;padding:11px 13px;text-align:center;font-size:12px}
.login-install-btn:hover{background:#eaf2ff}
.pwa-help{padding:12px 13px;background:#f0f5fc;border-radius:9px;color:#476286!important;font-size:11px!important;line-height:1.7!important;margin:5px 0 0!important}
.pwa-settings-row{padding:16px 19px;background:#fff;border:1px solid #e4ebf4;border-radius:13px;display:flex;align-items:center;gap:13px;margin:0 0 19px}
.pwa-settings-icon{display:grid;place-items:center;width:39px;height:39px;border-radius:12px;background:#eef4ff;color:#426fbd;font-size:23px;flex:none}
.pwa-settings-row>div{flex:1;min-width:0}.pwa-settings-row strong{color:#2b4061;font-size:12px;display:block}
.pwa-settings-row small{display:block;margin-top:3px;color:#8494aa;font-size:11px}
.password-field{position:relative}.password-field input{padding-right:85px}
.password-field button{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:0;background:transparent;color:#4e71a6;font-size:11px;font-weight:750;padding:8px;cursor:pointer}
.login-brand{display:flex;align-items:center;gap:11px}.login-brand img{border-radius:10px}
.login-kicker{color:#a6bde6;font-size:10px;letter-spacing:1.4px;font-weight:800}
.mobile-week-person{background:#fff;border:1px solid #e7edf6;border-radius:13px;overflow:hidden}
.mobile-week-person>header{display:flex;justify-content:space-between;gap:8px;align-items:center;padding:14px 15px;background:#fafcff}
.mobile-week-person>header small{display:block;padding-left:41px;font-size:10px;color:#98a6b9;margin-top:3px}
.mobile-week-person .person{font-size:12px}.mobile-hours{font-size:13px;font-weight:850;color:#2b579d;white-space:nowrap;background:#eaf2ff;padding:7px 9px;border-radius:8px}
.mobile-week-days{display:grid}
.mobile-week-day{padding:10px 14px;border:0;border-top:1px solid #eef1f6;background:#fff;display:grid;grid-template-columns:69px minmax(0,1fr) 43px;align-items:center;gap:10px;text-align:left;color:#293e5b;min-height:52px}
.mobile-week-day:hover{background:#f9fbff}.mobile-week-date{display:grid;gap:2px}.mobile-week-date b{font-size:11px}.mobile-week-date small{font-size:10px;color:#9ba9bb}
.mobile-week-shift{min-width:0}.mobile-week-shift .shift{display:block;max-width:190px;white-space:normal;word-break:normal;font-size:11px;padding:8px 9px}
.mobile-week-shift .off{font-size:11px;text-align:left}.mobile-week-duration{text-align:right;font-size:10px;color:#7185a1;font-weight:700;white-space:nowrap}
.drawer-signout{margin-top:11px}
.mobile-week-date,.mobile-week-shift,.mobile-week-duration{pointer-events:none}
@media(max-width:1050px) and (min-width:761px){.sidebar{flex-basis:208px}.layout{grid-template-columns:1fr}}
@media(max-width:760px){
  html{scroll-padding-bottom:calc(98px + env(safe-area-inset-bottom));}
  body{overflow-x:hidden;background:#f5f7fc}
  #app{min-width:0}
  #app.menu-open .mobile-drawer-backdrop{display:block;position:fixed;inset:0;border:0;background:#09182b9c;z-index:17}
  #app.menu-open .sidebar{display:flex;position:fixed;top:0;left:0;z-index:19;width:min(290px,86vw);height:100dvh;padding-top:calc(22px + env(safe-area-inset-top))}
  #app.menu-open .sidebar .brand{padding-bottom:28px}
  #app.menu-open .sidebar nav{overflow-y:auto;min-height:0;padding-bottom:12px}
  .topbar{min-height:66px;height:66px;padding:0 13px;padding-top:env(safe-area-inset-top);box-sizing:content-box;position:sticky;top:0;z-index:9;box-shadow:0 2px 9px #26395708}
  .topbar .mobile-brand{min-width:38px;min-height:40px;border-radius:10px;background:#f2f6fc;font-size:20px}
  .top-context{font-size:10px}
  .topbar .breadcrumb{font-size:11px}
  .top-actions{gap:7px}
  .top-actions .logout-btn{display:none}
  .top-actions .live-tag{font-size:0;width:30px;height:30px;display:grid;place-items:center;padding:0;border-radius:50%;background:#e8f7ef}
  .top-actions .live-tag::first-letter{font-size:11px}
  .workspace{min-width:0}
  main{padding:21px 13px calc(96px + env(safe-area-inset-bottom));}
  .page-header{margin-bottom:18px}
  .page-header .eyebrow{font-size:9px;letter-spacing:1.1px}
  .page-header h1{font-size:23px;line-height:1.18}
  .page-header p{font-size:12px}
  .page-header .actions{gap:7px;display:flex;flex-wrap:wrap}
  .page-header .actions .btn{flex:0 1 auto}
  .card{border-radius:14px}
  .card-head{padding:17px 15px 12px}
  .card-title{font-size:13px}
  .card-body{padding:0 15px 17px}
  .live-summary{margin-bottom:16px;gap:9px}
  .live-stat{border-radius:12px;padding:13px}
  .live-stat strong{font-size:24px}
  .layout,.stack{gap:14px}
  .live-week-wrapper{padding:0 14px 14px;align-items:center;gap:10px}
  .live-paging{gap:5px}.live-paging strong{min-width:105px;font-size:11px}
  .live-week-wrapper .segmented button{padding:7px 10px}
  .desktop-planning-table{display:none}
  .mobile-week-list{display:grid;gap:11px;background:#f6f8fc;padding:12px}
  .mobile-week-person{border-radius:12px}
  .live-day-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .live-day-item{padding:12px;min-width:0}
  .live-day-item .person{font-size:11px;flex-wrap:wrap}
  .live-day-item .shift{font-size:10px;padding:7px 3px;white-space:normal}
  .live-day-nav{position:relative}
  .live-day-nav button{min-width:52px;padding:10px 6px}
  .live-navigator{display:grid;grid-template-columns:repeat(4,1fr);gap:0;min-height:65px;padding:8px 8px calc(8px + env(safe-area-inset-bottom));}
  .live-navigator.nav-count-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .live-navigator button{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;min-height:48px;font-size:22px;color:#8b99af;line-height:1.05}
  .live-navigator button span{font-size:10px;font-weight:750}
  .live-navigator button.active{color:#315fc9}
  .live-bottom{display:none}
  .login-page{min-height:100dvh;display:flex;flex-direction:column;background:linear-gradient(180deg,#122344 0,#244677 260px,#f5f7fc 260px)}
  .login-brandpanel{background:transparent;min-height:235px;padding:calc(24px + env(safe-area-inset-top)) 23px 14px;display:flex;flex-direction:column;justify-content:flex-start;gap:25px}
  .login-brand{font-size:19px;gap:9px}.login-brand img{width:32px;height:32px}
  .login-brand small{font-size:8px}
  .login-kicker{font-size:9px;color:#aec8f1}
  .login-brandpanel h1{font-size:25px;margin:8px 0 0;max-width:290px;color:white}
  .login-main{flex:1;align-items:flex-start;padding:0 14px 35px}
  .login-card{border:1px solid #e4eaf4;background:white;box-shadow:0 15px 40px #132b4b16;border-radius:19px;padding:22px 20px 24px;width:100%;max-width:440px;margin:0 auto}
  .login-card h2{font-size:23px}
  .login-card p{margin-bottom:20px}
  .login-card input{min-height:48px;font-size:16px}
  .login-card .btn.primary{min-height:48px}
  .login-card label{margin:16px 0 6px}
  .login-install{margin-top:19px}
  .login-install-btn{min-height:43px}
  .pwa-settings-row{padding:14px 13px;gap:8px}.pwa-settings-row .btn{padding:9px 11px;font-size:11px}
  .live-person{flex-wrap:wrap}
  .live-person .live-controls{flex-basis:100%;justify-content:flex-end}
  .live-person select{max-width:calc(100% - 90px)}
  .live-error,.live-message,.live-banner{font-size:12px}
}
@media(max-width:400px){
  .mobile-week-day{grid-template-columns:55px minmax(0,1fr) 38px;gap:5px;padding:10px}
  .mobile-week-shift .shift{font-size:10px}
  .live-day-grid{grid-template-columns:1fr}
  .live-summary .live-stat:last-child{grid-column:1/-1}
}
@media(prefers-reduced-motion:no-preference){
  .mobile-week-day,.login-install-btn{transition:background .15s ease}
}

/* Navigation Nethor 2 — jeu SVG unique : desktop, mobile, PWA. */
.live-sidebar .nav-item {gap:12px;padding:8px 11px;border:1px solid transparent;border-radius:13px}
.live-sidebar .nav-icon-wrap,.live-navigator .nav-icon-wrap {display:grid;place-items:center;flex:none;line-height:0}
.live-sidebar .nav-icon-wrap {width:36px;height:36px;border-radius:11px;background:rgba(183,207,255,.08);color:#acc5ee;border:1px solid rgba(169,200,255,.08)}
.live-sidebar .nav-icon {display:block;width:20px;height:20px}
.live-sidebar .nav-item:hover .nav-icon-wrap {background:rgba(160,190,249,.16);color:#f0f6ff}
.live-sidebar .nav-item.active {background:linear-gradient(95deg,rgba(88,132,211,.30),rgba(68,110,187,.18));box-shadow:inset 3px 0 #89b6ff;border-color:rgba(171,204,255,.12);color:#fff}
.live-sidebar .nav-item.active .nav-icon-wrap {background:#cfdefc;color:#244b88;border-color:transparent}
.live-sidebar .drawer-signout .nav-icon-wrap {background:rgba(183,207,255,.05)}
.live-navigator .nav-icon-wrap {width:30px;height:28px;border-radius:9px;color:inherit}
.live-navigator .nav-icon {display:block;width:23px;height:23px}
.live-navigator button.active .nav-icon-wrap {background:#eaf1ff;color:#315fc9}
@media(max-width:760px){
 .live-navigator button {gap:5px;min-width:0;padding:4px 3px}
 .live-navigator .nav-label {font-size:10px;line-height:1.15;font-weight:750}
}
@media(prefers-reduced-motion:no-preference){
 .live-sidebar .nav-icon-wrap,.live-navigator .nav-icon-wrap {transition:background .16s ease,color .16s ease}
}

/* Installation PWA unique : la carte est exclusivement sur Accueil mobile. */
.pwa-home-install{display:none}
@media(max-width:760px){
  .pwa-home-install{
    display:grid;
    grid-template-columns:54px minmax(0,1fr) auto;
    align-items:center;
    column-gap:11px;
    row-gap:11px;
    padding:14px;
    margin:0 0 17px;
    border:1px solid #d6e3fb;
    border-radius:15px;
    background:linear-gradient(125deg,#f2f7ff 0%,#fff 85%);
    box-shadow:0 4px 15px #234b9f0a;
  }
  .pwa-home-logo{display:block;width:54px;height:54px;border-radius:13px}
  .pwa-home-copy{min-width:0;display:grid;gap:3px}
  .pwa-home-copy strong{font-size:14px;font-weight:800;color:#214476}
  .pwa-home-copy span{font-size:11px;line-height:1.35;color:#546e92}
  .pwa-home-copy small{font-size:10px;color:#89a1bf}
  .pwa-home-action{font-size:11px!important;padding:10px 11px!important;min-height:39px;white-space:nowrap}
  .pwa-home-help{grid-column:1/-1;font-size:11px;line-height:1.65;color:#315b9d;margin:0;background:#e9f2ff;border-radius:9px;padding:10px 12px}
}
@media(max-width:355px){
  .pwa-home-install{grid-template-columns:48px minmax(0,1fr);gap:9px}
  .pwa-home-logo{height:48px;width:48px}
  .pwa-home-action{grid-column:1/-1}
}

/* ACCUEIL PERSONNEL COMPACT : mobile et PWA, sans défilement de l'accueil. */
@media(max-width:760px){
  body:has(#app.personal-home-active){height:100dvh;overflow:hidden;overscroll-behavior:none}
  #app.personal-home-active{height:100dvh;min-height:0;overflow:hidden}
  #app.personal-home-active .app{height:100dvh;min-height:0;display:flex;flex-direction:column}
  #app.personal-home-active .workspace{height:100dvh;min-height:0;display:flex;flex-direction:column;padding-bottom:calc(74px + env(safe-area-inset-bottom))}
  #app.personal-home-active .topbar{flex:none}
  #app.personal-home-active main{width:100%;min-height:0;flex:1;display:flex;overflow:hidden;margin:0;padding:9px 13px 8px}
  #app.personal-home-active #screen{width:100%;height:100%;min-height:0;flex:1;display:flex;overflow:hidden}
  .n2h-home{--n2h-ink:#243b60;flex:1;min-width:0;min-height:0;height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;gap:8px;overflow:hidden}
  .n2h-greeting{display:flex;align-items:center;padding:2px 3px 4px;min-width:0}
  .n2h-overline{display:block;color:#7389ab;font-size:9px;font-weight:800;letter-spacing:1.25px}
  .n2h-greeting h1{margin:3px 0 1px;font-weight:850;font-size:clamp(18px,5.7vw,25px);line-height:1.12;letter-spacing:-.65px;color:#203a61;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .n2h-greeting p{margin:0;font-size:10px;line-height:1.35;color:#8495ad;text-transform:capitalize}
  .n2h-card{min-width:0;border:1px solid #e2e9f4;border-radius:17px;background:#fff;box-shadow:0 6px 22px #162f5a08}
  .n2h-schedule{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;padding:10px 11px 8px}
  .n2h-heading,.n2h-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
  .n2h-heading{padding:0 1px 7px}
  .n2h-heading>div,.n2h-meta-label{display:flex;align-items:center;gap:8px;min-width:0}
  .n2h-home .nav-icon-wrap{display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;background:#edf3ff;border-radius:9px;color:#4174c5}
  .n2h-home .nav-icon{display:block;width:16px;height:16px}
  .n2h-home h2{margin:0;color:#284168;font-size:12px;font-weight:800;letter-spacing:-.1px;white-space:nowrap}
  .n2h-week-total{color:#3768b7;background:#eef4ff;border:1px solid #dce9ff;border-radius:100px;font-size:10px;font-weight:850;padding:5px 9px;white-space:nowrap}
  .n2h-days{min-height:0;display:grid;grid-template-rows:repeat(7,minmax(0,1fr));overflow:hidden}
  .n2h-day{min-height:0;min-width:0;display:grid;grid-template-columns:64px minmax(0,1fr) 46px;align-items:center;gap:6px;padding:1px 8px;border-top:1px solid #edf1f7;color:#647893}
  .n2h-day.today{border-radius:9px;background:#edf4ff;border-top-color:transparent;color:#285ab1}
  .n2h-day-date{font-size:10px;font-weight:750;white-space:nowrap;text-transform:capitalize}
  .n2h-day-value{font-size:clamp(9.5px,2.7vw,11.5px);font-weight:750;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#263c5b}
  .n2h-day-hours{font-size:10px;font-weight:750;white-space:nowrap;color:#52749d;text-align:right}
  .n2h-day-leave .n2h-day-value{color:#a57918}
  .n2h-day-rest .n2h-day-value{color:#c27755}
  .n2h-day-unknown .n2h-day-value,.n2h-day-unlinked .n2h-day-value{color:#8b99ae;font-weight:600}
  .n2h-leave,.n2h-rest{padding:10px 13px;overflow:hidden;min-height:0}
  .n2h-leave{border-left:3px solid #e9b64c}
  .n2h-rest{border-left:3px solid #86a7eb}
  .n2h-meta{margin-bottom:4px}
  .n2h-meta .nav-icon-wrap{width:25px;height:25px;flex-basis:25px}
  .n2h-meta .nav-icon{width:15px;height:15px}
  .n2h-meta-value{display:block;color:var(--n2h-ink);font-size:clamp(13px,3.8vw,17px);line-height:1.12;font-weight:850;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .n2h-card small{display:block;color:#8695aa;font-size:10px;line-height:1.3;margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .n2h-leave-state{font-size:9px;font-weight:750;white-space:nowrap;padding:5px 8px;border-radius:50px;background:#f1f4f8;color:#69778c}
  .n2h-leave-state.approved{background:#e8f7ef;color:#26885b}
  .n2h-leave-state.pending{background:#fff2dc;color:#a97720}
  .n2h-leave-state.planned{background:#e8f1ff;color:#3d70b7}
}
@media(max-width:360px) and (max-height:740px){
  .n2h-home{gap:6px}
  .n2h-greeting{padding-bottom:0}
  .n2h-day{grid-template-columns:57px minmax(0,1fr) 40px;gap:4px;padding-left:5px;padding-right:5px}
  .n2h-day-hours{font-size:9px}
  .n2h-schedule{padding:8px 9px 6px}
  .n2h-leave,.n2h-rest{padding:8px 10px}
}

/* Identité Nethor officielle : même logo que le favicon et les PWA. */
.nethor-sidebar-logo,.nethor-header-logo,.nethor-login-logo{display:block;flex:none;object-fit:contain}
.nethor-sidebar-logo{width:43px;height:43px;border-radius:12px}
.nethor-header-logo{width:30px;height:30px;border-radius:8px}
.login-brand .nethor-login-logo{width:50px;height:50px;border-radius:12px}
.login-brand span{display:block}
.login-brand small{display:block}
.startup .start-logo{background:transparent!important;border-radius:17px}
.startup .start-logo img{display:block;width:58px;height:58px;border-radius:13px}
@media(max-width:760px){
 .nethor-sidebar-logo{width:42px;height:42px}
 .nethor-header-logo{width:28px;height:28px;border-radius:7px}
 .topbar .top-left{gap:8px;min-width:0}
 .login-brand .nethor-login-logo{width:40px;height:40px}
 #app.personal-home-active .n2h-greeting{justify-content:space-between;gap:8px}
 #app.personal-home-active .n2h-greeting>div:first-child{min-width:0;flex:1}
 #app.personal-home-active .n2h-greeting .pwa-home-install{
   display:flex;flex:0 0 auto;align-items:center;gap:6px;padding:5px 7px;margin:0;
   border:1px solid #d9e5f6;border-radius:10px;background:#f7faff;box-shadow:none;
 }
 #app.personal-home-active .n2h-greeting .pwa-home-logo{width:27px;height:27px;border-radius:7px}
 #app.personal-home-active .n2h-greeting .pwa-home-copy{display:none}
 #app.personal-home-active .n2h-greeting .pwa-home-action{font-size:10px!important;min-height:27px;padding:6px 8px!important}
 #app.personal-home-active .n2h-greeting .pwa-home-help{
   position:fixed;z-index:30;top:calc(78px + env(safe-area-inset-top));left:12px;right:12px;
   border:1px solid #ccdff7;background:#f0f6ff;box-shadow:0 6px 18px #172c5333;padding:12px 14px
 }
}
@media(max-width:360px){
 #app.personal-home-active .n2h-greeting .pwa-home-logo{display:none}
 .nethor-header-logo{width:25px;height:25px}
}


/* PLANNING MOBILE NETHOR 1 — Relecture du planning Nethor 2 sans widgets hors planning.
   Ces styles ne s'appliquent qu'au mobile et à la PWA mobile, jamais au desktop. */
@media(max-width:760px){
 #app.mobile-planning-active main{padding:14px 12px calc(98px + env(safe-area-inset-bottom));max-width:100%;min-width:0}
 #app.mobile-planning-active #screen{width:100%;min-width:0;max-width:100%}
 .n2pm{--n2pm-blue:#1556c1;--n2pm-ink:#203957;--n2pm-border:#e0e8f2;color:var(--n2pm-ink);min-width:0;display:grid;gap:11px}
 .n2pm button{font:inherit;cursor:pointer;touch-action:manipulation}
 .n2pm button:focus-visible,.n2pm summary:focus-visible{outline:2px solid #3d83df;outline-offset:2px}
 .n2pm-page-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px}
 .n2pm-page-heading span{font-size:9px;font-weight:850;letter-spacing:1.35px;color:#7b90ae}
 .n2pm-page-heading h1{font-size:24px;letter-spacing:-.8px;margin:2px 0 0;font-weight:870;line-height:1.1}
 .n2pm-page-heading>button{display:grid;place-items:center;width:35px;height:35px;border:1px solid #e1eaf4;border-radius:10px;background:white;color:#3762a0;font-size:22px}
 .n2pm-toolbar{display:grid;gap:9px;grid-template-columns:minmax(0,1fr) auto;align-items:center}
 .n2pm-pager{display:flex;min-width:0;gap:5px;align-items:center;justify-content:space-between}
 .n2pm-pager>button{width:34px;height:38px;flex:none;border-radius:10px;border:1px solid #dfe7f3;background:white;color:#315d9e;font-size:23px}
 .n2pm-pager>span{display:grid;text-align:center;min-width:0;gap:1px}
 .n2pm-pager>span strong{font-size:11px;font-weight:850;white-space:nowrap;font-variant-numeric:tabular-nums}
 .n2pm-pager>span small{font-size:9px;color:#8797ad}
 .n2pm-segmented{display:flex;gap:3px;padding:3px;border-radius:11px;background:#e9edf5}
 .n2pm-segmented button{padding:9px 10px;border:none;border-radius:9px;background:transparent;color:#63748e;font-size:11px;font-weight:800;white-space:nowrap}
 .n2pm-segmented button.selected{color:#1852a9;background:#fff;box-shadow:0 2px 7px #183b6520}
 .n2pm-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;min-width:0}
 .n2pm-day{min-width:0;min-height:54px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border-radius:11px;border:1px solid #dfe7f2;background:#fff;color:#345372;padding:5px 0}
 .n2pm-day span{font-size:10px;font-weight:750}
 .n2pm-day strong{font-size:14px;font-weight:850;font-variant-numeric:tabular-nums;line-height:1}
 .n2pm-day.today:not(.selected){border-color:#82a9ef}
 .n2pm-day.selected{background:#1556c1;color:#fff;border-color:#1556c1;box-shadow:0 4px 12px #165bc12b}
 .n2pm-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
 .n2pm-summary>div{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:4px;background:#fff;border:1px solid var(--n2pm-border);padding:9px 8px;border-radius:11px}
 .n2pm-summary span{font-size:10px;font-weight:750;color:#61738f}
 .n2pm-summary strong{font-size:18px;color:#1e3b66;font-weight:850}
 .n2pm-filters{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:-1px 0 0;padding:2px 1px;max-width:100%}
 .n2pm-filters::-webkit-scrollbar{display:none}
 .n2pm-filters button{flex:none;min-height:38px;padding:0 12px;border:1px solid #dce6f2;background:#fff;border-radius:10px;color:#375474;font-size:11px;font-weight:800;white-space:nowrap}
 .n2pm-filters button.selected{background:#e9f2ff;border-color:#2164ce;color:#1450b2}
 .n2pm-week-list,.n2pm-day-list{display:grid;gap:10px;min-width:0}
 .n2pm-week-card,.n2pm-day-card,.n2pm-away{border:1px solid #e0e7f0;border-radius:15px;background:#fff;box-shadow:0 4px 15px #152d560a;min-width:0}
 .n2pm-week-card{padding:12px 10px}
 .n2pm-week-card.is-me,.n2pm-day-card.is-me{border-color:#91b8f3;box-shadow:0 4px 14px #1659bb18}
 .n2pm-week-person,.n2pm-day-person{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
 .n2pm-week-person{margin-bottom:10px}
 .n2pm-identity{display:flex;align-items:center;gap:8px;flex:1;min-width:0}
 .n2pm-avatar{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:50%;background:#eaf1ff;color:#3564b6;font-size:10px;font-weight:850;letter-spacing:.25px}
 .n2pm-person-name{display:block;min-width:0}
 .n2pm-person-name strong{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:12px;font-weight:850;line-height:1.2;color:#243b5b}
 .n2pm-person-name small{display:block;font-size:9px;color:#5076b2;margin-top:3px}
 .n2pm-total{flex:none;text-align:right;display:flex;align-items:flex-end;flex-direction:column;gap:1px;min-width:70px}
 .n2pm-total strong{font-size:12px;font-weight:850;color:#24426a}
 .n2pm-total small{font-size:10px;font-weight:600;color:#92a0b5}
 .n2pm-total b{font-size:9px;color:#ba582f;font-weight:850}
 .n2pm-slots{min-width:0;display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
 .n2pm-slot{display:flex;align-items:stretch;flex-direction:column;justify-content:center;gap:2px;min-width:0;min-height:60px;padding:2px 0;text-align:center;overflow:hidden;background:#edf1f5;border:0;border-radius:8px;color:#6a798d}
 .n2pm-slot.selected{outline:2px solid #1556c1;outline-offset:-2px}
 .n2pm-slot[data-color="g"]{background:#dcf4e6;color:#176b40}
 .n2pm-slot[data-color="b"]{background:#dfebff;color:#1757ab}
 .n2pm-slot[data-color="leave"]{background:#fff0bf;color:#927018}
 .n2pm-slot[data-color="red"]{background:#ffe1df;color:#b53c37}
 .n2pm-slot[data-color="orange"]{background:#ffebd2;color:#a36518}
 .n2pm-slot[data-color="unavailable"]{background:#eee5fa;color:#7753a0}
 .n2pm-mini-shift{display:flex;align-items:center;justify-content:center;flex-direction:column;flex:1;gap:2px;min-height:27px;padding:3px 1px;border-radius:4px;font-variant-numeric:tabular-nums}
 .n2pm-mini-shift[data-color="g"]{color:#176b40}
 .n2pm-mini-shift[data-color="b"]{color:#1757ab}
 .n2pm-mini-shift+.n2pm-mini-shift{border-top:1px solid #ffffffc9}
 .n2pm-mini-shift strong{font-size:9.2px;line-height:1.15;font-weight:850;letter-spacing:-.3px;white-space:nowrap}
 .n2pm-slot-off{font-size:9px;font-weight:800;line-height:1.25;overflow-wrap:anywhere;padding:1px}
 .n2pm-legend{display:flex;flex-wrap:wrap;gap:9px 12px;padding:2px 1px 8px;color:#6e7f94;font-size:10px}
 .n2pm-legend span{display:flex;align-items:center;gap:4px}
 .n2pm-legend i{display:inline-block;width:10px;height:10px;border-radius:3px}
 .n2pm-legend .g{background:#83d7aa}.n2pm-legend .b{background:#8bb9fa}.n2pm-legend .y{background:#f1c663}
 .n2pm-legend .r{background:#f0ae9b}.n2pm-legend .w{background:#be9cdb}
 .n2pm-section-title{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:850;color:#203957;padding:1px 2px 0}
 .n2pm-section-title small{font-size:10px;color:#8091a8;font-weight:650}
 .n2pm-day-card{padding:12px 11px}
 .n2pm-day-person{margin-bottom:9px}
 .n2pm-badge{max-width:51%;padding:6px 8px;border-radius:8px;font-size:9px;font-weight:850;line-height:1.25;background:#e8f1ff;color:#2258a4;text-align:center}
 .n2pm-badge[data-state="ongoing"]{background:#ddf5e7;color:#176940}
 .n2pm-badge[data-state="upcoming"]{background:#e5efff;color:#1657ac}
 .n2pm-badge[data-state="finished"]{background:#edf1f5;color:#62758e}
 .n2pm-badge[data-state="leave"]{background:#fff0c2;color:#8d670e}
 .n2pm-badge[data-state="rest"]{background:#fff0e7;color:#a65b31}
 .n2pm-badge[data-state="unavailable"]{background:#eee6f9;color:#6e5497}
 .n2pm-badge[data-state="empty"],.n2pm-badge[data-state="unknown"]{background:#eef1f5;color:#6e7f92}
 .n2pm-shift-list{display:grid;gap:6px}
 .n2pm-shift{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;min-height:41px;border-radius:10px;padding:9px 12px;border-left:5px solid #367ee3;background:#e3eeff;color:#1659b1}
 .n2pm-shift[data-color="g"]{background:#e1f6e9;color:#176a40;border-left-color:#2aaf70}
 .n2pm-shift[data-color="b"]{background:#e3eeff;color:#1659b1;border-left-color:#367ee3}
 .n2pm-shift strong{font-size:13px;font-weight:850;font-variant-numeric:tabular-nums}
 .n2pm-shift small{font-size:10px;font-weight:700}
 .n2pm-day-off{padding:11px 13px;background:#f0f3f8;border-radius:10px;font-size:12px;font-weight:700;color:#6d7b90}
 .n2pm-day-off[data-state="leave"]{background:#fff0c2;color:#8d670e}
 .n2pm-day-off[data-state="red"]{background:#ffe2df;color:#b53c37}
 .n2pm-day-off[data-state="orange"]{background:#ffebd2;color:#a36518}
 .n2pm-day-off[data-state="unavailable"]{background:#eee6f9;color:#6e5497}
 .n2pm-away{overflow:hidden}
 .n2pm-away summary{display:flex;align-items:center;gap:8px;min-height:51px;padding:10px 12px;list-style:none;cursor:pointer;color:#324d70;font-size:11px;font-weight:850}
 .n2pm-away summary::-webkit-details-marker{display:none}
 .n2pm-away summary>span{flex:1}
 .n2pm-away summary>small{font-size:9px;font-weight:650;color:#8b98aa;white-space:nowrap}
 .n2pm-away summary>b{font-size:18px;font-weight:500;transition:transform .16s}
 .n2pm-away[open] summary>b{transform:rotate(180deg)}
 .n2pm-away-list{display:grid;padding:0 11px 6px}
 .n2pm-away-person{display:flex;align-items:center;gap:8px;min-width:0;border-top:1px solid #edf0f6;padding:8px 0}
 .n2pm-away-person .n2pm-avatar{width:29px;height:29px;font-size:9px}
 .n2pm-away-person .n2pm-person-name strong{font-size:11px}
 .n2pm-away-person .n2pm-identity{min-width:0}
 .n2pm-away-person>span{flex:none;max-width:38%;font-size:9px;font-weight:800;color:#7a8497;text-align:right}
 .n2pm-away-person>span[data-state="leave"]{color:#a17013}
 .n2pm-away-person>span[data-state="red"]{color:#b53c37}
 .n2pm-away-person>span[data-state="orange"]{color:#a36518}
 .n2pm-away-list p{font-size:11px;color:#8492a4}
 .n2pm-empty{padding:21px 13px;text-align:center;font-size:12px;color:#7e8ca1;line-height:1.6;border:1px solid #e0e7f0;border-radius:12px;background:#fff}
 .n2pm-empty strong{display:block;color:#2a4263;font-size:13px}
 .n2pm-empty p{margin:5px 0 0}
 .n2pm-unlinked{border-color:#bdd0ed;background:#f5f9ff}
 .n2pm-error{padding:11px 13px;border-radius:11px;background:#fff0ef;color:#9c4049;font-size:11px;margin:0}
 .n2pm-footnote{text-align:center;color:#8491a3;font-size:10px;line-height:1.45;margin:2px 0 3px}
}
@media(max-width:365px){
 .n2pm{gap:9px}
 .n2pm-toolbar{gap:5px}
 .n2pm-pager>button{width:29px;height:35px}
 .n2pm-pager>span small{display:none}
 .n2pm-segmented button{padding:8px 7px;font-size:10px}
 .n2pm-day{min-height:49px}
 .n2pm-days,.n2pm-slots{gap:3px}
 .n2pm-week-card{padding:10px 7px}
 .n2pm-mini-shift strong{font-size:8.2px}
 .n2pm-slot-off{font-size:8px}
 .n2pm-summary>div{padding:8px 6px}
 .n2pm-summary span{font-size:9px}
}
@media(prefers-reduced-motion:reduce){
 .n2pm-away summary>b{transition:none}
}

/* ENTETE MOBILE NETHOR — même bleu #101f3e que le fond du logo officiel.
   Uniquement mobile / PWA mobile ; le desktop reste inchangé. */
.nethor-mobile-titles{display:none}
@media(max-width:760px){
  #app .topbar{
    background:#101f3e;
    color:#fff;
    border-bottom:1px solid rgba(255,255,255,.1);
    box-shadow:0 4px 16px rgba(12,27,55,.14);
    height:64px;
    min-height:64px;
    padding:env(safe-area-inset-top) 14px 0;
    box-sizing:content-box;
    position:sticky;
    top:0;
    z-index:9;
  }
  #app .topbar .top-left{
    display:flex;
    align-items:center;
    gap:11px;
    flex:1;
    min-width:0;
  }
  #app .topbar .mobile-brand{
    display:grid;
    place-items:center;
    flex:0 0 42px;
    width:42px;
    height:42px;
    min-width:42px;
    min-height:42px;
    padding:0;
    border:1px solid rgba(255,255,255,.15);
    border-radius:12px;
    background:rgba(255,255,255,.085);
    color:#fff;
    font-size:31px;
    font-weight:400;
    line-height:1;
  }
  #app .topbar .mobile-brand span{display:block;transform:translateY(-2px)}
  #app .topbar .mobile-brand:hover{background:rgba(255,255,255,.16)}
  #app .topbar .mobile-brand:focus-visible{outline:2px solid #fff;outline-offset:3px}
  #app .topbar .mobile-brand[aria-expanded="true"]{background:rgba(255,255,255,.20)}
  #app .topbar .nethor-header-logo{
    flex:0 0 40px;
    width:40px;
    height:40px;
    border-radius:10px;
    background:#101f3e;
  }
  #app .topbar .nethor-header-titles{
    flex:1;
    min-width:0;
    display:flex;
    align-items:center;
  }
  #app .topbar .nethor-desktop-titles{display:none}
  #app .topbar .nethor-mobile-titles{
    display:flex;
    flex-direction:column;
    justify-content:center;
    gap:3px;
    min-width:0;
  }
  #app .topbar .nethor-mobile-titles strong{
    display:block;
    font-size:17px;
    line-height:1.05;
    font-weight:850;
    letter-spacing:1.9px;
    color:#fff;
  }
  #app .topbar #mobileCurrentPage{
    display:block;
    font-size:11px;
    line-height:1.25;
    font-weight:650;
    letter-spacing:.25px;
    color:#b9cff4;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  #app .topbar .top-actions{display:none}
}
@media(max-width:360px){
  #app .topbar{padding-left:11px;padding-right:11px}
  #app .topbar .top-left{gap:9px}
  #app .topbar .mobile-brand{flex-basis:39px;width:39px;height:39px;min-width:39px;min-height:39px}
  #app .topbar .nethor-header-logo{flex-basis:37px;width:37px;height:37px}
  #app .topbar .nethor-mobile-titles strong{font-size:16px;letter-spacing:1.5px}
}


/* PARAMETRES SECURITE NETHOR2 — mêmes formulaires sur mobile, PWA et desktop. */
.n2sec-panels{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:20px;align-items:start}
.n2sec-card{min-width:0;overflow:hidden}
.n2sec-card .card-head{padding-bottom:7px}
.n2sec-card .card-head .sub{font-size:11px;line-height:1.55;margin:6px 0 0;color:#7b89a0}
.n2sec-card .card-body{padding-top:12px}
.n2sec-form{display:grid;gap:8px;min-width:0}
.n2sec-form label{color:#304969;font-size:11px;font-weight:800;margin-top:5px}
.n2sec-form input{width:100%;min-width:0;min-height:44px;border:1px solid #d9e3f1;background:#fff;color:#273c5d;border-radius:10px;padding:11px 12px;font-size:14px;outline-offset:2px}
.n2sec-form input:focus{border-color:#4d83d8;box-shadow:0 0 0 3px #3265c41a}
.n2sec-form .btn{margin-top:9px;min-height:44px;font-size:12px}
.n2sec-form .btn:disabled,.n2sec-recovery .btn:disabled{opacity:.55;cursor:not-allowed}
.n2sec-state{display:flex;gap:8px;align-items:center;color:#395d88;font-weight:800;font-size:11px}
.n2sec-dot{flex:none;width:9px;height:9px;border-radius:50%;background:#9daac0}
.n2sec-dot[data-linked="true"]{background:#2da96b}
.n2sec-help{font-size:11px;line-height:1.55;margin:10px 0 14px;color:#617890}
.n2sec-caption{font-size:10px;line-height:1.5;color:#8191a6;margin:11px 0 0}
.n2sec-recovery{border-top:1px solid #e6edf5;margin-top:22px;padding-top:18px}
.n2sec-recovery strong{display:block;font-size:12px;color:#314b71}
.n2sec-recovery p{font-size:11px;line-height:1.55;color:#7889a0;margin:6px 0 12px}
.n2sec-recovery button{font-size:11px;min-height:42px}
.n2sec-notice{padding:12px 14px;border:1px solid #c7d9f6;border-radius:11px;background:#edf4ff;color:#315b94;font-size:12px;line-height:1.5;margin-top:16px}
.n2sec-notice[data-kind="success"]{background:#e9f8ef;color:#1e6d48;border-color:#bee8cb}
.n2sec-notice[data-kind="error"]{background:#fff0ef;color:#a44040;border-color:#f1d0cb}
.n2sec-forgot{display:block;width:max-content;max-width:100%;border:0;background:none;margin:8px auto 0;padding:8px 4px;color:#365fab;font-size:12px;font-weight:750;cursor:pointer}
.n2sec-forgot:hover{text-decoration:underline}
@media(max-width:840px){.n2sec-panels{grid-template-columns:minmax(0,1fr);gap:12px}}
@media(max-width:760px){
 .n2sec-panels{margin-top:13px;gap:12px}
 .n2sec-card .card-head{padding:17px 15px 9px}
 .n2sec-card .card-body{padding:8px 15px 17px}
 .n2sec-card .card-head .sub{font-size:11px}
 .n2sec-form input{font-size:16px;min-height:46px}
 .n2sec-form .btn{min-height:46px}
}

/* LIBELLES DESKTOP NETHOR : navigateur ordinateur et PWA desktop seulement. */
.nethor-sidebar-desktop{display:block}
.nethor-sidebar-mobile{display:none}
@media(min-width:761px){
  #app .live-sidebar .nethor-sidebar-desktop strong{
    font-size:23px;letter-spacing:.4px;font-weight:850;line-height:1.16;
  }
  #app .live-sidebar .nethor-sidebar-desktop small{
    font-size:12px;letter-spacing:.35px;color:#adbfdf;font-weight:600;margin-top:5px;
  }
  #app .topbar .nethor-desktop-titles .breadcrumb{
    display:flex;align-items:baseline;min-width:0;gap:0;
    font-size:14px;font-weight:700;letter-spacing:0;color:#526887;
  }
  #app .topbar .nethor-desktop-name{
    color:#1e395f;font-size:17px;font-weight:850;letter-spacing:.15px;
  }
  #app .topbar #breadPage{
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
}
@media(max-width:760px){
  .nethor-sidebar-desktop{display:none}
  .nethor-sidebar-mobile{display:block}
}


/* Fenêtre de récupération après connexion : strictement Mobile et PWA Mobile. */
@media(max-width:760px){
 body:has(#firstLoginRecoveryPrompt){overflow:hidden!important;overscroll-behavior:none}
 #firstLoginRecoveryPrompt.n2rp-overlay{
  position:fixed;inset:0;z-index:10050;
  display:flex;justify-content:center;align-items:flex-end;
  background:rgba(9,22,44,.53);
  padding:0;margin:0;
 }
 #firstLoginRecoveryPrompt .n2rp-sheet{
  width:min(100%,520px);max-height:calc(100dvh - 45px);
  padding:11px 22px calc(25px + env(safe-area-inset-bottom));
  border-radius:26px 26px 0 0;background:#fff;color:#203856;
  box-shadow:0 -12px 38px #101f3e27;overflow-y:auto;
  overscroll-behavior:contain;
  animation:n2rp-enter .22s ease-out;
 }
 #firstLoginRecoveryPrompt .n2rp-handle{
  width:39px;height:4px;border-radius:8px;margin:0 auto 19px;background:#dce3ed;
 }
 #firstLoginRecoveryPrompt .n2rp-icon{
  display:grid;place-items:center;
  width:48px;height:48px;margin:0 0 14px;
  border-radius:15px;background:#eaf1ff;color:#285eb9;
 }
 #firstLoginRecoveryPrompt .n2rp-icon svg{width:25px;height:25px}
 #firstLoginRecoveryPrompt .n2rp-icon.success{background:#e0f6ec;color:#15804f;font-size:27px;font-weight:800}
 #firstLoginRecoveryPrompt h2{
  font-size:21px;line-height:1.25;font-weight:850;letter-spacing:-.55px;
  color:#1d3455;margin:0 0 11px;
 }
 #firstLoginRecoveryPrompt p{
  margin:0 0 12px;font-size:12px;line-height:1.6;color:#6c7d96;
 }
 #firstLoginRecoveryPrompt .n2rp-info{
  display:flex;align-items:flex-start;gap:9px;
  padding:12px;margin:15px 0;background:#f2f6fc;border-radius:11px;
  font-size:11px;line-height:1.45;color:#576f93;
 }
 #firstLoginRecoveryPrompt .n2rp-info>span:first-child{font-size:16px;flex:none}
 #firstLoginRecoveryPrompt .n2rp-actions{display:grid;gap:9px;margin-top:18px}
 #firstLoginRecoveryPrompt .n2rp-btn{
  width:100%;min-height:47px;padding:11px 14px;border-radius:11px;
  font-size:13px;font-weight:780;cursor:pointer;
 }
 #firstLoginRecoveryPrompt .n2rp-btn.primary{background:#255dc6;color:#fff;border:1px solid #255dc6}
 #firstLoginRecoveryPrompt .n2rp-btn.secondary{background:#f4f7fb;color:#506b91;border:1px solid #e6edf5}
 #firstLoginRecoveryPrompt .n2rp-btn:disabled{opacity:.65;cursor:wait}
 #firstLoginRecoveryPrompt .n2rp-btn:focus-visible,
 #firstLoginRecoveryPrompt input:focus-visible{outline:3px solid #9ebef1;outline-offset:2px}
 #firstLoginRecoveryPrompt label{
  display:block;margin:15px 0 7px;
  font-size:12px;font-weight:780;color:#43597a;
 }
 #firstLoginRecoveryPrompt input{
  display:block;width:100%;height:49px;border:1px solid #d7e1ef;
  border-radius:11px;padding:0 13px;background:#fff;color:#193355;
  font-size:16px;
 }
 #firstLoginRecoveryPrompt .n2rp-footnote{font-size:10px;color:#7889a2;line-height:1.5;margin-top:10px}
 #firstLoginRecoveryPrompt .n2rp-error{font-size:11px;color:#ad3644;margin:8px 0 0}
 @keyframes n2rp-enter{from{transform:translateY(20px);opacity:.7}to{transform:translateY(0);opacity:1}}
}
@media(max-width:760px) and (prefers-reduced-motion:reduce){
 #firstLoginRecoveryPrompt .n2rp-sheet{animation:none}
}


/* NETHORSYNC VUE ENSEMBLE DESKTOP : Administrateur et Point de vente uniquement. */
@media(min-width:761px){
  .n2sync-home-summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .n2sync-home-layout{align-items:start}
  .n2sync-home-layout>.stack{min-width:0}
  .n2sync-home-layout .n2sync-card{min-width:0;overflow:hidden}
  .n2sync-card .card-head{align-items:center;gap:12px;flex-wrap:wrap}
  .n2sync-card .card-head .sub{margin-top:5px}
  .n2sync-status{display:inline-flex;align-items:center;gap:7px;border:1px solid #dfe5ed;background:#f4f6f9;border-radius:100px;padding:8px 11px;font-size:11px;line-height:1.15;font-weight:800;color:#596d87;white-space:nowrap}
  .n2sync-status i{width:8px;height:8px;flex:none;border-radius:50%;background:#95a4b9}
  .n2sync-status[data-state="online"]{color:#197448;background:#ebf8f0;border-color:#c5ecd4}
  .n2sync-status[data-state="online"] i{background:#35b97a;box-shadow:0 0 0 3px #35b97a24}
  .n2sync-status[data-state="offline"],.n2sync-status[data-state="not-seen"]{color:#9a641d;background:#fff5e6;border-color:#f7e3bf}
  .n2sync-status[data-state="offline"] i,.n2sync-status[data-state="not-seen"] i{background:#e8a83d}
  .n2sync-status[data-state="error"]{color:#ad4647;background:#fff0f0;border-color:#f0d2d2}
  .n2sync-card .card-body{display:grid;gap:15px}
  .n2sync-details{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .n2sync-detail{min-width:0;min-height:96px;display:flex;flex-direction:column;gap:6px;border:1px solid #e4ebf5;background:#f7f9fd;border-radius:12px;padding:13px}
  .n2sync-detail>span{font-size:10px;font-weight:750;color:#71839d}
  .n2sync-detail>strong{font-size:14px;line-height:1.35;font-weight:850;color:#263c5e;overflow-wrap:anywhere}
  .n2sync-detail>small{font-size:11px;color:#7288a7}
  .n2sync-empty{border:1px dashed #d6e2f0;background:#f8fbff;padding:23px;border-radius:12px;color:#6a7e9a;font-size:12px;line-height:1.55}
  .n2sync-actions{display:flex;gap:9px;align-items:center}
  .n2sync-actions .btn{min-height:42px;font-size:12px}
  .n2sync-footnote{font-size:11px;line-height:1.55;color:#8491a6;margin:0}
  .n2sync-install-help{margin:0;background:#eaf1ff;border-radius:10px;padding:11px 13px;font-size:11px;line-height:1.6;color:#355b94}
}
@media(min-width:761px) and (max-width:1160px){
  .n2sync-details{grid-template-columns:minmax(0,1fr)}
  .n2sync-detail{min-height:70px}
  .n2sync-status{white-space:normal}
}


/* Nethor Mobile / PWA Mobile : navigation tactile sans zoom par pincement
   ou double tap. Conserve pan-x / pan-y pour défiler et parcourir le planning.
   La classe n'est posée qu'après identification d'un appareil mobile. */
html.nethor-zoom-locked,
html.nethor-zoom-locked body,
html.nethor-zoom-locked #app {
  touch-action:pan-x pan-y;
}
html.nethor-zoom-locked {
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}
/* Safari iOS peut zoomer automatiquement quand un champ a une police <16px. */
html.nethor-zoom-locked input:not([type="checkbox"]):not([type="radio"]),
html.nethor-zoom-locked textarea,
html.nethor-zoom-locked select {
  font-size:16px !important;
}

/* Le tiroir doit rester au premier plan même si l'accueil est sans défilement. */
@media(max-width:760px){
  #app.menu-open,
  #app.menu-open .app{overflow:visible!important}
  #app.menu-open .mobile-drawer-backdrop{position:fixed;inset:0;z-index:1000}
  #app.menu-open #sidebar{position:fixed;z-index:1001;display:flex;visibility:visible;pointer-events:auto}
  #app.menu-open #mobileMenu{pointer-events:auto}
}


/* Planning Mobile / PWA Mobile : l'entête Nethor reste immobile.
   #screen est la seule zone à défilement vertical. Le menu latéral et la
   navigation du bas restent indépendants, avec les zones de sécurité iOS. */
@media(max-width:760px){
  body:has(#app.mobile-planning-active){
    height:100dvh;
    overflow:hidden;
    overscroll-behavior-y:none;
  }
  #app.mobile-planning-active{
    height:100dvh;
    min-height:0;
    overflow:hidden;
  }
  #app.mobile-planning-active .app{
    height:100dvh;
    min-height:0;
    display:flex;
    flex-direction:column;
  }
  #app.mobile-planning-active .workspace{
    height:100dvh;
    min-height:0;
    min-width:0;
    display:flex;
    flex-direction:column;
    padding-bottom:calc(74px + env(safe-area-inset-bottom));
    overflow:hidden;
  }
  #app.mobile-planning-active .topbar{
    flex:0 0 auto;
    position:relative;
    top:auto;
    z-index:9;
  }
  #app.mobile-planning-active main#screen{
    flex:1 1 auto;
    display:block;
    min-height:0;
    width:100%;
    min-width:0;
    max-width:100%;
    margin:0;
    padding:14px 12px 14px;
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior-y:contain;
    -webkit-overflow-scrolling:touch;
  }
}


/* NethorSync public : écran unique Mobile/PWA Mobile sans défilement.
   L'entête et la barre inférieure ne défilent jamais ; aucun défilement
   intérieur non plus. Les écrans Desktop gardent leurs anomalies actuelles. */
@media(max-width:760px){
 body:has(#app.mobile-sync-active){height:100dvh;overflow:hidden;overscroll-behavior:none}
 #app.mobile-sync-active{height:100dvh;min-height:0;overflow:hidden}
 #app.mobile-sync-active .app{height:100dvh;min-height:0;display:flex;flex-direction:column}
 #app.mobile-sync-active .workspace{
   height:100dvh;min-height:0;min-width:0;display:flex;flex-direction:column;
   padding-bottom:calc(74px + env(safe-area-inset-bottom));overflow:hidden
 }
 #app.mobile-sync-active .topbar{flex:0 0 auto;position:relative;top:auto;z-index:9}
 #app.mobile-sync-active main#screen{
   width:100%;min-height:0;max-width:100%;flex:1 1 auto;display:flex;
   margin:0;padding:12px 13px 10px;overflow:hidden;overscroll-behavior:none
 }
 .n2ms{
   --n2ms-ink:#233b5f;flex:1;min-width:0;min-height:0;height:100%;
   display:grid;grid-template-rows:auto minmax(0,1.05fr) auto minmax(0,1.25fr) auto;
   gap:clamp(6px,1.2dvh,12px);overflow:hidden;color:var(--n2ms-ink)
 }
 .n2ms-head{min-width:0;display:flex;justify-content:space-between;align-items:center;gap:10px}
 .n2ms-head span{display:block;color:#8a9dba;font-size:9px;letter-spacing:1.25px;font-weight:800}
 .n2ms-head h1{font-size:clamp(20px,5vw,25px);letter-spacing:-.8px;font-weight:870;line-height:1.1;margin:2px 0 0}
 .n2ms-head>button{flex:none;width:38px;height:38px;display:grid;place-items:center;border:1px solid #dfe8f5;border-radius:12px;background:#fff;color:#2b62b4}
 .n2ms-head>button svg{width:19px;height:19px}
 .n2ms-head>button:disabled{opacity:.55}
 .n2ms-head>button:focus-visible{outline:3px solid #9ebcf0;outline-offset:2px}
 .n2ms-primary{min-height:0;display:flex;flex-direction:column;justify-content:center;gap:clamp(5px,.9dvh,9px);
   border-radius:17px;border:1px solid #2957a9;background:linear-gradient(137deg,#101f3e,#1b437e);
   box-shadow:0 7px 18px #0f2e5420;padding:clamp(10px,2.4vh,18px);color:#fff;overflow:hidden}
 .n2ms-primary-label{display:flex;gap:7px;align-items:center;font-size:clamp(8px,2.35vw,10px);font-weight:800;letter-spacing:.8px;color:#b9d3fb}
 .n2ms-primary-dot{height:7px;width:7px;flex:none;border-radius:50%;background:#82e2aa}
 .n2ms-primary[data-publication="indisponible"] .n2ms-primary-dot,.n2ms-primary[data-publication="vide"] .n2ms-primary-dot{background:#ffc778}
 .n2ms-primary-time{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 9px;line-height:1.07;min-width:0}
 .n2ms-primary-time strong{font-size:clamp(18px,5.4vw,27px);font-weight:900;letter-spacing:-.75px;overflow-wrap:anywhere}
 .n2ms-primary-time>span{font-size:clamp(13px,3.8vw,17px);font-weight:700;color:#d7e6ff}
 .n2ms-primary p{font-size:clamp(10px,2.9vw,12px);color:#c5d7f4;margin:0}
 .n2ms-subtitle{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:7px}
 .n2ms-schedule{min-width:0;display:grid;gap:2px}
 .n2ms-schedule>span{font-size:clamp(9px,2.6vw,11px);font-weight:850;color:#435c7e}
 .n2ms-schedule>small{font-size:clamp(8px,2.25vw,10px);color:#7188a8;white-space:normal;line-height:1.25}
 .n2ms-state{display:flex;align-items:center;justify-content:center;gap:5px;padding:6px 9px;flex:none;
   border-radius:999px;background:#f3f6fb;border:1px solid #e2e9f2;color:#6b7e97;font-size:10px;font-weight:800}
 .n2ms-state i{width:7px;height:7px;flex:none;border-radius:50%;background:#a0acc0}
 .n2ms-state[data-state="online"]{color:#197548;background:#eaf8f0;border-color:#c9ebd8}
 .n2ms-state[data-state="online"] i{background:#31ba7b}
 .n2ms-state[data-state="offline"],.n2ms-state[data-state="not-seen"]{color:#996728;background:#fff5e4;border-color:#f4dfbc}
 .n2ms-state[data-state="offline"] i,.n2ms-state[data-state="not-seen"] i{background:#e8a83d}
 .n2ms-grid{min-height:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:clamp(5px,.9dvh,9px)}
 .n2ms-tile{min-width:0;min-height:0;display:flex;flex-direction:column;justify-content:center;gap:clamp(2px,.45dvh,4px);
   border:1px solid #e3eaf4;border-radius:12px;background:#fff;padding:clamp(6px,1.1dvh,10px);overflow:hidden}
 .n2ms-tile>span{font-size:clamp(9px,2.6vw,10px);font-weight:780;color:#7689a6}
 .n2ms-tile>strong{font-size:clamp(12px,3.6vw,16px);line-height:1.1;color:#274366;font-weight:850;overflow-wrap:anywhere}
 .n2ms-tile>small{font-size:clamp(8px,2.4vw,10px);line-height:1.22;color:#738aab}
 .n2ms-foot{min-width:0;padding:9px 12px;border-radius:11px;background:#eaf1fd;display:grid;gap:3px}
 .n2ms-foot p{font-size:clamp(9px,2.55vw,10px);line-height:1.35;color:#47648b;margin:0}
 .n2ms-foot small{font-size:9px;color:#7a90ac}
}
@media(max-width:760px) and (max-height:630px){
 #app.mobile-sync-active main#screen{padding:7px 10px}
 .n2ms{gap:5px}
 .n2ms-head h1{font-size:19px}
 .n2ms-head>button{width:33px;height:33px}
 .n2ms-primary{border-radius:12px;padding:9px 11px;gap:4px}
 .n2ms-primary-time strong{font-size:19px}
 .n2ms-grid{gap:6px}
 .n2ms-tile{padding:5px 6px;gap:2px}
 .n2ms-tile>span{font-size:8.5px}
 .n2ms-tile>strong{font-size:12px}
 .n2ms-tile>small{font-size:8px}
 .n2ms-schedule>small{font-size:8px}
 .n2ms-foot{padding:6px 9px}
}


/* HISTORIQUE UNIFIÉ : imports manuels et versions de fichiers NethorSync.
   Historique admin ; conserve les téléchargements existants. */
.n2hist-list{padding:15px;display:grid;gap:12px;min-width:0}
.n2hist-entry{
  padding:15px;border:1px solid #e2eaf5;background:#fff;border-radius:14px;
  min-width:0;box-shadow:0 3px 12px #18365309
}
.n2hist-entry.sync{background:#f8fbff;border-color:#d8e6f8}
.n2hist-top{display:flex;align-items:center;justify-content:space-between;gap:9px;flex-wrap:wrap}
.n2hist-source{display:inline-flex;align-items:center;padding:5px 9px;border-radius:999px;
  font-size:10px;font-weight:850;letter-spacing:.1px}
.n2hist-source.manual{color:#3361a7;background:#e9f1ff}
.n2hist-source.sync{color:#197f54;background:#e2f6eb}
.n2hist-top time{font-size:11px;color:#8293aa;font-variant-numeric:tabular-nums}
.n2hist-entry h3{margin:11px 0 8px;font-size:14px;line-height:1.35;color:#213b60;font-weight:850;overflow-wrap:anywhere}
.n2hist-meta,.n2hist-note{color:#7a8ca5;font-size:11px;line-height:1.45;margin:0 0 10px}
.n2hist-note{margin:10px 0 0}
.n2hist-entry.manual button{font-size:11px;min-height:36px}
.n2hist-version-flow{display:grid;grid-template-columns:minmax(0,1fr) 25px minmax(0,1fr);gap:8px;align-items:stretch}
.n2hist-version{background:#fff;border:1px solid #e4eaf2;border-radius:10px;padding:11px;min-width:0}
.n2hist-version.latest{background:#eaf3ff;border-color:#b9d3f6}
.n2hist-version>span{display:block;font-size:10px;color:#778ba8;font-weight:800;margin-bottom:6px}
.n2hist-version strong,.n2hist-single strong{display:block;color:#2c4367;font-size:12px;line-height:1.35;font-weight:850;overflow-wrap:anywhere}
.n2hist-version small,.n2hist-single small{display:block;color:#7b8da7;font-size:11px;line-height:1.5;margin-top:5px;overflow-wrap:anywhere}
.n2hist-arrow{display:flex;align-items:center;justify-content:center;font-size:19px;color:#4573b8;font-weight:700}
.n2hist-single{border:1px solid #e4eaf2;border-radius:10px;padding:11px;background:#fff}
@media(max-width:600px){
 .n2hist-list{padding:10px;gap:9px}
 .n2hist-entry{padding:11px}
 .n2hist-version-flow{grid-template-columns:minmax(0,1fr);gap:5px}
 .n2hist-arrow{transform:rotate(90deg);height:18px}
 .n2hist-version{padding:9px 10px}
 .n2hist-version strong{font-size:11px}
}


/* Vue annuelle — calendrier Nethor 1 adapté à Nethor 2 Mobile / PWA Mobile.
   Défilement uniquement dans #screen (entête NETHOR et nav inférieure fixes). */
@media(max-width:760px){
 #app.mobile-planning-active .n2pm-toolbar{grid-template-columns:minmax(0,1fr) auto}
 #app.mobile-planning-active .n2pm-segmented{gap:2px}
 #app.mobile-planning-active .n2pm-segmented button{padding:9px 8px}
 #app.mobile-planning-active .n2pm-year-btn{color:#285ba9;font-weight:850}
 #app.mobile-planning-active .n2py{--py-blue:#1556c1;min-width:0;padding:0 0 20px;color:#213a5c}
 #app.mobile-planning-active .n2py-fixed{
   position:sticky;top:-14px;z-index:5;background:#f5f7fc;
   padding:9px 0 12px;display:grid;gap:10px;border-bottom:1px solid #e4eaf2;
 }
 #app.mobile-planning-active .n2py-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
 #app.mobile-planning-active .n2py-head>div{min-width:0}
 #app.mobile-planning-active .n2py-head span{display:block;font-size:9px;letter-spacing:1.3px;font-weight:850;color:#7e95b8}
 #app.mobile-planning-active .n2py-head h2{font-size:24px;letter-spacing:-.9px;line-height:1.1;font-weight:900;margin:3px 0}
 #app.mobile-planning-active .n2py-head p{font-size:11px;color:#7387a6;line-height:1.4;margin:3px 0 0}
 #app.mobile-planning-active .n2py-head>button{display:grid;place-items:center;width:38px;height:38px;flex:none;font-size:19px;border-radius:11px;border:1px solid #dfe7f2;color:#587199;background:#fff}
 #app.mobile-planning-active .n2py-controls{
   display:grid;grid-template-columns:43px minmax(0,1fr) 43px;gap:8px;align-items:center
 }
 #app.mobile-planning-active .n2py-controls button{min-height:42px;border:1px solid #dbe5f2;border-radius:11px;background:#fff;color:#2356a1;font-weight:850;font-size:22px}
 #app.mobile-planning-active .n2py-controls .n2py-current{font-size:19px;color:#fff;background:#101f3e;border-color:#101f3e;font-variant-numeric:tabular-nums}
 #app.mobile-planning-active .n2py-legend{display:flex;align-items:center;gap:7px 13px;flex-wrap:wrap;color:#677d9a;font-size:10px;font-weight:700}
 #app.mobile-planning-active .n2py-legend>span{display:inline-flex;align-items:center;gap:5px}
 #app.mobile-planning-active .n2py-legend i{width:11px;height:11px;border-radius:4px;display:inline-block;flex:none}
 #app.mobile-planning-active .n2py-legend .available{background:#ddebff;border:1px solid #a6c5f4}
 #app.mobile-planning-active .n2py-legend .today{border:2px solid #1556c1;background:#fff}
 #app.mobile-planning-active .n2py-legend .unavailable{background:#edf0f5;border:1px solid #e5e8ee}
 #app.mobile-planning-active .n2py-error{background:#fff2ef;border:1px solid #f0d2ce;border-radius:10px;color:#a03c3c;font-size:11px;padding:10px}
 #app.mobile-planning-active .n2py-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:11px;margin-top:13px}
 #app.mobile-planning-active .n2py-month{
   min-width:0;padding:13px 12px 14px;border-radius:17px;background:#fff;
   border:1px solid #e0e7f1;box-shadow:0 4px 15px #152d560a
 }
 #app.mobile-planning-active .n2py-month-head{display:flex;align-items:center;justify-content:space-between;gap:9px;margin-bottom:13px}
 #app.mobile-planning-active .n2py-month-head h3{font-size:16px;font-weight:850;color:#233e63;margin:0}
 #app.mobile-planning-active .n2py-month-head>span{font-size:10px;color:#94a2b5;background:#f2f4f8;border-radius:999px;padding:5px 9px;font-weight:750}
 #app.mobile-planning-active .n2py-month-head>span.has-planning{color:#215b9a;background:#e9f1ff}
 #app.mobile-planning-active .n2py-weekdays,.n2py-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;text-align:center;min-width:0}
 #app.mobile-planning-active .n2py-weekdays{margin-bottom:5px;color:#8c9bb1;font-size:10px;font-weight:850}
 #app.mobile-planning-active .n2py-weekdays span{padding:5px 0}
 #app.mobile-planning-active .n2py-blank{min-height:41px}
 #app.mobile-planning-active .n2py-day{
   position:relative;display:grid;place-items:center;min-height:41px;padding:5px 1px 8px;
   border-radius:10px;border:1px solid transparent;background:#f3f5f8;
   color:#9aa6b6;font-size:12px;font-weight:700;font-variant-numeric:tabular-nums
 }
 #app.mobile-planning-active .n2py-day.weekend:not(.published){background:#eef1f6}
 #app.mobile-planning-active .n2py-day.published{background:#e7f0ff;color:#2155a4;border-color:#c9dcf7;font-weight:850}
 #app.mobile-planning-active .n2py-day.published i{position:absolute;bottom:5px;width:4px;height:4px;border-radius:50%;background:#1c62cb}
 #app.mobile-planning-active .n2py-day.today{outline:2px solid #1556c1;outline-offset:-2px}
 #app.mobile-planning-active .n2py-day.selected:not(.today){box-shadow:inset 0 0 0 2px #90b6eb}
 #app.mobile-planning-active .n2py-day:active{transform:scale(.96)}
 #app.mobile-planning-active .n2py-day:focus-visible,.n2py-controls button:focus-visible,.n2py-head button:focus-visible{outline:2px solid #1556c1;outline-offset:2px}
}
@media(min-width:540px) and (max-width:760px){
 #app.mobile-planning-active .n2py-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}
 #app.mobile-planning-active .n2py-month{padding:10px 8px 12px}
 #app.mobile-planning-active .n2py-day{min-height:35px;font-size:11px}
 #app.mobile-planning-active .n2py-blank{min-height:35px}
}
@media(max-width:365px){
 #app.mobile-planning-active .n2pm-toolbar{grid-template-columns:minmax(0,1fr);gap:7px}
 #app.mobile-planning-active .n2pm-segmented{justify-content:center}
 #app.mobile-planning-active .n2pm-segmented button{flex:1;min-height:38px}
 #app.mobile-planning-active .n2py-fixed{gap:8px}
 #app.mobile-planning-active .n2py-day{min-height:36px}
 #app.mobile-planning-active .n2py-blank{min-height:36px}
}

/* Les trois onglets Jour/Semaine/Année restent accessibles même sur iPhone étroit. */
@media(max-width:430px){
 #app.mobile-planning-active .n2pm-toolbar{grid-template-columns:minmax(0,1fr);gap:7px}
 #app.mobile-planning-active .n2pm-segmented{width:100%}
 #app.mobile-planning-active .n2pm-segmented button{flex:1;min-width:0}
}
