    @font-face { font-family: 'Geist'; src:url('/Geist.ttf') format('truetype-variations'),url('/Geist.ttf') format('truetype'); font-weight:100 900; font-style:normal; font-display:swap; }
    *{margin:0;padding:0;box-sizing:border-box;}
    :root {--bg:var(--wc-fond-nuit);--accent: var(--wc-accent);--border:rgba(30,80,160,0.25);--card-bg:rgba(15,25,50,0.7);}
    body{font-family:var(--wc-police);background:var(--bg);color:var(--wc-text);height:100vh;overflow:hidden;display:flex;flex-direction:column;}
    /* Thème clair : inversion intelligente — sombre↔clair, teintes préservées.
       Les images/QR sont ré-inversées pour rester naturelles. */
    body.light{filter:invert(1) hue-rotate(180deg);background:#e9edf2;}
    body.light img,body.light #qr-box img{filter:invert(1) hue-rotate(180deg);}
    .bg-glow{position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse 80% 50% at 50% -10%,rgba(var(--wc-accent-rgb),0.10) 0%,transparent 60%);}

    /* Nav */
    nav{height:52px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 16px;background:#04090f;border-bottom:1px solid rgba(255,255,255,0.08);flex-shrink:0;}
    nav .brand{justify-self:start;display:inline-flex;align-items:center;height:100%;}
    nav .brand img{height:22px;display:block;}
    nav .nav-center{justify-self:center;display:flex;align-items:center;gap:8px;}
    nav .nav-pill{display:inline-flex;align-items:center;padding:4px 12px;font-size:11px;font-weight:600;color:var(--wc-text-secondary);background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.08);border-radius:var(--wc-r-pilule);}
    nav .nav-user{justify-self:end;display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:var(--wc-r-pilule);background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.08);font-size:11px;font-weight:500;color:var(--wc-text-secondary);cursor:pointer;transition:all .15s;}
    nav .nav-user:hover{background:rgba(255,69,58,0.15);border-color:rgba(255,69,58,0.3);color:var(--wc-red);}
    @keyframes popIn{from{opacity:0;transform:translate(-50%,-50%) scale(0.95);}to{opacity:1;transform:translate(-50%,-50%) scale(1);}}
    /* App layout: sidebar + canvas */
    .app{display:flex;flex:1;overflow:hidden;min-height:0;position:relative;}

    /* Sidebar */
    .sidebar{width:260px;flex-shrink:0;display:flex;flex-direction:column;background:rgba(4,8,20,0.9);border-right:1px solid rgba(255,255,255,0.06);overflow:hidden;transition:width .2s ease,opacity .15s ease;}
    .sidebar.collapsed{width:0;opacity:0;border-right:none;pointer-events:none;}
    .sidebar-header{padding:12px 14px;border-bottom:1px solid rgba(255,255,255,0.06);flex-shrink:0;display:flex;align-items:center;gap:8px;}
    .sidebar-header .new-btn{display:flex;align-items:center;justify-content:center;gap:6px;flex:1;padding:8px;background:rgba(var(--wc-accent-rgb),0.1);border:1px dashed rgba(var(--wc-accent-rgb),0.3);border-radius:var(--wc-r-s);color:#5a9adf;font-size:12px;font-family:inherit;cursor:pointer;transition:all .15s;white-space:nowrap;}
    .sidebar-header .new-btn:hover{background:rgba(var(--wc-accent-rgb),0.18);color:var(--wc-bleu-pale);}
    .sidebar-toggle{flex-shrink:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.1);border-radius:var(--wc-r-s);color:var(--wc-gris-ciel);font-size:12px;cursor:pointer;transition:all .15s;}
    .sidebar-toggle:hover{background:rgba(255,255,255,0.1);color:var(--wc-texte-bleute);}
    .sidebar-show{position:absolute;top:7px;left:10px;z-index:50;width:32px;height:32px;display:none;align-items:center;justify-content:center;background:rgba(255,255,255,0.05);border:1px solid rgba(255,255,255,0.12);border-radius:var(--wc-r-s);color:var(--wc-gris-ciel);font-size:14px;cursor:pointer;transition:all .15s;}
    .sidebar-show:hover{background:rgba(var(--wc-accent-rgb),0.18);color:var(--wc-bleu-pale);border-color:rgba(var(--wc-accent-rgb),0.3);}
    .sidebar-show.visible{display:flex;}
    /* décale le contenu de la toolbar pour laisser place au bouton ☰ */
    .app.sidebar-hidden .toolbar{padding-left:52px;}
    .sidebar-list{flex:1;overflow-y:auto;padding:8px;}
    .flow-item{display:flex;align-items:center;padding:8px 10px;border-radius:var(--wc-r-s);cursor:pointer;transition:all .15s;gap:8px;border:1px solid transparent;}
    .flow-item:hover{background:rgba(var(--wc-accent-rgb),0.07);}
    .flow-item.active{background:rgba(var(--wc-accent-rgb),0.12);border-color:rgba(var(--wc-accent-rgb),0.25);}
    .flow-item-info{flex:1;min-width:0;}
    .flow-item-title{font-size:12px;font-weight:600;color:#c8dcf0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .flow-item-date{font-size:10px;color:#3a5070;margin-top:2px;}
    .flow-item-del{background:none;border:none;color:var(--wc-rouge-vif);cursor:pointer;font-size:13px;opacity:0;padding:2px 4px;border-radius:var(--wc-r-xs);flex-shrink:0;}
    .flow-item:hover .flow-item-del{opacity:0.6;}
    .flow-item-del:hover{opacity:1!important;}
    .sidebar-empty{padding:24px 14px;text-align:center;color:#2a3a5a;font-size:12px;}
    .sidebar-search{padding:8px 12px 4px;flex-shrink:0;}
    .sidebar-search input{width:100%;padding:6px 10px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.1);border-radius:var(--wc-r-s);color:#c8dcf0;font-family:inherit;font-size:12px;outline:none;}
    .sidebar-search input:focus{border-color:rgba(var(--wc-accent-rgb),0.35);background:rgba(var(--wc-accent-rgb),0.06);}

    /* Canvas area */
    .canvas-area{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;position:relative;}
    .toolbar{display:flex;align-items:center;gap:8px;padding:8px 14px;background:#04090f;border-bottom:1px solid rgba(255,255,255,0.08);flex-shrink:0;min-height:44px;flex-wrap:wrap;}
    .tool-group{display:flex;gap:2px;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:var(--wc-r-s);padding:2px;}
    .btn-icon{padding:4px 9px;font-size:14px;background:transparent;border:none;color:var(--wc-text-secondary);border-radius:var(--wc-r-xs);}
    .btn-icon:hover:not(:disabled){background:rgba(255,255,255,0.1);color:var(--wc-text);}
    .btn-icon:disabled{opacity:0.3;cursor:not-allowed;}
    .filter-menu{display:none;position:absolute;top:46px;right:14px;z-index:200;background:#0d1426;border:1px solid rgba(var(--wc-accent-rgb),0.2);border-radius:var(--wc-r-m);padding:12px 14px;box-shadow:0 12px 32px rgba(0,0,0,0.6);min-width:210px;}
    .filter-menu.open{display:block;}
    .filter-menu label{display:flex;align-items:center;gap:8px;font-size:12px;color:#c8dcf0;padding:5px 0;cursor:pointer;}
    .filter-menu input[type=checkbox]{accent-color:var(--wc-accent);width:14px;height:14px;}
    .filter-menu .filter-sep{height:1px;background:rgba(255,255,255,0.08);margin:8px 0;}
    .filter-menu .filter-label{font-size:10px;font-weight:700;letter-spacing:0.08em;color:var(--wc-gris-ardoise-2);margin-bottom:4px;text-transform:uppercase;}
    .filter-menu select{width:100%;padding:5px 8px;background:var(--wc-fond-nuit);border:1px solid rgba(var(--wc-accent-rgb),0.2);border-radius:var(--wc-r-s);color:var(--wc-texte-bleute);font-family:inherit;font-size:12px;outline:none;}
    .modal textarea{width:100%;min-height:120px;padding:10px 12px;background:rgba(10,18,40,0.8);border:1px solid rgba(var(--wc-accent-rgb),0.2);border-radius:var(--wc-r-s);color:var(--wc-texte-bleute);font-family:inherit;font-size:13px;outline:none;resize:vertical;line-height:1.5;}
    .modal textarea:focus{border-color:rgba(var(--wc-accent-rgb),0.4);}
    .modal .field-row{display:flex;flex-direction:column;gap:5px;}
    .modal .field-row label{font-size:11px;font-weight:600;color:var(--wc-gris-ciel);}
    .modal .field-row select{padding:7px 10px;background:rgba(10,18,40,0.8);border:1px solid rgba(var(--wc-accent-rgb),0.2);border-radius:var(--wc-r-s);color:var(--wc-texte-bleute);font-family:inherit;font-size:13px;outline:none;}
    /* Panneau remplissage en série */
    .serie-panel{display:none;align-items:center;gap:8px;padding:7px 14px;background:rgba(34,197,94,0.08);border-bottom:1px solid rgba(34,197,94,0.2);flex-shrink:0;flex-wrap:wrap;}
    .serie-panel.open{display:flex;}
    .serie-panel span{font-size:12px;color:#7fcf9c;font-weight:600;}
    .serie-panel select,.serie-panel input{padding:5px 9px;background:rgba(10,18,40,0.7);border:1px solid rgba(34,197,94,0.25);border-radius:var(--wc-r-s);color:var(--wc-texte-bleute);font-family:inherit;font-size:12px;outline:none;}
    .btn-multi-on{background:rgba(34,197,94,0.18)!important;border-color:rgba(34,197,94,0.4)!important;color:#7fcf9c!important;}
    .toolbar input.title-input{flex:1;background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.1);outline:none;font-family:inherit;font-size:13px;font-weight:600;color:var(--wc-texte-bleute);padding:5px 10px;border-radius:var(--wc-r-s);-webkit-appearance:none;appearance:none;}
    .toolbar input.title-input:focus{background:rgba(var(--wc-accent-rgb),0.08);border-color:rgba(var(--wc-accent-rgb),0.35);}
    .toolbar .save-indicator{font-size:10px;color:#3a5070;flex-shrink:0;}
    .toolbar .save-indicator.dirty{color:#f59e0b;}
    .btn{padding:6px 12px;border:none;border-radius:var(--wc-r-s);font-family:inherit;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:5px;white-space:nowrap;}
    .btn-primary{background:var(--wc-accent);color:#fff;}
    .btn-primary:hover{background:#1a7fd4;}
    .btn-secondary{background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.1);color:var(--wc-text-secondary);}
    .btn-secondary:hover{background:rgba(255,255,255,0.12);color:var(--wc-text);}
    .btn-danger{background:rgba(239,68,68,0.1);border:1px solid rgba(239,68,68,0.25);color:var(--wc-rouge-clair);}
    .btn-danger:hover{background:rgba(239,68,68,0.2);}

    .canvas-scroll{flex:1;overflow:auto;background:#010509;display:flex;align-items:flex-start;justify-content:center;padding:24px;position:relative;}
    /* Conteneur zoomable : reçoit le scale, le canvas-scroll gère le défilement */
    .zoom-wrap{transform-origin:0 0;display:inline-block;}
    #main{display:block;flex-shrink:0;}
    /* Contrôles de zoom — fixés en bas-droite de la zone canvas */
    .zoom-controls{position:absolute;bottom:14px;right:14px;z-index:60;display:flex;
      background:rgba(13,20,38,0.95);border:1px solid rgba(255,255,255,0.12);
      border-radius:var(--wc-r-s);overflow:hidden;box-shadow:0 4px 16px rgba(0,0,0,0.5);}
    .zoom-btn{background:none;border:none;color:var(--wc-text-secondary);font-family:inherit;
      font-size:15px;font-weight:600;cursor:pointer;padding:7px 12px;transition:all .12s;}
    .zoom-btn:hover{background:rgba(255,255,255,0.1);color:var(--wc-text);}
    .zoom-btn.zoom-level{font-size:11px;min-width:52px;border-left:1px solid rgba(255,255,255,0.1);
      border-right:1px solid rgba(255,255,255,0.1);}

    /* Empty state */
    .empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;flex:1;align-self:stretch;color:#2a3a5a;gap:14px;pointer-events:none;}
    .empty-state svg{width:52px;height:52px;opacity:0.2;}
    .empty-state p{font-size:13px;}
    .empty-state .hint{font-size:11px;color:#1a2a40;}

    /* Cell popup */
    #popup{display:none;position:fixed;z-index:2000;background:#0d1f3c;border:1px solid rgba(var(--wc-accent-rgb),0.3);border-radius:var(--wc-r-m);padding:14px 16px;min-width:240px;max-width:320px;box-shadow:0 8px 32px rgba(0,0,0,0.7);font-size:13px;}
    #popup h4{font-size:11px;font-weight:700;color:#4a8cc0;letter-spacing:.1em;margin-bottom:10px;text-transform:uppercase;}
    #popup label{font-size:11px;color:var(--wc-gris-ciel-2);display:block;margin-bottom:3px;margin-top:8px;}
    #popup select,#popup input{width:100%;background:var(--wc-fond-nuit);border:1px solid rgba(var(--wc-accent-rgb),0.2);color:var(--wc-texte-bleute);border-radius:var(--wc-r-s);padding:5px 8px;font-size:12px;font-family:inherit;outline:none;}
    #popup select option{background:#06101e;}
    #popup select:focus,#popup input:focus{border-color:rgba(var(--wc-accent-rgb),0.5);}
    #popup .row{display:flex;gap:8px;}
    #popup .row select{flex:1;}
    #popup .row input{width:72px;flex:none;}
    #popup .btns{display:flex;gap:8px;margin-top:12px;}
    #popup button{flex:1;padding:6px;border-radius:var(--wc-r-s);border:none;cursor:pointer;font-size:12px;font-weight:600;font-family:inherit;}
    #popup .btn-ok{background:var(--wc-accent);color:#fff;}
    #popup .btn-ok:hover{background:#1a7fe0;}
    #popup .btn-clr{background:rgba(255,255,255,0.06);color:var(--wc-gris-ciel-2);}
    #popup .btn-clr:hover{background:rgba(255,255,255,0.1);}
    #popup .close-x{position:absolute;top:8px;right:10px;color:#4a6ea0;cursor:pointer;font-size:16px;line-height:1;background:none;border:none;}
    #popup .close-x:hover{color:var(--wc-texte-bleute);}

    /* Source popup (larger) */
    #source-popup{display:none;position:fixed;z-index:2000;background:#0d1f3c;border:1px solid rgba(var(--wc-accent-rgb),0.3);border-radius:var(--wc-r-m);padding:16px;min-width:300px;max-width:380px;box-shadow:0 8px 32px rgba(0,0,0,0.7);font-size:13px;}
    #source-popup h4{font-size:11px;font-weight:700;color:#4a8cc0;letter-spacing:.1em;margin-bottom:12px;text-transform:uppercase;}
    #source-popup label{font-size:11px;color:var(--wc-gris-ciel-2);display:block;margin-bottom:3px;margin-top:8px;}
    #source-popup select,#source-popup input{width:100%;background:var(--wc-fond-nuit);border:1px solid rgba(var(--wc-accent-rgb),0.2);color:var(--wc-texte-bleute);border-radius:var(--wc-r-s);padding:5px 8px;font-size:12px;font-family:inherit;outline:none;}
    #source-popup select option{background:#06101e;}
    #source-popup select:focus,#source-popup input:focus{border-color:rgba(var(--wc-accent-rgb),0.5);}
    #source-popup .g2{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
    #source-popup .btns{display:flex;gap:8px;margin-top:12px;}
    #source-popup button{flex:1;padding:6px;border-radius:var(--wc-r-s);border:none;cursor:pointer;font-size:12px;font-weight:600;font-family:inherit;}
    #source-popup .btn-ok{background:var(--wc-accent);color:#fff;}
    #source-popup .btn-ok:hover{background:#1a7fe0;}
    #source-popup .btn-clr{background:rgba(255,255,255,0.06);color:var(--wc-gris-ciel-2);}
    #source-popup .close-x{position:absolute;top:8px;right:10px;color:#4a6ea0;cursor:pointer;font-size:16px;line-height:1;background:none;border:none;}
    #source-popup .close-x:hover{color:var(--wc-texte-bleute);}

    /* Dest popup */
    #dest-popup{display:none;position:fixed;z-index:2000;background:#0d1f3c;border:1px solid rgba(var(--wc-accent-rgb),0.3);border-radius:var(--wc-r-m);padding:14px 16px;min-width:260px;box-shadow:0 8px 32px rgba(0,0,0,0.7);font-size:13px;}
    #dest-popup h4{font-size:11px;font-weight:700;color:#4a8cc0;letter-spacing:.1em;margin-bottom:10px;text-transform:uppercase;}
    #dest-popup label{font-size:11px;color:var(--wc-gris-ciel-2);display:block;margin-bottom:3px;margin-top:8px;}
    #dest-popup select,#dest-popup input{width:100%;background:var(--wc-fond-nuit);border:1px solid rgba(var(--wc-accent-rgb),0.2);color:var(--wc-texte-bleute);border-radius:var(--wc-r-s);padding:5px 8px;font-size:12px;font-family:inherit;outline:none;}
    #dest-popup select option{background:#06101e;}
    #dest-popup .btns{display:flex;gap:8px;margin-top:12px;}
    #dest-popup button{flex:1;padding:6px;border-radius:var(--wc-r-s);border:none;cursor:pointer;font-size:12px;font-weight:600;font-family:inherit;}
    #dest-popup .btn-ok{background:var(--wc-accent);color:#fff;}
    #dest-popup .btn-clr{background:rgba(255,255,255,0.06);color:var(--wc-gris-ciel-2);}
    #dest-popup .close-x{position:absolute;top:8px;right:10px;color:#4a6ea0;cursor:pointer;font-size:16px;line-height:1;background:none;border:none;}
    #dest-popup .close-x:hover{color:var(--wc-texte-bleute);}

    /* Share modal */
    .modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,0.7);backdrop-filter:blur(8px);z-index:3000;display:none;align-items:center;justify-content:center;}
    .modal-backdrop.open{display:flex;}
    .modal{background:rgba(8,16,36,0.98);border:1px solid rgba(var(--wc-accent-rgb),0.2);border-radius:var(--wc-r-l);padding:22px;width:min(480px,calc(100vw - 32px));display:flex;flex-direction:column;gap:14px;}
    .modal h2{font-size:15px;color:var(--wc-texte-bleute);font-weight:600;}
    .modal p{font-size:12px;color:var(--wc-gris-ardoise-2);}
    .modal .url-box{display:flex;gap:8px;align-items:center;}
    .modal .url-box input{flex:1;padding:8px 12px;background:rgba(10,18,40,0.8);border:1px solid rgba(var(--wc-accent-rgb),0.2);border-radius:var(--wc-r-s);color:var(--wc-bleu-pale);font-family:'Courier New',monospace;font-size:12px;outline:none;}
    .modal .modal-btns{display:flex;gap:8px;justify-content:flex-end;}
    .modal .modal-close{background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.1);color:var(--wc-text-secondary);border-radius:var(--wc-r-s);padding:6px 14px;font-family:inherit;font-size:12px;cursor:pointer;}

    /* Flash */
    .flash{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:rgba(20,40,80,0.97);border:1px solid rgba(var(--wc-accent-rgb),0.3);color:var(--wc-texte-bleute);border-radius:var(--wc-r-s);padding:8px 18px;font-size:12px;z-index:5000;opacity:0;transition:opacity .2s;pointer-events:none;}
    .flash.show{opacity:1;}
    .flash.error{border-color:rgba(239,68,68,0.4);color:var(--wc-rouge-clair);}

    /* SVG popup hover */
    svg .hit{cursor:pointer;}

    /* Print — masque tout sauf le SVG, qui est mis à l'échelle de la page.
       Le SVG passe en thème clair via invert+hue-rotate : le fond sombre
       devient blanc et les teintes des signaux sont préservées. Moins d'encre,
       plus lisible sur papier. */
    @media print{
      @page{size:A4 landscape;margin:6mm;}
      html,body{overflow:visible!important;height:auto!important;background:#fff!important;}
      .bg-glow,nav,.sidebar,.toolbar,.flash,#popup,#source-popup,#dest-popup,.modal-backdrop,#login-backdrop,.login-popover,.sidebar-show,.zoom-controls,.serie-panel,.filter-menu{display:none!important;}
      .app,.canvas-area{display:block!important;overflow:visible!important;}
      .canvas-scroll{overflow:visible!important;height:auto!important;padding:0!important;background:#fff!important;}
      .empty-state{display:none!important;}
      /* le zoom est ignoré à l'impression : pan et taille réinitialisés */
      .zoom-wrap{transform:none!important;width:100%!important;}
      #main{display:block!important;width:100%!important;height:auto!important;
        filter:invert(1) hue-rotate(180deg);}
    }

    /* ── Mobile / tablette ───────────────────────────────────────────────────
       Sidebar → drawer coulissant en overlay. Toolbar → barre défilante
       d'icônes. Popups & modals → feuilles plein-écran en bas. */
    .mobile-backdrop{display:none;}
    @media (max-width:768px){
      nav{height:48px;padding:0 10px;}
      nav .brand img{height:19px;}
      nav .nav-pill{font-size:10px;padding:3px 9px;}

      /* Sidebar en drawer : sort de la mise en page, glisse depuis la gauche */
      .app{position:relative;}
      .sidebar{position:absolute;top:0;bottom:0;left:0;z-index:400;width:80vw;max-width:300px;
        transform:translateX(-100%);transition:transform .22s ease;
        box-shadow:8px 0 32px rgba(0,0,0,0.5);}
      .sidebar:not(.collapsed){transform:translateX(0);}
      .sidebar.collapsed{transform:translateX(-100%);width:80vw;max-width:300px;opacity:1;}
      .mobile-backdrop{display:block;position:absolute;inset:0;z-index:390;
        background:rgba(0,0,0,0.55);opacity:0;pointer-events:none;transition:opacity .2s;}
      .mobile-backdrop.show{opacity:1;pointer-events:auto;}
      .sidebar-toggle{display:none;}
    /* le drawer se ferme via le backdrop */
      .sidebar-show{display:flex!important;}
    /* bouton ☰ toujours visible */
      .app.sidebar-hidden .toolbar{padding-left:48px;}
      .canvas-area .toolbar{padding-left:48px;} /* place pour le ☰ même drawer ouvert */

      /* Toolbar : une seule rangée défilante. Les boutons gardent leur libellé
         (emoji + texte) — la barre scrolle horizontalement au doigt. */
      .toolbar{flex-wrap:nowrap;overflow-x:auto;gap:6px;padding:6px 8px;
        min-height:42px;-webkit-overflow-scrolling:touch;scrollbar-width:none;}
      .toolbar::-webkit-scrollbar{display:none;}
      .toolbar input.title-input{min-width:130px;font-size:14px;flex:0 0 auto;width:150px;}
      .toolbar .save-indicator{display:none;}
      .toolbar .btn{flex-shrink:0;padding:7px 11px;font-size:11px;}
      .toolbar .btn-icon{flex-shrink:0;font-size:15px;padding:6px 9px;}
      .tool-group{flex-shrink:0;}

      /* Canvas : la taille du SVG est entièrement pilotée par applyZoom() en JS
         (width/height réels → rendu vectoriel net). touch-action:none — pan et
         pinch gérés en JS ; overflow:hidden — pas de scroll natif. */
      .canvas-scroll{padding:0;touch-action:none;overflow:hidden;}
      .zoom-wrap{width:auto;}
      #main{margin:0;}
      .zoom-controls{bottom:12px;right:12px;}

      /* Filtres / panneau série : pleine largeur sous la toolbar */
      .filter-menu{right:8px;left:8px;min-width:0;top:50px;}
      .serie-panel{padding:8px 10px;gap:6px;overflow-x:auto;}

      /* Popups d'édition : feuille plein-écran ancrée en bas */
      #popup,#source-popup,#dest-popup{
        left:0!important;right:0!important;bottom:0!important;top:auto!important;
        width:100%!important;max-width:100%!important;
        border-radius:var(--wc-r-l) var(--wc-r-l) 0 0;padding:18px 16px 24px;max-height:80vh;overflow-y:auto;
        box-shadow:0 -8px 32px rgba(0,0,0,0.7);}
      #popup select,#popup input,
      #source-popup select,#source-popup input,
      #dest-popup select,#dest-popup input{font-size:16px;padding:9px 11px;}
    /* évite le zoom iOS */
      #popup .btns button,#source-popup .btns button,#dest-popup .btns button{padding:11px;font-size:14px;}
      #popup .close-x,#source-popup .close-x,#dest-popup .close-x{font-size:22px;top:12px;right:14px;}

      /* Modals : presque plein écran */
      .modal{width:calc(100vw - 20px);max-height:88vh;overflow-y:auto;padding:18px;}
      .modal textarea{font-size:16px;}

      /* Login : champ plus grand */
      .login-popover input{font-size:16px;padding:11px 12px;}
    }
    /* Très petits écrans : titre de schéma plus court */
    @media (max-width:430px){
      .toolbar input.title-input{min-width:90px;}
    }
  
