:root{--pine:#0b3731;--pine2:#124a42;--leaf:#178b72;--sun:#f3a33c;--sand:#f6f0e5;--paper:#fffdf8;--ink:#10231f;--muted:#66736f;--line:rgba(11,55,49,.13);--danger:#a43d37;--shadow:0 20px 60px rgba(11,55,49,.11)}
*{box-sizing:border-box}body{margin:0;background:#f4f6f3;color:var(--ink);font-family:"DM Sans",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;line-height:1.5}a{color:inherit}button,input,select,textarea{font:inherit}.portal-login{min-height:100svh;display:grid;grid-template-columns:1fr 1fr}.login-brand{position:relative;display:flex;flex-direction:column;justify-content:flex-end;padding:clamp(32px,7vw,90px);color:white;background:linear-gradient(0deg,rgba(5,32,28,.87),rgba(5,32,28,.22)),url('../images/hero-bg.jpg') center/cover}.login-brand img{position:absolute;top:40px;left:clamp(32px,7vw,90px);width:180px}.login-brand h1{max-width:640px;margin:0;font-family:"Fraunces",Georgia,serif;font-size:clamp(3rem,6vw,6rem);line-height:.95;letter-spacing:-.04em}.login-brand p{max-width:520px;color:rgba(255,255,255,.76);font-size:1.04rem}.login-panel{display:grid;place-items:center;padding:30px}.login-card{width:min(430px,100%);padding:38px;border:1px solid var(--line);border-radius:24px;background:white;box-shadow:var(--shadow)}.login-card h2{margin:0 0 6px;font-family:"Fraunces",Georgia,serif;font-size:2rem;color:var(--pine)}.login-card>p{margin:0 0 26px;color:var(--muted)}.portal-field{display:grid;gap:7px;margin:16px 0}.portal-field label{font-size:.8rem;font-weight:800}.portal-field input,.portal-field select,.portal-field textarea{width:100%;padding:12px 13px;border:1px solid #cad4d0;border-radius:10px;background:white;color:var(--ink);outline:none}.portal-field textarea{min-height:170px;resize:vertical}.portal-field input:focus,.portal-field select:focus,.portal-field textarea:focus{border-color:var(--leaf);box-shadow:0 0 0 4px rgba(23,139,114,.1)}.portal-button{display:inline-flex;align-items:center;justify-content:center;min-height:46px;padding:0 18px;border:0;border-radius:999px;background:var(--pine);color:white;text-decoration:none;font-weight:800;cursor:pointer}.portal-button:hover{background:var(--pine2)}.portal-button.sun{background:var(--sun);color:var(--pine)}.portal-button.ghost{border:1px solid var(--line);background:white;color:var(--pine)}.portal-button.danger{background:#fff0ee;color:var(--danger)}.portal-button:disabled{opacity:.55;cursor:not-allowed}.button-row{display:flex;flex-wrap:wrap;gap:10px}.alert{margin:16px 0;padding:12px 14px;border-radius:10px;background:#fff0ee;color:var(--danger);font-size:.9rem}.alert.success{background:#e5f5ef;color:#0c6049}.app{min-height:100svh;display:grid;grid-template-columns:240px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100svh;padding:26px 18px;color:white;background:var(--pine)}.sidebar-logo{display:block;margin:0 10px 34px}.sidebar-logo img{width:150px}.sidebar-nav{display:grid;gap:6px}.sidebar-nav a{padding:11px 13px;border-radius:10px;color:rgba(255,255,255,.73);text-decoration:none;font-weight:700}.sidebar-nav a.active,.sidebar-nav a:hover{color:white;background:rgba(255,255,255,.1)}.sidebar-bottom{position:absolute;left:18px;right:18px;bottom:22px;padding-top:18px;border-top:1px solid rgba(255,255,255,.13)}.sidebar-bottom p{margin:0 0 10px;color:rgba(255,255,255,.6);font-size:.78rem}.sidebar-bottom button{width:100%}.content{min-width:0;padding:30px clamp(18px,4vw,56px) 60px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:28px}.topbar h1{margin:0;font-family:"Fraunces",Georgia,serif;font-size:clamp(2rem,4vw,3rem);color:var(--pine)}.topbar p{margin:4px 0 0;color:var(--muted)}#dashboard-root{transition:opacity .15s ease}#dashboard-root.is-loading{opacity:.6;pointer-events:none}
.filters-panel{margin-bottom:22px}.filters{display:flex;flex-direction:column;gap:10px;padding:16px;border:1px solid var(--line);border-radius:16px;background:white;box-shadow:0 8px 30px rgba(11,55,49,.05)}.filters-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.filters-row select,.filters-row input[type=date]{min-height:42px;padding:8px 11px;border:1px solid #cad4d0;border-radius:9px;background:white;color:var(--ink)}.field-search{flex:1;min-width:220px}.field-search input{width:100%;min-height:42px;padding:8px 12px;border:1px solid #cad4d0;border-radius:9px;background:white}.date-presets{display:flex;gap:6px;flex-wrap:wrap}.chip-btn{min-height:36px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--sand);color:var(--pine);font-weight:800;font-size:.78rem;cursor:pointer}.chip-btn:hover{background:#eee3ce}.active-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.active-chips:empty{margin-top:0}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;background:#e6efff;color:#31578f;font-size:.78rem;font-weight:800;text-decoration:none}.chip:hover{background:#d7e4ff}.chip span{opacity:.7}
.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:24px}.kpi-tile{padding:18px 20px;border:1px solid var(--line);border-radius:16px;background:white;box-shadow:0 8px 30px rgba(11,55,49,.05)}.kpi-label{display:block;color:var(--muted);font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.kpi-value{display:block;margin-top:8px;font-family:"Fraunces",Georgia,serif;color:var(--pine);font-size:2.1rem;line-height:1}.kpi-sub{display:flex;align-items:center;gap:6px;margin-top:9px;flex-wrap:wrap}.kpi-sub-text{color:var(--muted);font-size:.8rem}.kpi-delta{font-size:.78rem;font-weight:900;padding:2px 7px;border-radius:999px}.kpi-delta.up{background:#e5f5ef;color:#0c6049}.kpi-delta.down{background:#fff0ee;color:var(--danger)}.kpi-delta.flat{background:#edf0ee;color:var(--muted)}
.charts-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin-bottom:24px}.chart-card{padding:18px 20px 20px;border:1px solid var(--line);border-radius:16px;background:white;box-shadow:0 8px 30px rgba(11,55,49,.05);min-width:0}.chart-card-wide{grid-column:1/-1}.chart-card h3{margin:0 0 14px;color:var(--pine);font-size:.95rem;font-weight:800}.chart-empty,.chart-noscript{margin:0;padding:30px 8px;text-align:center;color:var(--muted);font-size:.85rem}.chart-skeleton{min-height:220px;border-radius:10px;background:#f2f4f1}
.chart-trend{position:relative}.trend-wrapper{position:relative}.trend-svg{width:100%;height:auto;display:block;overflow:visible}.trend-grid line{stroke:var(--line);stroke-width:1}.trend-area{fill:rgba(23,139,114,.12);stroke:none}.trend-line{fill:none;stroke:var(--leaf);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.trend-dot-end{fill:var(--leaf)}.trend-axis-label{fill:var(--muted);font-size:9px}.trend-hover-line{stroke:var(--pine);stroke-width:1;stroke-dasharray:3 3}.trend-hover-dot{fill:var(--pine);stroke:white;stroke-width:2}.trend-hit{fill:transparent;cursor:crosshair}.trend-tooltip{position:absolute;top:6px;left:var(--tt-left,50%);transform:translateX(-8%);padding:6px 10px;border-radius:8px;background:var(--pine);color:white;font-size:.76rem;font-weight:700;white-space:nowrap;pointer-events:none;box-shadow:0 8px 20px rgba(11,55,49,.25)}.trend-tooltip.align-end{transform:translateX(-92%)}
.bar-list-plain{list-style:none;margin:0;padding:0;display:grid;gap:12px}.bar-row,.bar-row-static{display:block;text-decoration:none;color:inherit;border-radius:10px;padding:2px}.bar-row{cursor:pointer}.bar-row:hover .bar-row-label{color:var(--pine)}.bar-row.is-active{background:var(--sand)}.bar-row.is-active .bar-row-label{color:var(--pine);font-weight:900}.bar-row-top{display:flex;justify-content:space-between;gap:10px;margin-bottom:5px;font-size:.83rem}.bar-row-label{color:var(--ink);font-weight:700}.bar-row-meta{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.bar-row-track{display:block;height:6px;border-radius:999px;background:var(--line);overflow:hidden}.bar-row-fill{display:block;height:100%;width:var(--w,0%);border-radius:999px;background:var(--leaf)}.bar-row-fill-good{background:var(--leaf)}.bar-row-fill-critical{background:var(--danger)}.bar-row-fill-muted{background:var(--muted)}.panel{border:1px solid var(--line);border-radius:18px;background:white;box-shadow:0 8px 30px rgba(11,55,49,.05);overflow:hidden}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;white-space:nowrap}.data-table th,.data-table td{padding:14px 16px;border-bottom:1px solid var(--line);text-align:left}.data-table th{color:var(--muted);background:#fafbf9;font-size:.72rem;text-transform:uppercase;letter-spacing:.07em}.data-table tr:last-child td{border-bottom:0}.data-table tbody tr:hover{background:#fbfcfa}.data-table a{font-weight:800;text-decoration:none;color:var(--pine)}.data-table small{display:block;color:var(--muted)}.status{display:inline-flex;padding:5px 9px;border-radius:999px;background:#edf0ee;color:var(--muted);font-size:.73rem;font-weight:900;text-transform:uppercase;letter-spacing:.05em}.status-new{background:#fff0d7;color:#885714}.status-contacted{background:#e6efff;color:#31578f}.status-qualified{background:#e5f5ef;color:#0c6049}.status-proposal{background:#f0e8ff;color:#63439a}.status-won{background:#dff5e7;color:#1d6c3a}.status-lost{background:#fff0ee;color:#8e3732}.status-newsletter{background:#eef1fb;color:#3c4a8e}.record{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;margin-bottom:24px}.record-card{padding:24px;border:1px solid var(--line);border-radius:18px;background:white}.record-card h2{margin:0 0 4px;font-family:"Fraunces",Georgia,serif;color:var(--pine);font-size:2rem}.record-card h3{margin:24px 0 8px;color:var(--pine);font-size:1rem}.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:22px}.meta-item span{display:block;color:var(--muted);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.meta-item strong,.meta-item a{display:block;margin-top:3px;font-size:.94rem;word-break:break-word}.record-message{padding:16px;border-radius:12px;white-space:pre-wrap;background:var(--sand);color:#40514c}.empty{padding:50px 20px;text-align:center;color:var(--muted)}.pagination{display:flex;justify-content:space-between;align-items:center;padding:16px;color:var(--muted);font-size:.85rem}.mobile-head{display:none}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:1000px){.app{grid-template-columns:1fr}.sidebar{position:static;height:auto;display:flex;align-items:center;gap:14px;padding:14px 18px}.sidebar-logo{margin:0 auto 0 0}.sidebar-logo img{width:130px}.sidebar-nav{display:flex}.sidebar-bottom{position:static;padding:0;border:0}.sidebar-bottom p{display:none}.sidebar-bottom button{width:auto}.kpi-grid{grid-template-columns:1fr 1fr}.charts-grid{grid-template-columns:1fr}.record{grid-template-columns:1fr}.record-card:last-child{order:-1}}
@media(max-width:700px){.portal-login{grid-template-columns:1fr}.login-brand{min-height:44svh}.login-brand h1{font-size:3.2rem}.login-panel{padding:18px}.login-card{padding:26px}.sidebar{flex-wrap:wrap}.sidebar-logo{width:calc(100% - 120px)}.sidebar-nav{order:3;width:100%;overflow:auto}.content{padding:22px 14px 50px}.topbar{align-items:flex-start;flex-direction:column}.kpi-grid{grid-template-columns:1fr 1fr}.kpi-tile{padding:15px}.record-card{padding:18px}.meta-grid{grid-template-columns:1fr}.filters-row{flex-direction:column;align-items:stretch}.filters-row input,.filters-row select{width:100%}.date-presets{justify-content:space-between}.data-table th,.data-table td{padding:12px}.footer{display:none}}
.login-submit{width:100%;margin-top:12px}.convert-check{display:flex;gap:9px;margin:18px 0}
