
/* Omegaobservatoriet 2.6.92 – observationspanel för skarp observationsplanering */
.prototype-intro{position:relative}
.prototype-return-link{color:#c9e2e8;text-underline-offset:4px}
.prototype-data-source[hidden]{display:none!important}

.opd-dashboard{
  margin-top:34px;
  border:1px solid var(--line-strong);
  background:linear-gradient(180deg,rgba(8,26,37,.98),rgba(5,17,25,.98));
  box-shadow:0 28px 80px rgba(0,0,0,.16);
}
.opd-header{
  display:flex;
  justify-content:space-between;
  gap:30px;
  align-items:flex-start;
  padding:28px 30px 24px;
  border-bottom:1px solid var(--line);
}
.opd-kicker,.opd-section-heading p,.opd-summary-card p,.opd-instrument>p{
  margin:0;
  color:#8fb7c6;
  font:500 11px/1.35 var(--font-mono);
  letter-spacing:.11em;
  text-transform:uppercase;
}
.opd-header h3{margin:6px 0 7px;font-size:clamp(30px,3vw,44px);font-weight:300;letter-spacing:-.035em}
.opd-header>div:first-child>p:last-child{margin:0;color:#9fb0b7;font-size:14px;line-height:1.55}
.opd-header-status{display:flex;align-items:center;gap:10px;padding-top:6px;color:#8ea2ab;font:400 11px/1.4 var(--font-mono);text-align:right}
.opd-header-status i{width:8px;height:8px;border-radius:50%;background:#60727a;box-shadow:0 0 0 4px rgba(96,114,122,.09)}
.opd-header-status i.is-current{background:#68bb7b;box-shadow:0 0 0 4px rgba(104,187,123,.10)}
.opd-header-status i.is-stale{background:#d6a64f;box-shadow:0 0 0 4px rgba(214,166,79,.10)}
.opd-message{padding:13px 30px;border-bottom:1px solid var(--line);color:#9fb1b8;font:400 12px/1.5 var(--font-mono)}
.opd-message[hidden]{display:none}

.opd-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line)}
.opd-summary-card{min-height:130px;display:grid;grid-template-columns:46px minmax(0,1fr);gap:15px;align-items:start;padding:22px 22px 20px;border-right:1px solid var(--line)}
.opd-summary-card:last-child{border-right:0}
.opd-summary-icon{width:42px;height:42px;display:grid;place-items:center;border:1px solid #41606d;border-radius:50%;color:#8fbac8;font-size:21px}
.opd-summary-card strong{display:block;margin:7px 0 7px;color:#eaf1f2;font-size:clamp(19px,1.6vw,25px);font-weight:400;line-height:1.16}
.opd-summary-card small{display:block;color:#8fa2ab;font-size:12px;line-height:1.45}
.opd-summary-card.is-good .opd-summary-icon,.opd-summary-card.is-good strong{color:#76c78c;border-color:#4f8c61}
.opd-summary-card.is-limited .opd-summary-icon,.opd-summary-card.is-limited strong{color:#dfb45c;border-color:#8f7037}
.opd-summary-card.is-poor .opd-summary-icon,.opd-summary-card.is-poor strong{color:#e18b69;border-color:#9a5a42}
.opd-summary-card.is-neutral .opd-summary-icon{color:#83bdcc}

.opd-timeline-section{padding:26px 20px 20px;border-bottom:1px solid var(--line)}
.opd-section-heading{display:flex;justify-content:space-between;gap:30px;align-items:end;padding:0 10px 17px}
.opd-section-heading h4{margin:5px 0 0;font-size:21px;font-weight:400}
.opd-section-heading>p{max-width:410px;color:#8499a2;text-align:right;text-transform:none;letter-spacing:0;font-family:var(--font-sans);font-weight:400;font-size:12px;line-height:1.5}
.opd-timeline-scroll{overflow-x:auto;border:1px solid var(--line);scrollbar-color:#45616e #07151d}
.opd-timeline{min-width:920px;background:#071720}
.opd-timeline-row{display:grid;align-items:stretch;border-bottom:1px solid var(--line)}
.opd-timeline-row:last-child{border-bottom:0}
.opd-timeline-label{position:sticky;left:0;z-index:2;min-width:142px;padding:12px 14px;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--line);background:#081a24}
.opd-timeline-label strong{font-size:13px;font-weight:500}
.opd-timeline-label small{margin-top:4px;color:#7f959f;font-size:10px;line-height:1.35}
.opd-time-cell,.opd-data-cell{min-width:74px;padding:10px 8px;text-align:center;border-right:1px solid var(--line)}
.opd-time-cell:last-child,.opd-data-cell:last-child{border-right:0}
.opd-time-cell{color:#9dcddd;font:500 11px/1.25 var(--font-mono);background:#081923}
.opd-data-cell{display:flex;flex-direction:column;justify-content:center;gap:7px;min-height:68px;color:#dfe9eb;font:400 12px/1.3 var(--font-mono)}
.opd-data-cell small{color:#91a6af;font-size:10px}
.opd-cell-meter{height:4px;background:#17313d;overflow:hidden}
.opd-cell-meter i{display:block;height:100%;background:#79b8cf}
.opd-quality-bar{height:6px;background:#60727a}
.opd-quality-bar.q-good{background:#6fc083}
.opd-quality-bar.q-fair{background:#b7bd62}
.opd-quality-bar.q-warning{background:#d7aa4d}
.opd-quality-bar.q-bad{background:#df7f5d}
.opd-quality-bar.q-unavailable{background:#4b5f68}

.opd-instruments{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid var(--line)}
.opd-instrument{min-height:190px;padding:22px 22px 19px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.opd-instrument:nth-child(4n){border-right:0}
.opd-instrument:nth-last-child(-n+4){border-bottom:0}
.opd-instrument strong{display:block;margin:10px 0 9px;color:#edf3f4;font:400 clamp(21px,2vw,30px)/1.1 var(--font-mono)}
.opd-instrument small{display:block;margin-top:10px;color:#869ca5;font-size:12px;line-height:1.48}
.opd-sparkline{width:100%;height:42px;overflow:visible;color:#79bad0}
.opd-trend-card:nth-child(2) .opd-sparkline{color:#d68259}
.opd-sparkline polyline{fill:none;stroke:currentColor;stroke-width:2;vector-effect:non-scaling-stroke}
.opd-sparkline line{stroke:#24404c;stroke-width:1;vector-effect:non-scaling-stroke}
.opd-linear-meter{height:5px;margin:25px 0 0;background:#17303b;overflow:hidden}
.opd-linear-meter i{display:block;width:0;height:100%;background:#79b8cf;transition:width .25s ease}
.opd-gauge{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;margin-top:22px;color:#718791;font:400 10px/1 var(--font-mono)}
.opd-gauge b{position:relative;height:5px;background:linear-gradient(90deg,#df7659 0 16%,#d7aa4d 34%,#7cbf82 68%,#68aebf 100%)}
.opd-gauge i{position:absolute;top:-5px;width:2px;height:15px;background:#f2eee5;box-shadow:0 0 0 2px #071720;transform:translateX(-1px)}
.opd-segment-scale{display:grid;grid-template-columns:repeat(4,1fr);gap:3px;margin-top:23px}
.opd-scale-eight{grid-template-columns:repeat(8,1fr)}
.opd-segment-scale i{height:6px;background:#223b46}
.opd-segment-scale i.is-active{background:#d7aa4d;box-shadow:0 0 0 1px rgba(255,255,255,.08)}
.opd-segment-scale.is-good i.is-active{background:#72c087}
.opd-segment-scale.is-poor i.is-active{background:#df7e5b}

.opd-footer{display:flex;justify-content:space-between;gap:30px;padding:16px 22px;color:#718791;font:400 10px/1.5 var(--font-mono);letter-spacing:.02em}
.opd-footer p{margin:0}
.opd-source-dot{display:inline-block;width:7px;height:7px;margin:0 5px 0 12px;border-radius:50%;background:#60727a}
.opd-source-dot:first-child{margin-left:0}
.opd-source-dot.is-current{background:#68bb7b}
.opd-source-dot.is-stale{background:#d6a64f}
.opd-source-dot.is-unavailable{background:#62727a}

@media(max-width:1100px){
  .opd-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .opd-summary-card:nth-child(2){border-right:0}
  .opd-summary-card:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .opd-instruments{grid-template-columns:repeat(2,minmax(0,1fr))}
  .opd-instrument:nth-child(2n){border-right:0}
  .opd-instrument:nth-child(4n){border-right:0}
  .opd-instrument:nth-last-child(-n+4){border-bottom:1px solid var(--line)}
  .opd-instrument:nth-last-child(-n+2){border-bottom:0}
}
@media(max-width:720px){
  .opd-header,.opd-section-heading,.opd-footer{flex-direction:column;align-items:flex-start}
  .opd-header-status,.opd-section-heading>p{text-align:left}
  .opd-summary-grid,.opd-instruments{grid-template-columns:1fr}
  .opd-summary-card,.opd-summary-card:nth-child(2),.opd-instrument,.opd-instrument:nth-child(2n){border-right:0;border-bottom:1px solid var(--line)}
  .opd-summary-card:last-child,.opd-instrument:last-child{border-bottom:0}
  .opd-instrument:nth-last-child(-n+2){border-bottom:1px solid var(--line)}
  .opd-instrument:last-child{border-bottom:0}
  .opd-header{padding:23px 20px 20px}
  .opd-message{padding:12px 20px}
}


/* 2.6.86 – skarpare nattprofil och observationsanpassad statusfärg */
.opd-dashboard{
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.opd-timeline{min-width:1020px}
.opd-time-cell,.opd-data-cell{min-width:82px}
.opd-data-cell{
  font-family:var(--font-sans);
  font-size:12px;
  font-weight:400;
  line-height:1.25;
}
.opd-data-cell strong{
  color:#e6edef;
  font-family:var(--font-sans);
  font-size:13px;
  font-weight:600;
  line-height:1.18;
  letter-spacing:-.01em;
  font-variant-numeric:tabular-nums;
}
.opd-data-cell small{
  font-family:var(--font-sans);
  font-size:10px;
  font-weight:400;
  line-height:1.25;
}
.opd-value-nowrap strong{white-space:nowrap}
.opd-status-cell strong{font-size:12px;font-weight:500}
.opd-timeline-label strong{font-family:var(--font-sans);font-weight:600}
.opd-timeline-label small{font-family:var(--font-sans);font-weight:400}
.opd-cell-meter.q-good i,.opd-linear-meter.q-good i{background:#70c084}
.opd-cell-meter.q-fair i,.opd-linear-meter.q-fair i{background:#b9bd62}
.opd-cell-meter.q-warning i,.opd-linear-meter.q-warning i{background:#d7aa4d}
.opd-cell-meter.q-bad i,.opd-linear-meter.q-bad i{background:#df7f5d}
.opd-cell-meter.q-unavailable i,.opd-linear-meter.q-unavailable i{background:#4b5f68}
[data-opd-summary-card="best-period"].is-poor strong{
  font-size:clamp(16px,1.35vw,21px);
  line-height:1.2;
}
.opd-footer{align-items:flex-start;flex-wrap:wrap}
.opd-footer [data-opd-sources]{
  display:flex;
  flex-wrap:wrap;
  gap:7px 16px;
}
.opd-source-item{
  display:inline-flex;
  align-items:center;
  white-space:nowrap;
}
.opd-source-item .opd-source-dot{margin-left:0}


/* 2.6.87 – spiralgalax för Deep-sky och korrelerad bästa observationsperiod */
.opd-section-meta{
  display:flex;
  flex-direction:column;
  align-items:flex-end;
  gap:9px;
  max-width:430px;
}
.opd-section-meta>p{
  margin:0;
  color:#8499a2;
  text-align:right;
  font-size:12px;
  line-height:1.5;
}
.opd-period-key{
  display:inline-flex;
  align-items:center;
  gap:8px;
  color:#83bd92;
  font:500 10px/1.3 var(--font-mono);
  letter-spacing:.06em;
  text-transform:uppercase;
}
.opd-period-key[hidden]{display:none}
.opd-period-key i{
  width:22px;
  height:7px;
  border-top:2px solid #68bb7b;
  background:rgba(104,187,123,.12);
}
.opd-time-cell.is-best-period,
.opd-data-cell.is-best-period{
  background:linear-gradient(180deg,rgba(77,154,98,.13),rgba(77,154,98,.055));
}
.opd-time-cell.is-best-period{
  color:#b8e4c2;
  box-shadow:inset 0 3px 0 #68bb7b;
  font-weight:600;
}
.opd-data-cell.is-best-period{
  box-shadow:inset 0 1px 0 rgba(104,187,123,.22),inset 0 -1px 0 rgba(104,187,123,.12);
}
.opd-time-cell.is-best-start,
.opd-data-cell.is-best-start{
  border-left:1px solid rgba(104,187,123,.58);
}
.opd-time-cell.is-best-end,
.opd-data-cell.is-best-end{
  border-right-color:rgba(104,187,123,.58);
}
@media(max-width:720px){
  .opd-section-meta{align-items:flex-start;max-width:none}
  .opd-section-meta>p{text-align:left}
}


/* 2.6.88 – öppen, fyrarmad spiralgalax för Deep-sky
   Ingen sluten oval används, för att symbolen inte ska uppfattas som ett öga. */


/* 2.6.89 – Deep-sky använder den genererade spiralgalaxikonen som PNG */
.opd-galaxy-icon{
  overflow:hidden;
}
.opd-galaxy-icon img{
  width:31px;
  height:31px;
  display:block;
  object-fit:contain;
}


/* 2.6.90 – diskret markering av bästa observationsperiod
   Cellerna får endast en svag grön ton. Den gröna överkanten är fortsatt tydlig. */
.opd-night-table td.is-best-period,
.opd-night-table th.is-best-period,
.opd-profile-table td.is-best-period,
.opd-profile-table th.is-best-period,
[data-opd-best-period="true"]{
  background:rgba(79, 181, 111, .045) !important;
}
.opd-night-table thead th.is-best-period,
.opd-profile-table thead th.is-best-period,
.opd-time-cell.is-best-period{
  background:rgba(79, 181, 111, .07) !important;
  box-shadow:inset 0 3px 0 rgba(101, 211, 137, .92);
}


/* 2.6.91 – saknade Seeing/Transparens-data ska vara neutrala */
.opd-unavailable-cell strong{
  color:#a9b6bb;
  font-weight:500;
}
.opd-unavailable-cell small{
  color:#718791;
  font-size:9px;
  letter-spacing:.01em;
}
.opd-unavailable-cell .opd-quality-bar.q-unavailable{
  background:#4b5f68;
}


/* 2.7.0 – timvis markvind och operativa risker */
.opd-wind-cell strong{
  font-family:var(--font-mono);
  font-size:13px;
  font-weight:600;
  letter-spacing:.03em;
}
.opd-wind-cell small{
  white-space:nowrap;
  font-family:var(--font-mono);
  font-size:9px;
}


/* 2.7.2 – Livepanel för Ruuvi-sensorer */
.ruuvi-live-panel{
  margin-top:32px;
  border:1px solid rgba(136,170,184,.42);
  background:rgba(5,22,31,.46);
}
.ruuvi-live-header{
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:24px;
  padding:22px 24px 18px;
  border-bottom:1px solid rgba(136,170,184,.28);
}
.ruuvi-live-header p:first-child,
.ruuvi-live-card p,
.ruuvi-live-delta p{
  margin:0 0 7px;
  font-size:10px;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:#7fa7b7;
  font-weight:700;
}
.ruuvi-live-header h3{
  margin:0;
  font-size:26px;
  font-weight:400;
}
.ruuvi-live-header .ruuvi-live-intro{
  margin:8px 0 0;
  max-width:720px;
  color:#a7b8c0;
  font-size:13px;
  line-height:1.55;
}
.ruuvi-live-status{
  margin:3px 0 0;
  color:#8ca6b1;
  font-size:11px;
  text-align:right;
  white-space:nowrap;
}
.ruuvi-live-grid{
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
}
.ruuvi-live-card{
  min-width:0;
  padding:20px 22px;
  border-right:1px solid rgba(136,170,184,.26);
}
.ruuvi-live-card:last-child{border-right:0}
.ruuvi-live-card strong{
  display:block;
  margin-bottom:10px;
  font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
  font-size:26px;
  font-weight:500;
  line-height:1.05;
}
.ruuvi-live-card dl{
  margin:0;
  display:grid;
  grid-template-columns:auto 1fr;
  gap:3px 10px;
  color:#9cb0b9;
  font-size:11px;
}
.ruuvi-live-card dt{color:#6f8e9b}
.ruuvi-live-card dd{margin:0}
.ruuvi-live-deltas{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr));
  border-top:1px solid rgba(136,170,184,.26);
}
.ruuvi-live-delta{
  min-width:0;
  padding:18px 20px;
  border-right:1px solid rgba(136,170,184,.26);
}
.ruuvi-live-delta:last-child{border-right:0}
.ruuvi-live-delta strong{
  display:block;
  font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);
  font-size:20px;
  font-weight:500;
}
.ruuvi-live-note{
  margin:0;
  padding:13px 22px 15px;
  border-top:1px solid rgba(136,170,184,.18);
  color:#718b97;
  font-size:10px;
  line-height:1.45;
}
@media (max-width:900px){
  .ruuvi-live-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ruuvi-live-card:nth-child(2){border-right:0}
  .ruuvi-live-card:nth-child(-n+2){border-bottom:1px solid rgba(136,170,184,.26)}
  .ruuvi-live-deltas{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ruuvi-live-delta{border-bottom:1px solid rgba(136,170,184,.26)}
}
@media (max-width:560px){
  .ruuvi-live-header{display:block}
  .ruuvi-live-status{text-align:left;margin-top:12px;white-space:normal}
  .ruuvi-live-grid,.ruuvi-live-deltas{grid-template-columns:1fr}
  .ruuvi-live-card,.ruuvi-live-delta{border-right:0}
  .ruuvi-live-card{border-bottom:1px solid rgba(136,170,184,.26)}
}


/* 2.7.3 – Ruuvi temperaturhistorik */
.ruuvi-live-panel{
  --ruuvi-optik:#ef8a62;
  --ruuvi-teleskop:#6bb6d6;
  --ruuvi-inne:#c5b86a;
  --ruuvi-ute:#6fc68f;
}
.ruuvi-live-sparkline{
  display:block;
  width:100%;
  height:42px;
  margin:3px 0 10px;
  overflow:visible;
}
.ruuvi-history-section{
  border-top:1px solid rgba(136,170,184,.26);
  padding:20px 22px 24px;
}
.ruuvi-history-heading{
  display:flex;
  justify-content:space-between;
  gap:20px;
  align-items:flex-start;
  margin-bottom:10px;
}
.ruuvi-history-heading p:first-child{
  margin:0 0 5px;
  font-size:10px;
  letter-spacing:.13em;
  text-transform:uppercase;
  color:#7fa7b7;
  font-weight:700;
}
.ruuvi-history-heading h4{
  margin:0;
  font-size:19px;
  font-weight:500;
}
.ruuvi-history-heading > p:last-child{
  margin:3px 0 0;
  color:#7896a3;
  font-size:10px;
  text-align:right;
}
.ruuvi-history-legend{
  display:flex;
  flex-wrap:wrap;
  gap:10px 18px;
  margin:12px 0 8px;
  color:#9cb0b9;
  font-size:10px;
}
.ruuvi-history-legend span{
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.ruuvi-history-legend i{
  width:16px;
  height:2px;
  display:inline-block;
}
.ruuvi-history-legend .is-optik{background:var(--ruuvi-optik)}
.ruuvi-history-legend .is-teleskop{background:var(--ruuvi-teleskop)}
.ruuvi-history-legend .is-inne{background:var(--ruuvi-inne)}
.ruuvi-history-legend .is-ute{background:var(--ruuvi-ute)}
.ruuvi-history-chart-wrap{
  overflow-x:auto;
  scrollbar-width:thin;
}
.ruuvi-history-chart{
  display:block;
  width:100%;
  min-width:620px;
  height:auto;
  aspect-ratio:960/260;
}
@media (max-width:700px){
  .ruuvi-history-heading{display:block}
  .ruuvi-history-heading > p:last-child{text-align:left;margin-top:8px}
}


/* 2.7.9 – tidsval för gemensam Ruuvi-graf */
.ruuvi-history-controls{
  display:flex;
  flex-wrap:wrap;
  gap:6px;
  margin:10px 0 8px;
}
.ruuvi-history-controls button{
  appearance:none;
  border:1px solid rgba(127,167,183,.32);
  background:transparent;
  color:#8ea8b3;
  font:inherit;
  font-size:10px;
  line-height:1;
  padding:7px 10px;
  cursor:pointer;
}
.ruuvi-history-controls button:hover,
.ruuvi-history-controls button:focus-visible{
  border-color:rgba(127,167,183,.65);
  color:#d7e2e7;
  outline:none;
}
.ruuvi-history-controls button.is-active{
  border-color:#65c991;
  color:#8fe0ad;
  background:rgba(101,201,145,.08);
}
