/*! Visucio UI v1.2.0 | MIT | Montserrat: SIL OFL 1.1 */
@font-face{font-family:Montserrat;src:url('./fonts/montserrat-latin.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
:root{
 --vis-font:Montserrat,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
 --vis-brand:#678fff;--vis-action:#365dcc;--vis-on-action:#fff;
 --vis-bg:#f5f5f7;--vis-surface:#fff;--vis-surface-soft:#edf0f5;--vis-ink:#1d1d1f;--vis-muted:#656570;
 --vis-border:#dce2ed;--vis-control-border:#8591a6;--vis-glass:rgba(255,255,255,.78);--vis-glass-edge:rgba(255,255,255,.88);
 --vis-accent-soft:#eaf0ff;--vis-accent-ink:#345ac5;
 --vis-success:#146044;--vis-success-soft:#e9f7ef;--vis-warning:#78510a;--vis-warning-soft:#fff4db;--vis-danger:#ad2b3b;--vis-danger-soft:#ffebee;
 --vis-radius-sm:.5rem;--vis-radius-md:.75rem;--vis-radius-lg:1.125rem;--vis-radius-xl:1.5rem;--vis-radius-pill:999px;
 --vis-space-1:.25rem;--vis-space-2:.5rem;--vis-space-3:.75rem;--vis-space-4:1rem;--vis-space-5:1.25rem;--vis-space-6:1.5rem;--vis-space-8:2rem;--vis-space-12:3rem;
 --vis-shadow-sm:0 2px 5px rgba(20,35,65,.035),0 8px 20px rgba(20,35,65,.035);
 --vis-shadow-md:0 6px 16px rgba(20,35,65,.04),0 20px 48px rgba(20,35,65,.08);
 --vis-shadow-lg:0 18px 60px rgba(20,35,65,.14),inset 0 1px 0 rgba(255,255,255,.7);
 --vis-fast:120ms;--vis-duration:180ms;--vis-slow:280ms;--vis-ease:cubic-bezier(.2,.7,.2,1);--vis-blur:20px;
 --vis-color-scheme:light;
}
@media(prefers-color-scheme:dark){:root:not([data-vis-theme]){
 --vis-action:#8ba9ff;--vis-on-action:#101b36;--vis-bg:#10141e;--vis-surface:#1a202d;--vis-surface-soft:#232c3d;--vis-ink:#f3f5fa;--vis-muted:#acb7cd;--vis-border:#354057;--vis-control-border:#74849f;--vis-glass:rgba(26,32,45,.82);--vis-glass-edge:rgba(255,255,255,.15);--vis-accent-soft:#253455;--vis-accent-ink:#a8bfff;--vis-success:#8ee3b6;--vis-success-soft:#163c30;--vis-warning:#f3d08a;--vis-warning-soft:#40341b;--vis-danger:#ffb0b9;--vis-danger-soft:#472530;--vis-shadow-lg:0 18px 60px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.08);--vis-color-scheme:dark;
}}
[data-vis-theme=dark]{
 --vis-action:#8ba9ff;--vis-on-action:#101b36;--vis-bg:#10141e;--vis-surface:#1a202d;--vis-surface-soft:#232c3d;--vis-ink:#f3f5fa;--vis-muted:#acb7cd;--vis-border:#354057;--vis-control-border:#74849f;--vis-glass:rgba(26,32,45,.82);--vis-glass-edge:rgba(255,255,255,.15);--vis-accent-soft:#253455;--vis-accent-ink:#a8bfff;--vis-success:#8ee3b6;--vis-success-soft:#163c30;--vis-warning:#f3d08a;--vis-warning-soft:#40341b;--vis-danger:#ffb0b9;--vis-danger-soft:#472530;--vis-shadow-lg:0 18px 60px rgba(0,0,0,.35),inset 0 1px 0 rgba(255,255,255,.08);--vis-color-scheme:dark;
}
.vis-ui{color-scheme:var(--vis-color-scheme);font-family:var(--vis-font);font-size:1rem;line-height:1.6;color:var(--vis-ink);background:var(--vis-bg);-webkit-font-smoothing:antialiased}
.vis-ui *,.vis-ui *::before,.vis-ui *::after{box-sizing:border-box}
.vis-ui :where(button,input,select,textarea){font:inherit}
.vis-ui :where(h1,h2,h3,h4,p){margin:0}
.vis-ui :where(button,a,input,select,textarea,summary,[tabindex]):focus-visible{outline:3px solid var(--vis-action);outline-offset:4px}
.vis-ui [hidden]{display:none!important}
.vis-ui ::selection{background:var(--vis-brand);color:#101b36}
.vis-heading{font-weight:600;letter-spacing:-.045em;line-height:1.16;color:var(--vis-ink)}
.vis-title{font-size:clamp(2rem,4vw,3.5rem)}
.vis-subtitle{font-size:1.5rem;letter-spacing:-.03em;font-weight:600;line-height:1.3}
.vis-label{font-size:.875rem;font-weight:600;line-height:1.5}
.vis-caption{font-size:.8125rem;line-height:1.5;color:var(--vis-muted)}
.vis-muted{color:var(--vis-muted)}
.vis-link{color:var(--vis-accent-ink);text-decoration:underline;text-underline-offset:4px}
.vis-sr-only{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.vis-container{max-width:80rem;margin-inline:auto;padding-inline:1.5rem}
.vis-stack{display:flex;flex-direction:column;gap:var(--vis-gap,1rem)}
.vis-row{display:flex;align-items:center;gap:var(--vis-gap,.75rem);flex-wrap:wrap}
.vis-between{justify-content:space-between}
.vis-grid{display:grid;grid-template-columns:repeat(var(--vis-columns,2),minmax(0,1fr));gap:var(--vis-gap,1.5rem)}
.vis-divider{height:1px;border:0;background:var(--vis-border);margin-block:1.25rem}
.vis-icon{width:1.25rem;height:1.25rem;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
.vis-button{box-sizing:border-box;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;min-height:2.75rem;padding:.65rem 1.05rem;border:1px solid var(--vis-border);border-radius:var(--vis-radius-md);background:var(--vis-surface);color:var(--vis-ink);font:600 .875rem/1.4 var(--vis-font);text-decoration:none;cursor:pointer;transition:background-color var(--vis-duration) var(--vis-ease),box-shadow var(--vis-duration) var(--vis-ease),transform var(--vis-fast) var(--vis-ease),border-color var(--vis-duration);touch-action:manipulation}
.vis-button-primary{background:var(--vis-action);color:var(--vis-on-action);border-color:transparent;box-shadow:0 3px 8px rgba(54,93,204,.13)}
.vis-button-brand{background:var(--vis-brand);color:#101b36;border-color:transparent}
.vis-button-soft{background:var(--vis-accent-soft);color:var(--vis-accent-ink);border-color:transparent}
.vis-button-ghost{background:transparent;border-color:transparent;color:var(--vis-muted)}
.vis-button-danger{background:var(--vis-danger-soft);color:var(--vis-danger);border-color:transparent}
.vis-button-icon{width:2.75rem;min-width:2.75rem;padding:.65rem}
.vis-button-sm{min-height:2.25rem;padding:.4rem .8rem;font-size:.8125rem}
.vis-button-lg{min-height:3.25rem;padding:.85rem 1.5rem;font-size:1rem}
.vis-button:active:not(:disabled):not([aria-disabled=true]){transform:scale(.98)}
.vis-button:disabled,.vis-button[aria-disabled=true]{opacity:.45;cursor:not-allowed;box-shadow:none}
@media(hover:hover){.vis-button:hover:not(:disabled):not([aria-disabled=true]){transform:translateY(-1px);box-shadow:var(--vis-shadow-sm);border-color:var(--vis-control-border)}.vis-button-primary:hover:not(:disabled),.vis-button-brand:hover:not(:disabled){border-color:transparent;box-shadow:0 6px 16px rgba(54,93,204,.22)}.vis-button-ghost:hover{background:var(--vis-surface-soft)}}
.vis-card{min-width:0;background:var(--vis-surface);border:1px solid var(--vis-border);border-radius:var(--vis-radius-lg);padding:1.5rem;box-shadow:var(--vis-shadow-sm)}
.vis-card-interactive{transition:transform var(--vis-slow) var(--vis-ease),box-shadow var(--vis-slow) var(--vis-ease),border-color var(--vis-duration)}
@media(hover:hover){.vis-card-interactive:hover{transform:translateY(-3px);box-shadow:var(--vis-shadow-md);border-color:var(--vis-control-border)}}
.vis-glass{background:var(--vis-surface);border:1px solid var(--vis-border);box-shadow:var(--vis-shadow-lg)}
@supports (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){.vis-glass{background:var(--vis-glass);border-color:var(--vis-glass-edge);-webkit-backdrop-filter:blur(var(--vis-blur)) saturate(130%);backdrop-filter:blur(var(--vis-blur)) saturate(130%)}}
.vis-badge{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .6rem;min-height:1.65rem;border-radius:var(--vis-radius-sm);background:var(--vis-surface-soft);color:var(--vis-muted);font-size:.8125rem;line-height:1.35;font-weight:500;white-space:nowrap}
.vis-badge-blue{background:var(--vis-accent-soft);color:var(--vis-accent-ink)}
.vis-badge-success{background:var(--vis-success-soft);color:var(--vis-success)}
.vis-badge-warning{background:var(--vis-warning-soft);color:var(--vis-warning)}
.vis-badge-danger{background:var(--vis-danger-soft);color:var(--vis-danger)}
.vis-avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;width:2.75rem;height:2.75rem;border-radius:50%;background:var(--vis-accent-soft);color:var(--vis-accent-ink);font-weight:600;font-size:.875rem;object-fit:cover}
.vis-field{display:flex;flex-direction:column;gap:.5rem;min-width:0}
.vis-input,.vis-select,.vis-textarea{box-sizing:border-box;display:block;width:100%;min-height:2.875rem;border:1px solid var(--vis-control-border);border-radius:var(--vis-radius-md);padding:.7rem .875rem;background:var(--vis-surface);color:var(--vis-ink);font:400 .9375rem/1.5 var(--vis-font);transition:border-color var(--vis-duration),box-shadow var(--vis-duration)}
.vis-textarea{min-height:7rem;resize:vertical}
.vis-input::placeholder,.vis-textarea::placeholder{color:var(--vis-muted);opacity:1}
.vis-input:focus,.vis-select:focus,.vis-textarea:focus{border-color:var(--vis-action);box-shadow:0 0 0 3px var(--vis-accent-soft)}
.vis-input[aria-invalid=true]{border-color:var(--vis-danger)}
.vis-input:disabled,.vis-select:disabled,.vis-textarea:disabled{opacity:.55;cursor:not-allowed}
.vis-field-error{color:var(--vis-danger);font-size:.875rem}
.vis-checkbox{width:1.125rem;height:1.125rem;accent-color:var(--vis-action);margin:0;flex:none}
.vis-switch{display:inline-flex;align-items:center;gap:.75rem;position:relative;cursor:pointer;min-height:2.75rem;font-size:.875rem}
.vis-switch input{position:absolute;inset-inline-start:0;width:2.75rem;height:1.625rem;opacity:0;cursor:pointer;margin:0;z-index:1}
.vis-switch-track{position:relative;display:block;width:2.75rem;height:1.625rem;flex:none;border-radius:999px;border:1px solid var(--vis-control-border);background:var(--vis-surface-soft);transition:background-color var(--vis-duration)}
.vis-switch-track::after{content:'';position:absolute;left:3px;top:3px;width:1.125rem;height:1.125rem;border-radius:50%;background:var(--vis-muted);transition:transform var(--vis-duration) var(--vis-ease),background-color var(--vis-duration)}
.vis-switch input:checked+.vis-switch-track{background:var(--vis-action);border-color:var(--vis-action)}
.vis-switch input:checked+.vis-switch-track::after{transform:translateX(1.125rem);background:var(--vis-on-action)}
.vis-switch input:focus-visible+.vis-switch-track{outline:3px solid var(--vis-action);outline-offset:4px}
.vis-switch input:disabled~*{opacity:.45;cursor:not-allowed}
.vis-tabs{display:flex;align-items:center;gap:.25rem;padding:.3rem;border-radius:var(--vis-radius-md);background:var(--vis-surface-soft);width:fit-content;max-width:100%;flex-wrap:wrap}
.vis-tab{border:0;border-radius:.6rem;background:transparent;color:var(--vis-muted);font:500 .875rem/1.4 var(--vis-font);padding:.6rem 1rem;min-height:2.5rem;cursor:pointer;transition:background-color var(--vis-duration),color var(--vis-duration),box-shadow var(--vis-duration)}
.vis-tab[aria-selected=true]{background:var(--vis-surface);color:var(--vis-ink);box-shadow:var(--vis-shadow-sm)}
.vis-tab:disabled{opacity:.45;cursor:not-allowed}
.vis-tabpanel{padding-block:1.25rem}
.vis-alert{display:flex;gap:.75rem;align-items:flex-start;border-radius:var(--vis-radius-md);padding:1rem;background:var(--vis-accent-soft);color:var(--vis-accent-ink);font-size:.875rem}
.vis-alert .vis-icon{margin-top:.1rem}
.vis-alert-success{background:var(--vis-success-soft);color:var(--vis-success)}
.vis-alert-warning{background:var(--vis-warning-soft);color:var(--vis-warning)}
.vis-alert-danger{background:var(--vis-danger-soft);color:var(--vis-danger)}
.vis-progress{appearance:none;border:0;display:block;width:100%;height:.375rem;border-radius:999px;overflow:hidden;background:var(--vis-surface-soft);color:var(--vis-action)}
.vis-progress::-webkit-progress-bar{background:var(--vis-surface-soft);border-radius:999px}
.vis-progress::-webkit-progress-value{background:var(--vis-action);border-radius:999px}
.vis-progress::-moz-progress-bar{background:var(--vis-action);border-radius:999px}
.vis-skeleton{display:block;background:var(--vis-surface-soft);border-radius:.5rem;min-height:1rem;animation:vis-pulse 1.8s ease-in-out infinite}
.vis-spinner{display:inline-block;vertical-align:middle;width:1rem;height:1rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:vis-spin .8s linear infinite}
.vis-table-wrap{max-width:100%;overflow-x:auto;border:1px solid var(--vis-border);border-radius:var(--vis-radius-lg)}
.vis-table{width:100%;border-collapse:collapse;font-size:.875rem;text-align:start;background:var(--vis-surface)}
.vis-table th{font-weight:500;color:var(--vis-muted);background:var(--vis-surface-soft);font-size:.8125rem}
.vis-table :is(th,td){padding:1rem 1.25rem;text-align:start;border-bottom:1px solid var(--vis-border)}
.vis-table tr:last-child td{border-bottom:0}
.vis-table caption{text-align:start;padding:1rem;font-weight:600}
.vis-disclosure{border:1px solid var(--vis-border);border-radius:var(--vis-radius-md);background:var(--vis-surface)}
.vis-disclosure summary{padding:1rem 1.25rem;cursor:pointer;font-weight:500;font-size:.9375rem}
.vis-disclosure>div{padding:0 1.25rem 1.25rem;color:var(--vis-muted);font-size:.9375rem}
.vis-dialog{color:var(--vis-ink);padding:1.75rem;border-radius:var(--vis-radius-xl);width:min(30rem,calc(100% - 2rem));max-height:calc(100dvh - 2rem);overflow:auto;font:400 1rem/1.6 var(--vis-font)}
.vis-dialog:not([open]){display:none}
.vis-dialog[open]{animation:vis-enter var(--vis-slow) var(--vis-ease) both}
.vis-dialog::backdrop{background:rgba(10,17,32,.45);backdrop-filter:blur(5px)}
.vis-dialog-actions{display:flex;gap:.75rem;justify-content:flex-end;flex-wrap:wrap;margin-top:1.5rem}
.vis-toast-region{position:fixed;inset-inline-end:1.5rem;bottom:1.5rem;z-index:9999;display:flex;flex-direction:column;gap:.75rem;width:min(25rem,calc(100vw - 3rem));pointer-events:none;font-family:var(--vis-font);background:transparent}
.vis-toast{display:flex;align-items:center;gap:.875rem;padding:1rem 1.125rem;border-radius:var(--vis-radius-lg);font-size:.875rem;color:var(--vis-ink);pointer-events:auto;animation:vis-enter var(--vis-slow) var(--vis-ease)}
.vis-toast>span{flex:1;overflow-wrap:anywhere}
.vis-toast button{flex:none}
.vis-nav-item{display:flex;align-items:center;gap:.75rem;min-height:2.875rem;padding:.65rem .875rem;border-radius:var(--vis-radius-md);color:var(--vis-muted);text-decoration:none;font:500 .875rem/1.5 var(--vis-font);transition:background-color var(--vis-duration),color var(--vis-duration)}
.vis-nav-item:hover{background:var(--vis-surface-soft);color:var(--vis-ink)}
.vis-nav-item[aria-current=page]{background:var(--vis-accent-soft);color:var(--vis-accent-ink)}
.vis-tooltip{position:relative;display:inline-flex}
.vis-tooltip [role=tooltip]{position:absolute;inset-inline-start:50%;bottom:calc(100% + .6rem);transform:translateX(-50%);opacity:0;visibility:hidden;pointer-events:none;white-space:nowrap;background:var(--vis-ink);color:var(--vis-bg);padding:.4rem .65rem;border-radius:.4rem;font:500 .8125rem/1.4 var(--vis-font);transition:opacity var(--vis-fast);z-index:10}
.vis-tooltip:hover [role=tooltip],.vis-tooltip:focus-within [role=tooltip]{opacity:1;visibility:visible}
.vis-enter{animation:vis-enter var(--vis-slow) var(--vis-ease) both}
.vis-stagger>*{animation:vis-enter var(--vis-slow) var(--vis-ease) both}
.vis-stagger>:nth-child(2){animation-delay:40ms}.vis-stagger>:nth-child(3){animation-delay:80ms}.vis-stagger>:nth-child(4){animation-delay:120ms}
@keyframes vis-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes vis-pulse{0%,100%{opacity:1}50%{opacity:.5}}
@keyframes vis-spin{to{transform:rotate(360deg)}}
/* Liquid motion: one moving surface, coordinated control states. */
:root{--vis-spring:cubic-bezier(.22,1.3,.36,1);--vis-fluid:cubic-bezier(.22,.8,.2,1);--vis-travel:520ms;--vis-blur:28px;--vis-glass-rgb:255,255,255;--vis-glass-alpha:.46;--vis-clear-alpha:.24;--vis-glass-muted:#343c4f;--vis-reflection:rgba(255,255,255,.78)}
@media(prefers-color-scheme:dark){:root:not([data-vis-theme]){--vis-glass-rgb:16,22,36;--vis-glass-alpha:.56;--vis-clear-alpha:.42;--vis-glass-muted:#e1e9fa;--vis-reflection:rgba(255,255,255,.28)}}
[data-vis-theme=dark]{--vis-glass-rgb:16,22,36;--vis-glass-alpha:.56;--vis-clear-alpha:.42;--vis-glass-muted:#e1e9fa;--vis-reflection:rgba(255,255,255,.28)}
.vis-glass{--vis-muted:var(--vis-glass-muted);box-shadow:0 16px 48px rgba(14,27,56,.12),inset 0 1px 0 var(--vis-reflection),inset 0 -1px 0 rgba(255,255,255,.1)}
@supports (backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px)){
 .vis-glass{background:rgba(var(--vis-glass-rgb),var(--vis-glass-alpha));-webkit-backdrop-filter:blur(var(--vis-blur)) saturate(150%);backdrop-filter:blur(var(--vis-blur)) saturate(150%)}
 .vis-glass-clear{background:rgba(var(--vis-glass-rgb),var(--vis-clear-alpha));--vis-blur:18px}
 .vis-glass-frost{background:rgba(var(--vis-glass-rgb),.76);--vis-blur:36px}
}
.vis-glass-clear,.vis-glass-frost{isolation:isolate}
.vis-button{transition:transform 320ms var(--vis-spring),background-color var(--vis-duration),box-shadow 320ms var(--vis-fluid),border-color var(--vis-duration)}
.vis-button .vis-icon{transition:transform 380ms var(--vis-spring)}
.vis-button-flow{border-radius:var(--vis-radius-pill);padding-inline:1.5rem;gap:1rem}
.vis-button-flow:hover .vis-icon,.vis-button-flow:focus-visible .vis-icon{transform:translateX(4px)}
.vis-button-orbit:hover .vis-icon,.vis-button-orbit:focus-visible .vis-icon{transform:rotate(90deg)}
.vis-button:active:not(:disabled):not([aria-disabled=true]){transform:scale(.95)}
.vis-switch input{width:3.25rem;height:2rem}
.vis-switch-track{width:3.25rem;height:2rem;background:var(--vis-surface-soft);transition:background-color 320ms,border-color 320ms,box-shadow 320ms;box-shadow:inset 0 2px 5px rgba(10,20,40,.08)}
.vis-switch-track::after{width:1.5rem;height:1.5rem;left:3px;top:3px;border-radius:999px;background:var(--vis-muted);box-shadow:0 2px 5px rgba(15,28,55,.16);transition:transform 460ms var(--vis-spring),width 180ms,background-color 250ms}
.vis-switch input:checked+.vis-switch-track::after{transform:translateX(1.25rem)}
.vis-switch input:active:not(:disabled)+.vis-switch-track::after{width:1.8rem}
.vis-switch input:checked:active:not(:disabled)+.vis-switch-track::after{transform:translateX(.95rem)}
.vis-switch-lg .vis-switch-track{width:4rem;height:2.5rem}.vis-switch-lg input{width:4rem;height:2.5rem}
.vis-switch-lg .vis-switch-track::after{width:2rem;height:2rem}.vis-switch-lg input:checked+.vis-switch-track::after{transform:translateX(1.5rem)}
.vis-switch-lg input:active:not(:disabled)+.vis-switch-track::after{width:2.3rem}.vis-switch-lg input:checked:active:not(:disabled)+.vis-switch-track::after{transform:translateX(1.2rem)}
.vis-tabs-liquid,.vis-tabs-orbit,.vis-tabs-spotlight,.vis-dock{position:relative;isolation:isolate;flex-wrap:nowrap;overflow:visible}
.vis-tabs-liquid::before,.vis-tabs-orbit::before,.vis-tabs-spotlight::before,.vis-dock::before{content:'';position:absolute;left:0;top:0;pointer-events:none;width:var(--vis-active-w,0px);height:var(--vis-active-h,0px);transform:translate(var(--vis-active-x,0px),var(--vis-active-y,0px));background:var(--vis-surface);border:1px solid var(--vis-glass-edge);border-radius:.7rem;box-shadow:var(--vis-shadow-sm);transition:transform var(--vis-travel) var(--vis-spring),width var(--vis-travel) var(--vis-fluid),height var(--vis-travel) var(--vis-fluid);z-index:0}
.vis-tabs-liquid .vis-tab,.vis-tabs-orbit .vis-tab,.vis-tabs-spotlight .vis-tab,.vis-dock .vis-tab{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:.5rem;background:transparent;box-shadow:none;transition:color 260ms;min-width:0}
.vis-tabs-liquid[data-vis-ready] .vis-tab[aria-selected=true],.vis-tabs-orbit[data-vis-ready] .vis-tab[aria-selected=true],.vis-tabs-spotlight[data-vis-ready] .vis-tab[aria-selected=true],.vis-dock[data-vis-ready] .vis-tab[aria-selected=true]{background:transparent;box-shadow:none}
.vis-tabs-liquid .vis-icon{transition:transform 460ms var(--vis-spring)}
.vis-tabs-liquid .vis-tab[aria-selected=true] .vis-icon{transform:scale(1.12)}
.vis-tabs-orbit,.vis-tabs-spotlight{display:flex;align-items:center;width:min(100%,25rem);padding:.5rem;border-radius:999px;gap:0;min-height:4rem}
.vis-tabs-orbit .vis-tab,.vis-tabs-spotlight .vis-tab{flex:1;height:3rem;padding:.5rem;min-height:3rem;border-radius:999px;color:var(--vis-ink)}
.vis-tabs-orbit::before{width:2.875rem;height:2.875rem;transform:translate(calc(var(--vis-active-x,0px) + var(--vis-active-w,0px)/2 - 1.4375rem),-1.05rem);border-radius:50%;background:var(--vis-action);border-color:rgba(255,255,255,.38);box-shadow:0 8px 22px rgba(54,93,204,.38),inset 0 1px 0 rgba(255,255,255,.45)}
.vis-tabs-orbit .vis-tab>.vis-icon{width:1.25rem;height:1.25rem;transition:transform var(--vis-travel) var(--vis-spring),color 240ms;flex:none}
.vis-tabs-orbit .vis-tab[aria-selected=true]>.vis-icon{transform:translateY(-1.6rem) scale(1.08);color:var(--vis-on-action)}
.vis-tab-label{position:absolute;font-size:.625rem;font-weight:600;bottom:0;left:50%;transform:translate(-50%,6px);opacity:0;transition:transform 380ms var(--vis-fluid),opacity 200ms;white-space:nowrap}
.vis-tabs-orbit .vis-tab[aria-selected=true] .vis-tab-label{transform:translate(-50%,0);opacity:1}
.vis-tabs-spotlight{background:#171d2a;--vis-ink:#aebbd3;--vis-surface:#171d2a;border-color:rgba(255,255,255,.16)}
.vis-tabs-spotlight::before{width:1.6rem;height:3px;border:0;transform:translate(calc(var(--vis-active-x,0px) + var(--vis-active-w,0px)/2 - .8rem),0);background:var(--vis-brand);border-radius:0 0 5px 5px;box-shadow:0 8px 20px 7px rgba(103,143,255,.2),0 18px 25px 12px rgba(103,143,255,.13)}
.vis-tabs-spotlight .vis-tab>.vis-icon{transition:transform 460ms var(--vis-spring),color 260ms}
.vis-tabs-spotlight .vis-tab[aria-selected=true]{color:#a8c0ff}.vis-tabs-spotlight .vis-tab[aria-selected=true]>.vis-icon{transform:translateY(-2px) scale(1.1)}
.vis-dock{display:flex;padding:.5rem;gap:.375rem;border-radius:1.4rem;width:fit-content;max-width:100%}
.vis-dock::before{border-radius:1rem;background:var(--vis-accent-soft)}
.vis-dock .vis-tab{width:3.25rem;height:3.25rem;padding:.75rem;border-radius:1rem;transition:transform var(--vis-travel) var(--vis-spring),color 260ms}
.vis-dock .vis-tab:hover,.vis-dock .vis-tab:focus-visible{transform:translateY(-.5rem) scale(1.15)}
.vis-dock .vis-tab[aria-selected=true]{color:var(--vis-action)}
.vis-dock .vis-tab::after{content:'';position:absolute;bottom:4px;left:calc(50% - 2px);width:4px;height:4px;border-radius:50%;background:currentColor;opacity:0;transition:opacity 200ms}
.vis-dock .vis-tab[aria-selected=true]::after{opacity:1}
.vis-panel-enter{animation:vis-panel-in 360ms var(--vis-fluid) both}
@keyframes vis-panel-in{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}
.vis-hamburger{position:relative;display:inline-grid;place-content:center;gap:5px;width:2.875rem;height:2.875rem;flex:none;padding:.7rem;border:1px solid var(--vis-border);border-radius:var(--vis-radius-md);background:var(--vis-surface);color:var(--vis-ink);cursor:pointer}
.vis-hamburger span{display:block;width:20px;height:2px;border-radius:2px;background:currentColor;transition:transform 420ms var(--vis-spring),opacity 200ms}
.vis-hamburger[aria-expanded=true] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.vis-hamburger[aria-expanded=true] span:nth-child(2){opacity:0;transform:scaleX(.2)}
.vis-hamburger[aria-expanded=true] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.vis-menu{position:relative;display:inline-block;max-width:100%}
.vis-menu-panel{position:absolute;top:calc(100% + .65rem);inset-inline-start:0;z-index:80;width:max-content;min-width:12rem;max-width:min(20rem,calc(100vw - 3rem));padding:.5rem;border-radius:1rem;transform-origin:top left;animation:vis-menu-in 260ms var(--vis-spring) both}
.vis-menu-item{display:flex;gap:.75rem;align-items:center;width:100%;padding:.7rem .75rem;min-height:2.75rem;border:0;border-radius:.6rem;background:transparent;color:var(--vis-ink);font:500 .875rem/1.4 var(--vis-font);text-decoration:none;cursor:pointer;text-align:start;transition:background-color 180ms,transform 220ms}
.vis-menu-item:hover,.vis-menu-item:focus{background:var(--vis-accent-soft);color:var(--vis-accent-ink)}
.vis-menu-item:disabled,.vis-menu-item[aria-disabled=true]{opacity:.4;cursor:not-allowed}
.vis-menu-label{display:block;padding:.5rem .75rem;font-size:.75rem;color:var(--vis-muted)}
.vis-menu-divider{border:0;border-top:1px solid var(--vis-border);margin:.35rem}
.vis-menu-panel[data-vis-state=closing]{animation:vis-menu-out 180ms var(--vis-fluid) both;pointer-events:none}
@keyframes vis-menu-in{from{opacity:0;transform:translateY(-8px) scale(.94)}to{opacity:1;transform:none}}
@keyframes vis-menu-out{to{opacity:0;transform:translateY(-6px) scale(.96)}}
.vis-modal-open{overflow:hidden}
.vis-dialog[open]{animation:vis-panel-in 380ms var(--vis-spring) both}
.vis-dialog[data-vis-state=closing]{animation:vis-menu-out 220ms var(--vis-fluid) both;pointer-events:none}
.vis-dialog::backdrop{animation:vis-backdrop-in 300ms both}
.vis-dialog[data-vis-state=closing]::backdrop{animation:vis-backdrop-out 220ms both}
.vis-drawer{position:fixed;inset-block:1rem;inset-inline-start:auto;inset-inline-end:1rem;margin:0;width:min(24rem,calc(100% - 2rem));height:calc(100dvh - 2rem);max-height:none;border-radius:1.75rem;padding:1.5rem;color:var(--vis-ink);font-family:var(--vis-font);overflow:auto}
.vis-drawer:not([open]){display:none}.vis-drawer[open]{display:flex;flex-direction:column;gap:1.5rem;animation:vis-drawer-in 460ms var(--vis-spring) both}
.vis-drawer::backdrop{background:rgba(6,13,30,.35);backdrop-filter:blur(6px);animation:vis-backdrop-in 300ms both}
.vis-drawer[data-vis-state=closing]{animation:vis-drawer-out 260ms var(--vis-fluid) both;pointer-events:none}
.vis-drawer[data-vis-state=closing]::backdrop{animation:vis-backdrop-out 260ms both}
.vis-drawer-footer{margin-top:auto;padding-top:1rem;border-top:1px solid var(--vis-border)}
@keyframes vis-drawer-in{from{opacity:0;transform:translateX(calc(100% + 1rem)) scale(.97)}to{opacity:1;transform:none}}
@keyframes vis-drawer-out{to{opacity:0;transform:translateX(calc(100% + 1rem)) scale(.97)}}
@keyframes vis-backdrop-in{from{opacity:0}to{opacity:1}}@keyframes vis-backdrop-out{to{opacity:0}}
.vis-grid-12{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--vis-gap,1rem)}
.vis-col-4{grid-column:span 4}.vis-col-6{grid-column:span 6}.vis-col-8{grid-column:span 8}.vis-col-12{grid-column:span 12}
.vis-grid-auto{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--vis-min,14rem)),1fr));gap:var(--vis-gap,1rem)}
.vis-bento{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}.vis-bento-tall{grid-row:span 2;display:flex;flex-direction:column;justify-content:space-between}
.vis-layout{display:grid;grid-template-columns:minmax(8rem,1fr) minmax(0,3fr);gap:1rem}
.vis-grid-cell{display:flex;align-items:center;justify-content:center;min-height:4rem;background:var(--vis-accent-soft);color:var(--vis-accent-ink);border:1px solid var(--vis-border);border-radius:var(--vis-radius-md);font-size:.8125rem;font-weight:500}
.vis-metric{font-size:clamp(2rem,5vw,3.25rem);font-weight:550;letter-spacing:-.06em;line-height:1.2;font-variant-numeric:tabular-nums}
.vis-card-accent{background:var(--vis-brand);color:#101b36;border-color:transparent;--vis-muted:#253958;--vis-ink:#101b36}
.vis-card-link{display:flex;flex-direction:column;gap:1rem;color:inherit;text-decoration:none;transition:transform 420ms var(--vis-spring),box-shadow 300ms}
.vis-card-link .vis-icon{transition:transform 420ms var(--vis-spring)}.vis-card-link:hover .vis-icon{transform:translate(3px,-3px)}.vis-card-link:hover{transform:translateY(-4px);box-shadow:var(--vis-shadow-md)}
.vis-choice{position:relative;display:block;cursor:pointer}.vis-choice input{position:absolute;top:1.25rem;right:1.25rem;accent-color:var(--vis-action);width:1.125rem;height:1.125rem}
.vis-choice .vis-card{display:flex;flex-direction:column;gap:.5rem;padding-right:3rem;transition:background-color 280ms,border-color 280ms,box-shadow 280ms,transform 380ms var(--vis-spring)}
.vis-choice input:checked+.vis-card{background:var(--vis-accent-soft);border-color:var(--vis-action);box-shadow:0 0 0 1px var(--vis-action)}.vis-choice input:focus-visible+.vis-card{outline:3px solid var(--vis-action);outline-offset:4px}
.vis-breadcrumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;list-style:none;padding:0;margin:0;font-size:.875rem;color:var(--vis-muted)}.vis-breadcrumbs a{color:inherit;text-underline-offset:4px}.vis-breadcrumbs [aria-current]{color:var(--vis-ink);font-weight:600}
.vis-pagination{display:flex;flex-wrap:wrap;gap:.4rem}.vis-pagination [aria-current=page]{background:var(--vis-action);color:var(--vis-on-action)}
.vis-navbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;border-radius:1.25rem}.vis-navbar-links{display:flex;gap:.5rem}
.vis-range{width:100%;accent-color:var(--vis-action);cursor:pointer;min-height:2rem}
:root{--vis-chart-1:#365dcc;--vis-chart-2:#678fff;--vis-chart-3:#92adf4;--vis-chart-4:#b8cafa;--vis-chart-5:#263f88;--vis-chart-6:#7f8ba6}
@media(prefers-color-scheme:dark){:root:not([data-vis-theme]){--vis-chart-1:#a8bfff;--vis-chart-2:#678fff;--vis-chart-3:#526eb0;--vis-chart-4:#c9d7ff;--vis-chart-5:#899ac3;--vis-chart-6:#bbc3d5}}
[data-vis-theme=dark]{--vis-chart-1:#a8bfff;--vis-chart-2:#678fff;--vis-chart-3:#526eb0;--vis-chart-4:#c9d7ff;--vis-chart-5:#899ac3;--vis-chart-6:#bbc3d5}
.vis-chart{margin:0;min-width:0}.vis-chart-svg{display:block;width:100%;height:auto;min-height:12rem;overflow:visible;margin-top:.75rem}
.vis-chart-axis{font:12px var(--vis-font);fill:var(--vis-muted)}.vis-chart-grid{stroke:var(--vis-border);stroke-width:1}
.vis-chart-bar{transform-box:fill-box;transform-origin:center bottom;animation:vis-bar-grow 650ms var(--vis-fluid) both}
.vis-chart-line{stroke-dasharray:1;stroke-dashoffset:0;animation:vis-line-draw 900ms var(--vis-fluid) both}
.vis-chart-point{animation:vis-backdrop-in 500ms both}.vis-chart-slice,.vis-chart-radar{transform-origin:center;transform-box:fill-box;animation:vis-chart-in 650ms var(--vis-spring) both}
.vis-chart-legend{display:flex;flex-wrap:wrap;gap:.75rem 1rem;padding:0;margin:.5rem 0 1rem;list-style:none;font-size:.8125rem}.vis-chart-legend li{display:flex;align-items:center;gap:.5rem}.vis-chart-dot{width:.65rem;height:.65rem;border-radius:50%;flex:none;border:1px solid var(--vis-control-border)}
.vis-chart-data{margin-top:1rem;font-size:.8125rem;overflow-x:auto}.vis-chart-data summary{cursor:pointer;color:var(--vis-accent-ink);padding:.5rem 0}.vis-chart-data .vis-table{margin-top:.5rem}.vis-chart-data .vis-table :is(th,td){padding:.5rem .75rem}
@keyframes vis-bar-grow{from{transform:scaleY(.02);opacity:.4}to{transform:scaleY(1);opacity:1}}
@keyframes vis-line-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
@keyframes vis-chart-in{from{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}
.vis-stagger>:nth-child(5){animation-delay:160ms}.vis-stagger>:nth-child(6){animation-delay:200ms}
@media(max-width:40rem){.vis-grid{grid-template-columns:1fr}.vis-container{padding-inline:1rem}.vis-card{padding:1.25rem}.vis-col-4,.vis-col-6,.vis-col-8{grid-column:span 12}.vis-layout{grid-template-columns:1fr}.vis-navbar-links{display:none}}
/* Google branding is deliberately separate from Visucio's Montserrat. */
@font-face{font-family:'Google Sans';src:url('./fonts/google-sans-latin.woff2') format('woff2');font-style:normal;font-weight:500;font-display:swap}
.vis-google-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;box-sizing:border-box;padding:10px 12px;border:1px solid #747775;border-radius:999px;background:#fff;color:#1f1f1f;font:500 14px/20px 'Google Sans',Arial,sans-serif;cursor:pointer;text-decoration:none;transition:box-shadow 200ms,background-color 200ms}
.vis-google-button img{display:block;width:18px;height:18px;flex:none;object-fit:contain}.vis-google-button:hover{background:#f8faff;box-shadow:0 1px 4px #1f1f1f20}.vis-google-button:active{background:#edf2fa}
.vis-login-page{margin:0}.vis-login-layout{min-height:100dvh;display:grid;grid-template-columns:1fr 1fr;padding:1rem;gap:1rem;max-width:100rem;margin-inline:auto}
.vis-login-story{display:flex;flex-direction:column;justify-content:space-between;padding:clamp(2rem,5vw,5rem);border-radius:2rem;background:#274878;color:#fff;min-height:42rem}.vis-login-logo{width:158px;height:auto;object-fit:contain}.vis-login-story-copy h1{font-size:clamp(2.75rem,5vw,5.5rem);font-weight:500;line-height:1.05;letter-spacing:-.065em;margin:1.5rem 0}.vis-login-story-copy p{color:#d9e6ff;font-size:1rem;line-height:1.8}.vis-login-eyebrow{font-size:.65rem;letter-spacing:.16em;font-weight:600;color:#c9dcff}.vis-login-story-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;font-size:.7rem;color:#c9dcff;padding-top:2rem}
.vis-login-main{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;padding:2rem 1.5rem;background:var(--vis-accent-soft);border-radius:2rem;min-width:0}
.vis-login-card{padding:2.5rem;width:min(100%,27rem);border-radius:1.75rem;gap:1.3rem}.vis-login-card .vis-subtitle{font-size:1.65rem;letter-spacing:-.04em;margin-bottom:.5rem}.vis-login-card .vis-muted{font-size:.875rem}.vis-login-brand{margin-bottom:.5rem}.vis-login-brand img{width:120px;height:auto}.vis-logo-dark{display:none}
.vis-login-divider{display:flex;align-items:center;gap:.75rem;color:var(--vis-muted);font-size:.75rem}.vis-login-divider::before,.vis-login-divider::after{content:'';height:1px;flex:1;background:var(--vis-border)}
.vis-password-field{position:relative}.vis-password-field .vis-input{padding-right:3.25rem}.vis-password-field .vis-button{position:absolute;right:3px;top:50%;transform:translateY(-50%);min-height:2.5rem}
.vis-login-text-button{border:0;background:transparent;color:var(--vis-accent-ink);font:500 .75rem var(--vis-font);padding:.4rem 0;cursor:pointer;text-underline-offset:3px}.vis-login-text-button:hover{text-decoration:underline}.vis-login-demo-note{font-size:.7rem;line-height:1.6;text-align:center;color:var(--vis-muted)}
[data-vis-theme=dark] .vis-logo-light{display:none}[data-vis-theme=dark] .vis-logo-dark{display:block}
@media(prefers-color-scheme:dark){:root:not([data-vis-theme]) .vis-logo-light{display:none}:root:not([data-vis-theme]) .vis-logo-dark{display:block}}
@media(max-width:60rem){.vis-login-layout{grid-template-columns:1fr}.vis-login-story{min-height:16rem;padding:2rem}.vis-login-story-copy h1{font-size:2.75rem;margin:1rem 0}.vis-login-story-copy h1 br{display:none}.vis-login-story-copy p,.vis-login-story-footer{display:none}.vis-login-story-copy .vis-login-eyebrow{display:none}.vis-login-main{padding:2rem 1rem}.vis-login-card{padding:1.75rem}.vis-login-story .vis-login-logo{width:110px}}
@media(max-width:30rem){.vis-login-layout{padding:.5rem;gap:.5rem}.vis-login-story{border-radius:1.5rem;min-height:12rem;padding:1.5rem}.vis-login-story-copy h1{font-size:2.15rem}.vis-login-main{border-radius:1.5rem;padding:1.5rem .75rem}.vis-login-card{padding:1.5rem 1.25rem}}
[data-vis-motion=off] *,[data-vis-motion=off] *::before,[data-vis-motion=off] *::after{animation:none!important;transition:none!important}
@media(prefers-reduced-motion:reduce){.vis-ui *,.vis-ui *::before,.vis-ui *::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.vis-card-interactive:hover,.vis-button:hover,.vis-button:active{transform:none!important}}
@media(prefers-reduced-transparency:reduce){.vis-glass{background:var(--vis-surface);backdrop-filter:none;-webkit-backdrop-filter:none;border-color:var(--vis-border)}.vis-dialog::backdrop{backdrop-filter:none}}
[data-vis-transparency=off] .vis-glass,[data-vis-transparency=off].vis-glass{background:var(--vis-surface);backdrop-filter:none;-webkit-backdrop-filter:none;border-color:var(--vis-border)}
@media(forced-colors:active){.vis-glass,.vis-card,.vis-button,.vis-tab,.vis-badge,.vis-alert,.vis-switch-track{border:1px solid CanvasText;box-shadow:none;backdrop-filter:none}.vis-tab[aria-selected=true]{outline:2px solid Highlight}.vis-switch input:checked+.vis-switch-track{background:Highlight}.vis-switch-track::after{background:CanvasText}}
@media print{.vis-ui{background:#fff;color:#000}.vis-glass{background:#fff;box-shadow:none;backdrop-filter:none}.vis-toast-region{display:none}}
@media(prefers-reduced-motion:reduce){.vis-dialog::backdrop,.vis-drawer::backdrop{animation:none!important;transition:none!important}}
@media(prefers-reduced-transparency:reduce){.vis-dialog::backdrop,.vis-drawer::backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}}
[data-vis-motion=off] dialog::backdrop,.no-motion dialog::backdrop{animation:none!important;transition:none!important}
[data-vis-transparency=off] dialog::backdrop,dialog[data-vis-transparency=off]::backdrop{backdrop-filter:none;-webkit-backdrop-filter:none}

/* Visucio UI 1.2 — language names stay visible; flags are bundled SVG assets. */
.vis-flag{display:block;inline-size:1.5rem;block-size:1rem;flex:none;object-fit:cover;border-radius:3px;box-shadow:0 0 0 1px rgb(100 110 140 / .18)}
.vis-language-picker{display:inline-block;max-inline-size:100%;text-align:start}
.vis-language-trigger{gap:.6rem;min-block-size:2.75rem;font-size:.875rem;padding-inline:.8rem;white-space:nowrap;font-weight:500}
.vis-language-trigger .vis-language-chevron{inline-size:1rem;block-size:1rem;transition:transform var(--vis-travel) var(--vis-spring)}
.vis-language-trigger[aria-expanded=true] .vis-language-chevron{transform:rotate(180deg)}
.vis-language-panel{inset-inline-start:auto;inset-inline-end:0;min-inline-size:11.5rem;max-inline-size:min(18rem,calc(100vw - 2rem));z-index:90}
.vis-language-option{gap:.75rem;font-size:.875rem;min-block-size:2.75rem}
.vis-language-option[aria-current=true]{background:var(--vis-accent-soft);color:var(--vis-accent-ink);font-weight:600}
.vis-language-option[aria-current=true]::after{content:'✓';margin-inline-start:auto;font-size:1rem}
.vis-login-language{position:absolute;inset-block-start:1.5rem;inset-inline-end:1.5rem;z-index:20}
@media(max-width:600px){.vis-login-language{inset-block-start:1rem;inset-inline-end:1rem}.vis-login-main{padding-block-start:5rem!important}}
@media(prefers-reduced-motion:reduce){.vis-language-trigger .vis-language-chevron{transition:none}}
