:root{
--g:#294d97;--g2:#3a5db3;--gd:#1e3a73;--g-lite:#8098d4;--ink:#161d2b;--soft:#6a7486;--line:#E5E8EF;--bg:#EDF0F6;--card:#fff;--field:#FAFBFD;
--ok:#00A36C;--ok-bg:rgba(0,163,108,.11);--ok-tx:#008156;--warn:#C98A0B;--warn-bg:rgba(240,165,0,.14);--warn-tx:#A87400;--err:#E4573D;--err-bg:#FEF7F5;--err-tx:#C0392B;--info:#00819A;--info-bg:rgba(0,143,168,.10);--bm:#D4553C;--bm-bg:rgba(228,87,61,.09);
--r:18px;--r-sm:12px;--r-xs:9px;--r-pill:99px;
--sh:0 1px 2px rgba(15,27,22,.04),0 8px 24px -12px rgba(15,27,22,.16);--sh-pop:0 8px 24px -12px rgba(9,20,16,.30);--sh-panel:-14px 0 40px rgba(9,20,16,.18);--sh-modal:0 30px 80px -20px rgba(9,20,16,.45);
--sidebar-w:264px;--sidebar-w-collapsed:74px;--topbar-h:60px;--content-max:1480px;
--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;
--font:'Open Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;--z-panel:400;--z-modal:600;--z-toast:900;
}
*{box-sizing:border-box}
html,body{margin:0}
body{font-family:var(--font);background:var(--bg);color:var(--ink);font-size:13.5px;-webkit-font-smoothing:antialiased}
img{max-width:100%}
[hidden]{display:none!important}
a{color:inherit}
.bo-mono{font-variant-numeric:tabular-nums;letter-spacing:.02em}
/* shell */
.bo-shell{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}
.bo-shell.is-collapsed{grid-template-columns:var(--sidebar-w-collapsed) 1fr}
.bo-main{display:flex;flex-direction:column;min-width:0}
.bo-content{flex:1;padding:var(--sp-6);max-width:var(--content-max);width:100%;margin:0 auto}
@media(max-width:1024px){.bo-shell{grid-template-columns:var(--sidebar-w-collapsed) 1fr}}
/* sidebar */
.bo-sidebar{position:sticky;top:0;height:100vh;background:var(--ink);color:#fff;display:flex;flex-direction:column;overflow:hidden}
.bo-side-brand{display:flex;align-items:center;gap:10px;padding:18px 20px 14px}
.bo-side-brand .lg{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--g),var(--g2));display:flex;align-items:center;justify-content:center;font-weight:800;font-size:15px;color:#fff;flex:0 0 auto}
.bo-side-brand .nm{font-weight:800;font-size:16px;letter-spacing:-.02em}
.bo-side-brand .bo-tag{font-size:9px;font-weight:800;letter-spacing:.14em;color:#5E7268;display:block;margin-top:1px}
.is-collapsed .bo-side-brand .nm,.is-collapsed .bo-side-grp,.is-collapsed .bo-nav span,.is-collapsed .bo-nav .bo-nav-count{display:none}
.is-collapsed .bo-nav{justify-content:center}
.bo-side-scroll{flex:1;overflow-y:auto;padding:6px 12px}
.bo-side-scroll::-webkit-scrollbar{width:0}
.bo-side-grp{padding:15px 8px 6px;font-size:10px;font-weight:800;letter-spacing:.14em;color:#5E7268;text-transform:uppercase}
.bo-nav{display:flex;align-items:center;gap:12px;width:100%;padding:11px 13px;margin-bottom:3px;border:0;border-radius:var(--r-sm);background:transparent;color:#C4D2CB;font:700 13.5px/1 var(--font);text-align:left;cursor:pointer;text-decoration:none;transition:background .15s,color .15s}
.bo-nav i{width:18px;text-align:center;font-size:15px;color:#7E9289;transition:color .15s;flex:0 0 auto}
.bo-nav span{flex:1;white-space:nowrap;overflow:hidden}
.bo-nav:hover{background:#1B2A24;color:#fff}
.bo-nav.is-active{background:#1B2A24;color:#fff}
.bo-nav.is-active i{color:var(--g-lite)}
.bo-nav-count{font-size:10.5px;font-weight:800;background:var(--err);color:#fff;min-width:19px;height:19px;border-radius:var(--r-pill);display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
.bo-nav-count.soft{background:#31463D;color:#9FB3AA}
.bo-side-foot{padding:12px;border-top:1px solid #1B2A24}
/* topbar */
.bo-topbar{position:sticky;top:0;z-index:var(--z-panel);height:var(--topbar-h);display:flex;align-items:center;gap:14px;padding:0 var(--sp-6);background:var(--card);border-bottom:1px solid var(--line)}
.bo-burger{width:38px;height:38px;border:0;border-radius:var(--r-sm);background:#F2F7F5;color:var(--ink);cursor:pointer}
.bo-gsearch{flex:1;max-width:520px;display:flex;align-items:center;gap:10px;padding:0 14px;height:40px;background:#F2F7F5;border-radius:var(--r-sm);color:var(--soft)}
.bo-gsearch input{flex:1;border:0;background:transparent;outline:none;font:600 13.5px var(--font);color:var(--ink)}
.bo-topbar-r{margin-left:auto;display:flex;align-items:center;gap:8px}
.bo-iconbtn{width:38px;height:38px;border:0;border-radius:var(--r-sm);background:#F2F7F5;color:var(--ink);cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;font-size:15px}
.bo-iconbtn:hover{background:#E8F0EC}
.bo-iconbtn.sm{width:32px;height:32px;font-size:13px}
.bo-iconbtn .bo-dot{position:absolute;top:9px;right:10px;width:7px;height:7px;border-radius:50%;background:var(--warn);border:1.5px solid var(--card)}
.bo-topbar .who{display:flex;align-items:center;gap:9px;padding:4px 10px 4px 4px;border-radius:var(--r-sm);cursor:pointer}
.bo-topbar .who:hover{background:#F2F7F5}
.bo-topbar .who .nm{font-size:12.5px;font-weight:700;line-height:1.2}.bo-topbar .who .rl{font-size:10.5px;color:var(--soft)}
/* syncbar */
.bo-syncbar{display:none;align-items:center;gap:12px;background:linear-gradient(90deg,#FFF7E6,#FFF1D6);color:#8A6420;font-size:12.5px;font-weight:700;padding:10px 24px;border-bottom:1px solid #FFE2A8}
body.is-syncing .bo-syncbar{display:flex}
.bo-syncbar .sp{width:15px;height:15px;border:2.5px solid rgba(200,138,11,.3);border-top-color:#C98A0B;border-radius:50%;animation:spin 1s linear infinite}
body.is-syncing .deck339-sync-lock{pointer-events:none;opacity:.5}
@keyframes spin{to{transform:rotate(360deg)}}
/* pagehead */
.bo-pagehead{display:flex;align-items:flex-end;gap:16px;margin-bottom:var(--sp-6)}
.bo-crumb{display:flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;color:var(--soft);margin-bottom:6px}
.bo-crumb i{font-size:9px;opacity:.6}
.bo-pagehead h1{margin:0;font-size:22px;font-weight:800;letter-spacing:-.02em}
.bo-pagehead .bo-sub{font-size:13px;color:var(--soft);margin-top:4px}
.bo-pagehead .bo-sub strong{color:var(--err-tx)}
.bo-pagehead-act{margin-left:auto;display:flex;gap:10px}
/* buttons */
.bo-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;padding:0 18px;height:40px;border:0;border-radius:var(--r-sm);background:var(--g);color:#fff;font:800 13.5px var(--font);cursor:pointer;box-shadow:0 10px 22px -14px rgba(0,163,108,1);transition:transform .15s,background .15s;white-space:nowrap}
.bo-btn:hover{background:#00996A}.bo-btn:active{transform:scale(.98)}
.bo-btn:disabled{background:#DCE6E1;color:#9CADA5;box-shadow:none;cursor:not-allowed}
.bo-btn.ghost{background:#F2F7F5;color:var(--ink);box-shadow:none}.bo-btn.ghost:hover{background:#E8F0EC}
.bo-btn.outline{background:#fff;color:var(--ink);border:1.5px solid var(--line);box-shadow:none}
.bo-btn.danger{background:#fff;color:var(--err-tx);border:1.5px solid #F3D6CF;box-shadow:none}
.bo-btn.sm{height:32px;padding:0 12px;font-size:12.5px;gap:7px}
.bo-btn.icon{width:40px;padding:0}
/* toolbar */
.bo-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:var(--sp-4)}
.bo-search{display:flex;align-items:center;gap:9px;height:38px;padding:0 13px;min-width:260px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);color:var(--soft)}
.bo-search:focus-within{border-color:var(--g);box-shadow:0 0 0 4px rgba(0,163,108,.1)}
.bo-search input{flex:1;border:0;outline:none;background:transparent;font:600 13.5px var(--font);color:var(--ink)}
.bo-filter{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 13px;background:var(--card);border:1.5px solid var(--line);border-radius:var(--r-sm);font:700 12.5px var(--font);color:var(--ink);cursor:pointer}
.bo-filter i.caret{font-size:9px;color:var(--soft)}
.bo-filter.is-active{border-color:var(--g);background:var(--ok-bg);color:var(--ok-tx)}
.bo-filter .bo-filter-n{background:var(--g);color:#fff;font-size:10px;font-weight:800;border-radius:var(--r-pill);padding:1px 6px}
.bo-seg{display:inline-flex;background:#E1EAE6;border-radius:11px;padding:3px}
.bo-seg button{border:0;background:transparent;padding:7px 14px;border-radius:9px;font:800 12.5px var(--font);color:var(--soft);cursor:pointer;transition:all .18s}
.bo-seg button.on{background:#fff;color:var(--ink);box-shadow:0 2px 8px -2px rgba(9,20,16,.16)}
.bo-toolbar-r{margin-left:auto;display:flex;align-items:center;gap:10px}
/* table */
.bo-tablewrap{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden}
.bo-tablescroll{overflow-x:auto}
.bo-table{width:100%;border-collapse:collapse;font-size:13.5px}
.bo-table thead th{position:sticky;top:0;background:#F7FAF8;text-align:left;padding:12px 16px;font-size:11px;font-weight:800;color:var(--soft);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line);white-space:nowrap}
.bo-table th.sortable{cursor:pointer}.bo-table th.sortable i{margin-left:6px;opacity:.4;font-size:10px}
.bo-table th.sorted i{opacity:1;color:var(--g)}
.bo-table tbody td{padding:13px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
.bo-table tbody tr{cursor:pointer;transition:background .12s}
.bo-table tbody tr:hover{background:#F4F9F7}
.bo-table tbody tr:last-child td{border-bottom:0}
.bo-table tbody tr.is-selected{background:var(--ok-bg)}
.bo-table .col-check{width:44px;text-align:center}
.bo-table .col-actions{width:56px;text-align:right}
.bo-td-muted{color:var(--soft);font-size:12px}
input[type=checkbox]{width:16px;height:16px;accent-color:var(--g);cursor:pointer}
.bo-idcell{display:flex;align-items:center;gap:11px}
.bo-idcell-tx{display:flex;flex-direction:column;gap:1px;min-width:0}
.bo-idcell strong{font-size:13.5px;font-weight:700;letter-spacing:-.01em}
.bo-idcell span{font-size:11.5px;color:var(--soft)}
/* avatar */
.bo-avatar{width:34px;height:34px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--g),var(--g2));color:#fff;font-size:12.5px;font-weight:800}
.bo-avatar.lg{width:60px;height:60px;font-size:22px}.bo-avatar.xl{width:92px;height:92px;font-size:34px}
/* badges */
.bo-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;border-radius:var(--r-pill);padding:4px 10px;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.bo-badge i{font-size:10px}
.bo-badge.ok{background:var(--ok-bg);color:var(--ok-tx)}.bo-badge.warn{background:var(--warn-bg);color:var(--warn-tx)}.bo-badge.err{background:var(--err-bg);color:var(--err-tx)}.bo-badge.info{background:var(--info-bg);color:var(--info)}.bo-badge.bm{background:var(--bm-bg);color:var(--bm)}.bo-badge.neutral{background:#F1F6F4;color:#7D9088}
.bo-live{width:6px;height:6px;border-radius:50%;background:var(--g);box-shadow:0 0 0 3px rgba(0,163,108,.2)}
/* bulkbar */
.bo-bulkbar{position:sticky;bottom:20px;z-index:var(--z-panel);display:none;align-items:center;gap:14px;margin:16px auto 0;max-width:800px;padding:12px 16px;background:var(--ink);color:#fff;border-radius:var(--r);box-shadow:0 16px 40px -12px rgba(9,20,16,.5)}
.bo-bulkbar.on{display:flex}
.bo-bulk-n{font-weight:800;font-size:13.5px}.bo-bulk-n b{color:var(--g-lite)}
.bo-bulk-act{margin-left:auto;display:flex;gap:8px}
.bo-bulk-act button{border:0;border-radius:var(--r-sm);padding:9px 14px;background:#1B2A24;color:#fff;font:800 12.5px var(--font);cursor:pointer;display:flex;align-items:center;gap:8px}
.bo-bulk-act button:hover{background:#25382F}.bo-bulk-act button i{color:var(--g-lite)}
.bo-bulk-clear{background:transparent;border:0;color:#9FB3AA;cursor:pointer;font-weight:700}
/* pagination */
.bo-pagination{display:flex;align-items:center;gap:5px;padding:14px 16px;border-top:1px solid var(--line);font-size:12.5px;color:var(--soft)}
.bo-pagination .pg{width:32px;height:32px;border:1px solid var(--line);background:#fff;border-radius:9px;cursor:pointer;font-weight:700;color:var(--ink)}
.bo-pagination .pg.on{background:var(--g);color:#fff;border-color:var(--g)}
.bo-pagination .sp{margin-left:auto}
/* cards / fiche */
.bo-card{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);overflow:hidden;margin-bottom:20px}
.bo-card-h{display:flex;align-items:center;gap:10px;padding:15px 20px;border-bottom:1px solid var(--line)}
.bo-card-h h3{margin:0;font-size:15px;font-weight:800;letter-spacing:-.01em}
.bo-card-h .ci{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:14px;background:var(--ok-bg);color:var(--gd)}
.bo-card-h .bo-card-act{margin-left:auto}
.bo-card-b{padding:14px 20px 18px}
.bo-fiche{display:grid;grid-template-columns:1fr 330px;gap:var(--sp-6);align-items:start}
@media(max-width:1100px){.bo-fiche{grid-template-columns:1fr}}
.bo-fiche-aside{position:sticky;top:calc(var(--topbar-h) + var(--sp-6));display:flex;flex-direction:column;gap:16px}
.bo-idbox{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:22px 20px;text-align:center}
.bo-idbox .bo-avatar{margin:0 auto 12px}
.bo-idbox-nm{font-size:19px;font-weight:800;letter-spacing:-.02em}
.bo-idbox-rl{font-size:12.5px;color:var(--soft);margin-top:4px}
.bo-gauge{height:8px;border-radius:var(--r-pill);background:var(--line);overflow:hidden;margin:12px 0 6px}
.bo-gauge i{display:block;height:100%;border-radius:var(--r-pill);background:linear-gradient(90deg,var(--g),var(--g2))}
.bo-gauge.mini{height:6px;margin:0}
/* kv / vfield */
.bo-kv{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:11px 0;border-bottom:1px solid var(--line)}
.bo-kv:last-child{border-bottom:0}
.bo-kv .k{font-size:12.5px;color:var(--soft)}.bo-kv .v{font-size:14px;font-weight:700;text-align:right}
.bo-vfield{border:1.5px solid var(--line);border-radius:16px;padding:13px 16px;margin-bottom:12px;background:var(--field)}
.bo-vfield.ok{border-color:rgba(0,163,108,.3);background:var(--ok-bg)}
.bo-vfield.wn{border-color:rgba(240,165,0,.4);background:var(--warn-bg)}
.bo-vfield.miss{border-color:rgba(228,87,61,.35);background:var(--err-bg)}
.bo-vfield-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:5px}
.bo-vfield-l{font-size:11px;font-weight:800;color:var(--soft);text-transform:uppercase;letter-spacing:.05em}
.bo-vfield-v{font-size:16px;font-weight:800;letter-spacing:-.02em;word-break:break-word}
.bo-vfield-m{font-size:11.5px;color:var(--soft);margin-top:7px;display:flex;align-items:flex-start;gap:7px;line-height:1.5}
.bo-vfield-m i{color:var(--g);margin-top:2px}
.bo-vfield-act{display:flex;gap:8px;margin-top:10px}
/* form */
.bo-form{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.bo-field{display:flex;flex-direction:column;gap:6px}
.bo-field.full{grid-column:1/-1}
.bo-field label{font-size:12px;font-weight:700;display:flex;align-items:center;gap:7px}
.bo-field .rq{color:var(--err)}
.bo-input,.bo-select,.bo-textarea{width:100%;font:600 14px var(--font);padding:11px 14px;border:1.5px solid var(--line);border-radius:13px;background:var(--field);color:var(--ink);outline:none;transition:border-color .18s,box-shadow .18s}
.bo-input:focus,.bo-select:focus,.bo-textarea:focus{border-color:var(--g);background:#fff;box-shadow:0 0 0 4px rgba(0,163,108,.1)}
.bo-textarea{resize:vertical;min-height:80px}
.bo-hint{font-size:11.5px;color:var(--soft);display:flex;align-items:center;gap:7px}
.bo-switch{width:46px;height:28px;border:0;border-radius:var(--r-pill);background:#DCE6E1;position:relative;cursor:pointer;padding:0;transition:background .25s;flex:0 0 auto}
.bo-switch span{position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 2px 5px rgba(9,20,16,.22);transition:transform .25s}
.bo-switch.on{background:var(--g)}.bo-switch.on span{transform:translateX(18px)}
.bo-note{display:flex;gap:11px;align-items:flex-start;background:var(--ok-bg);border-radius:14px;padding:12px 15px;font-size:12.5px;color:#175E48;line-height:1.5}
.bo-note i{color:var(--g);margin-top:2px}
.bo-note.warn{background:var(--warn-bg);color:#7A5600}.bo-note.warn i{color:var(--warn)}
.bo-note.err{background:var(--err-bg);color:var(--err-tx)}.bo-note.err i{color:var(--err)}
/* tabs */
.bo-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:var(--sp-6);overflow-x:auto}
.bo-tab{border:0;background:transparent;padding:12px 16px;font:800 13px var(--font);color:var(--soft);cursor:pointer;position:relative;display:flex;align-items:center;gap:8px;white-space:nowrap}
.bo-tab:hover{color:var(--ink)}.bo-tab.on{color:var(--g)}
.bo-tab.on::after{content:'';position:absolute;left:12px;right:12px;bottom:-1px;height:2.5px;border-radius:var(--r-pill);background:var(--g)}
.bo-tab-n{background:#F1F6F4;color:var(--soft);font-size:10.5px;font-weight:800;border-radius:var(--r-pill);padding:1px 7px}
.bo-tab.on .bo-tab-n{background:var(--ok-bg);color:var(--ok-tx)}
.bo-tabc{display:none}.bo-tabc.on{display:block}
/* stats */
.bo-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:var(--sp-6)}
.bo-stat{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:16px 18px;cursor:pointer;transition:transform .15s}
.bo-stat:hover{transform:translateY(-2px)}
.bo-stat .si{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-size:16px;background:var(--ok-bg);color:var(--gd);margin-bottom:12px}
.bo-stat.warn .si{background:var(--warn-bg);color:var(--warn-tx)}.bo-stat.err .si{background:var(--err-bg);color:var(--err-tx)}.bo-stat.info .si{background:var(--info-bg);color:var(--info)}.bo-stat.bm .si{background:var(--bm-bg);color:var(--bm)}
.bo-stat .sv{font-size:26px;font-weight:800;letter-spacing:-.03em}
.bo-stat .sl{font-size:12px;color:var(--soft);font-weight:600;margin-top:2px}
/* timeline */
.bo-timeline{position:relative;padding-left:22px}
.bo-timeline::before{content:'';position:absolute;left:6px;top:4px;bottom:4px;width:2px;background:var(--line)}
.bo-tl{position:relative;padding:0 0 16px 4px}
.bo-tl::before{content:'';position:absolute;left:-19px;top:3px;width:11px;height:11px;border-radius:50%;background:var(--g);border:2.5px solid var(--card);box-shadow:0 0 0 2px var(--line)}
.bo-tl.sys::before{background:var(--info)}.bo-tl.bm::before{background:var(--bm)}.bo-tl.warn::before{background:var(--warn)}
.bo-tl .tt{font-size:13px;font-weight:700}.bo-tl .td{font-size:12px;color:var(--soft);margin-top:2px}
.bo-tl .tm{font-size:11px;color:var(--soft);margin-top:3px}
.bo-tl .chg{font-size:12px;margin-top:4px}.bo-tl .chg .o{color:var(--err-tx);text-decoration:line-through}.bo-tl .chg .n{color:var(--ok-tx);font-weight:700}
/* empty */
.bo-empty{text-align:center;padding:56px 24px;background:var(--card);border-radius:var(--r);box-shadow:var(--sh)}
.bo-empty .ei{width:66px;height:66px;border-radius:20px;background:var(--ok-bg);color:var(--gd);display:flex;align-items:center;justify-content:center;font-size:28px;margin:0 auto 18px}
.bo-empty h3{margin:0 0 8px;font-size:18px;font-weight:800}
.bo-empty p{margin:0 auto 20px;max-width:420px;color:var(--soft);font-size:13.5px;line-height:1.55}
/* doc cell */
.bo-doc{display:flex;align-items:center;gap:11px}
.bo-doc .dm{width:36px;height:44px;border-radius:8px;background:var(--bm-bg);color:var(--bm);display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;flex:0 0 auto}
.bo-doc .dm.pdf{background:rgba(228,87,61,.12)}
.bo-doc .dt{min-width:0}.bo-doc .dt strong{font-size:13.5px;font-weight:700;display:block}.bo-doc .dt span{font-size:11.5px;color:var(--soft)}
.bo-readbar{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--soft)}
.bo-readbar .rb{width:70px;height:6px;border-radius:99px;background:var(--line);overflow:hidden;position:relative}
.bo-readbar .rb i{display:block;height:100%;background:var(--g)}
/* drawer */
.bo-drawer-back{position:fixed;inset:0;z-index:var(--z-panel);background:rgba(9,20,16,.40);backdrop-filter:blur(2px);opacity:0;pointer-events:none;transition:opacity .25s}
.bo-drawer-back.on{opacity:1;pointer-events:auto}
.bo-drawer{position:fixed;top:0;right:0;bottom:0;width:460px;max-width:92vw;z-index:calc(var(--z-panel) + 1);background:var(--card);box-shadow:var(--sh-panel);transform:translateX(100%);transition:transform .32s cubic-bezier(.22,1,.36,1);display:flex;flex-direction:column}
.bo-drawer.on{transform:none}
.bo-drawer-h{display:flex;align-items:center;gap:12px;padding:18px 20px;border-bottom:1px solid var(--line)}
.bo-drawer-h h3{margin:0;flex:1;font-size:16px;font-weight:800;letter-spacing:-.01em}
.bo-drawer-b{flex:1;overflow-y:auto;padding:20px}
.bo-drawer-f{display:flex;gap:11px;padding:16px 20px;border-top:1px solid var(--line)}
/* modal */
.bo-modal-back{position:fixed;inset:0;z-index:var(--z-modal);background:rgba(9,20,16,.45);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:24px;opacity:0;pointer-events:none;transition:opacity .25s}
.bo-modal-back.on{opacity:1;pointer-events:auto}
.bo-modal{width:100%;max-width:560px;max-height:88vh;display:flex;flex-direction:column;background:var(--card);border-radius:22px;box-shadow:var(--sh-modal);transform:translateY(12px) scale(.98);transition:transform .3s cubic-bezier(.22,1.4,.36,1)}
.bo-modal.wide{max-width:760px}
.bo-modal-back.on .bo-modal{transform:none}
.bo-modal-h{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line)}
.bo-modal-h h3{margin:0;flex:1;font-size:17px;font-weight:800;letter-spacing:-.02em}
.bo-modal-b{padding:20px 22px;overflow-y:auto}
.bo-modal-f{display:flex;justify-content:flex-end;gap:11px;padding:15px 22px;border-top:1px solid var(--line)}
/* toast */
.bo-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(14px);z-index:var(--z-toast);background:var(--ink);color:#fff;font-size:13px;font-weight:700;padding:12px 20px;border-radius:var(--r-pill);box-shadow:0 12px 34px -10px rgba(0,0,0,.5);opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;display:flex;align-items:center;gap:9px}
.bo-toast i{color:var(--g-lite)}
.bo-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.bo-idthumbs{display:flex;gap:12px}
.bo-idthumb{flex:1;aspect-ratio:1.585;border-radius:12px;background:linear-gradient(135deg,#00A36C,#00B3A4);color:#fff;border:0;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;position:relative;box-shadow:var(--sh)}
.bo-idthumb i{font-size:24px;opacity:.92}
.bo-idthumb span{font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;margin-top:6px;opacity:.92}
.bo-idthumb:active{transform:scale(.98)}
/* screens */
[data-screen]{display:none;animation:fade .25s}
[data-screen].on{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.bo-two{display:grid;grid-template-columns:2fr 1fr;gap:var(--sp-6);align-items:start}
@media(max-width:1100px){.bo-two{grid-template-columns:1fr}}
/* demo + anno (réutilise l'esprit mobile) */
#bo-demoBtn{position:fixed;right:20px;bottom:20px;z-index:1000;height:44px;padding:0 18px;border:0;border-radius:14px;background:var(--ink);color:#fff;font:800 13px var(--font);cursor:pointer;box-shadow:0 12px 30px -10px rgba(0,0,0,.5);display:flex;align-items:center;gap:9px}
#bo-demoBtn i{color:var(--g-lite)}
#bo-demo{position:fixed;top:0;right:0;bottom:0;width:340px;max-width:90vw;z-index:1002;background:var(--ink);color:#fff;transform:translateX(100%);transition:transform .3s cubic-bezier(.22,1,.36,1);display:flex;flex-direction:column;overflow-y:auto}
#bo-demo.on{transform:none}
#bo-demoBack{position:fixed;inset:0;z-index:1001;background:rgba(9,20,16,.4);opacity:0;pointer-events:none;transition:opacity .25s}
#bo-demoBack.on{opacity:1;pointer-events:auto}
#bo-demo h4{margin:0;padding:18px 18px 4px;font-size:15px;font-weight:800}
#bo-demo .dgrp{padding:14px 16px 4px;font-size:10px;font-weight:800;letter-spacing:.12em;color:#5E7268;text-transform:uppercase}
#bo-demo .d{display:flex;align-items:center;gap:12px;width:100%;border:0;background:transparent;color:#C4D2CB;padding:11px 16px;cursor:pointer;text-align:left;font-family:var(--font)}
#bo-demo .d:hover{background:#1B2A24;color:#fff}
#bo-demo .d i{width:20px;text-align:center;color:var(--g-lite)}
#bo-demo .d span{display:flex;flex-direction:column;font-size:13px;font-weight:700}
#bo-demo .d span em{font-style:normal;font-size:11px;color:#7E9289;font-weight:600}
/* anno */
#annoToggle{position:fixed;right:20px;bottom:74px;z-index:1000;width:44px;height:44px;border-radius:13px;border:0;background:rgba(15,27,22,.55);color:#fff;font-size:16px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px -8px rgba(0,0,0,.5)}
#annoToggle.on{background:var(--err)}
#annoToggle .cnt{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;background:var(--g);color:#fff;font-size:10px;font-weight:800;display:flex;align-items:center;justify-content:center}
#annoToggle .cnt[data-n="0"]{display:none}
#anno{position:fixed;inset:0;z-index:990;pointer-events:none}
#anno.on{pointer-events:auto;cursor:crosshair;box-shadow:inset 0 0 0 3px rgba(228,87,61,.5)}
#anno.on::before{content:"MODE ANNOTATION — cliquez pour épingler une note";position:fixed;top:0;left:0;right:0;text-align:center;font-size:10.5px;font-weight:800;letter-spacing:.05em;color:#fff;background:var(--err);padding:5px;text-transform:uppercase}
.anno-pin{position:fixed;width:26px;height:26px;border-radius:50% 50% 50% 2px;background:var(--err);color:#fff;font-size:12px;font-weight:800;display:flex;align-items:center;justify-content:center;transform:translate(-50%,-100%);box-shadow:0 4px 10px -3px rgba(0,0,0,.5);cursor:pointer;pointer-events:auto;border:2px solid #fff}
.anno-pop{position:fixed;z-index:1005;width:240px;background:#fff;border-radius:14px;box-shadow:0 18px 44px -12px rgba(0,0,0,.4);padding:12px;transform:translate(-50%,10px)}
.anno-pop textarea{width:100%;box-sizing:border-box;border:1.5px solid var(--line);border-radius:10px;padding:9px;font-family:inherit;font-size:13px;resize:none;min-height:64px;outline:none;color:var(--ink)}
.anno-pop textarea:focus{border-color:var(--err)}
.anno-pop .row{display:flex;gap:7px;margin-top:8px}
.anno-pop button{flex:1;border:0;border-radius:9px;padding:8px;font-family:inherit;font-size:12.5px;font-weight:800;cursor:pointer}
.anno-pop .sv{background:var(--g);color:#fff}.anno-pop .dl{background:#FDECE9;color:#C0392B;flex:0 0 auto;padding:8px 11px}
#annoList{position:fixed;inset:0;z-index:1006;background:rgba(9,20,16,.5);display:none;align-items:center;justify-content:center;padding:24px}
#annoList.on{display:flex}
#annoList .sheet{background:#fff;width:100%;max-width:460px;border-radius:20px;padding:18px;max-height:70vh;overflow-y:auto}
#annoList h4{margin:0 0 4px;font-size:16px;font-weight:800}
#annoList .pk{font-size:11px;color:var(--soft);font-weight:700;margin-bottom:12px;font-family:ui-monospace,monospace}
#annoList .it{display:flex;gap:10px;padding:10px 0;border-top:1px solid var(--line);font-size:13px}
#annoList .it .n{width:22px;height:22px;border-radius:50%;background:var(--err);color:#fff;font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
#annoList .acts{display:flex;gap:8px;margin-top:14px}
#annoList .acts button{flex:1;border:0;border-radius:11px;padding:11px;font-family:inherit;font-size:13px;font-weight:800;cursor:pointer}
#annoList .exp{background:var(--g);color:#fff}#annoList .cls{background:#F2F7F5;color:var(--ink)}#annoList .clr{background:#FDECE9;color:#C0392B}
#annoList .empty{color:var(--soft);font-size:13px;padding:16px 0}


/* --- blocs complementaires (bo-cat, etc.) --- */
.bo-code{background:#0F1B16;color:#D6E5DE;border-radius:12px;padding:14px 16px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12.5px;line-height:1.65;overflow-x:auto;white-space:pre}
			.bo-code .k{color:#00E39A}.bo-code .s{color:#9DD8FF}.bo-code .c{color:#6B7F76}
			.bo-catgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px}
			.bo-cat{background:var(--card);border-radius:var(--r);box-shadow:var(--sh);padding:18px;display:flex;flex-direction:column;gap:10px}
			.bo-cat .ci{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px}
			.bo-cat h3{margin:0;font-size:15px;font-weight:800}
			.bo-cat .src{font-size:12px;color:var(--soft)}
			.bo-cat .meta{margin-top:auto;display:flex;gap:8px;font-size:11.5px;color:var(--soft);padding-top:8px;border-top:1px solid var(--line)}
			.bo-tokenrow{font-family:ui-monospace,monospace;font-size:12.5px;letter-spacing:.02em}

/* Front ouvrier web — habillage « navigateur » (portée locale) */
			.fo-frame{border:1px solid var(--line);border-radius:18px;overflow:hidden;box-shadow:var(--sh);background:var(--card);margin-bottom:18px}
			.fo-chrome{display:flex;align-items:center;gap:12px;padding:11px 16px;background:#F2F7F5;border-bottom:1px solid var(--line)}
			.fo-chrome .dots{display:flex;gap:6px;flex:0 0 auto}
			.fo-chrome .dots i{width:11px;height:11px;border-radius:50%;background:#CBD8D1;display:block}
			.fo-url{flex:1;display:flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:var(--r-pill);padding:6px 14px;font-size:12.5px;color:var(--soft);font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
			.fo-url i{color:var(--g)}
			.fo-url b{color:var(--ink);font-weight:700}
			.fo-canvas{padding:24px;background:#F6FAF8}
			.fo-login{max-width:390px;margin:0 auto;background:#fff;border-radius:18px;box-shadow:var(--sh);padding:28px 26px}
			.fo-brand{display:flex;align-items:center;gap:11px;margin-bottom:6px}
			.fo-brand .lg{width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,var(--g),var(--g2));display:flex;align-items:center;justify-content:center;font-weight:800;font-size:16px;color:#fff;flex:0 0 auto}
			.fo-brand b{font-size:17px;font-weight:800;letter-spacing:-.02em;display:block}
			.fo-brand span{font-size:11.5px;color:var(--soft);font-weight:600}
			.fo-code{display:flex;gap:9px;margin:8px 0}
			.fo-code span{flex:1;aspect-ratio:1;border:1.5px solid var(--line);border-radius:12px;background:var(--field);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:var(--ink)}
			.fo-code span.f{border-color:var(--g);background:#fff}
			.fo-or{display:flex;align-items:center;gap:12px;margin:18px 0;color:var(--soft);font-size:11.5px;font-weight:700}
			.fo-or::before,.fo-or::after{content:'';flex:1;height:1px;background:var(--line)}
			.fo-profgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
			@media(max-width:700px){.fo-profgrid{grid-template-columns:1fr}}
			.fo-upload{display:flex;align-items:center;gap:12px;border:1.5px dashed #CFE0D8;border-radius:14px;padding:14px 16px;background:#F8FBF9}
			.fo-upload .ic{width:40px;height:40px;border-radius:11px;background:var(--ok-bg);color:var(--gd);display:flex;align-items:center;justify-content:center;font-size:16px;flex:0 0 auto}

#bo-login{position:fixed;inset:0;z-index:2000;background:linear-gradient(160deg,#0F1B16,#12241d);display:none;align-items:center;justify-content:center;padding:24px}
#bo-login.on{display:flex}
#bo-login .lg-card{width:100%;max-width:400px;background:#fff;border-radius:22px;box-shadow:0 40px 90px -30px rgba(0,0,0,.6);padding:32px 30px}
#bo-login .lg-brand{display:flex;align-items:center;gap:11px;margin-bottom:26px}
#bo-login .lg-brand .lg{width:40px;height:40px;border-radius:11px;background:linear-gradient(135deg,var(--g),var(--g2));display:flex;align-items:center;justify-content:center;font-weight:800;font-size:17px;color:#fff}
#bo-login .lg-brand b{font-size:17px;font-weight:800;letter-spacing:-.02em;display:block}
#bo-login .lg-brand span{font-size:11.5px;color:var(--soft);font-weight:600}
#bo-login h2{font-size:20px;font-weight:800;letter-spacing:-.02em;margin:0 0 4px}
#bo-login .lg-sub{font-size:13px;color:var(--soft);margin:0 0 22px;line-height:1.5}
#bo-login .lg-sub b{color:var(--ink)}
#bo-login .lg-step{display:none}#bo-login .lg-step.on{display:block}
#bo-login .bo-field{margin-bottom:15px}
#bo-login .lg-code{display:flex;gap:10px;justify-content:space-between;margin:6px 0 8px}
#bo-login .lg-code input{width:100%;aspect-ratio:1;text-align:center;font-size:24px;font-weight:800;border:1.5px solid var(--line);border-radius:13px;background:var(--field);color:var(--ink);outline:none}
#bo-login .lg-code input:focus{border-color:var(--g);box-shadow:0 0 0 4px rgba(0,163,108,.1)}
#bo-login .lg-code input.filled{border-color:var(--g);background:#fff}
#bo-login .bo-btn{width:100%;height:46px;margin-top:6px}
#bo-login .lg-resend{text-align:center;font-size:12.5px;color:var(--soft);margin-top:14px}
#bo-login .lg-resend a{color:var(--gd);font-weight:800;cursor:pointer}
#bo-login .lg-back{background:transparent;border:0;color:var(--soft);font-family:inherit;font-size:13px;font-weight:700;cursor:pointer;margin-top:12px;display:block;width:100%}
#bo-login .lg-2fa{display:flex;gap:10px;align-items:flex-start;background:var(--ok-bg);border-radius:13px;padding:12px 14px;font-size:12px;color:#175E48;line-height:1.5;margin-top:20px}
#bo-login .lg-2fa i{color:var(--g);margin-top:2px}
