
:root{
  --sidebar:#111827;
  --sidebar2:#0f172a;
  --primary:#2f6fed;
  --border:#e5e7eb;
  --muted:#6b7280;
  --bg:#f5f7fb;
  --panel:#fff;
  --radius:16px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:#1f2937}
button,input,select,textarea{font:inherit}
.app-shell{display:flex;min-height:100vh}
.sidebar{width:250px;background:linear-gradient(180deg,var(--sidebar),var(--sidebar2));color:#fff;position:fixed;inset:0 auto 0 0;z-index:1030;display:flex;flex-direction:column;padding:18px 14px}
.brand{display:flex;align-items:center;gap:12px;padding:4px 8px 22px}
.brand-mark{width:42px;height:42px;border-radius:12px;background:#fff;color:#111827;display:grid;place-items:center;font-size:20px}
.brand-title{font-weight:750;letter-spacing:.1px}
.brand-sub{font-size:12px;color:#9ca3af}
.sidebar-nav{gap:5px}
.sidebar-nav .nav-link{color:#cbd5e1;border-radius:10px;padding:11px 12px;display:flex;align-items:center;gap:11px;font-size:14px}
.sidebar-nav .nav-link i{font-size:17px}
.sidebar-nav .nav-link:hover,.sidebar-nav .nav-link.active{background:rgba(255,255,255,.10);color:#fff}
.sidebar-footer{margin-top:auto;padding:12px;border-top:1px solid rgba(255,255,255,.10)}
.main{margin-left:250px;width:calc(100% - 250px)}
.topbar{height:74px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:1010}
.page-title{font-weight:750;font-size:18px}
.page-subtitle{font-size:12px;color:var(--muted)}
.user-pill{background:#f3f4f6;border-radius:999px;padding:6px 10px;display:flex;align-items:center;gap:6px;font-size:13px}
.content{padding:24px}
.app-view{display:none}
.app-view.active{display:block}
.stat-card,.panel,.presentation-card,.device-card,.media-item{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 18px rgba(15,23,42,.035)}
.stat-card{display:flex;align-items:center;gap:14px;padding:18px;position:relative}
.stat-icon{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;font-size:20px}
.bg-soft-green{background:#eaf8ef;color:#15803d}.bg-soft-blue{background:#eaf1ff;color:#2563eb}.bg-soft-orange{background:#fff4e5;color:#d97706}.bg-soft-purple{background:#f1eefe;color:#7c3aed}
.stat-value{font-weight:800;font-size:21px}.stat-label{font-size:13px;color:var(--muted)}
.trend{margin-left:auto;font-size:11px;background:#f3f4f6;padding:5px 8px;border-radius:999px}.trend.good{background:#e9f8ef;color:#15803d}.trend.warn{background:#fff5e6;color:#b45309}
.panel{overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;padding:18px 18px 12px}.panel-head h5{font-size:15px;margin:0 0 3px}.panel-head p,.view-heading p{margin:0;color:var(--muted);font-size:13px}
.table>:not(caption)>*>*{padding:.9rem 1rem}.device-table thead th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;background:#fafafa}.device-table small{color:var(--muted)}
.badge-soft{font-size:12px;border-radius:999px;padding:5px 8px;display:inline-flex;align-items:center;gap:6px}.badge-soft.success{background:#eaf8ef;color:#15803d}.badge-soft.warning{background:#fff5e6;color:#b45309}.badge-soft.danger{background:#fdecec;color:#b91c1c}
@media (max-width: 991px){
  .sidebar{transform:translateX(-105%)}
  .sidebar.show{transform:none}
  .main{margin-left:0;width:100%}
}
.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;background:#9ca3af}.status-dot.online{background:#22c55e;box-shadow:0 0 0 4px rgba(34,197,94,.12)}.status-dot.warning{background:#f59e0b;box-shadow:0 0 0 4px rgba(245,158,11,.12)}
.timeline{padding:4px 18px 18px}.timeline-item{display:flex;gap:12px;padding:11px 0}.timeline-dot{width:10px;height:10px;background:#22c55e;border-radius:50%;margin-top:6px;box-shadow:0 0 0 5px #eaf8ef}.timeline-dot.warning{background:#f59e0b;box-shadow:0 0 0 5px #fff4e5}.timeline-item b{font-size:13px}.timeline-item p{font-size:12px;color:#6b7280;margin:3px 0}.timeline-item small{color:#9ca3af}
.view-heading h4{margin-bottom:2px;font-weight:750}
.presentation-card{overflow:hidden;transition:.2s}.presentation-card:hover{transform:translateY(-2px);box-shadow:0 10px 28px rgba(15,23,42,.08)}
.presentation-thumb{height:180px;display:flex;align-items:end;padding:22px;color:#fff;font-size:27px;font-weight:800;line-height:1.05}
.theme-a{background:linear-gradient(135deg,#5b3a29,#d59c68)}.theme-b{background:linear-gradient(135deg,#0f4c5c,#6fb1a0)}.theme-c{background:linear-gradient(135deg,#232946,#b8c1ec)}
.presentation-card h6{margin:0}.presentation-card small{color:#6b7280}.presentation-meta{display:flex;gap:16px;margin-top:12px;font-size:12px;color:#6b7280}.presentation-meta i{margin-right:4px}

/* editor */
#view-editor{margin:-24px}
.editor-layout{display:grid;grid-template-columns:170px minmax(0,1fr) 280px;height:calc(100vh - 74px);background:#eef1f6}
.slides-strip{background:#fff;border-right:1px solid var(--border);overflow:auto}.strip-head{height:48px;padding:0 10px 0 14px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);font-size:11px;font-weight:800;color:#6b7280;letter-spacing:.06em}
.slide-thumb-wrap{padding:12px;border-bottom:1px solid #f1f1f1;cursor:pointer}.slide-thumb-wrap.active{background:#eef4ff}.slide-num{font-size:11px;color:#6b7280;margin-bottom:6px;display:flex;align-items:center;justify-content:space-between;gap:6px;width:100%}
.slide-num > span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.slide-actions{display:flex;align-items:center;gap:2px;margin-left:auto;flex:none}.slide-thumb{aspect-ratio:16/9;background:#111827;border:2px solid transparent;border-radius:5px;overflow:hidden;position:relative;color:#fff;display:grid;place-items:center;font-size:10px;text-align:center}.slide-thumb-wrap.active .slide-thumb{border-color:#2f6fed}
.editor-main{min-width:0;display:flex;flex-direction:column}.editor-toolbar{height:58px;background:#fff;border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 12px;gap:8px}.toolbar-group{display:flex;gap:6px}.tool-btn{border:0;background:#f5f6f8;border-radius:9px;padding:7px 9px;display:flex;align-items:center;gap:6px;font-size:12px}.tool-btn:hover{background:#e8edf6}.tool-btn i{font-size:16px}.toolbar-sep{height:28px;width:1px;background:#e5e7eb;margin:0 4px}.icon-btn{border:1px solid transparent;background:transparent;width:34px;height:34px;border-radius:8px;display:grid;place-items:center;color:#374151}.icon-btn:hover{background:#f3f4f6}.icon-btn.active{background:#eaf1ff;color:#2563eb;border-color:#cfe0ff}
.canvas-zone{flex:1;min-height:0;overflow:auto;padding:22px;background:radial-gradient(circle at 1px 1px,#d6dbe4 1px,transparent 0);background-size:22px 22px}
.canvas-rulers{display:flex;max-width:960px;margin:0 auto 7px;font-size:11px;color:#6b7280}
#canvasScaler{width:960px;height:540px;margin:0 auto;transform-origin:top left;position:relative}
.slide-canvas{width:960px;height:540px;background:#111827;position:relative;overflow:hidden;box-shadow:0 12px 40px rgba(15,23,42,.22);user-select:none}
.guide{position:absolute;pointer-events:none;display:none;z-index:999}.guide-v{width:1px;height:100%;left:50%;top:0;background:#37a0ff}.guide-h{height:1px;width:100%;top:50%;left:0;background:#37a0ff}
.canvas-item{position:absolute;min-width:20px;min-height:20px;outline:1px solid transparent;touch-action:none;cursor:move}.canvas-item.selected{outline:2px solid #37a0ff;outline-offset:2px}.canvas-item.locked{cursor:not-allowed}.canvas-text{color:#fff;font-size:42px;font-weight:700;line-height:1.05;padding:6px;display:flex;align-items:center;overflow:hidden}.canvas-shape{background:#2f6fed;border-radius:6px}.canvas-image{background:linear-gradient(135deg,#d9dce3,#818795);display:flex;align-items:center;justify-content:center;color:#fff;font-size:35px;overflow:hidden}.canvas-video{background:#090909;display:flex;align-items:center;justify-content:center;color:#fff;font-size:45px}.canvas-video:after{content:'VIDEO';position:absolute;bottom:8px;right:8px;font-size:9px;letter-spacing:.08em;opacity:.7}
.bottom-bar{height:47px;background:#fff;border-top:1px solid var(--border);display:flex;align-items:center;padding:0 14px;font-size:12px;color:#4b5563}.duration-input{width:58px!important;height:28px!important;padding:2px 6px}
.inspector{background:#fff;border-left:1px solid var(--border);overflow:auto}.inspector-head{height:56px;padding:0 12px 0 16px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border)}.inspector-head b{display:block;font-size:13px}.inspector-head small{display:block;color:#6b7280;font-size:11px}.inspector-empty{text-align:center;padding:50px 24px;color:#9ca3af}.inspector-empty i{font-size:34px}.inspector-empty p{font-size:12px}.prop-section{padding:14px 16px;border-bottom:1px solid #eef0f2}.prop-label{font-size:11px;text-transform:uppercase;color:#6b7280;font-weight:800;letter-spacing:.05em;display:block;margin-bottom:10px}.input-with-label{position:relative}.input-with-label span{position:absolute;left:8px;top:6px;font-size:11px;color:#9ca3af}.input-with-label input{padding-left:24px}.prop-range{width:120px}.grid-2{grid-template-columns:1fr 1fr}
.context-menu{display:none;position:fixed;z-index:5000;background:#fff;border:1px solid #ddd;border-radius:10px;padding:6px;box-shadow:0 14px 35px rgba(15,23,42,.18);min-width:230px}.context-menu button{width:100%;border:0;background:none;padding:8px 10px;border-radius:7px;display:flex;align-items:center;gap:9px;text-align:left;font-size:12px}.context-menu button:hover{background:#f4f6f8}.context-menu button span{margin-left:auto;color:#9ca3af}.context-menu .danger{color:#dc2626}.context-sep{height:1px;background:#eee;margin:5px 0}
.preview-stage{width:min(90vw,1200px);aspect-ratio:16/9;background:#111827;position:relative;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.45)}
.preview-stage .canvas-item{pointer-events:none;outline:0!important}

/* devices */
.device-card{overflow:hidden}.device-preview{aspect-ratio:16/9;position:relative;padding:14px;color:#fff;display:flex;align-items:center;justify-content:center}.screen-a{background:linear-gradient(135deg,#553725,#cd9867)}.screen-b{background:linear-gradient(135deg,#0b4250,#69a998)}.screen-c{background:linear-gradient(135deg,#1d2440,#8692cd)}.screen-overlay{position:absolute;left:12px;top:12px;background:rgba(0,0,0,.45);padding:4px 7px;border-radius:999px;font-size:9px;letter-spacing:.05em}.screen-overlay.updating{background:rgba(245,158,11,.9)}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#ff3b30;margin-right:5px}.screen-content{font-size:26px;font-weight:800;line-height:1.05;text-align:center}.device-card h5{font-size:16px;margin:0}.device-card small{color:#6b7280}.device-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.device-grid div{background:#f7f8fa;border-radius:9px;padding:9px}.device-grid small,.device-grid b{display:block}.device-grid b{font-size:12px}.spin{display:inline-block;animation:spin 1.2s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
.media-drop{border:2px dashed #cfd5df;border-radius:16px;background:#fff;text-align:center;padding:34px;color:#6b7280}.media-drop i{font-size:36px;color:#94a3b8}.media-drop h5{color:#374151;margin-top:8px}.media-drop p{font-size:13px}.media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}.media-item{overflow:hidden}.media-img{height:145px;background-size:cover;background-position:center}.m1{background:linear-gradient(135deg,#5b3a29,#d59c68)}.m2{background:linear-gradient(135deg,#0f4c5c,#6fb1a0)}.m3{background:linear-gradient(135deg,#232946,#b8c1ec)}.video-thumb{background:#111827;color:#fff;display:grid;place-items:center;font-size:38px}.media-info{padding:12px}.media-info b,.media-info small{display:block}.media-info b{font-size:13px}.media-info small{font-size:11px;color:#6b7280}
.setting-row{display:flex;align-items:center;justify-content:space-between;padding:15px 0;border-bottom:1px solid #eee}.setting-row:last-child{border-bottom:0}.setting-row div b,.setting-row div small{display:block}.setting-row small{color:#6b7280;font-size:12px}

@media(max-width:1199px){
  .editor-layout{grid-template-columns:150px minmax(0,1fr)}.inspector{position:fixed;right:0;top:74px;bottom:0;width:280px;z-index:1025;box-shadow:-10px 0 30px rgba(15,23,42,.08);transform:translateX(100%);transition:.2s}.inspector.open{transform:none}
}
@media(max-width:991px){
  .sidebar{transform:translateX(-100%);transition:.2s}.sidebar.open{transform:none}.main{margin-left:0;width:100%}
  #view-editor{margin:-24px}.editor-layout{grid-template-columns:120px minmax(700px,1fr);overflow:auto}
}

.app-hidden{display:none!important}
.login-screen{min-height:100vh;display:grid;place-items:center;background:
  radial-gradient(circle at 20% 20%,rgba(47,111,237,.16),transparent 30%),
  radial-gradient(circle at 80% 80%,rgba(124,58,237,.12),transparent 34%),
  #f5f7fb;padding:24px}
.login-card{width:min(430px,100%);background:#fff;border:1px solid var(--border);border-radius:22px;padding:30px;box-shadow:0 24px 70px rgba(15,23,42,.12)}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:26px}
.login-card h3{font-weight:800;margin-bottom:6px}.login-card p{font-size:13px}
.login-demo{margin-top:18px;padding:10px 12px;border-radius:10px;background:#f8fafc;color:#64748b;font-size:12px;text-align:center}
.slide-thumb-wrap[draggable="true"]{cursor:grab}.slide-thumb-wrap.dragging{opacity:.35}.slide-thumb-wrap.drag-over{border-top:3px solid #2f6fed}
.rotate-handle{position:absolute;width:20px;height:20px;border-radius:50%;background:#fff;border:2px solid #37a0ff;color:#2563eb;display:none;place-items:center;font-size:10px;left:50%;top:-34px;transform:translateX(-50%);cursor:grab;z-index:1001;box-shadow:0 2px 8px rgba(15,23,42,.15)}
.canvas-item.selected .rotate-handle{display:grid}
.canvas-item.selected:before{content:"";position:absolute;width:1px;height:15px;background:#37a0ff;left:50%;top:-16px}
.canvas-circle{border-radius:50%;background:#2f6fed}
.canvas-star{background:#2f6fed;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.canvas-arrow{background:#2f6fed;clip-path:polygon(0 30%,62% 30%,62% 0,100% 50%,62% 100%,62% 70%,0 70%)}
.canvas-line,.canvas-dashed{height:4px!important;min-height:4px;background:transparent!important;border-top:4px solid currentColor}
.canvas-dashed{border-top-style:dashed}
.canvas-japanese{background:
  radial-gradient(circle at 8px 8px,currentColor 0 2px,transparent 2.5px) 0 0/16px 16px,
  radial-gradient(circle at 0 0,currentColor 0 1.5px,transparent 2px) 8px 8px/16px 16px;
  opacity:.85}
.shape-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}
.shape-option{border:1px solid #e5e7eb;border-radius:10px;padding:12px 7px;background:#fff;cursor:pointer;font-size:12px}
.shape-option:hover{border-color:#2f6fed;background:#f4f7ff}.shape-option i{display:block;font-size:24px;margin-bottom:5px}
#canvasScaler.portrait{width:304px;height:540px}
#slideCanvas.portrait{width:304px;height:540px}
.preview-stage.portrait{width:min(50vw,540px);aspect-ratio:9/16}

.editor-hint{font-size:11px;color:#94a3b8}
.canvas-item.multi-selected{outline:2px dashed #7c3aed;outline-offset:2px}
.marquee{display:none;position:absolute;border:1px solid #2f6fed;background:rgba(47,111,237,.12);z-index:2000;pointer-events:none}
.snap-guide{position:absolute;z-index:1999;pointer-events:none;background:#f43f5e}
.snap-guide.v{width:1px;height:100%;top:0}.snap-guide.h{height:1px;width:100%;left:0}
.layers-list{padding:10px}
.layer-row{display:flex;align-items:center;gap:8px;padding:9px;border:1px solid #e5e7eb;border-radius:10px;margin-bottom:7px;background:#fff;cursor:pointer}
.layer-row.active{border-color:#2f6fed;background:#eef4ff}
.layer-row .grab{color:#94a3b8;cursor:grab}.layer-row .layer-name{flex:1;font-size:12px;font-weight:650}
.layer-row.dragging{opacity:.4}
.layer-row .layer-type{font-size:11px;color:#94a3b8}
.layer-row button{border:0;background:transparent;color:#64748b}
.layer-row button:hover{color:#111827}
.template-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.template-card{border:1px solid #e5e7eb;border-radius:12px;padding:10px;background:#fff;cursor:pointer;text-align:left}
.template-card:hover{border-color:#2f6fed;background:#f7f9ff}
.template-preview{aspect-ratio:16/9;border-radius:8px;margin-bottom:8px;position:relative;overflow:hidden;background:#111827}
.template-preview .tp-title{position:absolute;left:12px;top:12px;height:8px;background:#fff;border-radius:99px}
.template-preview .tp-copy{position:absolute;left:12px;top:28px;height:5px;background:#cbd5e1;border-radius:99px}
.template-preview .tp-img{position:absolute;background:#64748b;border-radius:6px}
.template-preview.hero .tp-title{width:55%}.template-preview.hero .tp-copy{width:40%}.template-preview.hero .tp-img{right:12px;top:12px;bottom:12px;width:30%}
.template-preview.split .tp-title{width:35%}.template-preview.split .tp-copy{width:38%}.template-preview.split .tp-img{right:0;top:0;bottom:0;width:50%;border-radius:0}
.template-preview.quote .tp-title{width:70%;left:15%;top:35%}.template-preview.quote .tp-copy{width:45%;left:27%;top:53%}
.template-preview.gallery .tp-img:nth-child(1){left:10px;top:10px;width:45%;height:65%}.template-preview.gallery .tp-img:nth-child(2){right:10px;top:10px;width:35%;height:30%}.template-preview.gallery .tp-img:nth-child(3){right:10px;bottom:10px;width:35%;height:30%}
.template-card b{font-size:13px}.template-card small{display:block;color:#64748b}

.presentation-format-wrap{display:flex;align-items:center;gap:7px;background:#f7f8fa;border:1px solid #e5e7eb;border-radius:9px;padding:4px 7px}
.presentation-format-label{font-size:11px;color:#64748b;white-space:nowrap}
.format-mini-badge{margin-left:7px;font-size:9px;padding:2px 5px;border-radius:999px;background:#eef2ff;color:#4f46e5}
.slide-thumb-wrap.portrait .slide-thumb{aspect-ratio:9/16;width:58%;align-self:center}
.slide-thumb-wrap.portrait{display:flex;flex-direction:column}
.slide-thumb .thumb-text{display:block;padding:6px;line-height:1.05;overflow:hidden;max-width:100%;max-height:100%;word-break:break-word}
.slide-thumb-wrap.portrait .slide-thumb .thumb-text{font-size:8px;padding:4px}
.slide-thumb-wrap:not(.portrait) .slide-thumb .thumb-text{font-size:10px}
.template-preview.portrait{aspect-ratio:9/16;width:42%;margin-left:auto;margin-right:auto}
.template-card.portrait-card{display:flex;flex-direction:column}

.editor-page{margin:-24px;height:calc(100vh - 74px)}
.editor-page .editor-layout{height:100%;grid-template-columns:210px minmax(0,1fr) 300px}
.editor-page .editor-toolbar{height:auto;min-height:58px;flex-wrap:wrap;row-gap:6px}
.editor-page .canvas-zone{display:flex;padding:0}
.editor-page #cadre{position:relative;flex:none}
.editor-page #echelle{position:absolute;top:0;left:0}
.editor-page .inspector{position:relative;top:auto;right:auto;bottom:auto;width:auto;transform:none;box-shadow:none}
.editor-page .bottom-bar{height:auto;min-height:47px;flex-wrap:wrap;gap:8px 14px}
.bottom-field{display:flex;align-items:center;gap:6px;margin:0;font-size:12px;color:#4b5563}
#nomSlide{width:180px}
.editor-status{font-size:12px;color:#64748b;white-space:normal;max-width:420px}
#sauver.is-dirty{box-shadow:0 0 0 3px rgba(47,111,237,.28)}
.icon-btn.mini{width:22px;height:22px}
.slide-num .icon-btn.mini{color:#64748b}
.editor-page .poignee{position:absolute;width:12px;height:12px;background:#fff;border:2px solid #37a0ff;border-radius:2px;transform:translate(-50%,-50%);z-index:6;padding:0}
.image-menu{position:absolute;left:8px;top:8px;z-index:8}
.image-menu-btn{width:36px;height:36px;border:0;border-radius:8px;background:rgba(15,23,42,.72);color:#fff;display:grid;place-items:center}
.image-menu-btn i{font-size:16px}
.image-menu-list{position:absolute;left:0;top:42px;min-width:150px;background:#fff;border:1px solid #e5e7eb;border-radius:10px;padding:4px;box-shadow:0 12px 28px rgba(15,23,42,.16)}
.image-menu-list button{display:block;width:100%;border:0;background:transparent;text-align:left;border-radius:7px;padding:7px 10px;font-size:12px}
.image-menu-list button:hover{background:#eef4ff}
#guides{position:absolute;inset:0;pointer-events:none;z-index:1999}
.media-picker{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:4000;display:grid;place-items:center;padding:24px}
.media-picker[hidden]{display:none}
.media-picker-card{width:min(720px,100%);max-height:min(80vh,640px);overflow:auto;background:#fff;border-radius:16px;padding:16px;box-shadow:0 24px 60px rgba(15,23,42,.2)}
.media-picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}
.media-choice{border:1px solid #e5e7eb;border-radius:10px;background:#fff;padding:6px;text-align:left}
.media-choice span{display:block;height:72px;border-radius:7px;background:#eef1f6 center/cover no-repeat}
.media-choice small{display:block;margin-top:4px;font-size:11px;color:#475569;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.media-choice.active,.media-choice:hover{border-color:#2f6fed;background:#f4f7ff}
.texte-modeles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:8px}
.texte-modele{border:1px solid #e5e7eb;border-radius:10px;background:#fff;padding:12px;text-align:left}
.texte-modele b{display:block;font-size:13px}
.texte-modele small{display:block;margin-top:3px;color:#64748b;font-size:12px}
.texte-modele:hover{border-color:#2f6fed;background:#f4f7ff}
.apercu-plein{position:fixed;inset:0;background:#000;z-index:4500}
.apercu-plein[hidden]{display:none}
#apercuCadre{position:absolute;inset:0}
.apercu-fermer{position:absolute;top:16px;right:16px;z-index:2}
.apercu-legende{position:absolute;left:16px;bottom:16px;color:#fff;font-size:13px;z-index:2}

.slides-board{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:18px;align-items:start}
.slides-preview{position:sticky;top:90px;padding:14px}
.slides-stage{position:relative;width:100%;aspect-ratio:16/9;background:#111827;border-radius:12px;overflow:hidden}
.slides-stage.portrait{aspect-ratio:9/16;width:min(100%,320px);margin:0 auto}
.slide-reorder{display:flex;flex-direction:column;gap:12px}
.slide-card{display:grid;grid-template-columns:28px 168px minmax(0,1fr);gap:12px;align-items:center;padding:12px;position:relative;transition:transform .2s cubic-bezier(.2,.7,.2,1),box-shadow .2s}
.slide-card.portrait-card{grid-template-columns:28px 96px minmax(0,1fr)}
.slide-card.is-inactive{opacity:.62}
.slide-card.is-current{box-shadow:0 0 0 2px #2f6fed}
.slide-card.is-lifting{z-index:5;transition:none;box-shadow:0 18px 40px rgba(15,23,42,.18);cursor:grabbing}
.slide-grip{border:0;background:#f3f4f6;border-radius:8px;height:100%;min-height:72px;color:#64748b;cursor:grab;touch-action:none}
.slide-grip:active{cursor:grabbing}
.slide-mini{position:relative;border:0;padding:0;border-radius:8px;overflow:hidden;background:#111827;aspect-ratio:16/9;width:100%}
.portrait-card .slide-mini{aspect-ratio:9/16}
.slide-mini-num{position:absolute;left:6px;top:6px;z-index:2;background:rgba(0,0,0,.55);color:#fff;border-radius:999px;font-size:11px;padding:1px 6px}
@media(max-width:1100px){
  .slides-board{grid-template-columns:1fr}
  .slides-preview{position:static}
}
.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.auth-card{width:min(440px,100%);background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 18px rgba(15,23,42,.035);padding:28px}
.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}
.auth-card h1{font-size:22px;font-weight:750;margin:0 0 8px}
.auth-card label{display:block;font-size:13px;font-weight:600;margin-bottom:6px}
.auth-card .form-control{border-radius:10px;padding:10px 12px}
.auth-card .brand-mark{background:#111827;color:#fff}
.auth-card .btn-primary{background:#2f6fed;border-color:#2f6fed}
.auth-card .btn-primary:hover{background:#255ed4;border-color:#255ed4}
.auth-link{display:block;text-align:center;margin-top:14px;color:#2f6fed;text-decoration:none;font-size:14px}
.auth-link:hover{color:#255ed4}
