:root{--canvas: #f6f6f5;--surface: #ffffff;--surface-2: #fbfbfa;--surface-3: #f2f2f0;--overlay: rgba(23, 23, 26, .5);--border: #e7e7e4;--border-strong: #d6d6d2;--border-subtle: #efefed;--text: #1c1c1f;--text-secondary: #5c5c63;--text-tertiary: #8a8a92;--text-on-accent: #ffffff;--accent: #4f46e5;--accent-hover: #4338ca;--accent-active: #3730a3;--accent-soft: #eef0fe;--accent-soft-text:#4338ca;--focus-ring: rgba(79, 70, 229, .35);--st-approval-fg: #7c3aed;--st-approval-bg: #f3eefe;--st-pending-fg: #52525b;--st-pending-bg: #f1f1f0;--st-progress-fg: #2563eb;--st-progress-bg: #e8effd;--st-paused-fg: #b45309;--st-paused-bg: #fdf2e0;--st-done-fg: #15803d;--st-done-bg: #e7f6ec;--st-cancelled-fg:#71717a;--st-cancelled-bg:#f4f4f3;--st-rejected-fg: #b91c1c;--st-rejected-bg: #fdeaea;--urg-baja-fg: #15803d;--urg-baja-bg: #e7f6ec;--urg-media-fg: #b45309;--urg-media-bg: #fdf2e0;--urg-alta-fg: #b91c1c;--urg-alta-bg: #fdeaea;--danger: #dc2626;--danger-bg: #fdeaea;--danger-border: #f6c6c6;--success:#15803d;--success-bg:#e7f6ec;--success-border:#bfe6cb;--warning:#b45309;--warning-bg:#fdf2e0;--warning-border:#f3d9a8;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--r-sm:6px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-full:999px;--shadow-xs: 0 1px 2px rgba(23,23,26,.04);--shadow-sm: 0 1px 3px rgba(23,23,26,.06), 0 1px 2px rgba(23,23,26,.04);--shadow-md: 0 4px 12px rgba(23,23,26,.08), 0 1px 3px rgba(23,23,26,.05);--shadow-lg: 0 12px 28px rgba(23,23,26,.12), 0 4px 10px rgba(23,23,26,.06);--shadow-focus: 0 0 0 3px var(--focus-ring);--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--fs-xs:11px;--fs-sm:12px;--fs-base:13px;--fs-md:14px;--fs-lg:16px;--fs-xl:20px;--fs-2xl:26px;--fs-kpi:30px;--fw-normal:400;--fw-medium:500;--fw-semibold:600;--fw-bold:700;--fw-black:800;--nav-h:56px;--container-max:1240px}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body{margin:0;font-family:var(--font-sans);background:var(--canvas);color:var(--text);font-size:var(--fs-md);line-height:1.5}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:var(--fs-2xl);line-height:1.2;font-weight:var(--fw-bold);letter-spacing:-.01em;margin:0 0 var(--sp-2)}h2{font-size:var(--fs-xl);line-height:1.3;font-weight:var(--fw-bold);letter-spacing:-.01em;margin:0 0 var(--sp-3)}button{font:var(--fw-semibold) var(--fs-md)/1 var(--font-sans);cursor:pointer;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);border-radius:var(--r-md);padding:9px 14px;display:inline-flex;align-items:center;gap:var(--sp-2);transition:background .12s,box-shadow .12s,border-color .12s,color .12s}button:hover{background:var(--surface-2)}button:focus-visible{outline:none;box-shadow:var(--shadow-focus)}button.primary{background:var(--accent);color:var(--text-on-accent);border-color:transparent;box-shadow:var(--shadow-xs)}button.primary:hover{background:var(--accent-hover)}button.primary:active{background:var(--accent-active)}button.ghost{background:transparent;border-color:transparent;color:var(--text-secondary)}button.ghost:hover{background:var(--surface-2);color:var(--text)}button.danger{color:var(--danger);border-color:var(--danger-border);background:var(--surface)}button.danger:hover{background:var(--danger-bg)}button.sm{padding:6px 10px;font-size:var(--fs-base)}button.lg{padding:11px 18px}button:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}input,select,textarea{font:var(--fw-normal) var(--fs-md)/1.4 var(--font-sans);padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--surface);color:var(--text);width:100%;transition:border-color .12s,box-shadow .12s}input::placeholder,textarea::placeholder{color:var(--text-tertiary)}input:hover,select:hover,textarea:hover{border-color:var(--text-tertiary)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);box-shadow:var(--shadow-focus)}input:disabled,select:disabled,textarea:disabled{background:var(--surface-3);color:var(--text-tertiary);cursor:not-allowed}input[type=date],input[type=number]{font-variant-numeric:tabular-nums}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='none' stroke='%238a8a92' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round' d='M3 4.5L6 7.5L9 4.5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}textarea{line-height:1.5;resize:vertical}label{display:block;font-size:var(--fs-sm);color:var(--text-secondary);font-weight:var(--fw-semibold);margin-bottom:var(--sp-1)}label .req{color:var(--danger);margin-left:2px}.hint{font-size:var(--fs-sm);color:var(--text-tertiary);margin-top:var(--sp-1);display:block}.nav{display:flex;align-items:center;gap:var(--sp-2);height:var(--nav-h);padding:0 var(--sp-5);background:var(--surface);border-bottom:1px solid var(--border);box-shadow:var(--shadow-xs);position:sticky;top:0;z-index:20}.nav .brand{display:flex;align-items:center;gap:var(--sp-2);font-weight:var(--fw-bold);letter-spacing:-.01em;margin-right:var(--sp-5)}.nav .brand:before{content:"";width:9px;height:9px;border-radius:var(--r-full);background:var(--accent);display:inline-block}.nav a{color:var(--text-secondary);padding:7px 12px;border-radius:var(--r-md);font-weight:var(--fw-medium);font-size:var(--fs-base)}.nav a:hover{background:var(--surface-2);color:var(--text);text-decoration:none}.nav a.active{background:var(--accent-soft);color:var(--accent-soft-text);font-weight:var(--fw-semibold)}.nav .spacer{flex:1}.nav .identity{display:flex;align-items:center;gap:var(--sp-2)}.nav .avatar{width:30px;height:30px;border-radius:var(--r-full);background:var(--accent-soft);color:var(--accent-soft-text);display:flex;align-items:center;justify-content:center;font-size:var(--fs-sm);font-weight:var(--fw-bold)}.nav .who{line-height:1.2}.nav .who .name{font-size:var(--fs-base);font-weight:var(--fw-semibold)}.nav .who .role{font-size:var(--fs-xs);color:var(--text-tertiary);text-transform:capitalize}.container{max-width:var(--container-max);margin:0 auto;padding:var(--sp-6) var(--sp-5)}.panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:var(--sp-5);box-shadow:var(--shadow-sm)}.panel-flush{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);overflow:hidden}.grid{display:grid;gap:var(--sp-4)}.row{display:flex;gap:var(--sp-3);flex-wrap:wrap;align-items:flex-end}table{width:100%;border-collapse:collapse}.panel-flush table th:first-child,.panel-flush table td:first-child{padding-left:var(--sp-5)}.panel-flush table th:last-child,.panel-flush table td:last-child{padding-right:var(--sp-5)}th,td{text-align:left;padding:10px 12px;font-size:var(--fs-base)}th{color:var(--text-secondary);font-weight:var(--fw-semibold);font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.04em;background:var(--surface-2);border-bottom:1px solid var(--border-strong)}td{border-bottom:1px solid var(--border-subtle);color:var(--text)}tbody tr{transition:background .1s}tbody tr:hover td{background:var(--surface-2)}tr.clickable{cursor:pointer}td.num{text-align:right;font-variant-numeric:tabular-nums}td.overdue{color:var(--danger);font-weight:var(--fw-semibold)}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:var(--r-sm);font-size:var(--fs-xs);font-weight:var(--fw-semibold);line-height:16px;white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:var(--r-full);background:currentColor;flex:none}.badge.plain:before{display:none}.badge.st-pending_approval{color:var(--st-approval-fg);background:var(--st-approval-bg)}.badge.st-pending{color:var(--st-pending-fg);background:var(--st-pending-bg)}.badge.st-in_progress{color:var(--st-progress-fg);background:var(--st-progress-bg)}.badge.st-paused{color:var(--st-paused-fg);background:var(--st-paused-bg)}.badge.st-done{color:var(--st-done-fg);background:var(--st-done-bg)}.badge.st-cancelled{color:var(--st-cancelled-fg);background:var(--st-cancelled-bg)}.badge.st-rejected{color:var(--st-rejected-fg);background:var(--st-rejected-bg)}.badge.urg-baja{color:var(--urg-baja-fg);background:var(--urg-baja-bg)}.badge.urg-media{color:var(--urg-media-fg);background:var(--urg-media-bg)}.badge.urg-alta{color:var(--urg-alta-fg);background:var(--urg-alta-bg)}.proj-group{margin-bottom:0}.proj-head{display:flex;align-items:center;gap:var(--sp-3);padding:11px var(--sp-5);background:var(--surface-2);border-bottom:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .12s}.proj-head:hover{background:var(--surface-3)}.proj-head .proj-chevron{color:var(--text-tertiary);font-size:11px;width:10px;transition:transform .15s}.proj-head .proj-chevron.open{transform:rotate(90deg)}.proj-head .proj-name{font-weight:var(--fw-bold);font-size:var(--fs-md);color:var(--text)}.proj-head .spacer{flex:1}.proj-head .proj-count{color:var(--text-tertiary);font-size:var(--fs-sm);font-weight:var(--fw-medium)}.badge.pst-planning{color:#6d28d9;background:#f1ecfe}.badge.pst-in_progress{color:var(--st-progress-fg);background:var(--st-progress-bg)}.badge.pst-paused{color:var(--st-paused-fg);background:var(--st-paused-bg)}.badge.pst-done{color:var(--st-done-fg);background:var(--st-done-bg)}.badge.pst-cancelled{color:var(--st-cancelled-fg);background:var(--st-cancelled-bg)}.badge.pst-none{color:var(--text-tertiary);background:var(--surface-3)}tbody tr.row-overdue td{background:#fdeeee}tbody tr.row-overdue:hover td{background:#fbe3e3}tbody tr.row-overdue td:first-child{box-shadow:inset 3px 0 0 var(--danger)}.chip{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--r-full);padding:5px 12px;font-weight:var(--fw-medium);font-size:var(--fs-base);color:var(--text-secondary);transition:background .12s,color .12s,border-color .12s}.chip:hover{background:var(--surface-2);color:var(--text)}.chip.active{background:var(--accent);color:var(--text-on-accent);border-color:var(--accent)}.segmented{display:inline-flex;background:var(--surface-3);border-radius:var(--r-md);padding:3px;gap:2px;width:100%}.segmented button{flex:1;border:none;background:transparent;padding:6px 8px;border-radius:var(--r-sm);font-size:var(--fs-base);font-weight:var(--fw-semibold);color:var(--text-secondary);box-shadow:none}.segmented button:hover{background:transparent;color:var(--text)}.segmented button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow-xs)}.segmented button.on.urg-baja{color:var(--urg-baja-fg)}.segmented button.on.urg-media{color:var(--urg-media-fg)}.segmented button.on.urg-alta{color:var(--urg-alta-fg)}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--overlay);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;z-index:50;overflow:auto}.modal{background:var(--surface);border-radius:var(--r-xl);box-shadow:var(--shadow-lg);width:100%;max-width:720px;padding:var(--sp-6)}.ficha{display:grid;grid-template-columns:1fr 1fr;gap:14px 24px;padding:var(--sp-4);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md)}.ficha .full{grid-column:1 / -1}.ficha .k{font-size:var(--fs-sm);color:var(--text-tertiary);font-weight:var(--fw-semibold)}.ficha .v{font-size:var(--fs-md);color:var(--text);margin-top:3px;white-space:pre-wrap;word-break:break-word}.error{color:var(--danger);background:var(--danger-bg);border:1px solid var(--danger-border);padding:10px 12px;border-radius:var(--r-md);font-size:var(--fs-md)}.ok{color:var(--success);background:var(--success-bg);border:1px solid var(--success-border);padding:10px 12px;border-radius:var(--r-md);font-size:var(--fs-md)}.muted{color:var(--text-secondary)}.center{min-height:70vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-4)}.toast{position:fixed;bottom:var(--sp-6);right:var(--sp-6);z-index:80;background:var(--text);color:#fff;padding:12px 16px;border-radius:var(--r-md);box-shadow:var(--shadow-lg);font-size:var(--fs-md);font-weight:var(--fw-medium);animation:toastIn .18s ease-out}@keyframes toastIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:var(--sp-4)}.kpi-card .kpi-label{font-size:var(--fs-sm);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em;font-weight:var(--fw-semibold)}.kpi{font-size:var(--fs-kpi);font-weight:var(--fw-black);line-height:1.1;font-variant-numeric:tabular-nums;margin-top:var(--sp-1)}.form-section{font-size:var(--fs-sm);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;font-weight:var(--fw-semibold);margin:var(--sp-2) 0 calc(-1 * var(--sp-1));display:flex;align-items:center;gap:var(--sp-3)}.form-section:after{content:"";flex:1;height:1px;background:var(--border-subtle)}.field-error input,.field-error select,.field-error textarea{border-color:var(--danger);box-shadow:0 0 0 3px var(--danger-bg)}.g12{display:grid;grid-template-columns:repeat(12,1fr);gap:var(--sp-4)}@media(max-width:720px){.g12{grid-template-columns:repeat(2,1fr)}.g12>*{grid-column:span 2!important}}
