/* Private owner dashboard. No visitor data is present until the authenticated API responds. */
.owner-page .owner-welcome { position: relative; min-width: 0; }
.owner-page .owner-welcome > :not(.owner-orbit) { position: relative; z-index: 1; }
.owner-page .owner-access-content { min-width: 0; }
.owner-page.owner-authenticated .owner-card {
  width: 100%;
  display: grid;
  grid-template-columns: minmax(250px, .9fr) minmax(0, 1.1fr);
  gap: 44px;
  padding: 34px 38px;
}
.owner-page.owner-authenticated .owner-welcome { padding-top: 12px; }
.owner-page.owner-authenticated .owner-card h1 { font-size: 32px; }
.owner-page.owner-authenticated .owner-orbit { right: 15px; top: 75px; }
.owner-page.owner-authenticated .owner-dashboard { margin-top: 0; padding-top: 0; border-top: 0; }
.owner-page.owner-authenticated .owner-code { margin-block: 15px 10px; padding-block: 13px; }
.owner-page.owner-authenticated .owner-countdown { padding-block: 13px 16px; }
.owner-page.owner-authenticated .owner-footnote { margin-top: 13px; padding-top: 13px; }
.owner-page .owner-analytics { margin-top: 42px; min-width: 0; }
.owner-page .analytics-heading { display: flex; justify-content: space-between; align-items: center; gap: 24px; }
.owner-page .analytics-heading h2 { margin: 7px 0 9px; color: #edf5ff; font-size: 29px; font-weight: 600; letter-spacing: -.5px; }
.owner-page .analytics-subtitle { color: #91aac8; font-size: 13px; line-height: 1.8; }
.owner-page .analytics-range-controls { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.owner-page .analytics-ranges { display: flex; padding: 4px; border: 1px solid #365475; background: #0c1728; border-radius: 9px; }
.owner-page .analytics-ranges button { min-height: 40px; padding: 8px 16px; border-radius: 6px; background: transparent; color: #a3b9d3; font-size: 12px; white-space: nowrap; }
.owner-page .analytics-ranges button[aria-pressed="true"] { color: #d1f5ff; background: #21425e; box-shadow: inset 0 0 0 1px #7ac3e53d; }
.owner-page .analytics-ranges button:hover:not(:disabled) { color: #e4f8ff; }
.owner-page .analytics-button { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; gap: 12px; padding: 10px 15px; border: 1px solid #3d5c7c; border-radius: 7px; background: #102139; color: #bed5ed; font: 12px/1.4 var(--sans); white-space: nowrap; }
.owner-page .analytics-button:hover:not(:disabled) { border-color: #7abddc; color: #e5f8ff; background: #18334d; }
.owner-page .analytics-button-primary { border-color: #578aab; background: #214660; color: #d7f5ff; }
.owner-page .owner-analytics button:disabled { opacity: .45; cursor: default; }
.owner-page .analytics-context { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px 20px; margin: 22px 0 16px; color: #7896b6; font-size: 11px; line-height: 1.8; }
.owner-page .analytics-status { min-height: 0; color: #8ec5e4; font-size: 12px; line-height: 1.8; margin: 0; }
.owner-page .analytics-status:not(:empty) { margin-bottom: 14px; }
.owner-page .analytics-error, .owner-page .analytics-notice { border: 1px solid #76596c; border-radius: 8px; padding: 12px 16px; margin-bottom: 16px; color: #e7b5c3; background: #44203736; font-size: 12px; line-height: 1.8; }
.owner-page .analytics-notice { color: #d6c6a3; border-color: #756b4b; background: #41361d35; }
.owner-page .analytics-metrics { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 14px; margin-bottom: 20px; }
.owner-page .analytics-metric { min-width: 0; padding: 21px 20px 18px; border: 1px solid #2d4c6c; border-radius: 11px; background: radial-gradient(ellipse at 100% 0, #4c71b51c, transparent 70%), #0c1829; box-shadow: inset 0 1px #badfff08; }
.owner-page .analytics-metric:nth-child(2) { border-color: #4b4973; background: radial-gradient(ellipse at 100% 0, #7551c424, transparent 70%), #10182c; }
.owner-page .analytics-metric p { display: flex; align-items: baseline; flex-wrap: wrap; gap: 5px 8px; color: #afc5df; font-size: 12px; line-height: 1.6; }
.owner-page .analytics-metric p span { color: #6f91b4; font-size: 10px; }
.owner-page .analytics-metric strong { display: block; margin: 12px 0 9px; color: #a2e6ff; font: 500 clamp(27px, 2.6vw, 35px)/1.2 var(--mono); letter-spacing: -.7px; overflow-wrap: anywhere; }
.owner-page .analytics-metric:nth-child(2) strong { color: #c0b5ff; }
.owner-page .analytics-metric small { display: block; color: #7691ae; font-size: 10px; line-height: 1.7; }
.owner-page .analytics-insights { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 20px; margin-bottom: 20px; }
.owner-page .analytics-panel { min-width: 0; padding: 24px; border: 1px solid #294764; border-radius: 12px; background: linear-gradient(145deg, #101d30, #0a1424); }
.owner-page .analytics-panel-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.owner-page .analytics-panel-heading h3 { margin: 0; color: #d9e9fa; font-size: 16px; font-weight: 550; }
.owner-page .analytics-panel-caption { color: #7896b5; font-size: 11px; line-height: 1.8; }
.owner-page .analytics-panel-heading p.analytics-panel-caption { margin-top: 7px; }
.owner-page #analytics-trend-summary { margin-top: 12px; }
.owner-page .analytics-chart-legend { display: flex; flex-wrap: wrap; gap: 12px; color: #8daac7; font-size: 10px; }
.owner-page .analytics-chart-legend span { display: flex; align-items: center; gap: 6px; }
.owner-page .analytics-chart-legend i { width: 6px; height: 6px; border-radius: 2px; background: #58caee; }
.owner-page .analytics-chart-legend span:nth-child(2) i { background: #9581ed; }
.owner-page .analytics-chart-scroll { overflow-x: auto; overscroll-behavior-x: contain; scrollbar-width: thin; scrollbar-color: #385a7d #0b182a; }
.owner-page .analytics-trend { display: flex; gap: 5px; height: 215px; align-items: stretch; padding-top: 24px; }
.owner-page .analytics-trend[data-dense="true"] { min-width: 540px; gap: 3px; }
.owner-page .analytics-day { flex: 1 1 0; position: relative; min-width: 0; display: flex; flex-direction: column; justify-content: flex-end; border-radius: 5px; outline-offset: -1px; }
.owner-page .analytics-day:focus-visible { outline: 1px solid #75dafa; }
.owner-page .analytics-day-bars { height: 160px; display: flex; justify-content: center; gap: 3px; align-items: flex-end; border-bottom: 1px solid #36506b; background: repeating-linear-gradient(to top, transparent 0, transparent 39px, #6387a50b 39px, #6387a50b 40px); }
.owner-page .analytics-bar { width: min(15px, 35%); max-width: 20px; border-radius: 3px 3px 0 0; background: linear-gradient(to top, #2580b4, #71d9f4); }
.owner-page .analytics-bar-visitors { background: linear-gradient(to top, #5a43b2, #a393f5); }
.owner-page .analytics-day-date { display: block; height: 28px; padding-top: 9px; color: #7191b0; text-align: center; font: 9px/1.4 var(--mono); white-space: nowrap; }
.owner-page .analytics-day:first-child .analytics-day-date { text-align: left; }
.owner-page .analytics-day:last-child .analytics-day-date { text-align: right; }
.owner-page .analytics-day-tooltip { position: absolute; z-index: 2; bottom: 30px; left: 50%; transform: translateX(-50%); width: max-content; max-width: 180px; padding: 8px 10px; border: 1px solid #55769b; border-radius: 6px; color: #cfe8fa; background: #132b45; box-shadow: 0 5px 20px #0005; font-size: 10px; line-height: 1.8; pointer-events: none; opacity: 0; }
.owner-page .analytics-day:is(:hover, :focus-visible) .analytics-day-tooltip { opacity: 1; }
.owner-page .analytics-day:first-child .analytics-day-tooltip { left: 0; transform: none; }
.owner-page .analytics-day:last-child .analytics-day-tooltip { left: auto; right: 0; transform: none; }
.owner-page .analytics-chart-empty { align-self: center; width: 100%; text-align: center; color: #6e8eae; font-size: 12px; line-height: 1.8; }
.owner-page .analytics-top-pages { margin: 15px 0 0; padding: 0; list-style: none; }
.owner-page .analytics-top-item { display: flex; justify-content: space-between; align-items: center; gap: 15px; padding: 11px 0; border-bottom: 1px solid #233d57; }
.owner-page .analytics-top-item:last-child { border-bottom: 0; }
.owner-page .analytics-top-name { min-width: 0; }
.owner-page .analytics-top-name strong { display: block; color: #bfd4ec; font-size: 12px; font-weight: 500; line-height: 1.6; overflow-wrap: anywhere; }
.owner-page .analytics-top-name small { display: block; margin-top: 3px; color: #6484a6; font-size: 10px; }
.owner-page .analytics-top-count { flex-shrink: 0; color: #91d5f0; text-align: right; font: 16px var(--mono); }
.owner-page .analytics-top-count small { display: block; margin-top: 5px; color: #7f99b5; font: 9px var(--sans); }
.owner-page .analytics-record-count { color: #819fbd; font-size: 11px; white-space: nowrap; }
.owner-page .analytics-filters { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; padding-top: 23px; }
.owner-page .analytics-field { min-width: 160px; flex: 0 1 190px; }
.owner-page .analytics-ip-field { flex: 1 1 240px; max-width: 360px; }
.owner-page .analytics-field label { display: block; margin-bottom: 8px; color: #a7c0d9; font-size: 11px; }
.owner-page .analytics-field label span { color: #6486a8; margin-left: 6px; font-size: 10px; }
.owner-page .analytics-field input, .owner-page .analytics-field select { width: 100%; min-width: 0; height: 44px; padding: 10px 12px; border: 1px solid #345879; border-radius: 7px; background: #081527; color: #c4dbf1; font: 12px/1.4 var(--sans); }
.owner-page .analytics-field select { color-scheme: dark; }
.owner-page .analytics-field input { font-family: var(--mono); }
.owner-page .analytics-field input::placeholder { color: #5f82a4; font-family: var(--sans); }
.owner-page .analytics-field :is(input, select):focus-visible { outline: 1px solid #7dd9f5; outline-offset: 2px; }
.owner-page .analytics-filter-note { color: #6e91b2; font-size: 11px; line-height: 1.8; margin: 14px 0 18px; }
.owner-page .analytics-visitor-filter { margin-top: 17px; padding: 12px 14px; display: flex; justify-content: space-between; align-items: center; gap: 16px; border: 1px solid #426a8c; border-radius: 7px; background: #17385360; }
.owner-page .analytics-visitor-filter p { min-width: 0; color: #a9d3eb; font-size: 11px; line-height: 1.8; overflow-wrap: anywhere; }
.owner-page .analytics-visitor-filter strong { color: #c8efff; font: 11px var(--mono); }
.owner-page .analytics-visitor-filter p span { color: #7299b9; }
.owner-page .analytics-visitor-filter button { flex-shrink: 0; min-height: 38px; background: transparent; color: #a9d8f2; font-size: 11px; }
.owner-page .analytics-visitor-filter button span { margin-left: 8px; color: #77b8d9; font-size: 17px; }
.owner-page .analytics-table-scroll { max-width: 100%; overflow-x: auto; overscroll-behavior-x: contain; border: 1px solid #294663; border-radius: 8px; scrollbar-width: thin; scrollbar-color: #42698e #0b182a; }
.owner-page .analytics-table-scroll:focus-visible { outline: 1px solid #7bc6e3; outline-offset: 3px; }
.owner-page .analytics-table { width: 100%; min-width: 1030px; border-collapse: collapse; text-align: left; font-size: 11px; line-height: 1.7; }
.owner-page .analytics-table th { padding: 12px 14px; color: #8eacc9; background: #12263d; font-weight: 500; white-space: nowrap; border-bottom: 1px solid #35516b; }
.owner-page .analytics-table td { padding: 13px 14px; border-bottom: 1px solid #21394f; vertical-align: top; color: #a8bfd8; }
.owner-page .analytics-table tbody tr:last-child td { border-bottom: 0; }
.owner-page .analytics-table tbody tr:hover { background: #27436320; }
.owner-page .analytics-event-time { font: 10px/1.8 var(--mono); white-space: nowrap; }
.owner-page .analytics-event-time small { display: block; color: #6586a7; font-size: 10px; }
.owner-page .analytics-event-ip { display: block; max-width: 190px; color: #b1c9df; font: 11px/1.8 var(--mono); overflow-wrap: anywhere; }
.owner-page .analytics-visitor { display: block; padding: 3px 0; margin-top: 3px; background: transparent; color: #71bedf; border-bottom: 1px dashed #355a78; font: 10px/1.7 var(--mono); text-align: left; }
.owner-page .analytics-visitor:hover { color: #b0eaff; border-color: #6babca; }
.owner-page .analytics-event-badge { display: inline-block; padding: 3px 7px; border: 1px solid #3a5c7a; border-radius: 4px; color: #a5c7e5; background: #16334e; font-size: 10px; white-space: nowrap; }
.owner-page .analytics-event-badge[data-kind="resume_download"], .owner-page .analytics-event-badge[data-kind="contact_view"] { border-color: #585480; color: #c0b6ec; background: #292445; }
.owner-page .analytics-event-page { display: block; max-width: 220px; overflow-wrap: anywhere; color: #c0d4e8; font-size: 11px; }
.owner-page .analytics-event-path { display: block; max-width: 220px; margin-top: 4px; color: #6686a6; font: 9px/1.6 var(--mono); overflow-wrap: anywhere; }
.owner-page .analytics-event-device { display: block; color: #a7c1db; font-size: 11px; white-space: nowrap; }
.owner-page .analytics-event-browser { display: block; margin-top: 3px; color: #6e8eaf; font-size: 10px; white-space: nowrap; }
.owner-page .analytics-event-source { display: block; max-width: 180px; overflow-wrap: anywhere; color: #839fba; }
.owner-page .analytics-empty { padding: 45px 20px; border: 1px dashed #34516e; border-radius: 8px; text-align: center; }
.owner-page .analytics-empty > span { display: block; margin-bottom: 10px; color: #5987b0; font: 27px var(--mono); }
.owner-page .analytics-empty p { color: #a4bfd9; font-size: 13px; line-height: 1.8; }
.owner-page .analytics-empty small { display: block; color: #6587a8; margin-top: 6px; font-size: 11px; line-height: 1.8; }
.owner-page .analytics-pagination { display: flex; justify-content: space-between; align-items: center; gap: 18px; margin-top: 18px; }
.owner-page .analytics-pagination > p { color: #7698b7; font-size: 11px; line-height: 1.8; }
.owner-page .analytics-pagination > div { display: flex; gap: 8px; }
.owner-page .analytics-pagination .analytics-button { min-height: 40px; padding: 9px 13px; font-size: 11px; }
.owner-page .analytics-privacy-note { display: flex; gap: 11px; align-items: flex-start; margin: 20px 2px 0; color: #718dab; font-size: 11px; line-height: 1.9; }
.owner-page .analytics-privacy-note > span { flex-shrink: 0; color: #7bb4d0; font-size: 15px; }
@media (max-width: 1100px) {
  .owner-page.owner-authenticated .owner-card { grid-template-columns: minmax(210px, .75fr) minmax(0, 1.25fr); gap: 28px; padding: 30px; }
  .owner-page.owner-authenticated .owner-card h1 { font-size: 28px; }
  .owner-page .analytics-heading { align-items: flex-start; }
  .owner-page .analytics-range-controls { justify-content: flex-end; }
  .owner-page .analytics-metrics { gap: 10px; }
  .owner-page .analytics-metric { padding: 18px 14px; }
  .owner-page .analytics-panel { padding: 20px; }
}
@media (max-width: 850px) {
  .owner-page.owner-authenticated .owner-card { display: block; width: min(660px, 100%); }
  .owner-page.owner-authenticated .owner-welcome { padding-top: 0; }
  .owner-page.owner-authenticated .owner-card h1 { font-size: 29px; }
  .owner-page.owner-authenticated .owner-dashboard { margin-top: 25px; padding-top: 23px; border-top: 1px solid #2c4564; }
  .owner-page.owner-authenticated .owner-orbit { top: 10px; right: 0; }
  .owner-page .analytics-heading { flex-direction: column; gap: 20px; }
  .owner-page .analytics-range-controls { justify-content: flex-start; }
  .owner-page .analytics-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .owner-page .analytics-insights { grid-template-columns: minmax(0, 1fr); }
  .owner-page .analytics-top-pages { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
}
@media (max-width: 600px) {
  .owner-page.owner-authenticated .owner-card { padding: 25px 22px; }
  .owner-page .owner-analytics { margin-top: 34px; }
  .owner-page .analytics-heading h2 { font-size: 26px; }
  .owner-page .analytics-subtitle { font-size: 12px; }
  .owner-page .analytics-range-controls { width: 100%; gap: 9px; }
  .owner-page .analytics-ranges { flex: 1 1 auto; }
  .owner-page .analytics-ranges button { flex: 1 1 auto; padding-inline: 10px; font-size: 11px; }
  .owner-page #analytics-refresh { padding-inline: 11px; font-size: 11px; gap: 8px; }
  .owner-page .analytics-context { margin-top: 17px; }
  .owner-page .analytics-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .owner-page .analytics-metric { padding: 18px 16px; }
  .owner-page .analytics-metric:last-child { grid-column: 1 / -1; }
  .owner-page .analytics-metric strong { font-size: 31px; }
  .owner-page .analytics-panel { padding: 20px 16px; border-radius: 10px; }
  .owner-page .analytics-panel-heading { gap: 10px; }
  .owner-page .analytics-panel-heading h3 { font-size: 15px; }
  .owner-page .analytics-chart-legend { gap: 8px; font-size: 9px; }
  .owner-page .analytics-top-pages { display: block; }
  .owner-page .analytics-field { flex: 1 1 100%; min-width: 0; }
  .owner-page .analytics-ip-field { max-width: none; }
  .owner-page .analytics-filters { gap: 13px 10px; }
  .owner-page .analytics-filters > button { flex: 1 1 0; }
  .owner-page .analytics-visitor-filter { align-items: flex-start; flex-direction: column; gap: 4px; }
  .owner-page .analytics-visitor-filter p span { display: block; }
  .owner-page .analytics-visitor-filter button { min-height: 38px; }
  .owner-page .analytics-pagination { align-items: flex-start; flex-direction: column; gap: 12px; }
  .owner-page .analytics-pagination > div { width: 100%; }
  .owner-page .analytics-pagination .analytics-button { flex: 1 1 0; min-height: 44px; }
  .owner-page .analytics-privacy-note { font-size: 10px; }
}
@media print {
  .owner-page .owner-analytics { display: none !important; }
}
