:root{--c-bg: #f4f6f8;--c-surface: #ffffff;--c-surface-2: #eef1f5;--c-border: #d8dee6;--c-text: #1d2430;--c-text-soft: #5a6676;--c-text-faint: #8a93a0;--c-brand: #2d4a6b;--c-brand-ink: #1b2d42;--c-brand-contrast: #ffffff;--c-accent: #c47a2c;--c-ok: #2f7d4f;--c-ok-bg: #e7f3ec;--c-warn: #a9721a;--c-warn-bg: #fbf1dd;--c-error: #b23a2e;--c-error-bg: #f7e6e3;--c-pending: #6a7686;--c-pending-bg: #eceff3;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--fs-xs: .75rem;--fs-sm: .85rem;--fs-base: .95rem;--fs-lg: 1.15rem;--fs-xl: 1.5rem;--fs-2xl: 2rem;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 24px;--sp-6: 32px;--sp-8: 48px;--radius: 8px;--radius-sm: 5px;--shadow-1: 0 1px 2px rgba(20, 35, 55, .06), 0 1px 3px rgba(20, 35, 55, .08);--shadow-2: 0 4px 16px rgba(20, 35, 55, .1);--sidebar-w: 248px;--header-h: 56px}@media (prefers-color-scheme: dark){:root{--c-bg: #141922;--c-surface: #1b2230;--c-surface-2: #222b3a;--c-border: #303b4d;--c-text: #e7ecf3;--c-text-soft: #a9b4c3;--c-text-faint: #76828f;--c-brand: #3d618c;--c-brand-ink: #24374f;--c-ok-bg: #16301f;--c-warn-bg: #33280f;--c-error-bg: #341b17;--c-pending-bg: #232c3a}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);font-size:var(--fs-base);line-height:1.5;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font-family:inherit}.app-shell{display:flex;min-height:100vh}.app-main{flex:1;min-width:0;display:flex;flex-direction:column}.app-content{flex:1;padding:var(--sp-5);max-width:1200px;width:100%;margin:0 auto}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--c-brand-ink);color:#dce4ee;display:flex;flex-direction:column;position:sticky;top:0;height:100vh}.sidebar__brand{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-4) var(--sp-4);border-bottom:1px solid rgba(255,255,255,.1)}.sidebar__logo{width:34px;height:34px;border-radius:7px;background:linear-gradient(135deg,var(--c-brand) 0%,var(--c-accent) 160%);display:grid;place-items:center;font-weight:800;color:#fff;font-size:1rem;letter-spacing:-.5px}.sidebar__name{font-weight:700;font-size:1.05rem;color:#fff;line-height:1.1}.sidebar__name small{display:block;font-weight:400;font-size:.68rem;color:#9fb0c4;letter-spacing:.3px}.sidebar__nav{flex:1;overflow-y:auto;padding:var(--sp-3) var(--sp-2)}.nav-item{display:flex;align-items:center;gap:var(--sp-3);padding:9px var(--sp-3);margin:2px 0;border-radius:var(--radius-sm);color:#c3cedb;font-size:var(--fs-sm);cursor:pointer;border:0;background:none;width:100%;text-align:left}.nav-item:hover{background:#ffffff12;color:#fff}.nav-item.is-active{background:var(--c-brand);color:#fff;font-weight:600}.nav-item__icon{width:18px;text-align:center;opacity:.9}.nav-item__tag{margin-left:auto;font-size:.6rem;font-weight:700;letter-spacing:.3px;background:#ffffff1f;color:#aebdce;padding:1px 6px;border-radius:10px}.sidebar__foot{padding:var(--sp-3) var(--sp-4);border-top:1px solid rgba(255,255,255,.1);font-size:var(--fs-xs);color:#8296ab}.header{height:var(--header-h);display:flex;align-items:center;gap:var(--sp-3);padding:0 var(--sp-5);background:var(--c-surface);border-bottom:1px solid var(--c-border);position:sticky;top:0;z-index:10}.header__title{font-size:var(--fs-lg);font-weight:600}.header__spacer{flex:1}.header__user{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);color:var(--c-text-soft)}.header__avatar{width:30px;height:30px;border-radius:50%;background:var(--c-surface-2);display:grid;place-items:center;font-weight:700;color:var(--c-brand)}.header__burger{display:none;background:none;border:1px solid var(--c-border);border-radius:var(--radius-sm);width:36px;height:36px;font-size:1.1rem;cursor:pointer;color:var(--c-text)}.gsearch{position:relative;width:min(420px,42vw)}.gsearch .input{width:100%}.gsearch__drop{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-2, 0 10px 30px rgba(0,0,0,.18));z-index:40;max-height:60vh;overflow-y:auto;padding:6px}.gsearch__empty{padding:10px 12px;color:var(--c-text-faint);font-size:var(--fs-sm)}.gsearch__group{padding:4px 0}.gsearch__grouptitle{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--c-text-faint);padding:4px 10px}.gsearch__item{display:flex;flex-direction:column;gap:1px;width:100%;text-align:left;background:none;border:none;border-radius:var(--radius-sm);padding:7px 10px;cursor:pointer;color:var(--c-text)}.gsearch__item:hover{background:var(--c-surface-2)}.gsearch__item__t{font-size:var(--fs-sm);font-weight:600}.gsearch__item__s{font-size:var(--fs-xs);color:var(--c-text-soft)}@media (max-width: 720px){.gsearch{width:46vw}}.campana{position:relative}.campana__btn{position:relative;background:none;border:1px solid transparent;border-radius:var(--radius-sm);width:38px;height:38px;font-size:1.15rem;cursor:pointer;color:var(--c-text-soft);display:grid;place-items:center}.campana__btn:hover{background:var(--c-surface-2);color:var(--c-text)}.campana__badge{position:absolute;top:3px;right:2px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:var(--c-error, #c0392b);color:#fff;font-size:10px;font-weight:700;line-height:16px;text-align:center}.campana__drop{position:absolute;top:calc(100% + 6px);right:0;width:min(360px,90vw);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-2, 0 10px 30px rgba(0,0,0,.18));z-index:40;overflow:hidden}.campana__head{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;border-bottom:1px solid var(--c-border);font-weight:700;font-size:var(--fs-sm)}.campana__gear{background:none;border:none;cursor:pointer;font-size:1rem;color:var(--c-text-soft)}.campana__gear:hover{color:var(--c-text)}.campana__empty{padding:18px 12px;color:var(--c-text-faint);font-size:var(--fs-sm);text-align:center}.campana__list{list-style:none;margin:0;padding:4px;max-height:60vh;overflow-y:auto}.campana__item{display:flex;align-items:stretch;gap:2px;border-radius:var(--radius-sm)}.campana__item:hover{background:var(--c-surface-2)}.campana__item__body{flex:1;display:flex;flex-direction:column;gap:1px;text-align:left;background:none;border:none;border-left:3px solid var(--c-brand);padding:8px 10px;cursor:pointer;color:var(--c-text);border-radius:3px}.campana__item--oportunidad .campana__item__body{border-left-color:var(--c-warn)}.campana__item--presupuesto .campana__item__body{border-left-color:var(--c-ok)}.campana__item__t{font-size:var(--fs-sm);font-weight:600}.campana__item__s{font-size:var(--fs-xs);color:var(--c-text-soft)}.campana__item__d{font-size:var(--fs-xs);color:var(--c-text-faint)}.campana__item__x{background:none;border:none;cursor:pointer;color:var(--c-text-faint);font-size:1.2rem;padding:0 10px;line-height:1}.campana__item__x:hover{color:var(--c-error, #c0392b)}.campana__prefs{padding:10px 12px}.campana__prefs__t{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--c-text-faint);margin-bottom:8px}.campana__pref{display:flex;align-items:center;gap:8px;padding:5px 0;font-size:var(--fs-sm);cursor:pointer}.badge{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-xs);font-weight:600;padding:2px 9px;border-radius:20px}.badge--pending{background:var(--c-pending-bg);color:var(--c-pending)}.badge--ok{background:var(--c-ok-bg);color:var(--c-ok)}.badge--warn,.badge--dev{background:var(--c-warn-bg);color:var(--c-warn)}.card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-1);padding:var(--sp-5)}.notice{display:flex;gap:var(--sp-3);align-items:flex-start;background:var(--c-warn-bg);border:1px solid var(--c-warn);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4);color:var(--c-text);font-size:var(--fs-sm)}.notice__icon{font-size:1.1rem;line-height:1.2}.page-head{margin-bottom:var(--sp-5)}.page-head h1{font-size:var(--fs-xl);margin:0 0 4px}.page-head p{margin:0;color:var(--c-text-soft);font-size:var(--fs-sm)}.module-grid{display:grid;gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(215px,1fr));margin-top:var(--sp-5)}.module-card{display:block;text-align:left;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:var(--sp-4);cursor:pointer;transition:border-color .12s,box-shadow .12s,transform .12s}.module-card:hover{border-color:var(--c-brand);box-shadow:var(--shadow-2);transform:translateY(-1px)}.module-card__icon{font-size:1.5rem}.module-card__title{font-weight:600;margin:var(--sp-2) 0 2px}.module-card__desc{font-size:var(--fs-xs);color:var(--c-text-soft);margin-bottom:var(--sp-3);min-height:2.4em}.stat-row{display:flex;flex-wrap:wrap;gap:var(--sp-3);margin-top:var(--sp-4)}.stat{flex:1;min-width:150px;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:var(--sp-3) var(--sp-4)}.stat__label{font-size:var(--fs-xs);color:var(--c-text-faint)}.stat__value{font-size:var(--fs-lg);font-weight:700;margin-top:2px}.stat__value small{font-size:var(--fs-sm);font-weight:500;color:var(--c-text-soft)}.placeholder{display:grid;place-items:center;text-align:center;min-height:48vh;color:var(--c-text-soft)}.placeholder__icon{font-size:2.6rem;opacity:.5}.placeholder h2{margin:var(--sp-3) 0 var(--sp-1);color:var(--c-text)}.placeholder p{max-width:420px;font-size:var(--fs-sm)}.nav-group{margin-bottom:var(--sp-3)}.nav-group__title{font-size:.64rem;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:#7f91a6;padding:var(--sp-3) var(--sp-3) var(--sp-1)}.nav-item__label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;background:#6a7686}.dot--ok{background:#46c17f}.dot--dev{background:#e0a43a}.dot--plan{background:#6a7686}.dot--cfg{background:#7a8fc4}.badge--disponible{background:var(--c-ok-bg);color:var(--c-ok)}.badge--en_desarrollo{background:var(--c-warn-bg);color:var(--c-warn)}.badge--planificado{background:var(--c-pending-bg);color:var(--c-pending)}.badge--pendiente_config{background:#e9eefb;color:#4257a3}.group-block{margin-top:var(--sp-6)}.group-block__head{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-lg);font-weight:600;margin-bottom:var(--sp-2)}.fichaje{max-width:440px;margin:0 auto;text-align:center;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-1);padding:var(--sp-6) var(--sp-5)}.fichaje__estado{font-size:var(--fs-sm);color:var(--c-text-soft)}.fichaje__estado strong{font-size:var(--fs-lg);display:block;margin-top:2px}.fichaje__reloj{font-size:2.6rem;font-weight:700;letter-spacing:-1px;margin:var(--sp-3) 0;font-variant-numeric:tabular-nums}.fichaje__btns{display:grid;gap:var(--sp-3);margin-top:var(--sp-4)}.btn{border:0;border-radius:var(--radius);padding:14px var(--sp-4);font-size:var(--fs-base);font-weight:600;cursor:pointer;background:var(--c-surface-2);color:var(--c-text)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn--primary{background:var(--c-brand);color:#fff}.btn--danger{background:var(--c-error);color:#fff}.btn--ghost{background:var(--c-surface-2);color:var(--c-text)}.btn--sm{padding:7px 12px;font-size:var(--fs-sm)}.fichaje__resumen{margin-top:var(--sp-4);font-size:var(--fs-sm);color:var(--c-text-soft);display:flex;justify-content:space-around}.fichaje__resumen b{display:block;color:var(--c-text);font-size:var(--fs-base)}.tabla{width:100%;border-collapse:collapse;font-size:var(--fs-sm);margin-top:var(--sp-3)}.tabla th,.tabla td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--c-border)}.tabla th{color:var(--c-text-faint);font-weight:600;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.3px}.tabla tr:last-child td{border-bottom:0}.tabla--card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);overflow:hidden}.tag-dia{font-size:var(--fs-xs);font-weight:600;padding:1px 7px;border-radius:10px}.tag-dia--completa{background:var(--c-ok-bg);color:var(--c-ok)}.tag-dia--incompleta{background:var(--c-warn-bg);color:var(--c-warn)}.tag-dia--abierta{background:#e9eefb;color:#4257a3}.seg{display:inline-flex;background:var(--c-surface-2);border-radius:var(--radius);padding:3px;gap:2px;margin-bottom:var(--sp-4)}.seg button{border:0;background:none;padding:6px 14px;border-radius:var(--radius-sm);font-size:var(--fs-sm);cursor:pointer;color:var(--c-text-soft)}.seg button.is-active{background:var(--c-surface);color:var(--c-text);font-weight:600;box-shadow:var(--shadow-1)}.demo-flag{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-xs);color:var(--c-warn);background:var(--c-warn-bg);border:1px solid var(--c-warn);border-radius:6px;padding:3px 9px;margin-left:var(--sp-2)}.sidebar__backdrop{display:none}@media (max-width: 860px){.header__burger{display:block}.sidebar{position:fixed;z-index:30;left:0;top:0;transform:translate(-100%);transition:transform .2s ease}.sidebar.is-open{transform:translate(0);box-shadow:var(--shadow-2)}.sidebar__backdrop.is-open{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#0006}.app-content{padding:var(--sp-4)}}:root{--crm-head: #0f2740;--crm-head-ink: #eaf1f9;--crm-row-hover: rgba(45, 74, 107, .06);--crm-row-sel: rgba(45, 74, 107, .11);--crm-focus: rgba(45, 74, 107, .28);--crm-chip: #eef2f7}@media (prefers-color-scheme: dark){:root{--crm-head: #16233a;--crm-head-ink: #eaf1f9;--crm-row-hover: rgba(120, 160, 210, .08);--crm-row-sel: rgba(120, 160, 210, .16);--crm-focus: rgba(120, 160, 210, .4);--crm-chip: #222b3a}}.form-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--sp-3) var(--sp-4);align-items:end}.field{display:flex;flex-direction:column;gap:6px;min-width:0}.field--wide{grid-column:1 / -1}.field__label{font-size:var(--fs-xs);font-weight:600;color:var(--c-text-soft);letter-spacing:.02em;text-transform:uppercase}.field__hint{font-size:var(--fs-xs);color:var(--c-text-faint)}.field--error .field__label{color:var(--c-error)}.input,.select,.textarea{width:100%;box-sizing:border-box;font:inherit;font-size:var(--fs-sm);color:var(--c-text);background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:8px 10px;transition:border-color .12s,box-shadow .12s}.textarea{min-height:76px;resize:vertical}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--c-text-faint) 50%),linear-gradient(135deg,var(--c-text-faint) 50%,transparent 50%);background-position:calc(100% - 16px) 52%,calc(100% - 11px) 52%;background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:30px}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--c-brand);box-shadow:0 0 0 3px var(--crm-focus)}.input:disabled,.select:disabled{background:var(--c-surface-2);color:var(--c-text-faint)}.field--error .input,.field--error .select{border-color:var(--c-error)}.lv{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-1);overflow:hidden}.lv__bar{display:flex;align-items:center;gap:var(--sp-2);padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--c-border);flex-wrap:wrap}.lv__title{font-weight:700;font-size:var(--fs-base);margin-right:var(--sp-2)}.lv__count{color:var(--c-text-faint);font-size:var(--fs-sm);font-weight:500}.lv__spacer{flex:1 1 auto}.lv__search{position:relative;min-width:200px}.lv__search .input{padding-left:30px}.lv__search:before{content:"⌕";position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--c-text-faint);font-size:15px}.lv__views{display:flex;gap:4px}.lv__view{font-size:var(--fs-sm);padding:5px 10px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--c-text-soft);cursor:pointer}.lv__view.is-active{background:var(--crm-chip);color:var(--c-text);border-color:var(--c-border);font-weight:600}.lv__filters{display:flex;gap:var(--sp-2);align-items:center;flex-wrap:wrap;padding:var(--sp-2) var(--sp-4);background:var(--c-surface-2);border-bottom:1px solid var(--c-border)}.lv__filters .select,.lv__filters .input{width:auto;min-width:130px;padding:6px 10px}.lv__bulk{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4);background:var(--c-brand);color:var(--c-brand-contrast);font-size:var(--fs-sm)}.lv__bulk .btn{background:#ffffff24;color:#fff;border-color:#ffffff40}.lv__scroll{overflow-x:auto}table.lv__table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}.lv__table thead th{position:sticky;top:0;background:var(--c-surface-2);color:var(--c-text-soft);font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;text-align:left;padding:9px 12px;border-bottom:1px solid var(--c-border);white-space:nowrap;-webkit-user-select:none;user-select:none}.lv__table thead th.is-sortable{cursor:pointer}.lv__table thead th.is-sortable:hover{color:var(--c-text)}.lv__table thead th .sort{color:var(--c-brand);margin-left:4px}.lv__table tbody td{padding:10px 12px;border-bottom:1px solid var(--c-border);color:var(--c-text);vertical-align:middle}.lv__table tbody tr{transition:background .1s}.lv__table tbody tr:hover{background:var(--crm-row-hover)}.lv__table tbody tr.is-selected{background:var(--crm-row-sel)}.lv__table tbody tr:last-child td{border-bottom:none}.lv__check{width:36px;text-align:center}.lv__linkcell{font-weight:600;color:var(--c-brand);cursor:pointer}.lv__linkcell:hover{text-decoration:underline}.lv__linkbtn{background:none;border:none;padding:0;font:inherit;color:var(--c-brand);font-weight:600;cursor:pointer}.lv__linkbtn:hover{text-decoration:underline}.colcfg{position:relative}.colcfg__drop{position:absolute;top:calc(100% + 6px);right:0;z-index:30;background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-2, 0 10px 30px rgba(0,0,0,.18));padding:8px;min-width:200px;max-height:320px;overflow-y:auto}.colcfg__t{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--c-text-faint);padding:4px 6px 6px}.colcfg__opt{display:flex;align-items:center;gap:8px;padding:6px;font-size:var(--fs-sm);cursor:pointer;border-radius:var(--radius-sm)}.colcfg__opt:hover{background:var(--c-surface-2)}.lv__empty{padding:var(--sp-8) var(--sp-4);text-align:center;color:var(--c-text-faint)}.lv__empty__icon{font-size:30px;opacity:.5;display:block;margin-bottom:var(--sp-2)}.lv__foot{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-2) var(--sp-4);border-top:1px solid var(--c-border);color:var(--c-text-faint);font-size:var(--fs-sm)}.chip{display:inline-flex;align-items:center;gap:5px;font-size:var(--fs-xs);font-weight:600;padding:2px 9px;border-radius:999px;background:var(--crm-chip);color:var(--c-text-soft);white-space:nowrap}.chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.chip--ok{color:var(--c-ok);background:var(--c-ok-bg)}.chip--warn{color:var(--c-warn);background:var(--c-warn-bg)}.chip--error{color:var(--c-error);background:var(--c-error-bg)}.chip--info{color:var(--c-brand);background:#2d4a6b1a}.chip--muted{color:var(--c-pending);background:var(--c-pending-bg)}.record{display:flex;flex-direction:column;gap:var(--sp-4)}.record__head{background:var(--crm-head);color:var(--crm-head-ink);border-radius:var(--radius);padding:var(--sp-4) var(--sp-5);box-shadow:var(--shadow-1)}.record__crumb{font-size:var(--fs-xs);opacity:.75;margin-bottom:4px}.record__crumb a{color:inherit;cursor:pointer}.record__titlerow{display:flex;align-items:center;gap:var(--sp-3);flex-wrap:wrap}.record__avatar{width:46px;height:46px;border-radius:10px;background:#ffffff24;display:grid;place-items:center;font-size:20px;font-weight:700}.record__title{font-size:var(--fs-xl);font-weight:700;line-height:1.1}.record__actions{margin-left:auto;display:flex;gap:var(--sp-2)}.record__actions .btn{background:#ffffff24;color:#fff;border-color:#ffffff38}.record__actions .btn--primary{background:#fff;color:var(--crm-head);border-color:#fff}.record__highlights{display:flex;gap:var(--sp-6);margin-top:var(--sp-4);flex-wrap:wrap}.record__hl{display:flex;flex-direction:column;gap:2px}.record__hl__k{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;opacity:.7}.record__hl__v{font-size:var(--fs-base);font-weight:600}.record__body{display:grid;grid-template-columns:1fr 340px;gap:var(--sp-4);align-items:start}@media (max-width: 1040px){.record__body{grid-template-columns:1fr}}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--c-border);margin-bottom:var(--sp-4)}.tab{padding:10px 16px;font-size:var(--fs-sm);font-weight:600;color:var(--c-text-soft);border:none;background:none;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.tab:hover{color:var(--c-text)}.tab.is-active{color:var(--c-brand);border-bottom-color:var(--c-brand)}.tab__count{color:var(--c-text-faint);font-weight:500;margin-left:5px}.panel{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-1)}.panel__head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);border-bottom:1px solid var(--c-border)}.panel__title{font-weight:700;font-size:var(--fs-base)}.panel__sub{font-size:var(--fs-xs);color:var(--c-text-faint);font-weight:400;margin-left:var(--sp-2)}.panel__body{padding:var(--sp-4)}.detail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:var(--sp-3) var(--sp-5)}.detail{display:flex;flex-direction:column;gap:2px}.detail__k{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--c-text-faint)}.detail__v{font-size:var(--fs-sm);color:var(--c-text)}.timeline{position:relative;padding-left:22px}.timeline:before{content:"";position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:var(--c-border)}.tl-item{position:relative;padding:0 0 var(--sp-4) 0}.tl-item:before{content:"";position:absolute;left:-19px;top:3px;width:10px;height:10px;border-radius:50%;background:var(--c-surface);border:2px solid var(--c-brand)}.tl-item--done:before{background:var(--c-ok);border-color:var(--c-ok)}.tl-item__top{display:flex;align-items:baseline;gap:var(--sp-2)}.tl-item__title{font-weight:600;font-size:var(--fs-sm)}.tl-item__time{color:var(--c-text-faint);font-size:var(--fs-xs);margin-left:auto}.tl-item__meta{color:var(--c-text-soft);font-size:var(--fs-xs);margin-top:2px}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:var(--sp-3)}.kpi{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);padding:var(--sp-4);box-shadow:var(--shadow-1)}.kpi__k{font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--c-text-faint)}.kpi__v{font-size:var(--fs-2xl);font-weight:700;line-height:1.1;margin-top:4px}.kpi__sub{font-size:var(--fs-xs);color:var(--c-text-soft);margin-top:2px}.kpi__v--ok{color:var(--c-ok)}.kpi__v--warn{color:var(--c-warn)}.kpi__v--brand{color:var(--c-brand)}.chart-card{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius);box-shadow:var(--shadow-1);padding:var(--sp-4)}.chart-card__title{font-weight:700;font-size:var(--fs-base);margin-bottom:var(--sp-3)}.kanban{display:flex;gap:var(--sp-3);overflow-x:auto;padding-bottom:var(--sp-2);align-items:flex-start}.kcol{flex:0 0 272px;background:var(--c-surface-2);border:1px solid var(--c-border);border-radius:var(--radius);display:flex;flex-direction:column;max-height:72vh}.kcol__head{padding:10px 12px;border-bottom:1px solid var(--c-border);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0}.kcol__name{font-weight:700;font-size:var(--fs-sm)}.kcol__sum{font-size:var(--fs-xs);color:var(--c-text-soft)}.kcol__body{padding:10px;display:flex;flex-direction:column;gap:8px;overflow-y:auto;min-height:40px}.kcol.is-drop{outline:2px dashed var(--c-brand);outline-offset:-4px;background:var(--crm-row-sel)}.kcard{background:var(--c-surface);border:1px solid var(--c-border);border-radius:var(--radius-sm);padding:10px;box-shadow:var(--shadow-1);cursor:grab}.kcard:active{cursor:grabbing}.kcard.is-dragging{opacity:.5}.kcard__name{font-weight:600;font-size:var(--fs-sm)}.kcard__cli{color:var(--c-text-soft);font-size:var(--fs-xs);margin-top:2px}.kcard__foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px}.kcard__amount{font-weight:700;font-size:var(--fs-sm)}.kcard__prob{font-size:var(--fs-xs);color:var(--c-text-faint)}.icon-btn{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--c-border);background:var(--c-surface);color:var(--c-text-soft);cursor:pointer}.icon-btn:hover{color:var(--c-text);background:var(--c-surface-2)}@media (max-width: 920px){.panel-grid{grid-template-columns:1fr!important}}.cal{padding:var(--sp-3) var(--sp-4) var(--sp-4)}.cal__bar{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-3);flex-wrap:wrap}.cal__title{font-weight:700;font-size:var(--fs-base);margin-left:var(--sp-2)}.cal__wk{display:grid;grid-template-columns:repeat(7,1fr);gap:1px}.cal__wk__d{text-align:center;font-size:var(--fs-xs);text-transform:uppercase;letter-spacing:.03em;color:var(--c-text-faint);padding:4px 0}.cal__grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--c-border);border:1px solid var(--c-border);border-radius:var(--radius-sm);overflow:hidden}.cal__cell{background:var(--c-surface);min-height:96px;padding:4px 5px;cursor:pointer;display:flex;flex-direction:column;gap:3px}.cal__cell:hover{background:var(--crm-row-hover)}.cal__cell--off{background:var(--c-surface-2)}.cal__cell--off .cal__cell__n{color:var(--c-text-faint)}.cal__cell--today{outline:2px solid var(--c-brand);outline-offset:-2px}.cal__cell__n{font-size:var(--fs-xs);font-weight:600;color:var(--c-text-soft)}.cal__cell__evs{display:flex;flex-direction:column;gap:2px}.cal__more{font-size:var(--fs-xs);color:var(--c-text-faint);padding-left:2px}.cal__ev{display:block;width:100%;text-align:left;border:none;border-left:3px solid var(--c-brand);background:var(--c-surface-2);color:var(--c-text);font-size:var(--fs-xs);padding:2px 6px;border-radius:3px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cal__ev:hover{background:var(--crm-row-sel)}.cal__ev__h{font-weight:700;color:var(--c-text-soft)}.cal__week{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--c-border);border:1px solid var(--c-border);border-radius:var(--radius-sm);overflow:hidden}.cal__col{background:var(--c-surface);min-height:160px;padding:6px;cursor:pointer}.cal__col:hover{background:var(--crm-row-hover)}.cal__col--today{outline:2px solid var(--c-brand);outline-offset:-2px}.cal__col__h{font-size:var(--fs-xs);text-transform:capitalize;color:var(--c-text-soft);margin-bottom:6px}.cal__col__evs{display:flex;flex-direction:column;gap:3px}.cal__col__empty{color:var(--c-text-faint);font-size:var(--fs-xs)}.cal__day{cursor:pointer}.cal__day__evs{display:flex;flex-direction:column;gap:4px}.cal__day .cal__ev{white-space:normal;padding:6px 10px;font-size:var(--fs-sm)}@media (max-width: 720px){.cal__cell{min-height:70px}}@media (max-width: 960px){.panel-grid,.record,.form-grid{grid-template-columns:1fr!important}}@media (max-width: 720px){.kpi-row{grid-template-columns:1fr 1fr}.lv__bar{gap:var(--sp-1)}.lv__search{min-width:0;flex:1 1 100%;order:3}.lv__views{flex-wrap:wrap}.kanban{-webkit-overflow-scrolling:touch}.kcol{flex:0 0 78vw}.lv__table thead th,.lv__table tbody td{padding:8px 9px}.record__head{padding:var(--sp-3) var(--sp-4)}}@media (max-width: 520px){.kpi-row{grid-template-columns:1fr}.page-head h1{font-size:var(--fs-lg)}}
