:root{--bg:#fff;--bg-2:#fafafa;--panel:#fff;--panel-2:#fafafa;--ink:#3c3c3c;--ink-soft:#3c3c3c;--muted:#6c6b66;--muted-2:#95938d;--line:#e6e6e6;--line-2:#cfcfcf;--accent:#6e398e;--accent-deep:#5a2e76;--accent-soft:#f3ecf7;--danger:#e94b57;--danger-soft:#fde7e9;--ok:#13a538;--ok-soft:#e3f5e8;--warn:#ee7203;--koesio-violet:#6e398e;--koesio-violet-strong:#5a2e76;--koesio-violet-soft:#f3ecf7;--koesio-corail:#e94b57;--koesio-yellow:#ffd618;--koesio-cyan:#41c0f0;--koesio-ink:#3c3c3c;--koesio-gray-100:#e6e6e6;--s:clamp(160px, 18vw, 240px);--font-sans-stack:var(--font-be-vietnam-pro), "Arial Nova", Arial, sans-serif;--font-title-stack:"Arboria", "Century Gothic", "Be Vietnam Pro", sans-serif;--font-mono-stack:var(--font-mono), ui-monospace, "SF Mono", Menlo, Consolas, monospace;--text-xs:.6875rem;--text-sm:.75rem;--text-base:.8125rem;--text-md:.875rem;--text-lg:1rem;--text-xl:1.25rem;--text-2xl:1.625rem;--text-3xl:2rem;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--radius-xs:0;--radius-sm:0;--radius-md:0;--radius-lg:0;--radius-xl:0;--shadow-xs:none;--shadow-sm:none;--shadow-md:none;--shadow-lg:0 0 0 0 transparent;--c-gray-bg:#f1efe8;--c-gray-border:#b4b2a9;--c-gray-th:#2c2c2a;--c-gray-ts:#5f5e5a;--c-blue-bg:#e6f1fb;--c-blue-border:#378add;--c-blue-th:#0c447c;--c-blue-ts:#185fa5;--c-purple-bg:#eeedfe;--c-purple-border:#7f77dd;--c-purple-th:#3c3489;--c-purple-ts:#534ab7;--c-teal-bg:#e1f5ee;--c-teal-border:#1d9e75;--c-teal-th:#085041;--c-teal-ts:#0f6e56;--c-amber-bg:#faeeda;--c-amber-border:#ba7517;--c-amber-th:#633806;--c-amber-ts:#854f0b;--c-rose-bg:#ffe4e6;--c-rose-border:#fb7185;--c-rose-th:#881337;--c-rose-ts:#be123c;--c-steel-bg:#e2e8f0;--c-steel-border:#475569;--c-steel-th:#0f172a;--c-steel-ts:#1e293b}html.theme-dark{--bg:#1a1418;--bg-2:#221a22;--panel:#1f181d;--panel-2:#281f27;--ink:#f0eee7;--ink-soft:#d9d6cd;--muted:#9a978f;--muted-2:#6c6a64;--line:#3a2f38;--line-2:#4d4047;--accent:#6e398e;--accent-deep:#8a52ab;--accent-soft:#2a1a30;--danger:#e94b57;--danger-soft:#3a1418;--ok:#5ac79b;--ok-soft:#0a2e22;--warn:#ee7203;--koesio-violet-soft:#2a1a30;--shadow-xs:none;--shadow-sm:none;--shadow-md:none;--shadow-lg:0 0 0 0 transparent;--c-gray-bg:#33332e;--c-gray-border:#75736c;--c-gray-th:#e8e6dc;--c-gray-ts:#b4b2a9;--c-blue-bg:#0c3660;--c-blue-border:#85b7eb;--c-blue-th:#b5d4f4;--c-blue-ts:#85b7eb;--c-purple-bg:#2e2870;--c-purple-border:#afa9ec;--c-purple-th:#ceacf6;--c-purple-ts:#afa9ec;--c-teal-bg:#054035;--c-teal-border:#5dcaa5;--c-teal-th:#9fe1cb;--c-teal-ts:#5dcaa5;--c-amber-bg:#4a2c06;--c-amber-border:#ef9f27;--c-amber-th:#fac775;--c-amber-ts:#ef9f27;--c-rose-bg:#4a0e21;--c-rose-border:#fda4af;--c-rose-th:#fecdd3;--c-rose-ts:#fda4af;--c-steel-bg:#1e293b;--c-steel-border:#94a3b8;--c-steel-th:#e2e8f0;--c-steel-ts:#cbd5e1}*{box-sizing:border-box}html,body{margin:0;padding:0}html{font-family:var(--font-sans-stack);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:16px}body{background:var(--bg);color:var(--ink);font-size:var(--text-base);font-feature-settings:"cv11", "ss01", "ss03";min-height:100vh;line-height:1.55}a{color:var(--accent);text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}::selection{background:var(--accent-soft);color:var(--accent-deep)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:0}.app-shell{background:var(--bg);align-items:flex-start;min-height:100vh;display:flex}.app-main{flex:auto;min-width:0}main{margin:0;padding:0;display:block}.app-content{padding:var(--space-4) var(--space-6) var(--space-10);width:100%}.topbar{z-index:5;align-items:center;gap:var(--space-3);height:52px;padding:0 var(--space-6);background:color-mix(in oklab, var(--panel) 92%, transparent);-webkit-backdrop-filter:saturate(180%)blur(10px);border-bottom:1px solid var(--line);display:none;position:sticky;top:0}.btn.topbar-menu{display:none}.sidebar{background:var(--panel);border-right:1px solid var(--line);z-index:20;flex-direction:column;flex:0 0 260px;align-self:flex-start;width:260px;height:100vh;transition:margin-left .22s;display:flex;position:sticky;top:0;overflow:hidden auto}.sidebar-head{padding:var(--space-5) var(--space-4) calc(var(--space-5) + 3px);border-bottom:1px solid var(--line);background:var(--panel);justify-content:flex-start;align-items:center;display:flex;position:relative}.sidebar-head:after{content:"";background:linear-gradient(90deg, var(--koesio-violet) 0 25%, var(--koesio-corail) 25% 50%, var(--koesio-yellow) 50% 75%, var(--koesio-cyan) 75% 100%);height:3px;position:absolute;bottom:-1px;left:0;right:0}.sidebar-brand{z-index:1;flex-direction:column;gap:3px;min-width:0;display:flex;position:relative}.sidebar-brand-mark{font-family:var(--font-title-stack);color:var(--koesio-violet);letter-spacing:0;font-size:30px;font-weight:800;line-height:1}.sidebar-brand-sub{font-size:var(--text-xs);color:var(--muted);letter-spacing:.08em;text-transform:uppercase;font-weight:700;line-height:1.2}.btn.sidebar-close{display:none}.sidebar-head .btn.sidebar-close{top:var(--space-2);right:var(--space-2);position:absolute}.sidebar-head .btn.sidebar-toggle{top:var(--space-3);right:var(--space-3);position:absolute}.sidebar-head .btn.sidebar-toggle svg{width:18px;height:18px}.sidebar-back{align-items:center;gap:var(--space-2);margin:var(--space-3) var(--space-3) 0;padding:9px var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--ink-soft);font-size:var(--text-sm);font-weight:600;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:flex}.sidebar-back:hover{background:var(--accent-soft);color:var(--accent-deep);border-color:var(--accent);text-decoration:none}.sidebar-back svg{stroke-width:2px;flex-shrink:0;width:16px;height:16px}.sidebar-nav,.sidebar-section{padding:var(--space-3);flex-direction:column;gap:2px;display:flex}.sidebar-section{border-top:1px solid var(--line)}.sidebar-section-title{font-size:var(--text-xs);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;padding:var(--space-2) var(--space-3) var(--space-2);font-weight:600}.nav-item{align-items:center;gap:var(--space-2);min-height:40px;padding:8px var(--space-3);font:inherit;font-size:var(--text-md);color:var(--ink-soft);border-radius:var(--radius-sm);cursor:pointer;text-align:left;background:0 0;border:0;width:100%;font-weight:500;text-decoration:none;transition:background .12s,color .12s;display:flex}.nav-item:hover{background:var(--panel-2);color:var(--ink)}.nav-item:active{background:var(--bg-2)}.nav-item{padding-left:var(--space-3);position:relative}.nav-item.active{background:var(--accent-soft);color:var(--accent-deep);font-weight:700}.nav-item.active svg{color:var(--accent)}.nav-item.active:before{content:"";background:var(--koesio-violet);width:3px;position:absolute;top:6px;bottom:6px;left:0}.nav-item svg{stroke-width:2px;flex-shrink:0;width:16px;height:16px}.nav-item.action-primary{color:var(--accent)}.nav-item.action-primary:hover{background:var(--accent-soft);color:var(--accent-deep)}.nav-item.danger{color:var(--danger)}.nav-item.danger:hover{background:var(--danger-soft)}.stat-row{align-items:center;gap:var(--space-2);min-height:38px;padding:7px var(--space-3);font:inherit;border-radius:var(--radius-sm);cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:22px 1fr auto;width:100%;transition:background .12s;display:grid}.stat-row:hover{background:var(--panel-2)}.stat-icon{border-radius:var(--radius-sm);background:var(--c-gray-bg);width:22px;height:22px;color:var(--c-gray-th);border:1px solid color-mix(in oklab, var(--c-gray-border) 35%, transparent);justify-content:center;align-items:center;transition:filter .15s;display:inline-flex}.stat-icon svg{width:14px;height:14px}.stat-row:hover .stat-icon{filter:saturate(1.25)brightness(.98)}.stat-firewalls .stat-icon{background:var(--c-blue-bg);color:var(--c-blue-th);border-color:color-mix(in oklab, var(--c-blue-border) 35%, transparent)}.stat-switches .stat-icon{background:var(--c-steel-bg);color:var(--c-steel-th);border-color:color-mix(in oklab, var(--c-steel-border) 35%, transparent)}.stat-hypervisors .stat-icon{background:var(--c-purple-bg);color:var(--c-purple-th);border-color:color-mix(in oklab, var(--c-purple-border) 35%, transparent)}.stat-vms .stat-icon{background:var(--c-rose-bg);color:var(--c-rose-th);border-color:color-mix(in oklab, var(--c-rose-border) 35%, transparent)}.stat-vlans .stat-icon{background:var(--c-teal-bg);color:var(--c-teal-th);border-color:color-mix(in oklab, var(--c-teal-border) 35%, transparent)}.stat-storage .stat-icon{background:var(--c-steel-bg);color:var(--c-steel-th);border-color:color-mix(in oklab, var(--c-steel-border) 35%, transparent)}.stat-devices .stat-icon{background:var(--c-gray-bg);color:var(--c-gray-th);border-color:color-mix(in oklab, var(--c-gray-border) 35%, transparent)}.stat-aps .stat-icon{background:var(--c-amber-bg);color:var(--c-amber-th);border-color:color-mix(in oklab, var(--c-amber-border) 35%, transparent)}.stat-label{font-size:var(--text-sm);color:var(--ink-soft);text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.stat-count{font-size:var(--text-sm);color:var(--ink);font-variant-numeric:tabular-nums;text-align:right;min-width:20px;font-weight:600}.stat-count.muted{color:var(--muted-2);font-weight:500}.sidebar-foot{padding:var(--space-3) var(--space-2) var(--space-3);border-top:1px solid var(--line);flex-direction:column;gap:1px;margin-top:auto;display:flex}.sidebar-version{padding:var(--space-2) var(--space-3);font-size:var(--text-xs);color:var(--muted-2);letter-spacing:.01em}.sidebar-scrim{background:color-mix(in oklab, var(--ink) 40%, transparent);z-index:15;display:none;position:fixed;inset:0}@media (min-width:1024px){.app-shell.sidebar-collapsed .sidebar{margin-left:-260px}.app-shell.sidebar-collapsed .topbar{display:flex}.app-shell.sidebar-collapsed .btn.topbar-menu{display:inline-flex}}@media (max-width:1023px){.sidebar{box-shadow:var(--shadow-lg);flex:none;transition:transform .22s;position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-scrim{display:block}.topbar{display:flex}.btn.topbar-menu,.btn.sidebar-close{display:inline-flex}.app-content{padding:var(--space-4) var(--space-4) var(--space-10)}.collapse-toolbar{margin-left:calc(var(--space-4) * -1);margin-right:calc(var(--space-4) * -1);padding-left:var(--space-4);padding-right:var(--space-4)}}.app-header{display:none}.btn{background:var(--panel);color:var(--ink);border:1px solid var(--line);height:34px;padding:0 var(--space-3);border-radius:var(--radius-sm);cursor:pointer;font:inherit;font-size:var(--text-md);align-items:center;gap:var(--space-2);white-space:nowrap;font-weight:500;transition:background .12s,border-color .12s,color .12s,box-shadow .12s;display:inline-flex}.btn:hover{border-color:var(--line-2);background:var(--panel-2)}.btn:active{background:var(--bg-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{stroke-width:2px;width:15px;height:15px}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{background:var(--accent-deep);border-color:var(--accent-deep)}.btn.primary:active{background:var(--accent-deep)}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--panel-2);color:var(--ink);border-color:var(--line)}.btn.danger{color:var(--danger)}.btn.danger:hover{border-color:var(--danger);background:var(--danger-soft)}.btn.icon-only{justify-content:center;width:34px;padding:0}.btn.sm{height:28px;padding:0 var(--space-2);font-size:var(--text-sm)}.btn.sm svg{width:13px;height:13px}.seg{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);gap:2px;padding:2px;display:inline-flex;overflow:hidden}.seg button{color:var(--muted);padding:0 var(--space-3);cursor:pointer;height:28px;font:inherit;font-size:var(--text-md);background:0 0;border:0;border-radius:0;align-items:center;gap:6px;font-weight:500;transition:background .12s,color .12s;display:inline-flex}.seg button:hover{color:var(--ink);background:var(--panel-2)}.seg button.active,html.theme-dark .seg button.active{background:var(--koesio-violet);color:#fff}.seg button svg{width:14px;height:14px}.seg.small button{height:26px;padding:0 var(--space-3);font-size:var(--text-sm)}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-5) var(--space-6);margin-bottom:var(--space-3)}h2.section-title{font-size:var(--text-md);margin:0 0 var(--space-3);color:var(--ink);align-items:center;gap:var(--space-2);letter-spacing:-.005em;font-weight:600;display:flex}h2.section-title svg{width:16px;height:16px;color:var(--muted)}.pill{background:var(--bg-2);color:var(--ink-soft);font-size:var(--text-xs);padding:1px var(--space-2);letter-spacing:.02em;border-radius:0;font-weight:600}.section-add{font-size:var(--text-sm);color:var(--accent);cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-xs);background:0 0;border:none;align-items:center;gap:4px;margin-left:auto;font-weight:500;display:inline-flex}.section-add:hover{background:var(--accent-soft)}.section-add svg{width:13px;height:13px}.section-card.collapsed{padding:var(--space-3) var(--space-5)}.section-card.collapsed h2.section-title{margin:0}.section-title-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.section-title-toggle:hover .section-chevron{color:var(--ink)}.section-preview{margin-left:var(--space-2);font-size:var(--text-sm);color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:400;overflow:hidden}.section-chevron{color:var(--muted-2);justify-content:center;align-items:center;transition:transform .18s,color .12s;display:inline-flex}.section-chevron svg{width:16px;height:16px}.section-chevron.collapsed{transform:rotate(-90deg)}.section-card{--sec-c:var(--c-gray-border);--sec-bg:var(--c-gray-bg);--sec-ink:var(--c-gray-th);border-left:3px solid var(--sec-c);background:color-mix(in oklab, var(--sec-bg) 20%, var(--panel))}.sec-meta{--sec-c:var(--koesio-violet);--sec-bg:var(--koesio-violet-soft);--sec-ink:var(--accent-deep)}.sec-firewalls{--sec-c:var(--c-blue-border);--sec-bg:var(--c-blue-bg);--sec-ink:var(--c-blue-th)}.sec-switches{--sec-c:var(--c-steel-border);--sec-bg:var(--c-steel-bg);--sec-ink:var(--c-steel-th)}.sec-hypervisors{--sec-c:var(--c-purple-border);--sec-bg:var(--c-purple-bg);--sec-ink:var(--c-purple-th)}.sec-vms{--sec-c:var(--c-rose-border);--sec-bg:var(--c-rose-bg);--sec-ink:var(--c-rose-th)}.sec-vlans{--sec-c:var(--c-teal-border);--sec-bg:var(--c-teal-bg);--sec-ink:var(--c-teal-th)}.sec-storage{--sec-c:var(--c-steel-border);--sec-bg:var(--c-steel-bg);--sec-ink:var(--c-steel-th)}.sec-devices{--sec-c:var(--c-gray-border);--sec-bg:var(--c-gray-bg);--sec-ink:var(--c-gray-th)}.sec-aps{--sec-c:var(--c-amber-border);--sec-bg:var(--c-amber-bg);--sec-ink:var(--c-amber-th)}.sec-vendors{--sec-c:var(--c-teal-border);--sec-bg:var(--c-teal-bg);--sec-ink:var(--c-teal-th)}.section-card>h2.section-title>svg{box-sizing:content-box;border-radius:var(--radius-sm);background:color-mix(in oklab, var(--sec-bg) 70%, var(--panel));width:15px;height:15px;color:var(--sec-ink);border:1px solid color-mix(in oklab, var(--sec-c) 35%, transparent);padding:4px}.collapse-toolbar{margin-left:calc(var(--space-6) * -1);margin-right:calc(var(--space-6) * -1);margin-bottom:var(--space-3);padding:var(--space-2) var(--space-6);background:var(--panel);border-bottom:1px solid var(--line);justify-content:flex-end;display:flex}.meta-grid,.grid{gap:var(--space-3);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.grid label,.meta-grid label{font-size:var(--text-xs);color:var(--muted);letter-spacing:.04em;text-transform:uppercase;flex-direction:column;gap:5px;font-weight:500;display:flex}.grid label.full,.meta-grid label.full{grid-column:1/-1}input[type=text],input[type=date],input[type=search],input[type=password],input[type=file],textarea,select{font:inherit;font-size:var(--text-md);color:var(--ink);padding:8px var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);width:100%;line-height:1.4;transition:border-color .12s,background .12s,box-shadow .12s}input:hover,textarea:hover,select:hover{border-color:var(--line-2)}input:focus,textarea:focus,select:focus{border-color:var(--accent);background:var(--panel);box-shadow:0 0 0 3px color-mix(in oklab, var(--accent) 20%, transparent);outline:none}textarea{resize:vertical;min-height:64px;line-height:1.5}select{cursor:pointer}html.theme-dark input,html.theme-dark textarea,html.theme-dark select{background:var(--bg-2)}html.theme-dark input:focus,html.theme-dark textarea:focus,html.theme-dark select:focus{background:var(--bg)}.multi-ref-list{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:8px;padding:8px;display:grid}.multi-ref-option{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);min-height:32px;color:var(--ink);font-size:var(--text-sm);letter-spacing:0;text-transform:none;align-items:center;gap:8px;padding:6px 8px;font-weight:600;display:flex}.multi-ref-option input{width:16px;height:16px;accent-color:var(--accent);flex:none}.multi-ref-empty{color:var(--muted);font-size:var(--text-sm);letter-spacing:0;text-transform:none}.rf-edge-label{pointer-events:none;border:1px solid var(--line);background:var(--panel);color:var(--ink);box-shadow:var(--shadow-xs);border-radius:999px;padding:3px 8px;font-size:10px;font-weight:800;line-height:1.2;position:absolute}.rf-edge-label-ipsec{border-color:color-mix(in oklab, #7c3aed 45%, var(--line));color:#6d28d9}.items{gap:var(--space-3);flex-direction:column;display:flex}.item{border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4);background:var(--panel-2);transition:border-color .12s,box-shadow .12s}.item:hover{border-color:var(--line-2);box-shadow:var(--shadow-xs)}.item-head{align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);display:flex}.item-head .name{font-weight:600;font-size:var(--text-md);color:var(--ink);letter-spacing:-.005em;flex:1}.item-head button{cursor:pointer;color:var(--muted-2);border-radius:var(--radius-xs);background:0 0;border:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:13px;transition:background .12s,color .12s;display:inline-flex}.item-head button:hover{background:var(--bg-2);color:var(--ink)}.item-head button.del:hover{color:var(--danger);background:var(--danger-soft)}.item-head button svg{width:14px;height:14px}.empty-items{text-align:center;color:var(--muted-2);padding:var(--space-5);font-style:italic;font-size:var(--text-sm)}.schema-view-card{padding:0;overflow:hidden}.schema-view-hero{padding:var(--space-6) var(--space-8) calc(var(--space-6) + 6px);background:var(--koesio-violet);color:#fff;align-items:start;gap:var(--space-5);grid-template-columns:minmax(220px,.8fr) minmax(320px,1.4fr);display:grid;position:relative}.schema-view-hero h2{font-family:var(--font-title-stack);letter-spacing:-.02em;text-transform:uppercase;color:#fff;margin:0;font-size:clamp(28px,3.6vw,42px);font-weight:800;line-height:1.05}.schema-view-hero p{color:#ffffffc7;font-size:var(--text-md);margin:4px 0 0;font-weight:700}.schema-view-controls{min-width:0}.schema-edit-topcard{margin-bottom:var(--space-3)}.schema-edit-topbar{grid-template-columns:1fr;align-items:center;min-height:124px}.meta-card{margin-bottom:var(--space-3)}.schema-edit-meta-grid{gap:var(--space-3);grid-template-columns:repeat(6,minmax(0,1fr));display:grid}.schema-edit-meta-grid .schema-meta-siteName,.schema-edit-meta-grid .schema-meta-customer{grid-column:span 3}.schema-edit-meta-grid .schema-meta-author,.schema-edit-meta-grid .schema-meta-date,.schema-edit-meta-grid .schema-meta-version{grid-column:span 2}.schema-edit-meta-grid .schema-meta-notes{grid-column:1/-1}.schema-edit-meta-grid label{color:var(--muted);font-weight:500}.schema-edit-meta-grid textarea{min-height:86px}.schema-edit-meta-grid input,.schema-edit-meta-grid textarea{background:var(--panel);border-color:var(--line);color:var(--ink)}.schema-edit-meta-grid input:focus,.schema-edit-meta-grid textarea:focus{background:var(--panel);border-color:var(--accent);box-shadow:0 0 0 3px var(--ring)}.schema-view-body{padding:var(--space-5) var(--space-6)}.schema-view-stripe{height:6px;display:flex;position:absolute;bottom:0;left:0;right:0}.schema-view-stripe span{height:100%;display:block}.schema-view-stripe .s-corail{background:var(--koesio-corail);width:38%}.schema-view-stripe .s-yellow{background:var(--koesio-yellow);width:22%}.schema-view-stripe .s-cyan{background:var(--koesio-cyan);width:30%}.inv-search{width:100%;margin-bottom:var(--space-3);height:38px}.schema-view-hero .inv-search{height:44px;margin-bottom:var(--space-3);color:var(--ink);background:#fff;border-color:#ffffff4d}.inv-filter-bar{gap:var(--space-2);margin-bottom:var(--space-4);padding-bottom:var(--space-4);border-bottom:1px solid var(--line);flex-wrap:wrap;display:flex}.schema-view-hero .inv-filter-bar{border-bottom:0;margin-bottom:0;padding-bottom:0}.inv-chip{background:var(--panel);border:1px solid var(--line);cursor:pointer;font:inherit;font-size:var(--text-sm);color:var(--muted);border-radius:0;align-items:center;gap:6px;padding:6px 12px;font-weight:500;transition:all .12s;display:inline-flex}.inv-chip svg{width:13px;height:13px}.inv-chip:hover{border-color:var(--koesio-violet);color:var(--ink);background:var(--panel-2)}.inv-chip.active{background:var(--koesio-violet);color:#fff;border-color:var(--koesio-violet)}.inv-chip-count{background:color-mix(in oklab, var(--ink) 10%, transparent);font-size:var(--text-xs);text-align:center;border-radius:0;min-width:20px;padding:0 7px;font-weight:600}.inv-chip.active .inv-chip-count{background:#ffffff38}.schema-view-hero .inv-chip{color:#ffffffe0;background:#ffffff1f;border-color:#ffffff4d}.schema-view-hero .inv-chip:hover{color:#fff;background:#ffffff2e;border-color:#ffffff73}.schema-view-hero .inv-chip.active{color:var(--koesio-violet);background:#fff;border-color:#fff}.schema-view-hero .inv-chip-count{color:inherit;background:#ffffff2e}.schema-view-hero .inv-chip.active .inv-chip-count{background:color-mix(in oklab, var(--koesio-violet) 12%, transparent)}@media (max-width:900px){.schema-view-hero{gap:var(--space-4);padding:var(--space-5) var(--space-5) calc(var(--space-5) + 6px);grid-template-columns:1fr}.schema-view-body{padding:var(--space-4)}.schema-edit-meta-grid{grid-template-columns:1fr}.schema-edit-meta-grid .schema-meta-siteName,.schema-edit-meta-grid .schema-meta-customer,.schema-edit-meta-grid .schema-meta-author,.schema-edit-meta-grid .schema-meta-date,.schema-edit-meta-grid .schema-meta-version,.schema-edit-meta-grid .schema-meta-notes{grid-column:1}}table.inventory{border-collapse:collapse;width:100%;font-size:var(--text-base)}table.inventory th,table.inventory td{border-bottom:1px solid var(--line);padding:10px var(--space-3);text-align:left;vertical-align:middle}table.inventory th{color:var(--muted);font-weight:600;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;background:var(--panel);border-bottom-color:var(--line-2);position:sticky;top:0}table.inventory th:hover{color:var(--ink)}table.inventory th.sort-asc:after,table.inventory th.sort-desc:after{color:var(--accent);margin-left:4px}table.inventory th.sort-asc:after{content:"↑"}table.inventory th.sort-desc:after{content:"↓"}tr.inv-row{transition:background .1s}tr.inv-row:hover{background:var(--panel-2)}.inv-type-pill{font-size:var(--text-xs);white-space:nowrap;border:1px solid;border-radius:0;align-items:center;gap:5px;padding:3px 9px 3px 7px;font-weight:600;display:inline-flex}.inv-type-pill svg{width:12px;height:12px}.inv-type-firewalls{background:var(--c-blue-bg);color:var(--c-blue-th);border-color:var(--c-blue-border)}.inv-type-switches{background:var(--c-gray-bg);color:var(--c-gray-th);border-color:var(--c-gray-border)}.inv-type-hypervisors{background:var(--c-purple-bg);color:var(--c-purple-th);border-color:var(--c-purple-border)}.inv-type-vms{background:var(--c-rose-bg);color:var(--c-rose-th);border-color:var(--c-rose-border)}.inv-type-storage{background:var(--c-steel-bg);color:var(--c-steel-th);border-color:var(--c-steel-border)}.inv-type-devices{background:var(--c-gray-bg);color:var(--c-gray-th);border-color:var(--c-gray-border)}.inv-type-aps{background:var(--c-amber-bg);color:var(--c-amber-th);border-color:var(--c-amber-border)}.inv-type-vendors,.inv-type-sub-c-teal{background:var(--c-teal-bg);color:var(--c-teal-th);border-color:var(--c-teal-border)}.inv-type-sub-c-amber{background:var(--c-amber-bg);color:var(--c-amber-th);border-color:var(--c-amber-border)}.inv-type-sub-c-blue{background:var(--c-blue-bg);color:var(--c-blue-th);border-color:var(--c-blue-border)}.inv-ip{font-family:var(--font-mono-stack);font-size:var(--text-sm);font-variant-numeric:tabular-nums;color:var(--ink-soft);white-space:nowrap}.inv-vlan{white-space:nowrap;align-items:center;gap:6px;display:inline-flex}.inv-vlan-dot{width:8px;height:8px;box-shadow:0 0 0 1.5px color-mix(in oklab, var(--line) 60%, transparent);border-radius:50%;flex-shrink:0}.vendors-empty{justify-content:center;align-items:center;gap:var(--space-3);text-align:center;padding:var(--space-10) var(--space-6);color:var(--muted);flex-direction:column;display:flex}.vendors-empty svg{width:36px;height:36px;color:var(--accent);stroke-width:1.6px}.vendors-empty h2{color:var(--ink);font-size:var(--text-lg);margin:0;font-weight:600}.vendors-empty p{max-width:460px;font-size:var(--text-sm);margin:0;line-height:1.55}.vendors-empty .btn{margin-top:var(--space-2)}.vendors-grid{gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(340px,1fr));display:grid}.vendor-card{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--koesio-violet);padding:var(--space-4) var(--space-4);gap:var(--space-3);border-radius:0;flex-direction:column;display:flex}.vendor-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.vendor-title h3{font-size:var(--text-md);color:var(--ink);letter-spacing:-.01em;margin:0;font-weight:700}.vendor-software{font-size:var(--text-sm);color:var(--koesio-violet-strong);margin-top:2px;font-weight:600}html.theme-dark .vendor-software{color:var(--koesio-cyan)}.vendor-cat{font-size:var(--text-xs);background:var(--koesio-violet-soft);color:var(--koesio-violet-strong);border:1px solid var(--koesio-violet);white-space:nowrap;text-transform:uppercase;letter-spacing:.04em;border-radius:0;flex-shrink:0;padding:2px 8px;font-weight:700}html.theme-dark .vendor-cat{background:var(--koesio-violet-soft);color:var(--koesio-cyan);border-color:var(--koesio-violet)}.vendor-contact{font-size:var(--text-sm);flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.vendor-contact li{align-items:center;gap:var(--space-2);color:var(--ink);grid-template-columns:110px 1fr;display:grid}.vendor-contact .vc-label{color:var(--muted);font-weight:500;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:5px;display:inline-flex}.vendor-contact .vc-label svg{width:12px;height:12px}.vendor-contact a{color:var(--accent);overflow-wrap:anywhere;text-decoration:none}.vendor-contact a:hover{text-decoration:underline}.vc-mono{font-family:var(--font-mono-stack);font-size:var(--text-sm)}.vendor-role{font-size:var(--text-sm);color:var(--ink);white-space:pre-wrap;padding-top:var(--space-3);border-top:1px dashed var(--line);line-height:1.5}.vendor-notes{font-size:var(--text-sm);color:var(--muted);white-space:pre-wrap;font-style:italic}.vendors-noresult{justify-content:center;align-items:center;gap:var(--space-2);padding:var(--space-10) var(--space-4);color:var(--muted-2);grid-column:1/-1;font-style:italic;display:flex}.vendors-noresult svg{width:18px;height:18px}.report-hero{padding:var(--space-6) var(--space-8);background:var(--koesio-violet);margin-bottom:var(--space-5);color:#fff;gap:var(--space-3);border:0;border-radius:0;flex-direction:column;display:flex}.report-hero h2{font-family:var(--font-title-stack);letter-spacing:-.02em;text-transform:uppercase;color:#fff;margin:0;font-size:clamp(28px,3.6vw,42px);font-weight:800;line-height:1.05}.report-hero-meta{gap:var(--space-5);color:#ffffffe6;font-size:var(--text-sm);flex-wrap:wrap;display:flex}.report-hero-meta strong{color:#ffffffb3;font-weight:700;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.16em;margin-bottom:2px;display:block}.report-hero-controls{align-items:center;gap:var(--space-3) var(--space-5);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.report-hero-controls .seg{background:#ffffff1f;border-color:#ffffff4d}.report-hero-controls .seg button{color:#ffffffd9}.report-hero-controls .seg button:hover{color:#fff;background:#ffffff2e}.report-hero-controls .seg button.active{color:var(--koesio-violet);background:#fff}.report-hero-controls .toggle-check{color:#ffffffd9}.report-hero-controls .toggle-check input{accent-color:#fff}.report-hero-stripe{height:6px;margin:var(--space-3) calc(-1 * var(--space-8)) calc(-1 * var(--space-6));align-self:stretch;display:flex}.report-hero-stripe span{height:100%;display:block}.report-hero-stripe .s-corail{background:var(--koesio-corail);width:38%}.report-hero-stripe .s-yellow{background:var(--koesio-yellow);width:22%}.report-hero-stripe .s-cyan{background:var(--koesio-cyan);width:30%}.report-notes{margin-bottom:var(--space-5);padding:var(--space-4) var(--space-5);border:1px solid var(--line);border-left:4px solid var(--koesio-violet);white-space:pre-wrap;font-size:var(--text-base);color:var(--ink-soft);background:#fff;border-radius:0;line-height:1.55}html.theme-dark .report-notes{background:var(--panel)}.report-controls{gap:var(--space-4);margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:1px solid var(--line);flex-wrap:wrap;align-items:center;display:flex}.toggle-check{font-size:var(--text-sm);color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:6px;display:flex}.toggle-check input{accent-color:var(--accent)}.modal-bg{background:color-mix(in oklab, var(--ink) 60%, transparent);z-index:100;padding:var(--space-12) var(--space-4);justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-xl);width:100%;max-width:720px;box-shadow:var(--shadow-lg);overflow:hidden}.modal-head{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--line);align-items:center;gap:var(--space-3);display:flex}.modal-head h2{font-size:var(--text-lg);letter-spacing:-.015em;flex:1;margin:0;font-weight:600}.modal-head .close{cursor:pointer;color:var(--muted-2);border-radius:var(--radius-sm);background:0 0;border:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:20px;line-height:1;display:inline-flex}.modal-head .close:hover{background:var(--panel-2);color:var(--ink)}.modal-body{padding:var(--space-5) var(--space-6) var(--space-6);gap:var(--space-4);flex-direction:column;display:flex}.modal-section{border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-4);gap:var(--space-3);background:var(--panel-2);flex-direction:column;display:flex}.modal-section h3{font-size:var(--text-md);letter-spacing:-.005em;margin:0;font-weight:600}.modal-section .hint{font-size:var(--text-sm);color:var(--muted);line-height:1.55}.modal-section textarea{min-height:110px;font-family:var(--font-mono-stack);font-size:var(--text-sm)}.status{font-size:var(--text-sm);padding:8px var(--space-3);border-radius:var(--radius-sm);background:var(--accent-soft);color:var(--accent-deep);font-weight:500}.status.error{background:var(--danger-soft);color:var(--danger)}.status.success{background:var(--ok-soft);color:var(--ok)}.key-saved{align-items:center;gap:var(--space-2);padding:8px var(--space-3);background:var(--ok-soft);color:var(--ok);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;display:flex}.diagram-wrap{border:1px solid var(--line);background:var(--panel-2);border-radius:0;height:720px;overflow:hidden}.react-flow__renderer,.react-flow__background{background:var(--panel-2)}.react-flow__minimap{border:1px solid var(--line);border-radius:var(--radius-sm);overflow:hidden;background:var(--panel)!important}.react-flow__controls button{background:var(--panel);color:var(--ink);border-bottom:1px solid var(--line)}.react-flow__controls button:hover{background:var(--accent-soft)}.node-box{border-radius:var(--radius-sm);text-align:center;min-width:160px;font-family:var(--font-sans-stack);border:1px solid;padding:10px 14px}.node-box .nb-title{letter-spacing:-.005em;font-size:13px;font-weight:600}.node-box .nb-sub{margin-top:3px;font-size:11px}.node-box .nb-tag{margin-top:4px;font-size:10px;font-weight:600}.node-box.c-gray{background:var(--c-gray-bg);border-color:var(--c-gray-border)}.node-box.c-gray .nb-title{color:var(--c-gray-th)}.node-box.c-gray .nb-sub{color:var(--c-gray-ts)}.node-box.c-blue{background:var(--c-blue-bg);border-color:var(--c-blue-border)}.node-box.c-blue .nb-title{color:var(--c-blue-th)}.node-box.c-blue .nb-sub{color:var(--c-blue-ts)}.node-box.c-purple{background:var(--c-purple-bg);border-color:var(--c-purple-border)}.node-box.c-purple .nb-title{color:var(--c-purple-th)}.node-box.c-purple .nb-sub{color:var(--c-purple-ts)}.node-box.c-teal{background:var(--c-teal-bg);border-color:var(--c-teal-border)}.node-box.c-teal .nb-title{color:var(--c-teal-th)}.node-box.c-teal .nb-sub{color:var(--c-teal-ts)}.node-box.c-amber{background:var(--c-amber-bg);border-color:var(--c-amber-border)}.node-box.c-amber .nb-title{color:var(--c-amber-th)}.node-box.c-amber .nb-sub{color:var(--c-amber-ts)}.node-box.c-rose{background:var(--c-rose-bg);border-color:var(--c-rose-border)}.node-box.c-rose .nb-title{color:var(--c-rose-th)}.node-box.c-rose .nb-sub{color:var(--c-rose-ts)}.node-box.c-steel{background:var(--c-steel-bg);border-color:var(--c-steel-border)}.node-box.c-steel .nb-title{color:var(--c-steel-th)}.node-box.c-steel .nb-sub{color:var(--c-steel-ts)}.vlan-group{border-radius:var(--radius-lg);padding:var(--space-4);background:0 0;border:1.8px dashed;padding-top:36px;position:relative}.vlan-group-title{top:10px;left:var(--space-4);letter-spacing:.01em;font-size:12px;font-weight:600;font-family:var(--font-sans-stack);position:absolute}.print-only{display:none}:root{--koesio-purple:#7c3aed;--koesio-purple-strong:#6d28d9;--koesio-red:#e11d48}.koesio-frame{box-sizing:border-box;border:1.2pt solid var(--koesio-purple);background:#fff;border-left-width:4.5mm;flex-direction:column;width:100%;height:100%;padding:3mm;display:flex}.koesio-header{border:.8pt solid var(--koesio-purple);grid-template-columns:24mm 1fr 26mm;min-height:12mm;margin-bottom:3mm;display:grid}.koesio-brand{border-right:.8pt solid var(--koesio-purple);text-align:center;flex-direction:column;justify-content:center;align-items:center;padding:2mm 3mm;display:flex}.koesio-logo{color:var(--koesio-purple);letter-spacing:-.02em;font-size:18pt;font-weight:800;line-height:1;font-family:var(--font-sans-stack)}.koesio-info{border-right:.8pt solid var(--koesio-purple);grid-template-rows:1fr 1fr;display:grid}.koesio-client-name{border-bottom:.8pt solid var(--koesio-purple);text-align:center;color:#2c2c2a;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;justify-content:center;align-items:center;padding:0 2mm;font-size:10pt;font-weight:600;line-height:1.1;display:flex;overflow:hidden}.koesio-details{grid-template-columns:1fr 1fr 1fr;display:grid}.koesio-details>div{border-right:.8pt solid var(--koesio-purple);text-align:center;color:#2c2c2a;white-space:nowrap;text-overflow:ellipsis;justify-content:center;align-items:center;padding:0 2mm;font-size:8.5pt;font-weight:500;line-height:1.1;display:flex;overflow:hidden}.koesio-details>div:last-child{border-right:none}.koesio-client-logo{color:var(--koesio-purple);text-align:center;justify-content:center;align-items:center;padding:2mm;font-size:9pt;font-style:italic;display:flex}.koesio-subheader{color:#5f5e5a;border-bottom:.4pt solid #e8e6dc;margin-bottom:2mm;padding:0 1mm 1.5mm;font-size:8.5pt}.koesio-subheader strong{color:#2c2c2a;font-weight:600}.print-inventory-table{border-collapse:collapse;width:100%;font-size:7.5pt;font-family:var(--font-sans-stack)}.print-inventory-table th{color:#5f5e5a;text-transform:uppercase;letter-spacing:.05em;text-align:left;background:#f0ede8;border-bottom:.5pt solid #b4b2a9;padding:1.8mm 2mm;font-size:6.5pt;font-weight:700}.print-inventory-table td{vertical-align:middle;border-bottom:.3pt solid #e8e6dc;padding:1.2mm 2mm}.print-inventory-table tbody tr:nth-child(odd){background:#fafafa}.pi-type-pill{white-space:nowrap;border:.4pt solid;border-radius:3mm;align-items:center;gap:3px;padding:.4mm 1.5mm;font-size:6.5pt;font-weight:700;display:inline-flex}.pi-type-firewalls{color:#0c447c;background:#e6f1fb;border-color:#378add}.pi-type-switches{color:#2c2c2a;background:#f1efe8;border-color:#b4b2a9}.pi-type-hypervisors{color:#3c3489;background:#eeedfe;border-color:#7f77dd}.pi-type-vms{color:#881337;background:#ffe4e6;border-color:#fb7185}.pi-type-storage{color:#0f172a;background:#e2e8f0;border-color:#475569}.pi-type-devices{color:#2c2c2a;background:#f1efe8;border-color:#b4b2a9}.pi-type-aps{color:#633806;background:#faeeda;border-color:#ba7517}.pi-ip{font-family:var(--font-mono-stack);white-space:nowrap;font-size:7pt}.pi-vlan{white-space:nowrap;align-items:center;gap:1.2mm;display:inline-flex}.pi-vlan-dot{border-radius:50%;width:2mm;height:2mm;display:inline-block}.pi-details{color:#5f5e5a;font-size:7pt}.print-vendors-grid{font-family:var(--font-sans-stack);grid-template-columns:1fr 1fr;gap:3mm;display:grid}.print-vendor-card{color:#2c2c2a;background:#fafafa;border:.4pt solid #b4b2a9;border-left:2pt solid #0d9488;padding:2.5mm 3mm;font-size:8pt}.pvc-head{justify-content:space-between;align-items:baseline;gap:2mm;margin-bottom:1mm;display:flex}.pvc-name{color:#2c2c2a;margin:0;font-size:10pt;font-weight:700}.pvc-cat{color:#0f766e;white-space:nowrap;text-transform:uppercase;letter-spacing:.04em;background:#ccfbf1;border:.4pt solid #5eead4;border-radius:2mm;padding:.3mm 1.5mm;font-size:6.5pt;font-weight:700}.pvc-software{color:#0f766e;margin-bottom:1.5mm;font-size:8.5pt;font-weight:600}.pvc-contact{grid-template-columns:22mm 1fr;gap:.3mm 2mm;margin:0 0 1.5mm;font-size:7.5pt;display:grid}.pvc-contact dt{color:#5f5e5a;text-transform:uppercase;letter-spacing:.05em;align-self:center;font-size:6.5pt;font-weight:700}.pvc-contact dd{color:#2c2c2a;margin:0}.pvc-mono{font-family:var(--font-mono-stack);word-break:break-all;font-size:7pt}.pvc-role{color:#2c2c2a;white-space:pre-wrap;border-top:.3pt dashed #b4b2a9;padding-top:1.5mm;font-size:7.5pt;line-height:1.4}.pvc-notes{color:#5f5e5a;white-space:pre-wrap;margin-top:1.2mm;font-size:7pt;font-style:italic}@media print{@page{size:A4 landscape;margin:10mm}html,body{font-size:11px;color:#2c2c2a!important;background:#fff!important;margin:0!important;padding:0!important}html.theme-dark{--bg:#fff;--panel:#fff;--ink:#2c2c2a;--line:#ddd}.app-header,.modal-bg,.screen-only{display:none!important}.print-only{display:block!important}.print-page{page-break-after:always;break-after:page;page-break-inside:avoid;break-inside:avoid;margin:0;padding:0}.print-page:last-child{page-break-after:auto;break-after:auto}.koesio-frame{box-sizing:border-box;width:277mm;height:188mm;max-height:188mm;padding:3mm;display:block;overflow:hidden}.koesio-header{height:14mm;max-height:14mm;margin-bottom:2mm;overflow:hidden}.koesio-subheader{height:6mm;max-height:6mm;margin-bottom:1mm;padding:1mm 1mm 1.5mm;line-height:1;overflow:hidden}.print-diagram{justify-content:center;align-items:center;width:100%;height:158mm;max-height:158mm;display:flex;overflow:hidden}.print-diagram svg{width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;display:block!important}.print-page-inventory .koesio-frame-inventory{height:auto;min-height:188mm;max-height:none;overflow:visible}.print-page-inventory .print-inventory-table{page-break-inside:auto;break-inside:auto}.print-page-inventory .print-inventory-table thead{display:table-header-group}.print-page-inventory .print-inventory-table tfoot{display:table-footer-group}.print-page-inventory .print-inventory-table tr{page-break-inside:avoid;break-inside:avoid}.print-page-vendors .koesio-frame-vendors{height:auto;min-height:188mm;max-height:none;overflow:visible}.print-page-vendors .print-vendors-grid{break-inside:auto;page-break-inside:auto}.print-page-vendors .print-vendor-card{break-inside:avoid;page-break-inside:avoid}@page schema-landscape{size:A4 landscape;margin:0}.schema-print{color:var(--koesio-ink);font-family:Be Vietnam Pro,Arial Nova,Arial,sans-serif;font-size:9.5pt;line-height:1.45;display:block!important}.schema-print,.schema-print *{-webkit-print-color-adjust:exact;print-color-adjust:exact;box-shadow:none;border-radius:0}.schema-print .print-page{page:schema-landscape;box-sizing:border-box;page-break-after:always;break-after:page;page-break-inside:auto;break-inside:auto;background:#fff;flex-direction:column;width:297mm;height:210mm;min-height:0;margin:0;padding:0;display:flex;overflow:hidden}.schema-print .print-page:last-child{page-break-after:auto;break-after:auto}.schema-cover-page{color:var(--koesio-ink)}.schema-cover-hero{background:var(--koesio-violet);color:#fff;flex-direction:column;flex:0 0 108mm;padding:14mm 18mm 0;display:flex;position:relative}.schema-cover-wordmark{object-fit:contain;width:42mm;height:auto;display:block}.schema-cover-eyebrow{letter-spacing:.22em;color:#ffffffd9;margin-top:18mm;font-size:8.5pt;font-weight:700}.schema-cover-title{color:#fff;text-transform:uppercase;max-width:230mm;margin:4mm 0 8mm;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:40pt;font-weight:800;line-height:1.02}.schema-cover-client-block{margin-top:auto;padding-bottom:12mm}.schema-cover-client-label{letter-spacing:.22em;color:#ffffffbf;margin-bottom:1.5mm;font-size:8pt;font-weight:700}.schema-cover-client-name{color:#fff;font-size:15pt;font-weight:700;line-height:1.15}.schema-cover-subtitle{color:#fffc;margin-top:1mm;font-size:9.5pt}.schema-cover-stripe{justify-content:flex-end;height:5mm;display:flex;position:absolute;bottom:0;left:0;right:0}.schema-cover-stripe>span{height:100%;display:block}.schema-cover-stripe-corail{background:var(--koesio-corail);width:38mm}.schema-cover-stripe-yellow{background:var(--koesio-yellow);width:26mm}.schema-cover-stripe-cyan{background:var(--koesio-cyan);width:32mm}.schema-cover-bottom{background:#fff;flex:1;min-height:0;padding:10mm 18mm 8mm;overflow:hidden}.schema-cover-info-heading{color:var(--koesio-violet);letter-spacing:.22em;margin:0 0 4mm;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:9.5pt;font-weight:800}.schema-cover-info{border-top:.4pt solid var(--koesio-gray-100);grid-template-columns:1fr 1fr;column-gap:18mm;display:grid}.schema-cover-info-row{border-bottom:.4pt solid var(--koesio-gray-100);grid-template-columns:34mm 1fr;align-items:baseline;gap:4mm;padding:2.6mm 0;display:grid}.schema-cover-info-label{letter-spacing:.16em;color:var(--koesio-violet);text-transform:uppercase;font-size:7.8pt;font-weight:800}.schema-cover-info-value{color:var(--koesio-ink);font-size:9.5pt}.schema-cover-notes{border-left:1mm solid var(--koesio-violet);color:#555;white-space:pre-wrap;margin-top:4mm;padding-left:4mm;font-size:8.5pt}.schema-band{background:var(--koesio-violet);color:#fff;flex:0 0 14mm;grid-template-columns:20mm .4mm 1fr auto;align-items:center;gap:6mm;padding:0 14mm;display:grid}.schema-band-num{font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:21pt;font-weight:800;line-height:1}.schema-band-rule{background:#ffffff8c;width:.4mm;height:8mm}.schema-band-title{text-transform:uppercase;letter-spacing:.2em;white-space:nowrap;text-overflow:ellipsis;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:10.5pt;font-weight:800;overflow:hidden}.schema-band-brand{justify-content:flex-end;align-items:center;min-width:28mm;display:flex}.schema-band-brand img{object-fit:contain;width:28mm;height:auto;display:block}.schema-body{flex:1;min-height:0;padding:7mm 14mm 15mm;overflow:hidden}.schema-diagram-body{justify-content:center;align-items:center;display:flex}.schema-diagram{justify-content:center;align-items:center;width:269mm;height:151mm;display:flex;overflow:hidden}.schema-diagram svg{width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;display:block!important}.schema-readable-body{padding:6mm 12mm 14mm;overflow:hidden}.schema-readable-grid{width:100%;height:100%}.schema-readable-grid-global{grid-template-columns:minmax(0,1fr) 64mm;align-items:stretch;gap:6mm;display:grid}.schema-global-map{border:.4pt solid var(--koesio-gray-100);background:#fcfbfd;justify-content:center;align-items:center;min-height:0;display:flex;overflow:hidden}.schema-global-map svg{width:100%;height:100%;display:block}.schema-readable-side{border-left:1.2mm solid var(--koesio-violet);background:#fbf8fc;padding:4mm;overflow:hidden}.schema-readable-side h3{color:var(--koesio-violet);text-transform:uppercase;letter-spacing:.12em;margin:0 0 4mm;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:11pt}.schema-print-legend-line{align-items:center;gap:3mm;margin-bottom:3mm;font-size:9pt;display:flex}.schema-print-legend-line span{border-top:1.2mm dashed;width:16mm;display:block}.schema-readable-list{color:#444;flex-direction:column;gap:2mm;margin-top:4mm;font-size:8.2pt;line-height:1.3;display:flex}.schema-topology-report-diagram{border:.4pt solid var(--koesio-gray-100);background:#fcfbfd}.schema-static-topology-diagram{width:100%!important;max-width:100%!important;height:100%!important;max-height:100%!important;display:block!important}.schema-print-section{border-top:1.2mm solid var(--koesio-violet);border-left:.4pt solid var(--koesio-gray-100);border-right:.4pt solid var(--koesio-gray-100);border-bottom:.4pt solid var(--koesio-gray-100);background:#fff;padding:3mm;overflow:hidden}.schema-print-section h3{text-transform:uppercase;letter-spacing:.12em;margin:0 0 2.5mm;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:9.5pt}.schema-print-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:2.4mm;display:grid}.schema-info-card,.schema-empty-print-card{background:#f9f8f4;border:.4pt solid #d8d6ce;min-height:17mm;padding:2.3mm;overflow:hidden}.schema-info-card h4{color:#2c2c2a;margin:0 0 1mm;font-size:8.7pt;font-weight:800;line-height:1.15}.schema-info-card p{color:#5f5e5a;margin:0;font-size:7.4pt;line-height:1.25}.schema-info-card-blue{background:#e6f1fb;border-color:#378add}.schema-info-card-purple{background:#eeedfe;border-color:#7f77dd}.schema-info-card-steel{background:#e2e8f0;border-color:#475569}.schema-info-card-amber{background:#faeeda;border-color:#ba7517}.schema-info-card-teal{background:#e1f5ee;border-color:#1d9e75}.schema-empty-print-card{color:#777;justify-content:center;align-items:center;font-size:8pt;font-style:italic;display:flex}.schema-vlan-print-grid{grid-template-columns:repeat(3,minmax(0,1fr));align-content:start;gap:4mm;display:grid}.schema-vlan-print-card{border:.4pt solid var(--koesio-gray-100);border-top:1.2mm solid var(--koesio-violet);background:#fff;min-height:39mm;padding:3mm;overflow:hidden}.schema-vlan-print-card header{border-bottom:.4pt solid var(--koesio-gray-100);min-height:12mm;margin-bottom:2mm}.schema-vlan-print-card h3{color:var(--koesio-violet);margin:0;font-size:9pt;font-weight:800;line-height:1.15}.schema-vlan-print-card header span{color:#666;font-size:7.4pt}.schema-vlan-print-card dl{grid-template-columns:20mm 1fr;gap:1mm 2mm;margin:0 0 2.5mm;font-size:7.4pt;display:grid}.schema-vlan-print-card dt{color:var(--koesio-violet);text-transform:uppercase;font-size:6.6pt;font-weight:800}.schema-vlan-print-card dd{color:#333;margin:0}.schema-vlan-counts,.schema-vlan-groups{flex-wrap:wrap;gap:1.4mm;display:flex}.schema-vlan-counts span,.schema-vlan-groups span{color:#444;background:#f8f6fa;border:.4pt solid #dedbd1;padding:1mm 1.5mm;font-size:7.2pt;font-weight:700}.schema-vlan-counts strong{color:var(--koesio-violet);margin-right:1mm}.schema-vlan-groups{margin-top:2mm}.schema-vlan-groups span{color:#085041;background:#e1f5ee;border-color:#1d9e75}.schema-compute-grid{grid-template-columns:1fr 1fr;align-content:start;gap:4mm;display:grid}.schema-compute-card{border:.4pt solid var(--koesio-gray-100);background:#fff;border-top:1.2mm solid #7f77dd;min-height:62mm;overflow:hidden}.schema-compute-card header{background:#eeedfe;border-bottom:.4pt solid #cbc7f6;padding:3mm}.schema-compute-card h3{color:#3c3489;margin:0 0 .8mm;font-size:9.5pt;font-weight:800}.schema-compute-card header span{color:#534ab7;font-size:7.4pt}.schema-vm-tile-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.8mm;padding:2.5mm;display:grid}.schema-vm-tile{background:#fbfaff;border:.35pt solid #cbc7f6;min-height:13mm;padding:1.6mm;overflow:hidden}.schema-vm-tile strong,.schema-vm-tile span{line-height:1.18;display:block}.schema-vm-tile strong{color:#3c3489;font-size:7.4pt;font-weight:900}.schema-vm-tile span{color:#5f5e5a;margin-top:.5mm;font-size:6.5pt}.schema-vm-tile .schema-vm-ip{color:#be123c;white-space:nowrap;font-family:JetBrains Mono,Consolas,monospace}.schema-compute-empty{text-align:center;color:#777;padding:8mm;font-size:8pt;font-style:italic}.schema-foot{border-top:.4pt solid var(--koesio-gray-100);color:#6a6a6a;background:#fff;flex:0 0 14mm;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;padding:4mm 14mm;font-size:7.8pt;display:grid}.schema-foot-left{text-align:left;line-height:1.25}.schema-foot-center{justify-content:center;align-items:center;display:flex}.schema-foot-center img{object-fit:contain;width:24mm;height:auto;display:block}.schema-foot-right{text-align:right}.schema-foot-sub{color:#9a9a9a;margin-top:.5mm;font-size:7pt}.schema-print .print-inventory-table{border-collapse:collapse;width:100%;font-size:7.1pt;line-height:1.2}.schema-print .print-inventory-table th{background:var(--koesio-violet);color:#fff;text-transform:uppercase;letter-spacing:.06em;border:.4pt solid var(--koesio-violet);padding:1.7mm 2mm;font-size:6.5pt;font-weight:800}.schema-print .print-inventory-table td{border:.4pt solid var(--koesio-gray-100);vertical-align:middle;padding:1.35mm 2mm}.schema-print .print-inventory-table tbody tr:nth-child(odd){background:#f8f6fa}.schema-print .pi-type-pill{border-radius:0}.schema-print .print-vendors-grid{grid-template-columns:1fr 1fr;gap:4mm}.schema-print .print-vendor-card{border:.4pt solid var(--koesio-gray-100);border-left:1.2mm solid var(--koesio-violet);background:#fff;padding:3mm}}.tuto-page{max-width:820px;padding:var(--space-10) var(--space-6) var(--space-12);background:var(--bg);min-height:100vh;color:var(--ink);margin:0 auto}.tuto-head{align-items:flex-start;gap:var(--space-4);margin-bottom:var(--space-10);padding-bottom:var(--space-6);border-bottom:1px solid var(--line);flex-direction:column;display:flex}.tuto-back{text-decoration:none}.tuto-title{font-size:var(--text-3xl);letter-spacing:-.02em;margin:0;font-weight:700}.tuto-lead{font-size:var(--text-lg);color:var(--ink-soft);max-width:60ch;margin:0;line-height:1.55}.tuto-prose{gap:var(--space-10);flex-direction:column;display:flex}.tuto-section{gap:var(--space-5);grid-template-columns:48px 1fr;align-items:start;display:grid}.tuto-step-icon{background:var(--accent-soft);width:44px;height:44px;color:var(--accent-deep);border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.tuto-step-icon svg{stroke-width:2px;width:20px;height:20px}.tuto-step-body h2{font-size:var(--text-xl);margin:0 0 var(--space-3);letter-spacing:-.01em;color:var(--ink);font-weight:600}.tuto-step-body p,.tuto-step-body ul{font-size:var(--text-md);color:var(--ink-soft);margin:0 0 var(--space-3);line-height:1.65}.tuto-step-body ul{padding-left:1.2em}.tuto-step-body li{margin-bottom:var(--space-1)}.tuto-step-body li::marker{color:var(--muted-2)}.tuto-step-body strong{color:var(--ink);font-weight:600}.tuto-step-body code{font-family:var(--font-mono-stack);background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-xs);color:var(--ink);padding:1px 5px;font-size:.9em}.tuto-media{margin:var(--space-4) 0 0;padding:var(--space-8) var(--space-4);border:1.5px dashed var(--line-2);border-radius:var(--radius-md);background:var(--panel);text-align:center}.tuto-media figcaption{font-size:var(--text-sm);color:var(--muted);font-style:italic}@media (max-width:640px){.tuto-page{padding:var(--space-6) var(--space-4) var(--space-10)}.tuto-section{gap:var(--space-3);grid-template-columns:1fr}.tuto-step-icon{width:38px;height:38px}}.hub{background:radial-gradient(115% 80% at 100% -10%, color-mix(in oklab, var(--koesio-violet) 13%, transparent) 0%, transparent 52%), color-mix(in oklab, var(--koesio-violet) 4%, #fff);min-height:100dvh;color:var(--koesio-ink);flex-direction:column;display:flex}html.theme-dark .hub{background:var(--bg);color:var(--ink)}.hub-top{justify-content:flex-start;align-items:center;gap:var(--space-4);background:var(--koesio-violet);border-bottom:1px solid var(--koesio-violet-strong);min-height:72px;padding:0 clamp(24px,6vw,56px);display:flex}.hub-top-brand{align-items:center;min-width:0;display:inline-flex}.hub-top-logo{object-fit:contain;width:auto;max-width:min(216px,56vw);height:48px;display:block}.hub-main{flex-direction:column;flex:1;justify-content:center;gap:clamp(36px,6vh,64px);width:100%;max-width:960px;margin:0 auto;padding:clamp(40px,8vh,80px) clamp(24px,6vw,56px);display:flex}.hub-head,.hub-head-copy{gap:var(--space-3);flex-direction:column;display:flex}.hub-wordmark{font-family:var(--font-title-stack);letter-spacing:0;color:var(--koesio-violet);text-transform:uppercase;margin:0;font-size:clamp(56px,9vw,112px);font-weight:800;line-height:.92}.hub-tagline{color:var(--ink-soft);max-width:56ch;margin:0;font-size:clamp(15px,1.4vw,18px);line-height:1.5}.hub-cards{background:var(--line);border:1px solid var(--line);grid-template-columns:1fr 1fr;gap:1px;display:grid}.hub-card{gap:var(--space-2);color:var(--ink);background:#fff;flex-direction:column;min-height:clamp(220px,30vh,320px);padding:clamp(24px,3.5vw,44px);text-decoration:none;transition:background .16s,color .16s;display:flex}html.theme-dark .hub-card{background:var(--panel)}.hub-card:hover,.hub-card:focus-visible{background:var(--koesio-violet);color:#fff;text-decoration:none}.hub-card:focus-visible{outline-offset:-3px}.hub-card-top{justify-content:space-between;align-items:flex-start;gap:var(--space-4);min-height:44px;margin-bottom:var(--space-1);display:flex}.hub-card-picto{object-fit:contain;flex:none;width:44px;height:44px;transition:opacity .16s;display:block}.hub-card:hover .hub-card-picto,.hub-card:focus-visible .hub-card-picto{opacity:.92}.hub-card-eyebrow{font-size:var(--text-xs);letter-spacing:.22em;text-transform:uppercase;color:var(--muted);padding-top:2px;font-weight:700}.hub-card:hover .hub-card-eyebrow,.hub-card:focus-visible .hub-card-eyebrow{color:#ffffffbf}.hub-card-title{font-family:var(--font-title-stack);letter-spacing:-.01em;text-transform:uppercase;font-size:clamp(22px,2.6vw,32px);font-weight:800;line-height:1.05}.hub-card-desc{font-size:var(--text-md);color:var(--muted);max-width:36ch;line-height:1.55}.hub-card:hover .hub-card-desc,.hub-card:focus-visible .hub-card-desc{color:#ffffffd9}.hub-card-cta{padding-top:var(--space-4);font-weight:700;font-size:var(--text-md);color:var(--koesio-violet);align-items:center;gap:6px;margin-top:auto;display:inline-flex}.hub-card-cta svg{width:16px;height:16px;transition:transform .16s}.hub-card:hover .hub-card-cta,.hub-card:focus-visible .hub-card-cta{color:#fff}.hub-card:hover .hub-card-cta svg{transform:translate(3px)}.hub-foot{align-items:center;gap:var(--space-4);padding:var(--space-4) clamp(24px, 6vw, 56px);border-top:1px solid var(--line);color:var(--muted);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;grid-template-columns:1fr auto 1fr;display:grid}.hub-foot-version{justify-self:start}.hub-foot-stripe{justify-self:center;width:88px;height:6px;display:inline-flex}.hub-foot-stripe span{height:100%;display:block}.hub-foot-stripe .s-corail{background:var(--koesio-corail);width:38%}.hub-foot-stripe .s-yellow{background:var(--koesio-yellow);width:22%}.hub-foot-stripe .s-cyan{background:var(--koesio-cyan);width:40%}.hub-foot-brand{font-family:var(--font-title-stack);color:var(--koesio-violet);font-weight:800;font-size:var(--text-md);letter-spacing:-.01em;text-transform:none;justify-self:end}@media (max-width:720px){.hub-cards{grid-template-columns:1fr}.hub-foot{grid-template-columns:1fr 1fr}.hub-foot-stripe{display:none}}.proc-shell{background:var(--bg);align-items:flex-start;min-height:100vh;display:flex}.proc-main{flex:auto;min-width:0}.proc-topbar{z-index:5;height:52px;padding:0 var(--space-6);background:color-mix(in oklab, var(--panel) 92%, transparent);-webkit-backdrop-filter:saturate(180%)blur(10px);border-bottom:1px solid var(--line);align-items:center;display:none;position:sticky;top:0}.proc-content{padding:var(--space-4) var(--space-6) var(--space-10);width:100%}.proc-sidebar{background:var(--panel);border-right:1px solid var(--line);width:240px;height:100vh;padding:var(--space-4) var(--space-3);align-self:flex-start;gap:var(--space-3);flex-direction:column;flex:0 0 240px;transition:margin-left .22s;display:flex;position:sticky;top:0;overflow-y:auto}.proc-sidebar-head{margin:calc(var(--space-4) * -1) calc(var(--space-3) * -1) 0;padding:var(--space-5) var(--space-4) calc(var(--space-5) + 3px);border-bottom:1px solid var(--line);background:var(--panel);justify-content:flex-start;align-items:center;display:flex;position:relative}.proc-sidebar-head:after{content:"";background:linear-gradient(90deg, var(--koesio-violet) 0 25%, var(--koesio-corail) 25% 50%, var(--koesio-yellow) 50% 75%, var(--koesio-cyan) 75% 100%);height:3px;position:absolute;bottom:-1px;left:0;right:0}.proc-sidebar-head .btn.proc-sidebar-toggle{top:var(--space-3);right:var(--space-3);position:absolute}.proc-sidebar-head .btn.proc-sidebar-toggle svg,.proc-topbar-menu svg{width:18px;height:18px}.proc-shell.sidebar-collapsed .proc-sidebar{margin-left:-240px}.proc-shell.sidebar-collapsed .proc-topbar{display:flex}.proc-back{align-items:center;gap:var(--space-2);padding:9px var(--space-3);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--ink-soft);font-size:var(--text-sm);font-weight:600;text-decoration:none;transition:background .15s,color .15s,border-color .15s;display:flex}.proc-back:hover{color:var(--accent-deep);background:var(--accent-soft);border-color:var(--accent);text-decoration:none}.proc-back svg{stroke-width:2px;flex-shrink:0;width:16px;height:16px}.proc-nav-lib{align-items:center;gap:var(--space-2);min-height:40px;padding:8px var(--space-3);border-radius:var(--radius-sm);background:var(--panel-2);color:var(--ink);font-size:var(--text-md);text-align:left;cursor:pointer;border:0;width:100%;font-weight:600;transition:background .12s,color .12s;display:flex;position:relative}.proc-nav-lib svg{width:17px;height:17px;color:var(--muted);flex-shrink:0;transition:color .12s}.proc-nav-lib:hover{background:var(--accent-soft);color:var(--accent-deep)}.proc-nav-lib:hover svg{color:var(--accent)}.proc-nav-lib.active{background:var(--accent-soft);color:var(--accent-deep)}.proc-nav-lib.active svg{color:var(--accent)}.proc-nav-lib.active:before{content:"";background:var(--koesio-violet);width:3px;position:absolute;top:6px;bottom:6px;left:0}.proc-sidebar-section-title{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);padding:0 var(--space-2);margin-top:var(--space-3)}.proc-doc-link{border-radius:var(--radius-sm);min-height:38px;font-size:var(--text-md);color:var(--ink-soft);cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:7px 10px;display:flex;position:relative}.proc-doc-link svg{color:var(--muted);flex-shrink:0;transition:color .15s}.proc-doc-link:hover{background:var(--panel-2);color:var(--ink)}.proc-doc-link:hover svg{color:var(--accent)}.proc-doc-link.active{background:var(--accent-soft);color:var(--accent-deep);font-weight:700}.proc-doc-link.active svg{color:var(--accent)}.proc-doc-link.active:before{content:"";background:var(--koesio-violet);width:3px;position:absolute;top:6px;bottom:6px;left:0}.proc-doc-link .doc-title{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.proc-sidebar-foot{padding-top:var(--space-3);border-top:1px solid var(--line);gap:var(--space-2);flex-direction:column;margin-top:auto;display:flex}.lib-head{align-items:stretch;gap:var(--space-5);margin:calc(var(--space-4) * -1) calc(var(--space-6) * -1) var(--space-6);padding:var(--space-6) var(--space-8) calc(var(--space-6) + 6px);background:var(--koesio-violet);color:#fff;border:0;border-radius:0;grid-template-columns:minmax(180px,.85fr) minmax(320px,1.4fr);display:grid;position:relative;overflow:hidden}.lib-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end;min-width:0;display:flex}.lib-action-buttons{background:#ffffff1f;border:1px solid #ffffff4d;align-items:center;gap:1px;padding:3px;display:inline-flex}.lib-action-buttons .btn{color:#ffffffe0;background:0 0;border-color:#0000;height:38px}.lib-action-buttons .btn:hover{color:#fff;background:#ffffff2e;border-color:#0000}.lib-action-buttons .btn.ghost{color:#ffffffe0}.lib-action-buttons .btn.primary{color:var(--koesio-violet);background:#fff;border-color:#fff;font-weight:700}.lib-action-buttons .btn.primary:hover{background:var(--koesio-yellow);border-color:var(--koesio-yellow);color:var(--koesio-ink)}.lib-title{font-family:var(--font-title-stack);letter-spacing:-.02em;text-transform:uppercase;color:#fff;margin:0;font-size:clamp(28px,3.6vw,42px);font-weight:800;line-height:1.05}.lib-title-sub{font-size:var(--text-md);color:#ffffffc7;margin:4px 0 0;font-weight:700}.lib-search{flex:320px;min-width:min(100%,260px);margin-right:auto;position:relative}.lib-search svg{width:16px;height:16px;color:var(--koesio-violet);pointer-events:none;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.lib-search input{border-radius:var(--radius-sm);width:100%;height:44px;color:var(--ink);font-size:var(--text-md);background:#fff;border:1px solid #ffffff4d;padding:0 12px 0 38px}.lib-search input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}.lib-head-stripe{height:6px;display:flex;position:absolute;bottom:0;left:0;right:0}.lib-head-stripe span{height:100%;display:block}.lib-head-stripe .s-corail{background:var(--koesio-corail);width:38%}.lib-head-stripe .s-yellow{background:var(--koesio-yellow);width:22%}.lib-head-stripe .s-cyan{background:var(--koesio-cyan);width:30%}@media (max-width:900px){.lib-head{gap:var(--space-4);padding:var(--space-5) var(--space-5) calc(var(--space-5) + 6px);grid-template-columns:1fr}.lib-actions,.lib-action-buttons{width:100%}.lib-search{flex-basis:100%;width:100%}.lib-action-buttons{flex-wrap:wrap}}.lib-grid{gap:var(--space-3);margin-top:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));display:grid}.lib-card{--cat-c:var(--koesio-violet);padding:var(--space-4);background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--cat-c);box-shadow:none;cursor:pointer;color:var(--ink);border-radius:0;flex-direction:column;min-height:168px;text-decoration:none;transition:border-color .12s,background .12s;display:flex;position:relative}.lib-card[data-cat=procedure]{--cat-c:var(--koesio-violet)}.lib-card[data-cat=doc-interne]{--cat-c:var(--c-blue-border)}.lib-card[data-cat=doc-client]{--cat-c:var(--c-teal-border)}.lib-card[data-cat=guide]{--cat-c:var(--c-amber-border)}.lib-card[data-cat=rapport]{--cat-c:var(--c-rose-border)}.lib-cat-chip{font-size:var(--text-xs);letter-spacing:.05em;text-transform:uppercase;color:var(--cat-c);background:color-mix(in oklab, var(--cat-c) 13%, transparent);margin-bottom:var(--space-2);align-self:flex-start;padding:2px 8px;font-weight:700}.lib-card:hover{border-color:var(--koesio-violet);background:var(--panel);text-decoration:none}.lib-hero{justify-content:center;gap:var(--space-4);padding:clamp(var(--space-6), 6vw, var(--space-10));background:var(--koesio-violet);color:#fff;min-height:calc(100vh - var(--space-4));margin:calc(var(--space-4) * -1) calc(var(--space-6) * -1) 0;flex-direction:column;grid-column:1/-1;margin-bottom:0;display:flex;position:relative;overflow:hidden}.lib-hero:after{content:"";background:linear-gradient(90deg, var(--koesio-corail) 0 33.33%, var(--koesio-yellow) 33.33% 66.66%, var(--koesio-cyan) 66.66% 100%);height:6px;position:absolute;bottom:0;left:0;right:0}.lib-hero-eyebrow{font-size:var(--text-xs);letter-spacing:.22em;text-transform:uppercase;color:#ffffffd9;font-weight:700}.lib-hero-title{font-family:var(--font-title-stack);letter-spacing:-.01em;text-transform:uppercase;max-width:22ch;margin:0;font-size:clamp(24px,3.4vw,36px);font-weight:800;line-height:1.05}.lib-hero-sub{font-size:var(--text-md);color:#ffffffd9;max-width:60ch;line-height:1.5}.lib-hero-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.lib-hero-actions .btn,.lib-hero-actions .btn.primary{color:var(--koesio-violet);background:#fff;border-color:#fff;font-weight:700}.lib-hero-actions .btn:hover{background:var(--koesio-yellow);color:var(--koesio-ink);border-color:var(--koesio-yellow)}.lib-hero-actions .btn.ghost{color:#fff;background:0 0;border-color:#fff9}.lib-hero-actions .btn.ghost:hover{color:#fff;background:#ffffff1f;border-color:#fff}.lib-card-title{font-family:var(--font-title-stack);font-size:var(--text-lg);letter-spacing:-.01em;text-transform:uppercase;margin:0 0 var(--space-1);text-overflow:ellipsis;-webkit-line-clamp:3;-webkit-box-orient:vertical;font-weight:800;display:-webkit-box;overflow:hidden}.lib-card-meta{font-size:var(--text-sm);color:var(--muted)}.lib-card-foot{padding-top:var(--space-3);justify-content:space-between;align-items:center;gap:var(--space-2);border-top:1px dashed var(--line);margin-top:auto;display:flex}.lib-chip{font-size:var(--text-xs);color:var(--muted);background:var(--bg-2);border:1px solid var(--line);border-radius:0;align-items:center;gap:4px;padding:2px 8px;display:inline-flex}.lib-chip svg{width:12px;height:12px}.lib-card-actions{gap:2px;display:flex}.lib-card-actions .btn{height:26px;font-size:var(--text-xs);padding:0 8px}.lib-card-actions .btn.icon-only{width:26px;padding:0}.lib-card-actions .btn svg{width:13px;height:13px}.lib-new{border:2px dashed var(--koesio-violet);box-shadow:none;text-align:center;justify-content:center;align-items:center;gap:var(--space-2);color:var(--koesio-violet);cursor:pointer;background:0 0}.lib-new:hover{border-color:var(--koesio-violet-strong);color:var(--koesio-violet-strong);background:var(--accent-soft)}.lib-new svg{width:22px;height:22px}.lib-new-label{font-size:var(--text-md);font-weight:600}.lib-empty{text-align:center;padding:var(--space-12) var(--space-6);color:var(--muted)}.lib-empty h3{margin:0 0 var(--space-2);color:var(--ink)}.proc-editor{gap:var(--space-6);margin-top:calc(var(--space-4) * -1);grid-template-columns:220px 1fr;align-items:start;display:grid}.proc-editor.toc-collapsed{grid-template-columns:38px 1fr}.proc-editor-toc{top:var(--space-4);max-height:calc(100vh - var(--space-4) * 2);padding:var(--space-3);background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);font-size:var(--text-sm);position:sticky;overflow-y:auto}.proc-editor-toc.collapsed{padding:var(--space-2) 0;justify-content:center;display:flex;overflow:visible}.proc-editor-toc-head{justify-content:space-between;align-items:center;gap:var(--space-2);margin:0 0 var(--space-2);display:flex}.proc-toc-toggle{width:26px;height:26px;color:var(--muted);border-radius:var(--radius-xs);cursor:pointer;background:0 0;border:0;flex-shrink:0;justify-content:center;align-items:center;transition:background .12s,color .12s;display:inline-flex}.proc-toc-toggle:hover{background:var(--accent-soft);color:var(--accent-deep)}.proc-toc-toggle svg{width:16px;height:16px}.proc-editor-toc-title{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);margin:0}.proc-editor-toc ul{margin:0;padding:0;list-style:none}.proc-editor-toc li{margin:0}.proc-editor-toc a{border-radius:var(--radius-xs);color:var(--ink-soft);font-size:var(--text-sm);padding:4px 6px;line-height:1.4;text-decoration:none;display:block}.proc-editor-toc a:hover{background:var(--panel-2);color:var(--ink);text-decoration:none}.proc-editor-toc a.lvl-2{color:var(--muted);padding-left:16px}.proc-editor-toc a.lvl-3{color:var(--muted-2);font-size:var(--text-xs);padding-left:28px}.proc-editor-toc a.active{background:var(--accent-soft);color:var(--accent-deep);font-weight:600}.proc-editor-toc-empty{color:var(--muted-2);font-size:var(--text-sm);font-style:italic}.proc-editor-body{gap:var(--space-4);flex-direction:column;min-width:0;display:flex}.proc-editor-headcard,.proc-editor-headband{background:var(--koesio-violet);padding:var(--space-5) var(--space-6);margin-right:calc(var(--space-6) * -1);box-shadow:none;gap:var(--space-3);color:#fff;border:0;border-radius:0;flex-direction:column;display:flex}.proc-title-input{font-family:var(--font-title-stack);letter-spacing:-.02em;text-transform:uppercase;color:#fff;background:0 0;border:none;outline:none;width:100%;padding:0;font-size:clamp(28px,3.6vw,40px);font-weight:800;line-height:1.05}.proc-title-input::placeholder{color:#ffffff8c}.proc-category-eyebrow{margin-bottom:calc(var(--space-1) * -1);display:inline-flex}.proc-category-select{appearance:none;font:inherit;font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;color:#fff;cursor:pointer;background-color:#ffffff24;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;border:1px solid #ffffff73;border-radius:0;padding:4px 26px 4px 10px;font-weight:700;transition:background-color .15s,border-color .15s}.proc-category-select:hover{background-color:#ffffff3d;border-color:#ffffffb3}.proc-category-select:focus-visible{outline-offset:2px;outline:2px solid #fff}.proc-category-select option{color:var(--ink);background:var(--panel)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.proc-meta-row{gap:var(--space-4);font-size:var(--text-sm);color:#ffffffd9;flex-wrap:wrap;align-items:center;display:flex}.proc-meta-field{color:#ffffffd9;align-items:center;gap:6px;display:inline-flex}.proc-meta-field>span{letter-spacing:.04em;text-transform:uppercase;font-weight:700;font-size:var(--text-xs)}.proc-meta-field svg{width:13px;height:13px}.proc-meta-field input{font-size:var(--text-sm);color:#fff;background:0 0;border:1px solid #ffffff59;border-radius:0;width:auto;min-width:100px;padding:4px 8px}.proc-meta-field input::placeholder{color:#ffffff80}.proc-meta-field input:hover{background:#ffffff14;border-color:#fff9}.proc-meta-field input:focus{box-shadow:none;background:#ffffff24;border-color:#fff;outline:0}.proc-toolbar{gap:var(--space-2);margin-bottom:var(--space-2);flex-wrap:wrap;justify-content:space-between;align-items:center;display:flex}.proc-toolbar-left,.proc-toolbar-right{gap:var(--space-2);flex-wrap:wrap;align-items:center;display:flex}.proc-savestate{font-size:var(--text-sm);color:var(--muted);align-items:center;gap:4px;display:inline-flex}.proc-savestate svg{width:12px;height:12px}.proc-savestate.dirty{color:var(--warn)}.proc-savestate.saved{color:var(--ok)}.block{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-xs);padding:var(--space-4) var(--space-5);position:relative}.block:hover{border-color:var(--line-2)}.block.dragging{opacity:.5;box-shadow:var(--shadow-lg)}.block-handle{left:-28px;top:var(--space-4);width:22px;height:22px;color:var(--muted-2);cursor:grab;opacity:0;border-radius:var(--radius-xs);background:0 0;border:none;justify-content:center;align-items:center;transition:opacity .12s;display:inline-flex;position:absolute}.block:hover .block-handle{opacity:1}.block-handle:hover{background:var(--panel-2);color:var(--ink)}.block-handle:active{cursor:grabbing}.block-handle svg{width:14px;height:14px}.block-actions{right:var(--space-3);top:var(--space-3);opacity:0;gap:2px;transition:opacity .12s;display:flex;position:absolute}.block:hover .block-actions,.block:focus-within .block-actions{opacity:1}.block-actions .btn{height:26px;font-size:var(--text-xs);padding:0 8px}.block-actions .btn.icon-only{width:26px;padding:0}.block-actions .btn svg{width:13px;height:13px}.block-convert{position:relative}.block-convert-menu{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:20;flex-direction:column;min-width:168px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);right:0}.block-convert-menu-head{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);padding:4px 10px 6px}.block-convert-menu button{border-radius:var(--radius-sm);text-align:left;color:var(--ink);font-size:var(--text-md);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:7px 10px;display:flex}.block-convert-menu button:hover:not(:disabled){background:var(--panel-2)}.block-convert-menu button:disabled{color:var(--muted-2);cursor:default}.block-convert-menu svg{width:14px;height:14px;color:var(--muted)}.block-convert-menu .block-convert-current{color:var(--accent);margin-left:auto}.block-type-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.06em;color:var(--muted-2);margin-bottom:var(--space-2)}.add-section{justify-content:center;padding:4px 0;display:flex;position:relative}.add-section-line{background:var(--line);opacity:.8;height:1px;position:absolute;top:50%;left:0;right:0}.add-section:hover .add-section-line{opacity:1}.add-section-btn{background:var(--panel);border:1px dashed var(--line-2);font-size:var(--text-xs);color:var(--accent);cursor:pointer;opacity:1;border-radius:0;align-items:center;gap:4px;padding:5px 14px;font-weight:600;transition:color .12s,border-color .12s,opacity .12s,background .12s;display:inline-flex;position:relative}.add-section:hover .add-section-btn,.add-section-btn:focus-visible{opacity:1}.add-section-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--panel)}.add-section-btn svg{width:12px;height:12px}.add-section-menu{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:10;flex-direction:column;min-width:200px;padding:4px;display:flex;position:absolute;top:calc(100% + 4px);left:50%;transform:translate(-50%)}.add-section-menu button{border-radius:var(--radius-sm);text-align:left;color:var(--ink);font-size:var(--text-md);cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:8px 10px;display:flex}.add-section-menu button:hover{background:var(--panel-2)}.add-section-menu svg{width:14px;height:14px;color:var(--muted)}.add-section-menu .desc{font-size:var(--text-xs);color:var(--muted);margin-top:2px;display:block}.block-heading-row{gap:var(--space-3);align-items:center;display:flex}.block-heading-level{background:var(--bg-2);border-radius:var(--radius-sm);flex:none;gap:2px;padding:2px;display:flex}.block-heading-level button{min-width:36px;height:28px;color:var(--muted);border-radius:var(--radius-xs);font-size:var(--text-sm);cursor:pointer;background:0 0;border:none;padding:0 8px;font-weight:600}.block-heading-level button.active{background:var(--panel);color:var(--accent-deep);box-shadow:var(--shadow-xs)}.block-heading-input{letter-spacing:-.02em;color:var(--ink);background:0 0;border:none;outline:none;flex:auto;padding:0;font-weight:700}.block-heading-input.h1{font-size:var(--text-2xl)}.block-heading-input.h2{font-size:var(--text-xl)}.block-heading-input.h3{font-size:var(--text-lg)}.block-text textarea,.block-step-body textarea{resize:vertical;width:100%;min-height:120px;font-family:var(--font-sans-stack);font-size:var(--text-md);color:var(--ink);padding:var(--space-2);border-radius:var(--radius-sm);background:0 0;border:1px solid #0000;line-height:1.6}.block-text textarea:hover,.block-step-body textarea:hover{border-color:var(--line)}.block-text textarea:focus,.block-step-body textarea:focus{border-color:var(--accent);background:var(--panel-2);outline:none}.block-step{gap:var(--space-3) var(--space-4);grid-template-columns:auto 1fr;display:grid}.block-step-number{background:var(--koesio-violet);color:#fff;width:36px;height:36px;font-weight:800;font-family:var(--font-title-stack);font-size:var(--text-md);border-radius:0;flex:none;justify-content:center;align-items:center;display:inline-flex}.block-step-content{gap:var(--space-2);flex-direction:column;min-width:0;display:flex}.block-step-title{font-size:var(--text-lg);color:var(--ink);background:0 0;border:none;outline:none;width:100%;padding:0;font-weight:600}.block-step-title::placeholder{color:var(--muted-2)}.block-step-time{font-size:var(--text-sm);color:var(--muted);align-items:center;gap:6px;display:inline-flex}.block-step-time input{border:1px solid var(--line);background:var(--panel);border-radius:var(--radius-xs);width:50px;color:var(--ink);font-size:var(--text-sm);padding:2px 6px}.block-step-image{margin-top:var(--space-2);border:1.5px dashed var(--line-2);border-radius:var(--radius-sm);padding:var(--space-4);text-align:center;color:var(--muted);font-size:var(--text-sm);cursor:pointer;transition:border-color .12s,background .12s;position:relative}.block-step-image:hover,.block-step-image.dragover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-deep)}.block-step-image img{border-radius:var(--radius-xs);max-width:100%;height:auto;margin:0 auto;display:block}.block-step-image .remove-img{border:1px solid var(--line);cursor:pointer;width:24px;height:24px;color:var(--ink);background:#ffffffe6;border-radius:0;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:6px;right:6px}html.theme-dark .block-step-image .remove-img{background:#1f2026e6}.block-callout,.proc-callout{--callout-color:var(--koesio-violet);--callout-bg:#f7f2fa;border:1px solid color-mix(in oklab, var(--callout-color) 42%, var(--line));border-left:4px solid var(--callout-color);background:color-mix(in oklab, var(--callout-bg) 72%, var(--panel))}.block-callout[data-callout=success],.proc-callout[data-callout=success],.block-callout[data-callout=tip],.proc-callout[data-callout=tip]{--callout-color:var(--ok);--callout-bg:var(--ok-soft)}.block-callout[data-callout=warning],.proc-callout[data-callout=warning],.block-callout[data-callout=todo],.proc-callout[data-callout=todo]{--callout-color:var(--warn);--callout-bg:#fff6dd}.block-callout[data-callout=danger],.proc-callout[data-callout=danger]{--callout-color:var(--danger);--callout-bg:var(--danger-soft)}.block-callout[data-callout=question],.proc-callout[data-callout=question],.block-callout[data-callout=example],.proc-callout[data-callout=example]{--callout-color:var(--koesio-cyan);--callout-bg:#eaf8fd}.block-callout[data-callout=quote],.proc-callout[data-callout=quote]{--callout-color:var(--muted);--callout-bg:var(--panel-2)}.block-callout{padding:var(--space-3)}.block-callout-head{gap:var(--space-2);margin-bottom:var(--space-2);grid-template-columns:28px 140px 1fr;align-items:center;display:grid}.block-callout-icon,.proc-callout-icon{color:var(--callout-color);justify-content:center;align-items:center;display:inline-flex}.block-callout-icon svg,.proc-callout-icon svg{width:18px;height:18px}.block-callout select,.block-callout input{border:1px solid color-mix(in oklab, var(--callout-color) 35%, var(--line));background:var(--panel);height:32px;color:var(--ink);border-radius:0;padding:0 8px}.block-callout input{font-weight:700}.block-gallery-grid{gap:var(--space-3);grid-template-columns:repeat(auto-fill,minmax(140px,1fr));display:grid}.gallery-item{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius-sm);aspect-ratio:4/3;flex-direction:column;display:flex;position:relative;overflow:hidden}.gallery-item img{object-fit:cover;cursor:zoom-in;width:100%;height:100%;display:block}.gallery-caption{background:var(--panel);border:none;border-top:1px solid var(--line);font-size:var(--text-xs);color:var(--ink-soft);outline:none;width:100%;padding:4px 6px}.gallery-caption:focus{background:var(--accent-soft)}.gallery-item .remove-img{border:1px solid var(--line);cursor:pointer;width:22px;height:22px;color:var(--ink);z-index:2;background:#ffffffe6;border-radius:0;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:4px;right:4px}html.theme-dark .gallery-item .remove-img{background:#1f2026e6}.gallery-add{border:1.5px dashed var(--line-2);border-radius:var(--radius-sm);aspect-ratio:4/3;color:var(--muted);cursor:pointer;font-size:var(--text-sm);justify-content:center;align-items:center;gap:4px;transition:border-color .12s,background .12s,color .12s;display:flex}.gallery-add:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent-deep)}.gallery-add svg{width:18px;height:18px}.block-table{gap:var(--space-3);flex-direction:column;display:flex}.block-table-caption{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:var(--radius-sm);height:34px;font-size:var(--text-md);padding:0 10px;font-weight:600}.block-table-scroll{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);overflow-x:auto}.block-table table{border-collapse:collapse;width:100%;min-width:520px}.block-table th,.block-table td{border:1px solid var(--line);vertical-align:top;padding:0}.block-table th{background:var(--panel-2);position:relative}.block-table textarea{resize:vertical;width:100%;min-height:40px;color:var(--ink);font-family:var(--font-sans-stack);font-size:var(--text-sm);background:0 0;border:none;outline:none;padding:8px;line-height:1.45}.block-table th textarea{padding-right:30px;font-weight:700}.block-table textarea:focus{background:var(--accent-soft)}.block-table-remove{border:1px solid var(--line);border-radius:var(--radius-xs);background:var(--panel);width:22px;height:22px;color:var(--muted);cursor:pointer;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:5px;right:5px}.block-table-remove:hover{color:var(--danger);border-color:var(--danger)}.block-table-remove svg{width:12px;height:12px}.block-table-row-actions{text-align:center;background:var(--panel-2);width:36px;min-width:36px}.block-table-row-actions .btn{width:24px;height:24px;margin:6px}.block-table-row-actions .btn svg{width:12px;height:12px}.block-table-actions{gap:var(--space-2);flex-wrap:wrap;display:flex}.block-table-actions .btn svg{width:14px;height:14px}.lightbox{z-index:1000;padding:var(--space-6);background:#000000d9;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox img{object-fit:contain;max-width:95vw;max-height:95vh;box-shadow:var(--shadow-lg)}.lightbox-close{top:var(--space-4);right:var(--space-4);color:#fff;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff4d;border-radius:0;justify-content:center;align-items:center;width:36px;height:36px;display:inline-flex;position:absolute}.lightbox-close:hover{background:#fff3}.proc-preview{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-8) var(--space-10);box-shadow:var(--shadow-sm);font-size:var(--text-md);line-height:1.65}.proc-preview h1{font-size:var(--text-3xl);margin:0 0 var(--space-2);letter-spacing:-.025em}.proc-preview h2{font-size:var(--text-2xl);margin:var(--space-6) 0 var(--space-3);letter-spacing:-.02em}.proc-preview h3{font-size:var(--text-xl);margin:var(--space-5) 0 var(--space-2);letter-spacing:-.015em}.proc-preview p{margin:0 0 var(--space-3)}.proc-preview ul,.proc-preview ol{margin:0 0 var(--space-3);padding-left:1.5em}.proc-preview li{margin-bottom:4px}.proc-preview img{border-radius:var(--radius-xs);max-width:100%;height:auto}.proc-preview a{color:var(--accent)}.proc-preview .proc-callout{gap:var(--space-3);padding:var(--space-4);margin:0 0 var(--space-4);grid-template-columns:28px 1fr;display:grid}.proc-preview .proc-callout-title{color:var(--callout-color);margin-bottom:var(--space-1);font-weight:800}.proc-preview .proc-callout p:last-child{margin-bottom:0}.proc-preview ul[data-type=taskList],.tiptap-shell ul[data-type=taskList]{padding-left:0;list-style:none}.proc-preview li[data-type=taskItem],.tiptap-shell li[data-type=taskItem]{align-items:flex-start;gap:8px;display:flex}.proc-preview li[data-type=taskItem] label,.tiptap-shell li[data-type=taskItem] label{margin-top:2px}.proc-preview li[data-type=taskItem] input{pointer-events:none}.proc-preview li[data-type=taskItem]>div,.tiptap-shell li[data-type=taskItem]>div{flex:1}.proc-preview li[data-type=taskItem] p,.tiptap-shell li[data-type=taskItem] p{margin:0}.proc-preview .step{gap:var(--space-3) var(--space-4);margin-bottom:var(--space-5);grid-template-columns:36px 1fr;display:grid}.proc-preview .step-num{background:var(--koesio-violet);color:#fff;width:36px;height:36px;font-weight:800;font-family:var(--font-title-stack);font-size:var(--text-md);border-radius:0;justify-content:center;align-items:center;display:inline-flex}.proc-preview .step-title{font-size:var(--text-lg);margin:4px 0;font-weight:600}.proc-preview .step-time{font-size:var(--text-sm);color:var(--muted);margin-bottom:var(--space-2)}.proc-preview .gallery{gap:var(--space-3);margin-bottom:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));display:grid}.proc-preview .gallery figure{margin:0}.proc-preview .gallery img{aspect-ratio:4/3;object-fit:cover;cursor:zoom-in;width:100%}.proc-preview .gallery figcaption{font-size:var(--text-xs);color:var(--muted);text-align:center;margin-top:4px}.proc-preview table{border-collapse:collapse;margin:0 0 var(--space-3)}.proc-preview th,.proc-preview td{border:1px solid var(--line);padding:4px 8px}.proc-preview th{background:var(--panel-2)}.proc-preview .preview-table-wrap{margin:0 0 var(--space-5);overflow-x:auto}.proc-preview .preview-table-caption{color:var(--ink);margin:0 0 var(--space-2);font-weight:700}.proc-preview .preview-table-wrap table{width:100%;min-width:420px}.proc-preview .preview-table-wrap th,.proc-preview .preview-table-wrap td{text-align:left;vertical-align:top;padding:8px 10px}.proc-print{display:none}@media print{.proc-print{display:block!important}@page{size:A4 portrait;margin:0}body{color:#000;background:#fff}.proc-print,.proc-print *{-webkit-print-color-adjust:exact;print-color-adjust:exact;box-shadow:none;border-radius:0}.proc-print{color:var(--koesio-ink);font-family:Be Vietnam Pro,Arial Nova,Arial,sans-serif;font-size:10pt;line-height:1.5}.proc-print .print-page{box-sizing:border-box;page-break-inside:avoid;break-inside:avoid;background:#fff;flex-direction:column;width:210mm;height:297mm;min-height:297mm;padding-bottom:0;display:flex;overflow:hidden}.proc-print .print-page:not(:last-child){page-break-after:always}@page proc-landscape{size:A4 landscape;margin:0}.proc-print.proc-landscape .print-page{page:proc-landscape;width:297mm;height:210mm;min-height:210mm}.proc-print.proc-landscape .proc-cover-hero{flex:0 0 116mm;padding:12mm 16mm 0}.proc-print.proc-landscape .proc-cover-eyebrow{margin-top:10mm}.proc-print.proc-landscape .proc-cover-title{max-width:220mm;margin:3mm 0 8mm;font-size:34pt}.proc-print.proc-landscape .proc-cover-client-block{padding-bottom:10mm}.proc-print.proc-landscape .proc-cover-bottom{padding:12mm 16mm 8mm}.proc-print.proc-landscape .proc-text img{max-height:105mm}.proc-print.proc-landscape .proc-step-image{max-height:96mm}.proc-print.proc-landscape .proc-gallery{grid-template-columns:repeat(3,1fr)}.proc-print.proc-landscape .proc-gallery-figure img{max-height:60mm}.proc-print-cover .proc-cover{flex-direction:column;flex:1;display:flex}.proc-cover-hero{background:var(--koesio-violet);color:#fff;flex-direction:column;flex:0 0 165mm;padding:16mm 16mm 0;display:flex;position:relative}.proc-cover-wordmark{letter-spacing:-.01em;color:#fff;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:18pt;font-weight:800}.proc-cover-eyebrow{letter-spacing:.22em;color:#ffffffd9;margin-top:22mm;font-size:9pt;font-weight:600}.proc-cover-title{letter-spacing:-.01em;color:#fff;text-transform:uppercase;max-width:155mm;margin:4mm 0 12mm;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:42pt;font-weight:800;line-height:1.02}.proc-cover-client-block{margin-top:auto;padding-bottom:14mm}.proc-cover-client-label{letter-spacing:.22em;color:#ffffffbf;margin-bottom:1.5mm;font-size:8.5pt;font-weight:600}.proc-cover-client-name{color:#fff;font-size:16pt;font-weight:700;line-height:1.15}.proc-cover-subtitle{color:#fffc;margin-top:1mm;font-size:10pt;font-weight:400}.proc-cover-stripe{justify-content:flex-end;height:6mm;display:flex;position:absolute;bottom:0;left:0;right:0}.proc-cover-stripe>span{height:100%;display:block}.proc-cover-stripe-corail{background:var(--koesio-corail);width:38mm}.proc-cover-stripe-yellow{background:var(--koesio-yellow);width:26mm}.proc-cover-stripe-cyan{background:var(--koesio-cyan);width:32mm}.proc-cover-bottom{color:var(--koesio-ink);background:#fff;flex:1;padding:18mm 16mm 8mm}.proc-cover-info-heading{color:var(--koesio-violet);letter-spacing:.22em;margin:0 0 5mm;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:10pt;font-weight:700}.proc-cover-info{border-top:.4pt solid var(--koesio-gray-100);flex-direction:column;display:flex}.proc-cover-info-row{border-bottom:.4pt solid var(--koesio-gray-100);grid-template-columns:50mm 1fr;align-items:baseline;gap:4mm;padding:3mm 0;display:grid}.proc-cover-info-label{letter-spacing:.18em;color:var(--koesio-violet);text-transform:uppercase;font-size:8.5pt;font-weight:700}.proc-cover-info-value{color:var(--koesio-ink);font-size:10.5pt;font-weight:400}.proc-band{background:var(--koesio-violet);color:#fff;flex:0 0 14mm;grid-template-columns:22mm .4mm 1fr auto;align-items:center;gap:6mm;padding:0 14mm;display:grid}.proc-band-num{font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:22pt;font-weight:800;line-height:1}.proc-band-rule{background:#ffffff8c;width:.4mm;height:8mm}.proc-band-title{text-transform:uppercase;letter-spacing:.22em;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:11pt;font-weight:700}.proc-band-brand{letter-spacing:-.01em;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:13pt;font-weight:800}.proc-print .proc-body{min-height:0;color:var(--koesio-ink);-webkit-box-decoration-break:clone;box-decoration-break:clone;flex:1;padding:14mm 14mm 20mm;font-size:10.5pt;line-height:1.55}.proc-foot{box-sizing:border-box;border-top:.4pt solid var(--koesio-gray-100);color:#6a6a6a;background:#fff;flex:0 0 14mm;grid-template-columns:1fr auto 1fr;align-items:center;height:14mm;margin-top:auto;padding:4mm 14mm;font-size:8pt;display:grid;overflow:hidden}.proc-fixed-foot{display:none}.proc-foot-left,.proc-foot-right{min-width:0;overflow:hidden}.proc-foot-left{text-align:left;line-height:1.3}.proc-foot-center{color:var(--koesio-violet);letter-spacing:-.01em;text-align:center;font-size:12pt;font-weight:800}.proc-foot-right{text-align:right;line-height:1.25}.proc-foot-context,.proc-page-counter{display:block}.proc-foot-left,.proc-foot-context,.proc-foot-sub{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.proc-page-counter{color:var(--koesio-violet);font-variant-numeric:tabular-nums;margin-top:.5mm;font-weight:700}.proc-foot-sub{color:#9a9a9a;margin-top:.5mm;font-size:7pt}.proc-toc-list{margin:0;padding:0;list-style:none}.proc-toc-list li{color:var(--koesio-ink);border-bottom:.3pt solid var(--koesio-gray-100);align-items:baseline;gap:2mm;padding:2mm 0;font-size:11pt;display:flex}.proc-toc-list li.lvl-1{color:var(--koesio-violet);text-transform:uppercase;letter-spacing:.06em;font-size:10.5pt;font-weight:700}.proc-toc-list li.lvl-2{color:#333;padding-left:6mm;font-size:10pt}.proc-toc-list li.lvl-3{color:#555;padding-left:12mm;font-size:9pt}.proc-toc-list .toc-text{flex:auto}.proc-toc-list .toc-page-num{color:var(--koesio-ink);text-align:right;font-variant-numeric:tabular-nums;flex:0 0 8mm;font-weight:700}.proc-print .proc-version-table{border-collapse:collapse;width:100%;font-size:9pt;line-height:1.35}.proc-print .proc-version-table th,.proc-print .proc-version-table td{border:.4pt solid var(--koesio-gray-100);text-align:left;vertical-align:top;padding:2.4mm 2.8mm}.proc-print .proc-version-table th{color:#fff;background:var(--koesio-violet);text-transform:uppercase;letter-spacing:.04em;font-size:8pt;font-weight:700}.proc-print .proc-version-table tr:nth-child(2n) td{background:#f8f6fa}.proc-print .proc-version-label{color:#666;margin-top:.8mm;font-size:8pt;font-weight:400;display:block}.proc-print .proc-version-empty{border-left:1.2mm solid var(--koesio-violet);color:#555;background:#f8f6fa;padding:4mm 5mm;font-size:10pt}.proc-print .proc-h2{color:var(--koesio-violet);letter-spacing:.18em;text-transform:uppercase;page-break-after:avoid;margin:6mm 0 2.5mm;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:12pt;font-weight:700}.proc-print .proc-h3{color:var(--koesio-ink);page-break-after:avoid;margin:4mm 0 1.5mm;font-size:11pt;font-weight:700}.proc-print .proc-text{margin:0 0 3mm}.proc-print .proc-text p{margin:0 0 2.5mm}.proc-print .proc-text ul,.proc-print .proc-text ol{margin:0 0 3mm;padding-left:6mm}.proc-print .proc-text li{margin:.5mm 0}.proc-print .proc-text:has(>.proc-listfrag){margin:0}.proc-print .proc-text>ul.proc-listfrag,.proc-print .proc-text>ol.proc-listfrag{margin:0;padding-left:6mm}.proc-print .proc-text>.proc-listfrag li{margin:.5mm 0}.proc-print .proc-text a{color:var(--koesio-violet);text-decoration:underline}.proc-print .proc-text strong{font-weight:700}.proc-print .proc-text em{font-style:italic}.proc-print .proc-text img{max-width:100%;height:auto}.proc-print .proc-text img,.proc-print .proc-step-image,.proc-print .proc-gallery-figure{page-break-inside:avoid;break-inside:avoid}.proc-print .proc-text img{object-fit:contain;width:auto;height:auto;max-height:145mm;margin:3mm auto;display:block}.proc-print .proc-text blockquote{border-left:3px solid var(--koesio-violet);color:#555;margin:2mm 0;padding:1mm 4mm;font-style:italic}.proc-print .proc-text code{font-family:var(--font-mono-stack);background:#f4eef9;padding:0 1mm;font-size:.92em}.proc-print ul[data-type=taskList]{padding-left:0;list-style:none}.proc-print li[data-type=taskItem]{grid-template-columns:5mm 1fr;align-items:start;gap:1.5mm;display:grid}.proc-print li[data-type=taskItem] label{padding-top:.5mm}.proc-print li[data-type=taskItem] input{width:3.5mm;height:3.5mm;accent-color:var(--koesio-violet)}.proc-print li[data-type=taskItem]>div p{margin:0}.proc-print .proc-callout{--callout-color:var(--koesio-violet);--callout-bg:#f8f3fb;color:var(--koesio-ink);background:var(--callout-bg);border-color:#ded1e6;border-left-color:var(--callout-color);break-inside:avoid;page-break-inside:avoid;grid-template-columns:8mm 1fr;gap:3mm;margin:4mm 0;padding:4mm 5mm;display:grid}.proc-print .proc-callout[data-callout=important]{--callout-bg:#f6f0f9}.proc-print .proc-callout[data-callout=success],.proc-print .proc-callout[data-callout=tip]{--callout-bg:#eef8f1}.proc-print .proc-callout[data-callout=warning],.proc-print .proc-callout[data-callout=todo]{--callout-bg:#fff8e8}.proc-print .proc-callout[data-callout=danger]{--callout-bg:#fff0f1}.proc-print .proc-callout[data-callout=question],.proc-print .proc-callout[data-callout=example]{--callout-bg:#eef9fd}.proc-print .proc-callout[data-callout=quote]{--callout-bg:#f5f5f5}.proc-print .proc-callout-title{color:var(--callout-color);margin-bottom:1mm;font-size:10.5pt;font-weight:800}.proc-print .proc-callout-icon svg{width:5mm;height:5mm}.proc-print .proc-callout p:last-child{margin-bottom:0}.proc-print .proc-text pre{border-left:2pt solid var(--koesio-violet);font-family:var(--font-mono-stack);page-break-inside:avoid;white-space:pre-wrap;background:#f4eef9;padding:2mm 3mm;font-size:9pt;overflow:hidden}.proc-print .proc-step{border:.5pt solid var(--koesio-gray-100);border-left:1.2mm solid var(--koesio-violet);page-break-inside:auto;break-inside:auto;background:#fff;margin:5mm 0;padding:4mm 5mm}.proc-print .proc-step-head{align-items:baseline;gap:4mm;margin-bottom:2mm;display:flex}.proc-print .proc-step-num{color:var(--koesio-violet);min-width:9mm;font-family:Arboria,Century Gothic,Inter,sans-serif;font-size:14pt;font-weight:800;line-height:1}.proc-print .proc-step-titles{flex:1}.proc-print .proc-step-title{color:var(--koesio-ink);font-size:12pt;font-weight:700;line-height:1.2}.proc-print .proc-step-time{background:var(--koesio-gray-100);color:#444;letter-spacing:.04em;margin-top:1.2mm;padding:.6mm 2.5mm;font-size:8.5pt;font-weight:600;display:inline-block}.proc-print .proc-step-text{margin-top:1mm}.proc-print .proc-step-text p{margin:0 0 2mm}.proc-print .proc-step-text ul,.proc-print .proc-step-text ol{margin:0 0 2mm;padding-left:6mm}.proc-print .proc-step-image{object-fit:contain;border:.4pt solid var(--koesio-gray-100);width:auto;max-width:100%;height:auto;max-height:132mm;margin-top:3mm;margin-left:auto;margin-right:auto;display:block}.proc-print .proc-gallery{page-break-inside:auto;break-inside:auto;grid-template-columns:1fr 1fr;gap:4mm;margin:4mm 0;display:grid}.proc-print .proc-gallery-figure{page-break-inside:avoid;break-inside:avoid;margin:0}.proc-print .proc-gallery-figure img{object-fit:contain;border:.4pt solid var(--koesio-gray-100);width:100%;height:auto;max-height:82mm}.proc-print .proc-gallery-figure figcaption{color:#555;text-align:center;margin-top:1mm;font-size:8.5pt;font-style:italic}.proc-print .proc-table-wrap{page-break-inside:auto;break-inside:auto;margin:4mm 0 6mm}.proc-print .proc-table-caption{color:var(--koesio-violet);margin:0 0 2mm;font-size:10pt;font-weight:700}.proc-print .proc-table{border-collapse:collapse;width:100%;font-size:9pt;line-height:1.35}.proc-print .proc-table th,.proc-print .proc-table td{border:.4pt solid var(--koesio-gray-100);text-align:left;vertical-align:top;page-break-inside:avoid;break-inside:avoid;padding:2.2mm 2.5mm}.proc-print .proc-table th{color:#fff;background:var(--koesio-violet);font-weight:700}.proc-print .proc-table tr:nth-child(2n) td{background:#f8f6fa}}.tiptap-shell{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel-2);overflow:hidden}.tiptap-shell:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.tiptap-toolbar{background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;gap:2px;padding:4px;display:flex}.tiptap-toolbar button{border-radius:var(--radius-xs);width:28px;height:28px;color:var(--ink-soft);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;display:inline-flex}.tiptap-toolbar button svg{stroke-width:2px;width:14px;height:14px}.tiptap-toolbar button:hover{background:var(--bg-2);color:var(--ink)}.tiptap-toolbar button.active{background:var(--accent-soft);color:var(--accent-deep);border-color:color-mix(in oklab, var(--accent) 30%, transparent)}.tiptap-toolbar button:disabled{opacity:.35;cursor:not-allowed}.tiptap-sep{background:var(--line);align-self:stretch;width:1px;margin:4px}.tiptap-shell .ProseMirror{min-height:80px;padding:var(--space-3) var(--space-4);background:var(--panel);font-size:var(--text-md);color:var(--ink);outline:none;line-height:1.65}.tiptap-shell .ProseMirror>*+*{margin-top:.6em}.tiptap-shell .ProseMirror p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--muted-2);float:left;pointer-events:none;height:0}.tiptap-shell .ProseMirror h2{font-size:var(--text-xl);letter-spacing:-.015em}.tiptap-shell .ProseMirror h3{font-size:var(--text-lg);letter-spacing:-.01em}.tiptap-shell .ProseMirror ul,.tiptap-shell .ProseMirror ol{padding-left:1.4em}.tiptap-shell .ProseMirror li{margin:4px 0}.tiptap-shell .ProseMirror blockquote{border-left:3px solid var(--line-2);color:var(--muted);margin:0;padding:2px 12px}.tiptap-shell .ProseMirror pre{background:var(--bg-2);border-radius:var(--radius-sm);font-family:var(--font-mono-stack);padding:8px 10px;font-size:.9em;overflow-x:auto}.tiptap-shell .ProseMirror code{background:var(--bg-2);border-radius:var(--radius-xs);font-family:var(--font-mono-stack);padding:1px 5px;font-size:.92em}.tiptap-shell .ProseMirror a.proc-link{color:var(--accent);text-decoration:underline}.tiptap-shell .ProseMirror img.proc-inline-img{border-radius:var(--radius-xs);max-width:100%;height:auto;display:block}.proc-savestate{background:var(--bg-2);white-space:nowrap;border:1px solid #0000;border-radius:0;padding:4px 10px}.proc-savestate.dirty{color:var(--warn);background:color-mix(in oklab, var(--warn) 10%, var(--panel));border-color:color-mix(in oklab, var(--warn) 25%, transparent)}.proc-savestate.saved{color:var(--ok);background:color-mix(in oklab, var(--ok) 10%, var(--panel));border-color:color-mix(in oklab, var(--ok) 25%, transparent)}.btn-count{background:var(--koesio-violet);color:#fff;border-radius:0;justify-content:center;align-items:center;min-width:18px;height:18px;margin-left:4px;padding:0 5px;font-size:10px;font-weight:800;line-height:1;display:inline-flex}.history-overlay{background:color-mix(in oklab, var(--ink) 35%, transparent);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:900;animation:.14s ease-out history-fade;position:fixed;inset:0}html.theme-dark .history-overlay{background:#0000008c}@keyframes history-fade{0%{opacity:0}to{opacity:1}}.history-panel{background:var(--panel);border-left:1px solid var(--line);width:min(440px,92vw);height:100vh;box-shadow:var(--shadow-lg);z-index:950;flex-direction:column;animation:.18s ease-out history-slide;display:flex;position:fixed;top:0;right:0}@keyframes history-slide{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.history-head{justify-content:space-between;align-items:flex-start;gap:var(--space-3);padding:var(--space-5) var(--space-5) var(--space-3);border-bottom:1px solid var(--line);display:flex}.history-head h2{font-size:var(--text-lg);letter-spacing:-.01em;margin:0}.history-sub{font-size:var(--text-sm);color:var(--muted);margin:4px 0 0;line-height:1.4}.history-empty{padding:var(--space-8) var(--space-5);text-align:center;color:var(--muted);align-items:center;gap:var(--space-3);flex-direction:column;display:flex}.history-empty svg{color:var(--muted-2);width:32px;height:32px}.history-empty p{font-size:var(--text-md);max-width:320px;margin:0;line-height:1.5}.history-empty strong{color:var(--ink)}.history-list{padding:var(--space-3) var(--space-3) var(--space-6);flex-direction:column;flex:1;gap:2px;margin:0;list-style:none;display:flex;overflow-y:auto}.history-item{gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-3);border-radius:var(--radius-md);grid-template-columns:24px 1fr auto;display:grid;position:relative}.history-item:hover{background:var(--panel-2)}.history-item.head{background:color-mix(in oklab, var(--accent) 6%, var(--panel))}.history-item.head:hover{background:color-mix(in oklab, var(--accent) 10%, var(--panel))}.history-marker{color:var(--muted-2);flex-direction:column;align-items:center;padding-top:4px;display:flex}.history-marker svg{width:16px;height:16px;color:var(--accent)}.history-marker .dot{background:var(--line-2);border-radius:50%;width:8px;height:8px;margin-top:4px}.history-item:not(:last-child) .history-marker:after{content:"";background:var(--line);flex:1;width:1px;margin-top:4px}.history-body{flex-direction:column;gap:2px;min-width:0;display:flex}.history-row{align-items:center;gap:var(--space-2);flex-wrap:wrap;display:flex}.history-label{border-radius:var(--radius-xs);font-size:var(--text-md);color:var(--ink);cursor:pointer;background:0 0;border:1px dashed #0000;align-items:center;gap:4px;margin-left:-4px;padding:2px 6px;font-weight:600;display:inline-flex}.history-label:hover{border-color:var(--line-2);background:var(--panel)}.history-label svg{color:var(--accent)}.history-label-empty{color:var(--muted-2);align-items:center;gap:4px;font-style:italic;font-weight:400;display:inline-flex}.history-label-input{border:1px solid var(--accent);border-radius:var(--radius-xs);background:var(--panel);height:26px;color:var(--ink);font-size:var(--text-md);outline:none;flex:1;min-width:0;padding:0 8px;font-weight:600}.history-badge{text-transform:uppercase;letter-spacing:.08em;background:var(--koesio-violet);color:#fff;border-radius:0;padding:2px 6px;font-size:10px;font-weight:800}.history-meta{font-size:var(--text-xs);color:var(--muted)}.history-author{color:var(--ink-soft);align-items:center;gap:3px;display:inline-flex}.history-author svg{width:11px;height:11px;color:var(--accent)}.history-actions{align-self:center;align-items:center;gap:2px;display:flex}.history-actions .btn.sm svg{width:12px;height:12px}@media (max-width:640px){.history-panel{border-left:none;width:100vw}}.history-item.flash{animation:1.6s ease-out history-flash}@keyframes history-flash{0%{background:color-mix(in oklab, var(--ok) 25%, var(--panel))}to{background:var(--panel)}}.history-item.flash.head{animation-name:history-flash-head}@keyframes history-flash-head{0%{background:color-mix(in oklab, var(--ok) 25%, var(--panel))}to{background:color-mix(in oklab, var(--accent) 6%, var(--panel))}}
