:root{
  --radius:18px;
  --shadow:0 20px 50px rgba(0,0,0,.45);
}

:root[data-theme="dark"]{
  --ink:#ffffff;
  --muted:#9c9ba8;
  --muted-2:#6f6e7a;
  --line:rgba(255,255,255,.08);
  --line-strong:rgba(255,255,255,.14);
  --panel:#131319;
  --panel-2:#191922;
  --bg:#08080a;
  --teal:#d4af37;
  --teal-2:#f0c14b;
  --teal-soft:rgba(212,175,55,.14);
  --navy:#0d1b2e;
  --green:#0ca30c;
  --green-soft:rgba(12,163,12,.16);
  --red:#d03b3b;
  --red-soft:rgba(227,90,90,.16);
  --series-a:#3987e5;
  --series-b:#d95926;
  --series-c:#199e70;
  --series-other:#4d4d57;
  --glow:0 0 0 1px rgba(255,255,255,.06), 0 20px 50px rgba(0,0,0,.45);
  --glow-bg:
    radial-gradient(ellipse 60rem 40rem at 50% -10%, rgba(212,175,55,.16), transparent 60%),
    radial-gradient(ellipse 40rem 30rem at 90% 10%, rgba(57,135,229,.08), transparent 60%);
}

:root[data-theme="light"]{
  --ink:#182033;
  --muted:#6f7890;
  --muted-2:#97a0b8;
  --line:#e8eaf1;
  --line-strong:#d7dbe8;
  --panel:#ffffff;
  --panel-2:#ffffff;
  --bg:#f5f6fb;
  --teal:#b8862e;
  --teal-2:#d4af37;
  --teal-soft:#faf3e0;
  --navy:#0d1b2e;
  --green:#189b68;
  --green-soft:#e8f7f1;
  --red:#c84545;
  --red-soft:#ffeded;
  --series-a:#2a78d6;
  --series-b:#eb6834;
  --series-c:#1baf7a;
  --series-other:#c3c2b7;
  --glow:0 14px 40px rgba(21,27,45,.08);
  --glow-bg:
    radial-gradient(ellipse 60rem 40rem at 50% -10%, rgba(212,175,55,.10), transparent 60%);
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background-color:var(--bg);
  background-image:var(--glow-bg);
  color:var(--ink);
  font-family:Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
  line-height:1.45;
  transition:background-color .2s ease, color .2s ease;
}
button,select{font:inherit}
button{cursor:pointer}
a{color:inherit}
.shell{max-width:1320px;margin:0 auto;padding:24px}

