:root{--navy:#0f3d5e;--navy2:#0a2b43;--teal:#0e8f8a;--bg:#f3f6f9;--card:#fff;--line:#d9e1e8;--text:#14212b;--muted:#5d7080;--danger:#b42318;--warn:#b54708}
*{box-sizing:border-box}
body{margin:0;font:15px/1.5 "Segoe UI",system-ui,-apple-system,Roboto,Arial,sans-serif;color:var(--text);background:var(--bg)}
a{color:#0b6bb5}
.topbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--navy);color:#fff;padding:10px 20px;position:sticky;top:0;z-index:10}
.brand{color:#fff;font-weight:700;font-size:18px;text-decoration:none;letter-spacing:.2px}
.spacer{flex:1}
.whoami{font-size:13px;opacity:.95}
.badge{display:inline-block;padding:3px 11px;border-radius:999px;font-size:12.5px;font-weight:600;text-decoration:none;background:#e2e8f0;color:#1f2937}
.topbar .badge{border:1px solid rgba(255,255,255,.35)}
.badge-paid{background:#d1fadf;color:#05603a}.badge-cancelled{background:#fee4e2;color:#912018}.badge-free,.badge-no-plan{background:#e0eaf3;color:#0f3d5e}
.subnav{display:flex;flex-wrap:wrap;gap:2px;background:var(--navy2);padding:0 14px}
.subnav a{color:#cfe0ee;text-decoration:none;padding:9px 12px;font-size:14px;white-space:nowrap}
.subnav a:hover{background:rgba(255,255,255,.1);color:#fff}
.subnav a.active{background:#fff;color:var(--navy);font-weight:700;border-bottom:3px solid #f5b942;border-radius:6px 6px 0 0}
.subnav a.active:hover{background:#fff;color:var(--navy)}
.container{max-width:1280px;margin:0 auto;padding:22px 16px 60px}
h1{font-size:24px;margin:6px 0 14px;color:var(--navy)}h2{font-size:18px;margin:26px 0 10px;color:var(--navy)}h3{margin:0 0 6px}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:20px;margin-bottom:18px}
.card.narrow{max-width:440px;margin:30px auto}
label{display:block;font-weight:600;margin:12px 0 4px;font-size:13.5px}
input[type=text],input[type=email],input[type=password],input[type=search],input[type=date],input[type=number],input[type=file],textarea,select{width:100%;padding:9px 11px;border:1px solid #b9c6d2;border-radius:7px;font:inherit;background:#fff}
input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:3px solid rgba(14,143,138,.4);outline-offset:1px}
.pw-wrap{position:relative}.pw-wrap input{padding-right:44px}
.pw-toggle{position:absolute;right:4px;top:50%;transform:translateY(-50%);border:0;background:none;color:#52667a;cursor:pointer;padding:6px;border-radius:6px;display:flex}
.pw-toggle .slash{display:none}.pw-toggle.on .slash{display:block}
.btn{display:inline-block;border:1px solid transparent;border-radius:7px;padding:9px 16px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none;text-align:center}
.btn-primary{background:var(--teal);color:#fff}.btn-primary:hover{background:#0b7a76}.btn-primary:disabled{opacity:.5;cursor:not-allowed}
.btn-light{background:#fff;color:var(--navy);border-color:#b9c6d2}.topbar .btn-light{padding:5px 12px}
.btn-export{display:inline-flex;align-items:center;gap:7px;background:var(--teal);color:#fff;padding:5px 13px;border-radius:999px;font-size:13px;box-shadow:0 1px 3px rgba(0,0,0,.25)}.btn-export:hover{background:#0b7a76}.btn-export svg{flex:none}
.org-chip{display:inline-flex;align-items:center;gap:6px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:600;color:#fff;text-decoration:none;border:1px solid rgba(255,255,255,.45);border-radius:999px;padding:3px 11px}.org-chip:hover{background:rgba(255,255,255,.14)}.org-chip svg{flex:none}
.btn-danger{background:#fff;color:var(--danger);border-color:#f0b4ae}
.btn.block{display:block;width:100%;margin-top:16px}
.inline{display:inline;margin:0}
.link{background:none;border:0;color:#0b6bb5;cursor:pointer;font:inherit;padding:0}.link.danger{color:var(--danger)}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:14px;border:1px solid}
.flash-success{background:#ecfdf3;border-color:#abefc6;color:#05603a}.flash-error{background:#fef3f2;border-color:#fecdca;color:#912018}
.muted{color:var(--muted)}.sr{position:absolute;left:-9999px}
/* Each list scrolls inside its own box (both scroll bars always visible at the box edge, header row stays in view) */
.table-wrap{overflow:auto;max-height:calc(100vh - 240px);min-height:200px;background:#fff;border:1px solid var(--line);border-radius:10px;scrollbar-width:auto;scrollbar-color:#6f8aa3 #e3eaf1}
.table-wrap::-webkit-scrollbar{width:14px;height:14px}.table-wrap::-webkit-scrollbar-track{background:#e3eaf1}
.table-wrap::-webkit-scrollbar-thumb{background:#6f8aa3;border-radius:8px;border:3px solid #e3eaf1}.table-wrap::-webkit-scrollbar-thumb:hover{background:#0f3d5e}
html{overflow-y:scroll}
.to-top{position:fixed;right:18px;bottom:18px;z-index:30;border:0;border-radius:999px;background:var(--navy);color:#fff;padding:10px 14px;font-size:13px;cursor:pointer;box-shadow:0 2px 8px rgba(0,0,0,.3);display:none}
.to-top.show{display:block}
td.na-cell{background:#eef1f4}
table{border-collapse:collapse;width:100%;font-size:13.5px}
th{background:#eaf0f5;text-align:left;padding:9px 11px;white-space:nowrap;color:var(--navy);position:sticky;top:0}
td{padding:8px 11px;border-top:1px solid #edf1f5;vertical-align:top}
tr:hover td{background:#fafcfd}
.pre{white-space:pre-line}
.actions-cell{white-space:nowrap}.actions-cell a{margin-right:8px}
.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.search{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px;max-width:760px}.search input{flex:1 1 220px;min-width:180px}.search select{flex:0 1 240px;min-width:0;max-width:240px}
.pager{display:flex;gap:14px;align-items:center;justify-content:center;margin-top:14px}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:10px;margin-bottom:8px}
.stat{background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px 10px;color:var(--muted);font-size:12px;line-height:1.25}
.stat span{display:block;font-size:26px;font-weight:700;color:var(--navy)}.stat.warn span{color:var(--warn)}
.grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
.price{font-size:20px;font-weight:700;color:var(--teal);margin:4px 0 8px}
.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:0 18px}
.form-grid .wide{grid-column:1/-1}
.actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.kv{display:grid;grid-template-columns:minmax(150px,230px) 1fr;gap:6px 16px;margin:0}
.kv dt{font-weight:600;color:var(--muted)}.kv dd{margin:0;word-break:break-word}
.ai{white-space:pre-wrap;background:#f6f9fb;border:1px solid var(--line);border-radius:8px;padding:12px;font:inherit}
.check{display:flex;gap:8px;align-items:center;font-weight:400}.check input{width:auto}
@media (max-width:640px){.topbar{padding:10px 12px}.spacer{display:none}.kv{grid-template-columns:1fr}.container{padding:16px 12px 50px}}
.field.locked input,.field.locked textarea{background:#eef1f4;color:#555}
tr.due td{background:#fff7e0}
.badge-obsolete{background:#fef0c7;color:#93370d;margin-left:8px;vertical-align:middle}.badge-obsolete[hidden]{display:none}
.na{color:#7a8794;font-style:italic}
th a.sort{color:inherit;text-decoration:none;display:inline-flex;align-items:center;gap:5px}
th .arrow{font-size:10px;opacity:.45;margin-left:5px}th a.sort.active .arrow,th[aria-sort=ascending] .arrow,th[aria-sort=descending] .arrow{opacity:1;color:var(--blue,#1f6fb2)}
th.sortable{cursor:pointer;user-select:none}th.sortable:hover,th a.sort:hover{color:#0b5394}
.field .ts-wrapper{width:100%}.field .ts-control{border:1px solid #b9c6d2;border-radius:7px;padding:5px 8px;font:inherit;min-height:40px}
.field .ts-wrapper.multi .ts-control>div{background:#e0eaf3;color:#0f3d5e;border-radius:999px;padding:2px 10px;font-size:12.5px;font-weight:600}
.field .ts-wrapper.focus .ts-control{border-color:#1f6fb2;box-shadow:0 0 0 2px rgba(31,111,178,.18)}

.disclaimer-bar{max-width:1280px;margin:8px auto 0;padding:10px 14px;font-size:12.5px;line-height:1.45;color:#5b4a14;background:#fff8e1;border:1px solid #f0dca0;border-radius:8px}
.disclaimer-bar a{color:#0b5394;white-space:nowrap}
footer a{color:#0b5394}
.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.legal p{line-height:1.6;max-width:80ch}

.role-chip{font-size:12px;padding:3px 10px;border-radius:999px;background:rgba(255,255,255,.14);color:#fff;white-space:nowrap}
.role-chip.role-user{background:#fff3cd;color:#664d03}
td .role-chip{background:#e0f2f1;color:#0b5c58}
/* A sideways swipe/scroll at the end of a wide table must not trigger the browser's Back/Forward gesture */
html,body{overscroll-behavior-x:none}
.table-wrap{overscroll-behavior-x:contain}

.ai-card h2{margin:0}.ai-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:4px}
.ai-quota{font-size:12.5px;color:var(--muted);background:#eef3f7;border:1px solid var(--line);border-radius:999px;padding:3px 11px}
.ai-actions{margin:12px 0 18px}
.ai-report{border:1px solid var(--line);border-left:4px solid var(--teal);border-radius:8px;margin-top:14px;overflow:hidden;background:#fff}
.ai-report header{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 14px;background:#f6f9fb;border-bottom:1px solid var(--line)}
.ai-report h3{margin:0;font-size:15px;color:var(--navy)}.ai-report .muted{font-size:12px}
.ai-report .ai{border:0;border-radius:0;background:#fff;margin:0;padding:14px;line-height:1.55}
.btn-sm{padding:5px 12px;font-size:13px}

.band{display:inline-block;padding:3px 12px;border-radius:999px;font-weight:700;font-size:13px;color:#fff;background:#5d7080}
.band-none{background:#2e7d32}.band-low{background:#0e8f8a}.band-moderate{background:#b54708}.band-high{background:#b42318}

/* Gantt Chart */
.btn-cancel{background:#c2410c;color:#fff;border-color:#c2410c}.btn-cancel:hover{background:#9a3412}
.g-tabs{display:flex;gap:8px;align-items:center;margin:8px 0}.g-tabs a{padding:7px 14px;border:1px solid #b9c6d2;border-radius:999px;text-decoration:none;color:var(--navy);font-weight:600;font-size:14px}.g-tabs a.on{background:var(--navy);color:#fff;border-color:var(--navy)}
.g-legend{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12.5px;margin:6px 0 12px}.g-legend span{display:inline-flex;align-items:center;gap:5px}.g-legend i{width:14px;height:10px;border-radius:2px;display:inline-block}.g-legend i.dia{width:10px;height:10px;transform:rotate(45deg);border-radius:1px}.g-legend i.td{width:2px;height:14px;background:#b42318;border-radius:0}
.g-card{overflow-x:auto}.g-card h2{margin:0 0 8px;font-size:16px}.g-card h2 small{font-weight:400;margin-left:8px}
.g-row{display:flex;align-items:stretch;border-top:1px solid #e3e9ef;min-width:760px}.g-row.g-head{border-top:0}
.g-label{flex:0 0 250px;padding:6px 10px 6px 0;display:flex;flex-direction:column;font-size:13px;line-height:1.3}.g-label a{font-weight:600;text-decoration:none;color:var(--navy)}.g-label small{font-size:11.5px}
.g-track{position:relative;flex:1;min-height:34px}.g-head .g-track{min-height:22px}
.g-tick{position:absolute;top:0;bottom:0;border-left:1px solid #cdd8e2}.g-tick i{font-style:normal;font-size:11px;color:#5d7080;padding-left:3px;white-space:nowrap}
.g-grid{position:absolute;top:0;bottom:0;border-left:1px dotted #d6dee6}
.g-today{position:absolute;top:0;bottom:0;border-left:2px solid #b42318;z-index:3}
.g-filters{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end;margin:8px 0}.g-filters label{display:block}.g-filters input,.g-filters select{width:auto;min-width:170px;height:40px;box-sizing:border-box;padding:8px 10px;font:inherit}
.g-bar{position:absolute;top:7px;height:20px;border-radius:4px;background:color-mix(in srgb,var(--c) 28%,#fff);border:1px solid var(--c);overflow:hidden;z-index:2}
.g-fill{position:absolute;left:0;top:0;bottom:0;background:var(--c)}.g-bar em{position:relative;font-style:normal;font-size:11px;font-weight:700;color:#0b2a43;padding-left:5px;line-height:18px;text-shadow:0 0 3px #fff}.g-bar.hi em{color:#fff;text-shadow:0 0 3px rgba(0,0,0,.55)}
.g-mile{position:absolute;top:13px;width:12px;height:12px;margin-left:-6px;background:var(--c);transform:rotate(45deg);z-index:4;border-radius:2px}
.g-none{position:absolute;left:8px;top:8px;font-size:12px;color:#8a97a3;font-style:italic}
.g-st.g-complete{color:#2e7d32}.g-st.g-overdue{color:#b42318;font-weight:700}.g-st.g-inprogress{color:#2f6fa8}
@media print{.topbar,.subnav,.g-noprint,.filters,.g-filters,footer{display:none!important}.g-card{break-inside:avoid;box-shadow:none}.g-break{break-inside:avoid}.g-row{min-width:0}*{-webkit-print-color-adjust:exact;print-color-adjust:exact}}

/* date rules on the Opportunities form and list */
.sched-warn{display:block;color:#b42318;font-weight:600;margin-top:3px}.sched-warn:empty,.sched-hint:empty{display:none}.sched-hint{display:block;margin-top:2px}
.date-warning{background:#fef3f2;border:1px solid #f0b4ae;color:#7a271a;border-radius:8px;padding:10px 14px;margin:10px 0}.date-warning ul{margin:6px 0 4px 18px}
.date-flag{color:#b42318;cursor:help}.field input.sched-bad{border-color:#b42318;background:#fff7f6}
.field .check{display:flex;gap:8px;align-items:center;font-weight:600}
.btn-print{background:var(--navy);color:#fff;border-color:var(--navy)}.btn-print:hover{background:var(--navy2)}
.btn-clear{background:#475569;color:#fff;border-color:#475569}.btn-clear:hover{background:#334155}
.flash-info{background:#eff8ff;border-color:#b2ddff;color:#175cd3}
.ai-text{line-height:1.55}.ai-text h4{margin:12px 0 4px;color:var(--navy);font-size:14px}.ai-text p{margin:6px 0}.ai-text ul{margin:4px 0 8px 18px;padding:0}

.grid3 .card{display:flex;flex-direction:column;min-height:340px}.grid3 .card ul{flex:1;padding-left:20px;overflow-wrap:anywhere}.grid3 .card li{margin:0 0 6px}.plan-list{margin:8px 0}
.btn-cancel{background:#b54708;color:#fff;border-color:#b54708}.btn-cancel:hover{background:#93370d;color:#fff}

.acting-banner{background:#7c2d12;color:#fff;padding:8px 16px;text-align:center;font-size:14px}.acting-banner .btn{padding:2px 10px;margin-left:10px}
