:root{--radius:0.5rem;--background:oklch(0.977 0.004 60);--foreground:oklch(0.21 0.012 40);--card:oklch(1 0 0);--card-foreground:oklch(0.21 0.012 40);--popover:oklch(1 0 0);--popover-foreground:oklch(0.21 0.012 40);--primary:oklch(0.51 0.196 28);--primary-foreground:oklch(0.985 0.005 60);--primary-soft:oklch(0.945 0.043 28);--secondary:oklch(0.955 0.006 60);--secondary-foreground:oklch(0.28 0.015 40);--muted:oklch(0.958 0.005 60);--muted-foreground:oklch(0.51 0.014 45);--accent:oklch(0.945 0.043 28);--accent-foreground:oklch(0.4 0.15 28);--destructive:oklch(0.5 0.22 10);--destructive-foreground:oklch(0.985 0.005 60);--success:oklch(0.55 0.13 155);--success-foreground:oklch(0.985 0.005 60);--success-soft:oklch(0.94 0.04 155);--warning:oklch(0.72 0.15 72);--warning-foreground:oklch(0.25 0.05 72);--warning-soft:oklch(0.95 0.06 82);--info:oklch(0.55 0.09 240);--info-soft:oklch(0.94 0.03 240);--danger-soft:oklch(0.95 0.05 10);--border:oklch(0.9 0.006 55);--input:oklch(0.9 0.006 55);--ring:oklch(0.51 0.196 28);--chart-1:oklch(0.51 0.196 28);--chart-2:oklch(0.32 0.014 40);--chart-3:oklch(0.55 0.13 155);--chart-4:oklch(0.72 0.15 72);--chart-5:oklch(0.62 0.11 240);--sidebar:oklch(0.19 0.008 40);--sidebar-foreground:oklch(0.9 0.008 60);--sidebar-primary:oklch(0.55 0.2 28);--sidebar-primary-foreground:oklch(0.99 0 0);--sidebar-accent:oklch(0.27 0.012 40);--sidebar-accent-foreground:oklch(0.97 0.004 60);--sidebar-border:oklch(0.3 0.012 40);--sidebar-ring:oklch(0.55 0.2 28);--font-sans:"Inter Tight","Segoe UI",system-ui,-apple-system,sans-serif;color-scheme:light}@font-face{font-family:Inter Tight;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/inter-tight-latin.woff2) format("woff2")}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{font-family:var(--font-sans);color:var(--foreground);background:var(--background);font-size:14px;-webkit-font-smoothing:antialiased}button,input,select{font:inherit}button{cursor:pointer}button,input,select{transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--ring);outline-offset:3px}button svg{flex-shrink:0}.shell{display:flex;min-height:100vh}.sidebar{width:300px;background:var(--sidebar);color:var(--sidebar-foreground);display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh;flex-shrink:0;border-right:1px solid var(--sidebar-border);transition:width .2s}.sidebar.collapsed{width:76px}.brand{min-height:64px;padding:12px 16px;display:flex;gap:10px;align-items:center;border-bottom:1px solid var(--sidebar-border)}.brand-logo{width:36px;height:36px;background:var(--background);border-radius:var(--radius);display:grid;place-items:center;flex-shrink:0;overflow:hidden}.brand-logo img{display:block;width:100%;height:100%;object-fit:contain}.brand-copy{display:flex;flex-direction:column;gap:3px;min-width:0}.brand-copy strong{font-size:14px;font-weight:600;white-space:nowrap}.brand-copy small{color:color-mix(in oklch,var(--sidebar-foreground) 60%,transparent);font-size:11px}.collapse-button{display:grid;place-items:center;background:transparent;color:color-mix(in oklch,var(--sidebar-foreground) 65%,transparent);border:0;border-radius:calc(var(--radius) - 2px);padding:5px;margin-left:auto}.collapse-button:hover{background:var(--sidebar-accent);color:var(--sidebar-accent-foreground)}.collapsed .brand-copy{display:none}.collapsed .brand{padding:14px 10px;flex-direction:column}.collapsed .collapse-button{margin:0}.sidebar-section{padding:20px 16px 6px}.searchbox,.select-wrap{display:flex;align-items:center;gap:8px;background:var(--sidebar-accent);border:1px solid var(--sidebar-border);padding:0 10px;border-radius:calc(var(--radius) - 2px);color:color-mix(in oklch,var(--sidebar-foreground) 65%,transparent);height:36px;margin-bottom:10px}.searchbox:focus-within,.select-wrap:focus-within{border-color:var(--sidebar-ring);box-shadow:0 0 0 1px var(--sidebar-ring)}.searchbox input,.select-wrap select{width:100%;min-width:0;height:100%;background:transparent;border:0;color:var(--sidebar-foreground);outline:none;font-size:12px}.searchbox input::placeholder{color:color-mix(in oklch,var(--sidebar-foreground) 55%,transparent)}.select-wrap select option{background:var(--sidebar-accent);color:var(--sidebar-foreground)}.modes{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 20px}.modes button{background:transparent;color:color-mix(in oklch,var(--sidebar-foreground) 75%,transparent);border:1px solid var(--sidebar-border);border-radius:999px;font-size:11px;font-weight:500;padding:6px 10px}.modes button:hover{background:var(--sidebar-accent);color:var(--sidebar-accent-foreground)}.modes button.active{color:var(--primary-foreground);background:var(--primary);border-color:var(--primary)}.list-heading{padding:0 18px 12px;font-size:11px;letter-spacing:.08em;color:color-mix(in oklch,var(--sidebar-foreground) 55%,transparent);font-weight:600;display:flex;justify-content:space-between;align-items:center}.list-heading span{letter-spacing:0;font-size:10px;padding:2px 6px;border-radius:4px;background:var(--sidebar-accent);color:var(--sidebar-foreground)}.diagram-list{flex:1 1;min-height:0;overflow-y:auto;padding:0 8px 20px;scrollbar-width:thin;scrollbar-color:var(--sidebar-border) transparent}.diagram-entry{width:100%;background:transparent;color:color-mix(in oklch,var(--sidebar-foreground) 80%,transparent);border:1px solid transparent;display:flex;gap:9px;align-items:center;text-align:left;border-radius:calc(var(--radius) - 2px);padding:10px;margin-bottom:3px}.diagram-entry:hover{background:var(--sidebar-accent);color:var(--sidebar-accent-foreground)}.diagram-entry.active{background:color-mix(in oklch,var(--sidebar-primary) 90%,var(--sidebar));color:var(--sidebar-primary-foreground)}.entry-number{font-size:11px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;background:var(--sidebar-accent);color:var(--sidebar-foreground);border-radius:4px;min-width:28px;height:28px;display:grid;place-items:center}.active .entry-number{background:color-mix(in oklch,white 16%,transparent);color:white}.entry-info{min-width:0;flex:1 1}.entry-info strong{display:block;font-size:12px;line-height:1.4;font-weight:500}.entry-info small{display:block;color:color-mix(in oklch,var(--sidebar-foreground) 50%,transparent);font-size:10px;margin-top:3px}.active .entry-info small{color:color-mix(in oklch,white 72%,transparent)}.diagram-entry>svg{color:color-mix(in oklch,var(--sidebar-foreground) 45%,transparent)}.diagram-entry.active>svg{color:white}.sidebar-footer{padding:14px 16px;border-top:1px solid var(--sidebar-border);color:color-mix(in oklch,var(--sidebar-foreground) 60%,transparent);font-size:11px;display:flex;gap:8px;align-items:center}.empty{color:color-mix(in oklch,var(--sidebar-foreground) 65%,transparent);font-size:12px;padding:20px 12px}.main{min-width:0;flex:1 1;background:var(--background)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;height:64px;background:color-mix(in oklch,var(--background) 95%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);padding:0 24px;justify-content:space-between;gap:12px}.breadcrumb,.topbar{display:flex;align-items:center}.breadcrumb{min-width:0;font-size:13px;color:var(--muted-foreground);gap:8px}.breadcrumb>svg{flex-shrink:0;opacity:.6}.breadcrumb-area{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.breadcrumb-current{color:var(--foreground);font-weight:500}.right-status{flex-shrink:0;display:inline-flex;align-items:center;gap:6px;padding:4px 10px;color:var(--success);background:var(--success-soft);border:1px solid color-mix(in oklch,var(--success) 25%,transparent);border-radius:999px;font-size:11px;font-weight:500;white-space:nowrap}.status-dot{width:6px;height:6px;background:currentColor;border-radius:50%}.content{padding:24px 24px 32px;max-width:1600px;margin:0 auto}.hero{display:flex;justify-content:space-between;align-items:center;gap:24px}.hero-text{min-width:0}.small-chip{font-size:11px;font-weight:500;color:var(--primary);background:var(--primary-soft);border:1px solid color-mix(in oklch,var(--primary) 25%,transparent);display:inline-flex;gap:6px;align-items:center;padding:4px 9px;border-radius:999px}.hero h1{font-family:inherit;font-size:clamp(22px,2.1vw,28px);font-weight:600;line-height:1.25;margin:12px 0 7px;letter-spacing:-.025em}.hero p{font-size:13px;margin:0;line-height:1.6}.hero p,.hero-stat{color:var(--muted-foreground)}.hero-stat{display:flex;flex-shrink:0;align-items:center;gap:6px;border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);background:var(--card);padding:8px 10px;font-size:12px;box-shadow:0 1px 2px oklch(0 0 0/4%)}.hero-stat>svg{color:var(--primary)}.hero-stat strong{color:var(--foreground);font-size:13px;font-weight:600}.hero-stat small{font-size:inherit}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px;margin:24px 0}.stat-card{min-width:0;padding:16px;background:var(--card);border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);box-shadow:0 1px 3px oklch(0 0 0/5%)}.stat-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.stat-heading>span{font-size:11px;line-height:1.4;font-weight:500;letter-spacing:.04em;color:var(--muted-foreground);text-transform:uppercase}.stat-icon{flex-shrink:0;padding:6px;border-radius:calc(var(--radius) - 2px);background:var(--primary-soft);color:var(--primary)}.stat-card>strong{display:block;margin-top:6px;font-size:24px;line-height:1.25;font-weight:600;letter-spacing:-.025em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-card>small{display:block;margin-top:4px;color:var(--muted-foreground);font-size:11px}.viewer{background:var(--card);border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);overflow:hidden;box-shadow:0 1px 3px oklch(0 0 0/5%)}.viewer-header{min-height:56px;border-bottom:1px solid var(--border);padding:10px 16px;justify-content:space-between;gap:16px}.viewer-header,.viewer-name{display:flex;align-items:center}.viewer-name{min-width:0;font-size:13px;font-weight:600;color:var(--foreground);gap:8px}.viewer-name>svg{color:var(--primary);flex-shrink:0}.viewer-name>span{color:var(--muted-foreground);font-size:11px;font-weight:400}.viewer-actions{display:flex;align-items:center;gap:5px}.viewer-actions button{background:var(--card);border:1px solid var(--input);color:var(--foreground);border-radius:calc(var(--radius) - 2px);width:32px;height:32px;display:grid;place-items:center;box-shadow:0 1px 2px oklch(0 0 0/3%)}.viewer-actions button:hover{background:var(--accent);color:var(--accent-foreground);border-color:color-mix(in oklch,var(--primary) 40%,var(--border))}.viewer-actions .zoom-indicator{width:auto;min-width:50px;padding:0 7px;text-align:center;font-size:11px;color:var(--muted-foreground);font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.diagram-viewport{height:min(64vh,650px);min-height:420px;background:white;position:relative;overflow:hidden;cursor:-webkit-grab;cursor:grab;touch-action:none;display:grid;place-items:center}.diagram-viewport:focus-visible{outline:2px solid var(--ring);outline-offset:-2px}.diagram-viewport.dragging{cursor:-webkit-grabbing;cursor:grabbing}.diagram-stage{display:flex;align-items:center;justify-content:center;width:100%;height:100%;transform-origin:center center;transition:transform .05s linear;pointer-events:none}.diagram-svg{display:block;max-width:94%;max-height:90%;object-fit:contain;-moz-user-select:none;user-select:none}.watermark{right:16px;top:15px;font-size:9px;letter-spacing:.08em;opacity:.6;-webkit-user-select:none;-moz-user-select:none;user-select:none;font-weight:600}.viewer-hint,.watermark{position:absolute;color:var(--muted-foreground);pointer-events:none}.viewer-hint{bottom:13px;left:16px;background:color-mix(in oklch,var(--card) 94%,transparent);border:1px solid var(--border);border-radius:calc(var(--radius) - 2px);padding:7px 10px;font-size:10px}.viewer-bottom{border-top:1px solid var(--border);padding:12px 16px;display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--muted-foreground);font-size:11px}.viewer-bottom span:first-child{display:flex;align-items:center;gap:7px}.viewer-bottom svg{flex-shrink:0}.diagram-error{position:absolute;inset:0;display:grid;place-items:center;padding:24px;text-align:center}.diagram-error,.note{background:var(--card);color:var(--muted-foreground)}.note{display:flex;gap:10px;margin-top:16px;border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);padding:14px 16px;box-shadow:0 1px 2px oklch(0 0 0/3%)}.note svg{flex-shrink:0;color:var(--primary);margin-top:1px}.note p{margin:0;font-size:11px;line-height:1.7}.note strong{color:var(--foreground);font-weight:600}.mobile-button,.mobile-shade{display:none}@media (max-width:1150px){.sidebar{width:280px}.content{padding:20px}.hero-stat{display:none}}@media (max-width:760px){.sidebar,.sidebar.collapsed{position:fixed;z-index:50;transform:translateX(-100%);width:min(320px,88vw);transition:transform .2s}.sidebar.open{transform:translateX(0)}.sidebar .collapse-button{display:none}.mobile-shade{display:block;position:fixed;inset:0;background:oklch(0 0 0/55%);z-index:40}.mobile-button{display:grid;place-items:center;flex-shrink:0;background:transparent;border:0;border-radius:calc(var(--radius) - 2px);width:32px;height:32px;padding:0;color:var(--foreground)}.mobile-button:hover{background:var(--accent)}.topbar{padding:0 12px;gap:8px}.breadcrumb{flex:1 1;font-size:11px;gap:5px}.breadcrumb-area{max-width:160px}.right-status{padding:4px 7px;font-size:10px}.content{padding:20px 12px}.hero h1{font-size:22px}.hero p{font-size:12px}.stats{gap:8px;margin:20px 0}.stat-card{padding:12px}.stat-heading{min-height:28px}.stat-heading>span{font-size:10px}.stat-icon{display:none}.stat-card>strong{font-size:22px}.stat-card>small{display:none}.viewer-header{flex-wrap:wrap;padding:10px 12px;gap:10px}.viewer-name>span{display:none}.diagram-viewport{min-height:440px;height:65vh}.viewer-bottom span:last-child{display:none}.viewer-hint{left:10px;right:10px;font-size:9px;text-align:center}}@media (max-width:400px){.breadcrumb>span:first-child,.breadcrumb>svg:first-of-type{display:none}.breadcrumb-area{max-width:130px}}@media (prefers-reduced-motion:reduce){*,:after,:before{transition:none!important}}.login-page{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:32px 16px;background:var(--background)}.login-content{width:100%;max-width:384px}.login-brand{display:flex;justify-content:center;margin-bottom:24px}.login-brand img{display:block;height:48px;width:auto;object-fit:contain}.login-card{border:1px solid var(--border);border-radius:calc(var(--radius) + 4px);padding:24px;background:var(--card);box-shadow:0 1px 3px oklch(0 0 0/5%)}.login-card h1{font-size:18px;font-weight:600;letter-spacing:-.025em;margin:0;line-height:1.5}.login-description{margin:4px 0 0;color:var(--muted-foreground);font-size:14px;line-height:1.5}.login-form{margin-top:20px;display:flex;flex-direction:column;gap:12px}.login-field label{display:block;margin-bottom:4px;font-size:12px;font-weight:500;color:var(--muted-foreground)}.login-field input{display:block;width:100%;height:40px;border:1px solid var(--input);border-radius:calc(var(--radius) - 2px);background:var(--card);color:var(--foreground);padding:8px 12px;font-size:14px;box-shadow:0 1px 2px oklch(0 0 0/3%)}.login-field input:focus-visible{outline:1px solid var(--ring);outline-offset:0;border-color:var(--ring)}.password-field{position:relative}.password-field input{padding-right:44px}.password-field button{position:absolute;right:4px;top:4px;display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:4px;color:var(--muted-foreground);background:transparent}.password-field button:hover{color:var(--foreground);background:var(--muted)}.login-submit{display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:44px;width:100%;margin-top:4px;border:1px solid var(--primary);border-radius:calc(var(--radius) - 2px);background:var(--primary);color:var(--primary-foreground);font-size:14px;font-weight:500;box-shadow:0 1px 2px oklch(0 0 0/5%)}.login-submit:hover{background:color-mix(in oklch,var(--primary) 90%,black)}.login-submit:disabled{cursor:wait;opacity:.65}.login-error{margin:0;font-size:12px;line-height:1.5;color:var(--destructive)}.login-footer{margin:16px 0 0;text-align:center;font-size:11px;color:var(--muted-foreground)}.login-spinner{animation:login-spin 1s linear infinite}@keyframes login-spin{to{transform:rotate(1turn)}}.session-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-shrink:0}.session-actions form{margin:0}.session-user{display:flex;gap:6px;color:var(--muted-foreground)}.logout-button,.session-user{align-items:center;font-size:12px}.logout-button{display:inline-flex;justify-content:center;gap:7px;min-height:34px;border:1px solid var(--input);border-radius:calc(var(--radius) - 2px);padding:6px 10px;background:var(--card);color:var(--foreground);font-weight:500}.logout-button:hover{color:var(--accent-foreground);background:var(--accent);border-color:color-mix(in oklch,var(--primary) 40%,var(--border))}@media (max-width:1100px){.session-user{display:none}}@media (max-width:760px){.session-actions .right-status{display:none}.session-actions{gap:8px}}@media (max-width:500px){.logout-button span{display:none}.logout-button{width:34px;padding:0}}@media (prefers-reduced-motion:reduce){.login-spinner{animation:none}}.viewer-header{flex-wrap:wrap}.viewer-name .viewer-title{font:inherit;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-actions{flex-shrink:0}.viewer-actions .fullscreen-button{width:auto;padding:0 9px;display:inline-flex;align-items:center;gap:6px;color:var(--primary);background:var(--primary-soft);border-color:color-mix(in oklch,var(--primary) 25%,var(--border))}.fullscreen-button span{font-size:11px;font-weight:500}.viewer:-webkit-full-screen{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;width:100%;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;border:0;border-radius:0;background:var(--card)}.viewer.viewer-expanded,.viewer:fullscreen{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;width:100%;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;border:0;border-radius:0;background:var(--card)}.viewer::-webkit-backdrop{background:var(--card)}.viewer::backdrop{background:var(--card)}.viewer:-webkit-full-screen .viewer-header{flex-shrink:0;padding-top:max(10px,env(safe-area-inset-top));padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.viewer-expanded .viewer-header,.viewer:fullscreen .viewer-header{flex-shrink:0;padding-top:max(10px,env(safe-area-inset-top));padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}.viewer:-webkit-full-screen .viewer-name{flex:1 1}.viewer-expanded .viewer-name,.viewer:fullscreen .viewer-name{flex:1 1}.viewer:-webkit-full-screen .diagram-viewport{flex:1 1;min-height:0;height:auto;width:100%}.viewer-expanded .diagram-viewport,.viewer:fullscreen .diagram-viewport{flex:1 1;min-height:0;height:auto;width:100%}.viewer:-webkit-full-screen .viewer-bottom{flex-shrink:0;padding-bottom:max(12px,env(safe-area-inset-bottom))}.viewer-expanded .viewer-bottom,.viewer:fullscreen .viewer-bottom{flex-shrink:0;padding-bottom:max(12px,env(safe-area-inset-bottom))}@media (max-width:500px){.fullscreen-button span{display:none}.viewer-actions .fullscreen-button{width:32px;padding:0;justify-content:center}.viewer:-webkit-full-screen .viewer-name{flex-basis:100%}.viewer-expanded .viewer-name,.viewer:fullscreen .viewer-name{flex-basis:100%}.viewer:-webkit-full-screen .viewer-actions{margin-left:auto}.viewer-expanded .viewer-actions,.viewer:fullscreen .viewer-actions{margin-left:auto}}.viewer{-webkit-user-select:none;-moz-user-select:none;user-select:none}.diagram-svg{-webkit-user-select:none;-webkit-touch-callout:none}.copy-watermark{position:absolute;inset:-20%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(6,minmax(0,1fr));align-items:center;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transform:rotate(-18deg);overflow:hidden}.copy-watermark span{text-align:center;color:rgb(60 60 60/13%);font-size:11px;font-weight:600;line-height:1.5;white-space:nowrap}@media (max-width:600px){.copy-watermark{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(9,minmax(0,1fr))}.copy-watermark span{font-size:10px}}@media print{.viewer,body>*{display:none!important}body:before{content:"Rentas y Servicios · Impresión no disponible";display:block;padding:24px;font:16px sans-serif;color:#222}}