.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.brand{display:flex;align-items:center;gap:12px}
.brand-mark{
  width:42px;height:42px;border-radius:50%;
  object-fit:cover;
  box-shadow:0 0 0 1px rgba(255,255,255,.12), 0 8px 20px rgba(212,175,55,.28)
}
.brand-title{font-weight:800;letter-spacing:-.01em;font-size:17px}
.brand-sub{color:var(--muted);font-size:13px}
.top-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.range-picker{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);font-weight:650;white-space:nowrap}
.range-picker select{border:1px solid var(--line-strong);border-radius:10px;padding:7px 10px;background:var(--panel-2);color:var(--ink)}
.pill{padding:6px 11px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.pill.info{background:var(--teal-soft);color:var(--teal-2)}
.pill.muted{background:transparent;color:var(--muted);font-weight:650}

.theme-toggle{
  display:flex;align-items:center;gap:4px;
  border:1px solid var(--line-strong);border-radius:999px;padding:3px;
  background:var(--panel-2);
}
.theme-toggle button{
  border:0;background:transparent;color:var(--muted);
  padding:6px 12px;border-radius:999px;font-size:12.5px;font-weight:700;
  display:flex;align-items:center;gap:5px;
}
.theme-toggle button.active{background:linear-gradient(135deg, var(--teal-2), var(--teal));color:#1a1305}

.tabs{
  position:sticky;top:10px;z-index:10;
  display:flex;flex-wrap:wrap;gap:6px;
  margin:16px 0;padding:7px;background:var(--panel-2);
  border:1px solid var(--line);border-radius:14px;
  backdrop-filter:blur(14px);box-shadow:0 8px 24px rgba(0,0,0,.16)
}
.tab{border:0;background:transparent;color:var(--muted);padding:9px 14px;border-radius:10px;font-weight:750;white-space:nowrap;font-size:14px}
.tab.active{background:linear-gradient(135deg, var(--teal-2), var(--teal));color:#1a1305;box-shadow:0 4px 16px rgba(212,175,55,.35)}
.view{display:none}
.view.active{display:block}

.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:16px}
.card{
  background:linear-gradient(180deg, var(--panel-2), var(--panel));
  border:1px solid var(--line);border-top-width:3px;border-radius:var(--radius);
  padding:16px 18px;box-shadow:var(--glow);
  position:relative;
}
.cards .card:nth-child(4n+1){border-top-color:var(--series-a)}
.cards .card:nth-child(4n+2){border-top-color:var(--series-b)}
.cards .card:nth-child(4n+3){border-top-color:var(--series-c)}
.cards .card:nth-child(4n+4){border-top-color:var(--teal-2)}
.card .card-label{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.card .card-value{font-size:28px;font-weight:800;margin-top:6px;letter-spacing:-.02em;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;color:var(--ink)}
.card .card-hint{font-size:12px;color:var(--muted);margin-top:4px}
.delta{font-size:12.5px;font-weight:800;padding:2px 7px;border-radius:999px;letter-spacing:0}
.delta-good{background:var(--green-soft);color:var(--green)}
.delta-bad{background:var(--red-soft);color:var(--red)}
.delta-flat{background:rgba(128,128,128,.14);color:var(--muted)}

.panel{background:linear-gradient(180deg, var(--panel-2), var(--panel));border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--glow);margin-bottom:16px}

/* a <details class="panel panel-details"> tucks secondary tables/charts
   behind a click, so a data-dense tab (e.g. Blog) leads with the few things
   worth glancing at every time, not everything at once - the inner panels
   keep their own padding, so this one's is dropped to avoid doubling up */
.panel-details{padding:0;overflow:hidden}
.panel-details summary{padding:16px 20px;cursor:pointer;list-style:none}
.panel-details summary::-webkit-details-marker{display:none}
.panel-details summary h2{display:inline;margin:0}
.panel-details summary::before{content:"▸";display:inline-block;width:14px;color:var(--muted);font-size:12px;transition:transform .15s ease}
.panel-details[open] summary::before{transform:rotate(90deg)}
.panel-details[open] summary{border-bottom:1px solid var(--line)}
.panel-details .panel{margin:16px 20px;box-shadow:none}
.panel-details .panel:last-child{margin-bottom:20px}
.panel h2{font-size:15px;margin:0 0 14px;font-weight:800;color:var(--ink)}
.h2-note{font-size:11.5px;font-weight:600;color:var(--muted);text-transform:none;letter-spacing:0}
.panel-intro{color:var(--muted);font-size:13.5px;line-height:1.6;margin:0}
.community-stat{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.community-stat-value{font-size:36px;font-weight:800;color:var(--ink)}
.community-stat-label{color:var(--muted);font-size:13px}
.community-stat .btn-add-ticket{margin-left:auto;padding:7px 14px;font-size:12.5px}
.community-stat-updated{color:var(--muted);font-size:12px;margin-top:6px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media (max-width:820px){.grid-2{grid-template-columns:1fr}}

.chart-box{min-height:220px}
.chart-empty,.empty{color:var(--muted);font-size:13px;padding:24px 0;text-align:center}
.chart-svg{width:100%;height:auto;display:block}
.chart-line{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.chart-line.a{stroke:var(--series-a)}
.chart-line.b{stroke:var(--series-b)}
.chart-grid{stroke:var(--line);stroke-width:1}
.chart-axis{fill:var(--muted-2);font-size:10px}
.chart-legend{display:flex;gap:20px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin-bottom:10px}
.chart-legend i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:middle}
.chart-legend i.a{background:var(--series-a)}
.chart-legend i.b{background:var(--series-b)}
.chart-legend i.c{background:var(--series-c)}
.chart-legend i.other{background:var(--series-other)}
.chart-legend strong{color:var(--ink);font-weight:800}
.chart-legend .legend-date{color:var(--muted);font-size:11.5px}
.chart-dot{cursor:default;pointer-events:none}
.chart-dot.a{fill:var(--series-a);stroke:var(--panel);stroke-width:1.5}
.chart-dot.b{fill:var(--series-b);stroke:var(--panel);stroke-width:1.5}
.chart-overlay{cursor:crosshair}
.chart-crosshair{stroke:var(--line-strong);stroke-width:1;stroke-dasharray:3 3;pointer-events:none}
.chart-scroll{overflow-x:auto}

/* donut chart */
.donut-wrap{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.donut-svg{flex:0 0 auto;width:180px;height:180px}
.donut-seg{cursor:pointer;transition:opacity .15s ease}
.donut-seg:hover{opacity:.82}
.donut-center-value{font-size:22px;font-weight:800;fill:var(--ink)}
.donut-center-label{font-size:10px;fill:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.donut-legend{display:flex;flex-direction:column;gap:10px;flex:1 1 200px;min-width:180px}
.donut-legend-row{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}
.donut-legend-row i{display:inline-block;width:10px;height:10px;border-radius:3px;flex:0 0 auto}
.donut-legend-name{display:flex;align-items:center;gap:8px;color:var(--muted);min-width:0}
.donut-legend-name span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.donut-legend-value{font-weight:800;color:var(--ink);white-space:nowrap}
.donut-legend-share{color:var(--muted);font-size:11.5px;margin-left:6px}

/* horizontal bar chart */
.hbar-list{display:flex;flex-direction:column;gap:14px}
.hbar-row{display:grid;grid-template-columns:120px 1fr auto;align-items:center;gap:12px;font-size:13px}
.hbar-name{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hbar-track{position:relative;height:20px;border-radius:6px;background:rgba(128,128,128,.14);overflow:hidden}
.hbar-fill{position:absolute;inset:0 auto 0 0;height:100%;border-radius:6px;min-width:6px;cursor:pointer;transition:opacity .15s ease}
.hbar-fill:hover{opacity:.82}
.hbar-value{font-weight:800;color:var(--ink);white-space:nowrap;min-width:44px;text-align:right}
@media (max-width:560px){.hbar-row{grid-template-columns:88px 1fr auto;font-size:12px}}

.chart-tooltip{
  display:none;position:fixed;z-index:100;pointer-events:none;
  background:var(--panel-2);color:var(--ink);padding:9px 12px;border-radius:10px;
  border:1px solid var(--line-strong);
  font-size:12.5px;box-shadow:0 16px 40px rgba(0,0,0,.3);max-width:240px;
}
.chart-tooltip-date{font-weight:800;margin-bottom:5px;font-size:11.5px;color:var(--muted)}
.chart-tooltip-row{display:flex;align-items:center;gap:6px;white-space:nowrap}
.chart-tooltip-row i{display:inline-block;width:8px;height:8px;border-radius:2px;flex:0 0 auto}
.chart-tooltip-row i.a{background:var(--series-a)}
.chart-tooltip-row i.b{background:var(--series-b)}
.chart-tooltip-row i.c{background:var(--series-c)}
.chart-tooltip-row i.other{background:var(--series-other)}

.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{text-align:left;color:var(--muted);font-weight:700;font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;padding:8px 10px;border-bottom:1px solid var(--line)}
td{padding:9px 10px;border-bottom:1px solid var(--line);color:var(--ink)}
tr:last-child td{border-bottom:0}
tr:hover td{background:rgba(128,128,128,.06)}

.issue{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13.5px;line-height:1.5}
.issue:last-child{border-bottom:0}
.issue-dot{flex:0 0 auto;width:8px;height:8px;border-radius:50%;margin-top:5px}
.issue-warn .issue-dot{background:#eda100}
.issue-error .issue-dot{background:var(--red)}
.issue-info .issue-dot{background:var(--teal-2)}

/* team meetings / action-item checklist */
.team-add{margin-bottom:16px}
.btn-add-ticket{border:1px solid var(--line-strong);background:linear-gradient(135deg, var(--teal-2), var(--teal));color:#1a1305;font-weight:800;font-size:13px;padding:8px 16px;border-radius:10px;cursor:pointer}
.team-add-form{margin-top:10px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--panel-2);display:flex;flex-direction:column;gap:8px}
.team-add-form.hidden{display:none}
.team-add-row{display:flex;gap:8px;flex-wrap:wrap}
.team-add-row > input,.team-add-row > select{flex:1 1 160px}
.team-add-form input,.team-add-form textarea,.team-add-form select{border:1px solid var(--line-strong);border-radius:8px;padding:8px 10px;background:var(--panel);color:var(--ink);font-size:13.5px;font-family:inherit;width:100%}
.team-add-form textarea{min-height:60px;resize:vertical}
.team-add-field{display:flex;flex-direction:column;gap:4px}
.team-add-field span{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.team-add-row .team-add-field{flex:1 1 160px}
.team-add-actions{display:flex;gap:8px}
.team-add-actions .btn-primary{border:0;background:linear-gradient(135deg, var(--teal-2), var(--teal));color:#1a1305;font-weight:800;font-size:13px;padding:8px 16px;border-radius:8px;cursor:pointer}
.team-add-actions button:not(.btn-primary){border:1px solid var(--line-strong);background:transparent;color:var(--muted);font-size:13px;padding:8px 16px;border-radius:8px;cursor:pointer}
.team-filters{margin-bottom:16px;display:flex;flex-direction:column;gap:8px}
.team-filter-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.team-filter-label{flex:0 0 auto;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);width:56px}
.owner-filter{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:0}
.owner-filter button{border:1px solid var(--line-strong);background:var(--panel-2);color:var(--muted);padding:6px 14px;border-radius:999px;font-size:13px;font-weight:700}
.owner-filter button.active{background:linear-gradient(135deg, var(--teal-2), var(--teal));color:#1a1305;border-color:transparent}
.status-grid{display:flex;flex-direction:column;gap:10px}
.status-section{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--panel-2)}
.status-section.hidden{display:none}
.status-header{width:100%;display:flex;align-items:center;gap:10px;border:0;background:transparent;color:var(--ink);padding:12px 14px;font-size:13px;font-weight:800;text-align:left;cursor:pointer}
.status-chevron{flex:0 0 auto;width:10px;color:var(--muted);font-size:11px;transition:transform .15s ease}
.status-section.collapsed .status-chevron{transform:rotate(-90deg)}
.status-dot{flex:0 0 auto;width:9px;height:9px;border-radius:50%;background:var(--muted)}
.status-section-in_progress .status-dot{background:var(--teal-2)}
.status-section-done .status-dot{background:var(--green)}
.status-label{flex:0 0 auto;text-transform:uppercase;letter-spacing:.04em;font-size:11.5px}
.status-count{color:var(--muted);font-weight:700;font-size:12px}
.status-body{padding:0 14px}
.status-section.collapsed .status-body{display:none}
.checklist-item{padding:9px 0;border-bottom:1px solid var(--line);font-size:13.5px;line-height:1.5}
.checklist-item:last-child{border-bottom:0}
.checklist-item.hidden{display:none}
.checklist-row{display:flex;align-items:flex-start;gap:10px}
.checklist-mark{flex:0 0 auto;width:18px;height:18px;border-radius:5px;margin-top:1px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:800;border:1px solid var(--line-strong);background:transparent;color:transparent;cursor:pointer;padding:0}
.checklist-mark:hover:not(:disabled){border-color:var(--teal-2)}
.checklist-mark:disabled{cursor:default;opacity:.5}
.checklist-item.status-done .checklist-mark{background:var(--green-soft);color:var(--green);border-color:transparent}
.checklist-item.status-in_progress .checklist-mark{background:var(--teal-soft);color:var(--teal-2);border-color:transparent}
.checklist-item.status-done .checklist-text{color:var(--muted);text-decoration:line-through}
.checklist-owner{display:inline-block;background:var(--panel);border:1px solid var(--line-strong);color:var(--ink);font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:999px;margin-right:5px;vertical-align:middle}
.checklist-topic{display:inline-block;background:var(--panel-2);border:1px solid var(--line-strong);color:var(--muted);font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:1px 7px;border-radius:999px;margin-right:7px;vertical-align:middle}
.checklist-context{display:block;color:var(--muted);font-size:12px;margin-top:2px}
.checklist-id{color:var(--muted);font-size:11px;margin-left:6px}
.checklist-date{display:inline-block;background:var(--panel);border:1px solid var(--line-strong);color:var(--muted);font-size:10.5px;font-weight:700;padding:1px 7px;border-radius:999px;margin-right:5px;vertical-align:middle}
.checklist-delete{flex:0 0 auto;border:0;background:transparent;color:var(--muted);font-size:16px;line-height:1;cursor:pointer;padding:2px 4px;margin-left:auto;align-self:flex-start}
.checklist-delete:hover{color:var(--red)}
.checklist-edit{flex:0 0 auto;border:0;background:transparent;color:var(--muted);font-size:13px;line-height:1;cursor:pointer;padding:2px 4px;margin-left:auto;align-self:flex-start}
.checklist-edit:hover{color:var(--teal-2)}

/* per-ticket "what was done" comment thread - used on both Team & Meetings
   items and To Do cards */
.ticket-comments{margin-top:6px}
.ticket-comments-toggle{border:0;background:transparent;color:var(--muted);font-size:11.5px;font-weight:700;cursor:pointer;padding:2px 0}
.ticket-comments-toggle:hover{color:var(--teal-2)}
.ticket-comments-body{margin-top:8px;padding:10px;background:var(--panel);border:1px solid var(--line);border-radius:8px}
.ticket-comments-body.hidden{display:none}
.ticket-comments-list{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.ticket-comment{font-size:12.5px;line-height:1.5}
.ticket-comment-author{font-weight:700;color:var(--ink);margin-right:5px}
.ticket-comment-date{color:var(--muted);font-size:11px;margin-left:6px}
.ticket-comments-empty{color:var(--muted);font-size:12px;font-style:italic}
.ticket-comment-form{display:flex;gap:6px;flex-wrap:wrap}
.ticket-comment-form input[name="author"]{flex:0 0 110px}
.ticket-comment-form input[name="text"]{flex:1 1 180px}
.ticket-comment-form input{border:1px solid var(--line-strong);background:var(--panel-2);color:var(--ink);border-radius:6px;padding:6px 8px;font-size:12px}
.ticket-comment-form button{border:0;background:var(--teal);color:#1a1305;font-weight:700;font-size:12px;padding:6px 12px;border-radius:6px;cursor:pointer}
.meeting-panel-header{width:100%;display:flex;align-items:baseline;gap:10px;border:0;background:transparent;padding:0;margin:0 0 14px;cursor:pointer;text-align:left}
.meeting-panel-header h2{margin:0}
.meeting-panel-header .status-chevron{align-self:center}
.meeting-panel.collapsed .meeting-panel-header{margin-bottom:0}
.meeting-panel.collapsed .status-chevron{transform:rotate(-90deg)}
.meeting-panel.collapsed .meeting-panel-body{display:none}
.meeting-panel .panel-meta{color:var(--muted);font-size:12.5px}
.meeting-panel .panel-summary{font-size:13.5px;line-height:1.6;margin-bottom:18px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.meeting-minutes{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.meeting-minutes summary{cursor:pointer;font-size:12.5px;font-weight:700;color:var(--muted);list-style:none}
.meeting-minutes summary::-webkit-details-marker{display:none}
.meeting-minutes summary:hover{color:var(--teal-2)}
.meeting-minutes-text{white-space:pre-wrap;font-family:inherit;font-size:12.5px;line-height:1.65;color:var(--muted);margin-top:10px;padding:14px;background:var(--panel);border-radius:8px;border:1px solid var(--line)}

/* email campaigns */
.email-campaign-card{margin-bottom:14px}
.email-campaign-card:last-child{margin-bottom:0}
.email-campaign-header h3{margin:0;font-size:15px}
.email-campaign-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-top:14px}
.email-campaign-stat{display:flex;flex-direction:column;gap:2px}
.email-campaign-stat-label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.email-campaign-stat-value{font-size:14.5px;font-weight:750;color:var(--ink)}
.email-campaign-notes{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:12.5px;color:var(--muted);line-height:1.55}
.email-campaign-links{margin-top:14px;padding-top:12px;border-top:1px solid var(--line)}
.email-campaign-links summary{cursor:pointer;font-size:12.5px;font-weight:700;color:var(--muted);list-style:none}
.email-campaign-links summary::-webkit-details-marker{display:none}
.email-campaign-links summary:hover{color:var(--teal-2)}
.email-campaign-links .table-wrap{margin-top:10px}
.email-campaign-link-url{font-size:12px;color:var(--muted);word-break:break-all}

/* weekly recap */
.weekly-recap-week{padding:16px 20px}
.weekly-recap-header{width:100%;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;border:0;background:transparent;padding:0;cursor:pointer;text-align:left}
.weekly-recap-header h3{margin:0;font-size:14px}
.weekly-recap-week.collapsed .weekly-recap-body{display:none}
.weekly-recap-week.collapsed .status-chevron{transform:rotate(-90deg)}
.weekly-recap-body{margin-top:14px;display:flex;flex-direction:column;gap:14px}
.weekly-recap-meeting{padding-top:12px;border-top:1px solid var(--line)}
.weekly-recap-meeting:first-child{padding-top:0;border-top:0}
.weekly-recap-meeting-header{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13.5px}
.weekly-recap-summary{margin-top:6px;font-size:13px;line-height:1.6;color:var(--muted)}

/* to do board */
.todo-board{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;align-items:start}
.todo-column{background:linear-gradient(180deg, var(--panel-2), var(--panel));border:1px solid var(--line);border-radius:var(--radius);padding:14px;border-top:3px solid var(--line-strong)}
.todo-column[data-status="in_progress"]{border-top-color:var(--teal-2)}
.todo-column[data-status="done"]{border-top-color:var(--green)}
.todo-column h3{font-size:12.5px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 12px;display:flex;align-items:center;gap:8px}
.todo-column-list{display:flex;flex-direction:column;gap:10px}
.todo-card{background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:12px}
.todo-card.hidden{display:none}
.todo-card-top{margin-bottom:6px}
.todo-card-meeting-badge{display:inline-block;background:var(--teal-soft);color:var(--teal-2);font-size:10px;font-weight:700;padding:1px 7px;border-radius:999px;vertical-align:middle}
.todo-card-desc{font-size:13.5px;line-height:1.5;color:var(--ink)}
.todo-card-actions{display:flex;align-items:center;gap:4px;margin-top:10px;padding-top:8px;border-top:1px solid var(--line)}
.todo-card-advance{flex:1 1 auto;border:1px solid var(--line-strong);background:transparent;color:var(--muted);font-size:11.5px;font-weight:700;padding:5px 8px;border-radius:7px;cursor:pointer;text-align:center}
.todo-card-advance:hover{border-color:var(--teal-2);color:var(--teal-2)}
.todo-card .checklist-edit,.todo-card .checklist-delete{margin-left:0;align-self:center}
.todo-empty-col{color:var(--muted);font-size:12px;font-style:italic;padding:6px 0}
@media(max-width:900px){.todo-board{grid-template-columns:1fr}}

/* content calendar */
.calendar-suggestions{display:flex;flex-wrap:wrap;gap:8px}
.calendar-suggestion-chip{border:1px dashed var(--line-strong);background:var(--panel-2);color:var(--muted);font-size:12.5px;padding:6px 12px;border-radius:10px;cursor:pointer;text-align:left}
.calendar-suggestion-chip:hover{border-color:var(--teal-2);color:var(--ink)}
.calendar-suggestion-chip .cal-suggestion-meta{display:block;font-size:10.5px;color:var(--muted);margin-top:2px}

.calendar-nav{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.calendar-nav h2{margin:0;font-size:16px;flex:1 1 auto}
.calendar-nav-btn{border:1px solid var(--line-strong);background:var(--panel-2);color:var(--ink);width:30px;height:30px;border-radius:8px;font-size:16px;line-height:1;cursor:pointer}
.calendar-nav-btn:hover{border-color:var(--teal-2)}
.calendar-today-btn{border:1px solid var(--line-strong);background:var(--panel-2);color:var(--muted);padding:6px 12px;border-radius:8px;font-size:12px;font-weight:700;cursor:pointer}
.calendar-today-btn:hover{border-color:var(--teal-2);color:var(--ink)}
.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px}
.calendar-weekdays div{text-align:center;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.calendar-day{border:1px solid var(--line);border-radius:10px;background:var(--panel-2);height:82px;padding:6px;display:flex;flex-direction:column;gap:4px;overflow:hidden}
.calendar-day-outside{border:0;background:transparent}
.calendar-day-today{border-color:var(--teal-2)}
.calendar-day-num{flex:0 0 auto;font-size:11.5px;font-weight:800;color:var(--muted)}
.calendar-day-today .calendar-day-num{color:var(--teal-2)}
/* Fixed cell height above + min-height:0 here is what stops a busy day
   from stretching its whole grid row - CSS Grid rows share height across
   every cell in the row, so without this a single day with several items
   would inflate the entire week's row (found via a real screenshot - the
   week with one item was visibly taller than every empty week). Extra
   items scroll inside the cell instead of growing it. */
.calendar-day-items{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:3px;overflow-y:auto}
.calendar-unscheduled-list{display:flex;flex-direction:column;gap:4px}
.cal-item{display:flex;align-items:center;gap:4px;font-size:11px;line-height:1.3;border-radius:6px;padding:2px 4px;background:var(--panel)}
.cal-item.hidden{display:none}
.cal-item-mark{flex:0 0 auto;width:13px;height:13px;border-radius:4px;border:1px solid var(--line-strong);background:transparent;color:transparent;cursor:pointer;padding:0;font-size:9px;display:flex;align-items:center;justify-content:center}
.cal-item.status-done .cal-item-mark{background:var(--green-soft);color:var(--green);border-color:transparent}
.cal-item.status-in_progress .cal-item-mark{background:var(--teal-soft);color:var(--teal-2);border-color:transparent}
.cal-item.status-done .cal-item-title{color:var(--muted);text-decoration:line-through}
.cal-item-title{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);cursor:pointer}
/* Always visible (not hover-only) - a hover-reveal control is invisible and
   unreachable on touch devices, which is why editing/deleting from the
   calendar wasn't discoverable there. */
.cal-item-edit{flex:0 0 auto;border:0;background:transparent;color:var(--muted);font-size:10px;line-height:1;cursor:pointer;padding:0 2px}
.cal-item-edit:hover{color:var(--teal-2)}
.cal-item-delete{flex:0 0 auto;border:0;background:transparent;color:var(--muted);font-size:12px;line-height:1;cursor:pointer;padding:0 2px}
.cal-item-delete:hover{color:var(--red)}
.cal-item-link{flex:0 0 auto;font-size:9px;text-decoration:none;color:var(--teal-2);opacity:.8}
.cal-item-link:hover{opacity:1}

/* useful links */
.links-list{display:flex;flex-direction:column;gap:16px}
.links-category{margin:0}
.links-category-header{width:100%;display:flex;align-items:center;gap:10px;border:0;background:transparent;padding:0 0 10px;cursor:pointer;text-align:left}
.links-category-header h3{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--teal-2);margin:0}
.links-category.collapsed .links-category-header{padding-bottom:0}
.links-category.collapsed .links-grid{display:none}
.links-category.search-expanded>.links-category-body>.links-grid{display:grid !important}
.links-category.hidden{display:none}
.links-category-body{display:flex;flex-direction:column;gap:14px}
/* nested "Parent: Child" sections (e.g. Ebooks -> AI) - indented, smaller
   header than the top-level category it lives inside */
.links-subcategory{margin-left:4px;padding-left:14px;border-left:2px solid var(--line)}
.links-subcategory-header h4{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin:0}
.links-subcategory.collapsed .links-subcategory-header{padding-bottom:0}
.links-subcategory.collapsed .links-grid{display:none}
.links-subcategory.search-expanded .links-grid{display:grid !important}
.links-subcategory.hidden{display:none}
.link-card.hidden{display:none}
.links-search{width:100%;box-sizing:border-box;border:1px solid var(--line-strong);background:var(--panel-2);color:var(--ink);border-radius:10px;padding:11px 14px;font-size:13.5px;margin-bottom:16px}
.links-search:focus{outline:none;border-color:var(--teal-2)}
.links-search::placeholder{color:var(--muted)}
.links-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));gap:10px}
.link-card{display:flex;align-items:flex-start;gap:8px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2);padding:12px 14px}
.link-card-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
.link-card a{color:var(--ink);font-weight:700;font-size:13.5px;text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.link-card a:hover{color:var(--teal-2)}
.link-discount{font-size:11.5px;color:var(--teal);font-weight:700}
.link-contact{font-size:11px;color:var(--muted);overflow-wrap:anywhere}
.link-card .link-copy,.link-card .checklist-delete{margin-top:1px}
.link-copy{flex:0 0 auto;border:0;background:transparent;color:var(--muted);font-size:13px;line-height:1;cursor:pointer;padding:2px 4px}
.link-copy:hover{color:var(--teal-2)}
.link-copy.copied{color:var(--green)}

.footer{color:var(--muted);font-size:12px;text-align:center;padding:20px 0}

.password-gate{
  position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(ellipse 50rem 34rem at 50% 20%, rgba(212,175,55,.18), transparent 60%), var(--bg);
  padding:20px;
}
.password-gate-box{
  background:linear-gradient(180deg, var(--panel-2), var(--panel));border:1px solid var(--line);border-radius:20px;padding:32px 28px;max-width:340px;width:100%;
  text-align:center;box-shadow:0 24px 60px rgba(0,0,0,.35);
}
.password-gate-logo{width:64px;height:64px;border-radius:50%;object-fit:cover;margin-bottom:14px;box-shadow:0 0 0 1px rgba(255,255,255,.12), 0 8px 20px rgba(212,175,55,.28)}
.password-gate-box h1{font-size:19px;margin:0 0 6px;font-weight:800;color:var(--ink)}
.password-gate-box p{color:var(--muted);font-size:13.5px;margin:0 0 18px}
.password-gate-box form{display:flex;flex-direction:column;gap:10px}
.password-gate-box input{border:1px solid var(--line-strong);border-radius:10px;padding:11px 13px;font-size:14px;text-align:center;background:var(--bg);color:var(--ink)}
.password-gate-box button{border:0;background:linear-gradient(135deg, var(--teal-2), var(--teal));color:#1a1305;border-radius:10px;padding:11px;font-weight:750;font-size:14px}
.password-gate-error{color:var(--red);font-size:12.5px;margin-top:12px;font-weight:650}

@media (max-width:640px){
  .shell{padding:14px}
  .topbar{gap:10px}
  .brand-title{font-size:15px}
  .brand-sub{font-size:12px}
  .brand-mark{width:36px;height:36px}
  .top-actions{width:100%;gap:8px}
  .range-picker{width:100%;justify-content:space-between}
  .tabs{top:6px;padding:5px;gap:4px}
  .tab{padding:8px 11px;font-size:13px}
  .cards{gap:10px}
  .card{padding:13px 14px}
  .card .card-value{font-size:22px}
  .panel{padding:15px}
  .chart-tooltip{max-width:min(220px, calc(100vw - 32px));font-size:12px}
  table{font-size:12.5px}
  th,td{padding:8px}
  .donut-wrap{gap:16px}
  .donut-svg{width:140px;height:140px}
}
