/* TESS-CSP-DYNAMIC-FINAL TESS-Observatory CSS block 1 */
:root{--topbar-h:44px;--bg:#02050d;--cyan:#6ee7ff;--red:#ff3b5f;--line:rgba(110,231,255,.28);--text:#eaf8ff;}
  *{box-sizing:border-box}
  html,body{min-height:100%;margin:0;background:radial-gradient(circle at 50% 0%,#081b33 0%,#02050d 48%,#000 100%);color:var(--text);font-family:Orbitron,Arial,sans-serif;overflow-x:hidden;overflow-y:auto;}/* TESS-KEYPAD-BELOW-OVERRIDE-PAGE-SCROLL v1 */
  body::before{content:"";position:fixed;inset:0;background:linear-gradient(rgba(110,231,255,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(110,231,255,.035) 1px,transparent 1px);background-size:42px 42px;pointer-events:none;opacity:.65;}
  .observatory-shell{position:relative;min-height:960px;display:grid;grid-template-rows:var(--topbar-h) 1fr;background:#02050d;}/* TESS-KEYPAD-BELOW-OVERRIDE-SHELL-SCROLL v1 */
  .topbar{height:var(--topbar-h);display:flex;align-items:center;gap:10px;padding:6px 12px;border-bottom:1px solid var(--line);background:linear-gradient(180deg,rgba(4,14,28,.96),rgba(2,5,13,.92));box-shadow:0 0 24px rgba(110,231,255,.15);z-index:5;white-space:nowrap;overflow:hidden;position:relative;}
  .topbar a{color:var(--text);text-decoration:none;text-transform:uppercase;font-size:.72rem;letter-spacing:.08em;border:1px solid rgba(110,231,255,.45);border-radius:999px;padding:7px 11px;background:rgba(2,15,30,.78);box-shadow:0 0 12px rgba(110,231,255,.13) inset;}
  .topbar a:hover{border-color:var(--cyan);color:white;box-shadow:0 0 18px rgba(110,231,255,.28)}
  .topbar-title{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#dff9ff;font-size:.72rem;font-weight:900;letter-spacing:.10em;text-transform:uppercase;text-align:center;text-shadow:0 0 10px rgba(110,231,255,.64),0 0 22px rgba(110,231,255,.28);pointer-events:none;max-width:52vw;overflow:hidden;text-overflow:ellipsis;}/* TESS-OBSERVATORY-TOPBAR-CENTER-TITLE v1 */
  .topbar .status{margin-left:auto;display:flex;gap:10px;align-items:center;color:#9eefff;font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;min-width:0;}
  .topbar .status span{overflow:hidden;text-overflow:ellipsis;}
  .topbar .status a{font-size:.62rem;padding:6px 9px;letter-spacing:.07em;}
  .topbar .status button{color:var(--text);text-decoration:none;text-transform:uppercase;font-size:.88rem;font-weight:900;letter-spacing:.09em;border:1px solid rgba(110,231,255,.55);border-radius:999px;padding:13px 24px;background:rgba(2,15,30,.78);box-shadow:0 0 12px rgba(110,231,255,.13) inset;cursor:pointer;position:fixed;left:50%;top:216px;transform:translateX(-50%);z-index:30;}/* TESS-OBSERVATORY-RETRY-PASSWORD-TEAMSPEAK-THEME-DOWN20 v1 *//* TESS-OBSERVATORY-RETRY-PASSWORD-LARGER v1 */
  .topbar .status button:hover{border-color:var(--cyan);color:white;box-shadow:0 0 18px rgba(110,231,255,.28)}
  .topbar .status button[hidden]{display:none;}
  .viewer{position:relative;min-height:900px;background:#02050d;overflow:visible;}/* TESS-KEYPAD-BELOW-OVERRIDE-VIEWER-VISIBLE v1 */
  .viewer iframe{position:absolute;inset:0;width:100%;height:100vh;border:0;background:#02050d;display:block;z-index:2;}/* TESS-KEYPAD-BELOW-OVERRIDE-IFRAME-VIEWPORT v1 */
  .viewer::after{content:"";position:absolute;inset:0;pointer-events:none;border:1px solid rgba(110,231,255,.18);box-shadow:inset 0 0 34px rgba(110,231,255,.10), inset 0 0 90px rgba(255,59,95,.05);z-index:4;}
  .password-gate{position:absolute;inset:0;z-index:6;display:flex;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 20%,rgba(10,40,70,.92),rgba(2,5,13,.98) 55%,#000 100%);}
  .password-card{width:min(640px,calc(100vw - 36px));border:1px solid rgba(110,231,255,.42);border-radius:18px;padding:26px;background:linear-gradient(180deg,rgba(5,20,38,.94),rgba(2,8,18,.96));box-shadow:0 0 34px rgba(110,231,255,.18), inset 0 0 26px rgba(110,231,255,.06);text-align:center;transform:translateY(-150px);/* TESS-OBSERVATORY-PASSWORD-BOX-UP-150PX v1 */}
  .password-card h1{margin:0 0 10px;color:#dff9ff;font-size:1.05rem;letter-spacing:.12em;text-transform:uppercase;}
  .password-card p{margin:0 0 18px;color:#9eefff;font-size:.78rem;letter-spacing:.045em;line-height:1.5;text-transform:uppercase;white-space:nowrap;}/* TESS-OBSERVATORY-PASSWORD-CARD-WIDER-TWO-LINE v1 */
  .password-card label{display:block;text-align:left;color:#9eefff;font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;margin:0 0 7px;}
  .password-card input{width:100%;height:44px;border:1px solid rgba(110,231,255,.55);border-radius:10px;background:rgba(0,8,18,.86);color:#fff;padding:0 12px;font-size:1rem;outline:none;box-shadow:inset 0 0 14px rgba(110,231,255,.10);}
  .password-card input:focus{border-color:#6ee7ff;box-shadow:0 0 18px rgba(110,231,255,.22), inset 0 0 14px rgba(110,231,255,.12);}
  .password-card button{width:100%;margin-top:14px;border:1px solid rgba(110,231,255,.72);border-radius:999px;background:rgba(2,15,30,.92);color:#eaf8ff;padding:12px 14px;text-transform:uppercase;font-weight:700;letter-spacing:.12em;cursor:pointer;}
  .password-card button:hover{background:rgba(8,32,58,.96);box-shadow:0 0 22px rgba(110,231,255,.26)}
  .password-console-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px;}/* TESS-OBSERVATORY-GATE-CONSOLE-BUTTONS v1 */
  .password-console-actions button{margin-top:0;font-size:.72rem;}
  .gate-error{display:none;margin-top:12px;color:#ff9dad;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;}
  .viewer.connected.vnc-frame-active .password-gate{display:none;}/* TESS-NOVNC-HIDE-GATE-ONLY-WITH-FRAME v2 */
  @media(max-width:760px){:root{--topbar-h:72px}.topbar{flex-wrap:wrap;align-content:center}.topbar .status{width:100%;margin-left:0;font-size:.58rem}.topbar a{font-size:.62rem;padding:6px 8px}}

  /* TESS-OBSERVATORY-STATUS-PANEL v1 */
  .observatory-status-panel{position:absolute;left:14px;right:auto;top:14px;z-index:7;width:min(304px,calc(100vw - 28px));border:1px solid rgba(110,231,255,.34);border-radius:14px;background:linear-gradient(180deg,rgba(4,18,34,.88),rgba(2,8,16,.82));box-shadow:0 0 22px rgba(110,231,255,.12), inset 0 0 18px rgba(110,231,255,.05);backdrop-filter:blur(7px);padding:10px;color:#eaf8ff;}/* TESS-OBSERVATORY-STATUS-PANEL-TOP-RIGHT v5 */
  .observatory-status-panel h2{margin:0 0 7px;color:#dff9ff;font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;text-align:center;line-height:1.24;}
  .observatory-status-title{display:block;width:100%;text-align:center;}/* TESS-OBSERVATORY-STATUS-ASIAIR-PRO-CENTERED v1 */
  .observatory-status-pill{display:inline-flex;align-items:center;gap:5px;border:1px solid rgba(110,231,255,.35);border-radius:999px;padding:3px 7px;background:rgba(0,10,20,.55);font-size:.54rem;letter-spacing:.06em;color:#9eefff;}
  .observatory-status-dot{width:8px;height:8px;border-radius:999px;background:#ffd166;box-shadow:0 0 12px rgba(255,209,102,.75);}
  .observatory-status-dot.ok{background:#42ff9c;box-shadow:0 0 12px rgba(66,255,156,.85);}
  .observatory-status-dot.warn{background:#ffd166;box-shadow:0 0 12px rgba(255,209,102,.75);}
  .observatory-status-dot.bad{background:#ff5577;box-shadow:0 0 12px rgba(255,85,119,.75);}
  .observatory-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;}
  .observatory-status-item{border:1px solid rgba(110,231,255,.18);border-radius:9px;background:rgba(0,8,18,.48);padding:5px;min-height:36px;}/* TESS-ASIAIR-SPECS-PANEL-COMPACT v1 */
  .observatory-status-label{display:block;color:#72cfe5;font-size:.5rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .observatory-status-value{display:block;color:#fff;font-size:.6rem;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .observatory-status-note{margin-top:4px;color:#83d8ee;font-size:.47rem;letter-spacing:.045em;text-transform:uppercase;opacity:.9;line-height:1.15;}/* TESS-ASIAIR-SPECS-PANEL-COMPACT-NOTE v1 */
  @media(max-width:760px){.observatory-status-panel{left:auto;right:10px;top:10px;bottom:auto;width:min(291px,calc(100vw - 20px));padding:9px}.observatory-status-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.observatory-status-panel h2{font-size:.64rem}.observatory-status-item{padding:6px;min-height:38px}}

  /* TESS-REMOVED-SECONDARY-TELESCOPE-secondary telescope-FRONTEND-REMOVED-ASIAIR-ONLY v1 */

  /* TESS-OBSERVATORY-GOTO-INPUT-PANEL v4 PARK-HOME-GOTO */
  /* TESS-OBSERVATORY-GOTO-UNDER-STATUS-NO-TOUCH v1 */
  /* TESS-OBSERVATORY-GOTO-TEXT-SLIGHTLY-LARGER v1 */
  .observatory-goto-panel{position:absolute;right:14px;top:10px;/* TESS-GOTO-DIRECTLY-BELOW-ASIAIR-STATUS v1 */z-index:7;width:min(304px,calc(100vw - 28px));border:1px solid rgba(110,231,255,.34);border-radius:14px;background:linear-gradient(180deg,rgba(4,24,36,.88),rgba(4,8,18,.84));box-shadow:0 0 24px rgba(110,231,255,.12), inset 0 0 20px rgba(110,231,255,.045);backdrop-filter:blur(7px);padding:8px;color:#eafcff;}/* TESS-GOTO-MATCH-REMOVED-SECONDARY-TELESCOPE-INPUT-THEME v1 *//* TESS-ASIAIR-GOTO-UP-4PX-SKY-TOUCH v1 */
  .observatory-goto-panel h2{margin:0 0 6px;color:#dff9ff;font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;text-align:center;line-height:1.24;}
  .observatory-goto-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;}
  .observatory-goto-field-full{grid-column:1/-1;}
  .observatory-goto-field{display:grid;gap:2px;}
  .observatory-goto-field label{color:#72cfe5;font-size:.5rem;letter-spacing:.08em;text-transform:uppercase;margin-bottom:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .observatory-goto-field input{width:100%;border:1px solid rgba(110,231,255,.28);border-radius:8px;background:rgba(0,8,18,.62);color:#fff;font:700 .6rem Orbitron,Arial,sans-serif;letter-spacing:.035em;padding:6px 7px;outline:none;}
  .observatory-goto-field input:focus{border-color:rgba(110,231,255,.72);box-shadow:0 0 0 2px rgba(110,231,255,.12),0 0 18px rgba(110,231,255,.12);}
  .observatory-goto-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:6px;}
  .observatory-roof-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:7px;}
  .observatory-roof-stop-row{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:7px;}
  .observatory-roof-button{margin-top:0;width:100%;border:1px solid rgba(255,72,72,.58);border-radius:999px;background:rgba(30,2,5,.88);color:#ffdede;font:900 .52rem Orbitron,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:8px 8px;cursor:pointer;box-shadow:0 0 14px rgba(255,72,72,.12) inset;}
  .observatory-roof-button:hover{border-color:#ff6b6b;color:#fff2f2;box-shadow:0 0 20px rgba(255,72,72,.28), inset 0 0 16px rgba(255,72,72,.10);}
  .observatory-goto-button{margin-top:0;width:100%;border:1px solid rgba(110,231,255,.48);border-radius:999px;background:linear-gradient(90deg,rgba(110,231,255,.16),rgba(126,87,255,.18));color:#dffbff;font:900 .52rem Orbitron,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:8px 8px;cursor:pointer;}
  .observatory-goto-button:hover{border-color:#6ee7ff;box-shadow:0 0 18px rgba(110,231,255,.20);}
  .observatory-park-button{margin-top:0;width:100%;border:1px solid rgba(110,231,255,.48);border-radius:999px;background:linear-gradient(90deg,rgba(110,231,255,.16),rgba(126,87,255,.18));color:#dffbff;font:900 .52rem Orbitron,Arial,sans-serif;letter-spacing:.08em;text-transform:uppercase;padding:8px 8px;cursor:pointer;}
  .observatory-park-button:hover{border-color:#6ee7ff;box-shadow:0 0 18px rgba(110,231,255,.20);}
  .observatory-goto-note{margin-top:5px;color:#83d8ee;font-size:.5rem;letter-spacing:.05em;line-height:1.25;text-transform:uppercase;opacity:.9;}


  /* TESS-OBSERVATORY-TESTING-LIVE-BUTTONS-CSS v1 */
  .asiair-mode-row{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid rgba(255,72,72,.22);}
  .observatory-mode-button{width:100%;border:1px solid rgba(255,90,90,.58);border-radius:999px;background:linear-gradient(180deg,rgba(28,0,0,.92),rgba(8,0,0,.98));color:#ffbaba;font:900 .54rem Orbitron,Arial,sans-serif;letter-spacing:.12em;text-transform:uppercase;padding:8px 8px;cursor:pointer;box-shadow:inset 0 0 12px rgba(255,0,0,.10),0 0 12px rgba(255,0,0,.08);}
  .observatory-mode-button.mode-selected{border-color:#ff2a2a;color:#fff;background:linear-gradient(180deg,rgba(95,0,0,.98),rgba(24,0,0,.98));box-shadow:0 0 22px rgba(255,0,0,.32),inset 0 0 16px rgba(255,0,0,.18);}
  .observatory-mode-button.mode-live.mode-selected{border-color:#ffcc66;color:#fff4cf;box-shadow:0 0 22px rgba(255,204,102,.28),inset 0 0 16px rgba(255,204,102,.12);}

  /* TESS-ASIAIR-COMMAND-CONSOLE-SLEEK v1 */
  .asiair-command-console{margin-top:8px;border:1px solid rgba(255,72,72,.42);border-radius:13px;background:radial-gradient(circle at 50% 0%,rgba(255,45,45,.16),rgba(20,0,0,.78) 58%,rgba(5,0,0,.92));box-shadow:inset 0 0 18px rgba(255,0,0,.10),0 0 22px rgba(255,0,0,.12);padding:8px;}
  .telescope-position-panel{margin:0 0 8px;border:0;border-radius:0;background:transparent;box-shadow:none;padding:0;}/* TESS-CURRENT-TELESCOPE-ORIENTATION-FRAME-REMOVED v1 */
  .telescope-position-title{color:#9beeff;font:900 .50rem Orbitron,Arial,sans-serif;letter-spacing:.11em;text-transform:uppercase;text-align:center;margin-bottom:6px;}
  .telescope-position-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px;}
  .telescope-position-item{border:1px solid rgba(110,231,255,.16);border-radius:8px;background:rgba(0,0,0,.25);padding:5px;min-height:33px;}.orientation-motion-row{display:flex;align-items:center;justify-content:space-between;gap:5px;overflow:visible}.orientation-motion-main{display:flex;align-items:center;justify-content:space-between;gap:6px;flex:1;min-width:0}.observatory-recalibrate-button{border:1px solid rgba(255,59,95,.82);border-radius:8px;background:linear-gradient(180deg,rgba(92,0,10,.98),rgba(26,0,4,.98));color:#ffe6ea;font-weight:900;text-transform:uppercase;letter-spacing:.045em;font-size:.46rem;padding:5px 6px;box-shadow:0 0 12px rgba(255,32,64,.34),inset 0 0 10px rgba(255,59,95,.16);cursor:pointer;white-space:nowrap;flex:0 0 auto}.observatory-recalibrate-button:hover{background:linear-gradient(180deg,rgba(150,0,18,.98),rgba(42,0,6,.98));box-shadow:0 0 18px rgba(255,32,64,.55),inset 0 0 12px rgba(255,59,95,.22)}/* TESS-OBSERVATORY-RECALIBRATE-BUTTON-UI v1 */
  .telescope-position-item-full{grid-column:1/-1;}
  .telescope-position-label{display:block;color:#72cfe5;font-size:.46rem;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px;}
  .telescope-position-value{display:block;color:#fff;font-size:.54rem;letter-spacing:.015em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
  .asiair-command-row{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:7px;}
  .asiair-command-row.park-row{grid-template-columns:1fr 1fr;margin-bottom:7px;}
  .asiair-dpad{display:grid;grid-template-columns:1fr 1fr 1fr;grid-template-areas:"test up live" "left down right";gap:7px;margin:7px 0;}/* TESS-TESTING-LIVE-BESIDE-MOVE-UP-CSS v1 */
  .observatory-move-button{width:100%;border:1px solid rgba(255,90,90,.70);border-radius:10px;background:linear-gradient(180deg,rgba(60,0,0,.92),rgba(14,0,0,.96));color:#ffe1e1;font:900 .50rem Orbitron,Arial,sans-serif;letter-spacing:.085em;text-transform:uppercase;padding:8px 6px;cursor:pointer;box-shadow:inset 0 0 13px rgba(255,0,0,.12),0 0 10px rgba(255,0,0,.10);}
  .observatory-move-button:hover,.command-primary:hover,.command-park:hover,.command-stop:hover{border-color:#ff2a2a;color:#fff;box-shadow:0 0 20px rgba(255,0,0,.30),inset 0 0 14px rgba(255,0,0,.18);}
  .move-up{grid-area:up}.move-left{grid-area:left}.move-right{grid-area:right}.move-down{grid-area:down}.mode-left{grid-area:test}.mode-right{grid-area:live}
  .command-primary,.command-park{background:linear-gradient(180deg,rgba(42,0,0,.96),rgba(10,0,0,.98));border-color:rgba(255,72,72,.70);color:#ffe6e6;}

  /* TESS-INDI-PARK-UNPARK-ACTIVE-BUTTONS v1 */
  .command-park.indi-state-active{border-color:rgba(57,255,20,.95)!important;background:linear-gradient(180deg,rgba(0,72,18,.98),rgba(0,24,8,.98))!important;color:#eaffea!important;box-shadow:0 0 20px rgba(57,255,20,.38),inset 0 0 16px rgba(57,255,20,.18)!important;}
  .command-park.indi-state-inactive{border-color:rgba(255,32,32,.82)!important;background:linear-gradient(180deg,rgba(64,0,0,.98),rgba(15,0,0,.98))!important;color:#ffe1e1!important;box-shadow:inset 0 0 13px rgba(255,0,0,.14),0 0 10px rgba(255,0,0,.12)!important;}
  .command-stop-row{grid-template-columns:1fr 1fr;margin-top:7px;}
  .command-stop{border-color:rgba(255,0,0,.92);background:linear-gradient(180deg,rgba(90,0,0,.96),rgba(18,0,0,.98));color:#fff1f1;box-shadow:0 0 18px rgba(255,0,0,.22),inset 0 0 16px rgba(255,0,0,.18);}

  /* TESS-OBSERVATORY-ACTIVE-CONTROL-BUTTONS v1 */
  .observatory-control-state-button.control-state-active{border-color:rgba(57,255,20,.98)!important;background:linear-gradient(180deg,rgba(0,76,18,.98),rgba(0,22,7,.98))!important;color:#eaffea!important;box-shadow:0 0 22px rgba(57,255,20,.42),inset 0 0 16px rgba(57,255,20,.20)!important;}
  .observatory-control-state-button.control-state-inactive{border-color:rgba(255,32,32,.82)!important;background:linear-gradient(180deg,rgba(64,0,0,.98),rgba(15,0,0,.98))!important;color:#ffe1e1!important;box-shadow:inset 0 0 13px rgba(255,0,0,.14),0 0 10px rgba(255,0,0,.12)!important;}

  .observatory-goto-result{min-height:14px;margin-top:5px;color:#95ffdf;font-size:.48rem;letter-spacing:.045em;line-height:1.18;text-transform:uppercase;}
  @media(max-width:760px){.observatory-goto-panel{right:10px;top:398px;width:min(291px,calc(100vw - 20px));padding:7px}.observatory-goto-panel h2{font-size:.60rem}.observatory-goto-field input{font-size:.54rem;padding:5px 6px}}

  /* TESS-OBSERVATORY-LIVE-CAMERA-PANEL v1 */
  .roof-camera-panel{position:absolute;left:14px;top:480px;/* TESS-LIVE-CAMERA-CLOSE-GAP-AFTER-ASIAIR-HEADING-REMOVED v4 */transform:none;z-index:7;width:304px;min-width:0;height:282px;box-sizing:border-box;border:1px solid rgba(255,0,0,.72);border-radius:14px;background:linear-gradient(180deg,rgba(38,0,0,.96),rgba(8,0,0,.92));box-shadow:0 0 28px rgba(255,0,0,.24), inset 0 0 24px rgba(255,0,0,.075);backdrop-filter:blur(7px);padding:7px;color:#ffb1b1;text-align:center;}
  .roof-camera-panel h2{margin:0 0 5px;color:#ff2a2a;font-size:.66rem;letter-spacing:.10em;text-transform:uppercase;text-align:center;line-height:1.16;text-shadow:0 0 9px rgba(255,0,0,.95),0 0 28px rgba(255,0,0,.55);}
  .roof-camera-frame{height:216px;border:1px solid rgba(255,0,0,.50);border-radius:10px;overflow:hidden;background:#050000;box-shadow:inset 0 0 18px rgba(255,0,0,.12);}
  .roof-camera-frame img,.roof-camera-frame iframe{width:100%;height:100%;object-fit:contain;object-position:center;display:block;filter:saturate(.92) contrast(1.05);border:0;background:#050000;}
  .roof-camera-meta{display:flex;justify-content:space-between;gap:4px;margin-top:4px;color:#ff8080;font-size:.48rem;letter-spacing:.045em;text-transform:uppercase;}
  .roof-camera-dot{display:inline-block;width:7px;height:7px;border-radius:999px;background:#ff9b00;box-shadow:0 0 9px rgba(255,155,0,.7);margin-right:5px;vertical-align:middle;}
  .roof-camera-dot.ok{background:#ff0000;box-shadow:0 0 10px rgba(255,0,0,.95)}
  @media(max-width:1080px){.roof-camera-panel{display:none}}

  /* TESS-SKY-CAMERA-PANEL-CSS v1 */
  /* TESS-SKY-CAMERA-MOVE-RIGHT-140PX v1 */
  /* TESS-SKY-CAMERA-MOVE-RIGHT-PLUS-60PX v1 */
  /* TESS-SKY-CAMERA-MOVE-RIGHT-PLUS-60PX-AGAIN v1 */
  /* TESS-SKY-CAMERA-MOVE-RIGHT-PLUS-10PX v1 */
  /* TESS-SKY-CAMERA-MOVE-BACK-5PX v1 */
  .sky-camera-panel{position:absolute;left:auto;right:14px;top:342px;transform:none;z-index:7;width:304px;min-width:0;height:282px;box-sizing:border-box;border:1px solid rgba(255,0,0,.72);border-radius:14px;background:linear-gradient(180deg,rgba(38,0,0,.96),rgba(8,0,0,.92));box-shadow:0 0 28px rgba(255,0,0,.24), inset 0 0 24px rgba(255,0,0,.075);backdrop-filter:blur(7px);padding:7px;color:#ffb1b1;text-align:center;}/* TESS-SKY-CAMERA-TOUCHING-GOTO-FRAME v1 *//* TESS-SKY-CAMERA-RETOUCH-AFTER-CONTROL-CONSOLE v1 */
  .sky-camera-panel h2{margin:0 0 5px;color:#ff2a2a;font-size:.66rem;letter-spacing:.10em;text-transform:uppercase;text-align:center;line-height:1.16;text-shadow:0 0 9px rgba(255,0,0,.95),0 0 28px rgba(255,0,0,.55);}
  .sky-camera-frame{height:216px;border:1px solid rgba(255,0,0,.50);border-radius:10px;overflow:hidden;background:#050000;box-shadow:inset 0 0 18px rgba(255,0,0,.12);}
  .sky-camera-frame img{width:100%;height:100%;object-fit:cover;object-position:center;display:block;filter:saturate(.98) contrast(1.08);}
  .sky-camera-meta{display:flex;justify-content:space-between;gap:4px;margin-top:4px;color:#ff8080;font-size:.48rem;letter-spacing:.045em;text-transform:uppercase;}
  .sky-camera-dot{display:inline-block;width:7px;height:7px;border-radius:999px;background:#ff9b00;box-shadow:0 0 9px rgba(255,155,0,.7);margin-right:5px;vertical-align:middle;}
  .sky-camera-dot.ok{background:#ff0000;box-shadow:0 0 10px rgba(255,0,0,.95)}
  @media(max-width:1260px){.sky-camera-panel{display:none}}

/* TESS-HIGHTECH-KEYPAD-CONTROL-PANEL v1 */
.tess-keypad-panel{position:absolute;/* TESS-KEYPAD-BELOW-OVERRIDE-COMMANDS v1 */left:auto;right:14px;top:482px;z-index:7;width:304px;/* TESS-KEYPAD-CLOSE-BELOW-CONTROL-PANEL-20PX-GAP v1 */min-width:0;height:282px;box-sizing:border-box;border:1px solid rgba(57,255,20,.68);border-radius:16px;background:radial-gradient(circle at 50% 0%,rgba(0,70,24,.35),rgba(5,0,0,.96) 58%,rgba(0,0,0,.98));box-shadow:0 0 30px rgba(57,255,20,.18),0 0 55px rgba(255,0,0,.14),inset 0 0 26px rgba(57,255,20,.08);backdrop-filter:blur(7px);padding:9px;color:#eaffea;text-align:center;overflow:hidden;}
.tess-keypad-panel:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(rgba(57,255,20,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,0,0,.05) 1px,transparent 1px);background-size:100% 5px,20px 100%;opacity:.45;mix-blend-mode:screen;}
.tess-keypad-panel h2{position:relative;margin:0 0 6px;color:#39ff14;font-size:.66rem;letter-spacing:.11em;text-transform:uppercase;text-shadow:0 0 10px rgba(57,255,20,.85),0 0 28px rgba(57,255,20,.38);}
.tess-keypad-sub{position:relative;margin:0 0 8px;color:#ffd6d6;font-size:.46rem;letter-spacing:.08em;text-transform:uppercase;}
.tess-keypad-grid{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin:7px auto 8px;width:238px;}
.tess-keypad-btn{height:48px;border:1px solid rgba(57,255,20,.72);border-radius:13px;background:linear-gradient(180deg,rgba(0,70,18,.92),rgba(0,18,6,.96));color:#eaffea;font:900 .78rem Orbitron,Arial,sans-serif;letter-spacing:.08em;cursor:pointer;box-shadow:0 0 14px rgba(57,255,20,.20),inset 0 0 14px rgba(57,255,20,.10);text-transform:uppercase;}
.tess-keypad-btn:hover,.tess-keypad-btn:focus{border-color:#ff3030;color:#fff;box-shadow:0 0 22px rgba(255,0,0,.46),inset 0 0 16px rgba(255,0,0,.18);outline:none;transform:translateY(-1px)}
.tess-keypad-btn.stop{border-color:rgba(255,35,35,.85);background:linear-gradient(180deg,rgba(96,0,0,.96),rgba(24,0,0,.98));color:#ffdede;box-shadow:0 0 18px rgba(255,0,0,.25),inset 0 0 14px rgba(255,0,0,.14)}
.tess-keypad-btn.blank{visibility:hidden;pointer-events:none;}
.tess-keypad-status{position:relative;border:1px solid rgba(110,231,255,.35);border-radius:12px;background:rgba(0,12,18,.60);padding:7px 8px;color:#9eefff;font-size:.48rem;line-height:1.45;text-transform:uppercase;letter-spacing:.065em;}
@media(max-width:1260px){.tess-keypad-panel{display:none}}



  /* TESS-ASTRO-WORKSTATION-HOVER-COLLAPSE-PANELS v1 */
    .viewer.connected.astro-workstation-active .observatory-status-panel,
  .viewer.connected.astro-workstation-active .observatory-goto-panel{
    transition:transform .28s ease,opacity .22s ease,box-shadow .22s ease;
    opacity:.72;
    z-index:8;
  }
  .viewer.connected.astro-workstation-active .observatory-status-panel,
  .viewer.connected.astro-workstation-active .observatory-goto-panel{
    transform:translateX(calc(100% - 34px));
  }
  .viewer.connected.astro-workstation-active .removedSecondaryTelescope-panel:focus-within,
  .viewer.connected.astro-workstation-active .removedSecondaryTelescope-input-panel:focus-within,
  .viewer.connected.astro-workstation-active .observatory-status-panel:hover,
  .viewer.connected.astro-workstation-active .observatory-status-panel:focus-within,
  .viewer.connected.astro-workstation-active .observatory-goto-panel:hover,
  .viewer.connected.astro-workstation-active .observatory-goto-panel:focus-within{
    transform:translateX(0);
    opacity:1;
    box-shadow:0 0 32px rgba(110,231,255,.24), inset 0 0 20px rgba(110,231,255,.07);
  }
  .viewer.connected.astro-workstation-active .removedSecondaryTelescope-input-panel::before,
  .viewer.connected.astro-workstation-active .observatory-status-panel::before,
  .viewer.connected.astro-workstation-active .observatory-goto-panel::before{
    content:attr(data-collapse-label);
    position:absolute;
    top:10px;
    width:24px;
    min-height:92px;
    display:flex;
    align-items:center;
    justify-content:center;
    writing-mode:vertical-rl;
    text-orientation:mixed;
    letter-spacing:.12em;
    font-size:.58rem;
    font-weight:800;
    color:#eafcff;
    border:1px solid rgba(110,231,255,.42);
    background:linear-gradient(180deg,rgba(5,35,55,.94),rgba(4,8,18,.92));
    box-shadow:0 0 18px rgba(110,231,255,.18);
    border-radius:9px;
    pointer-events:none;
  }
  .viewer.connected.astro-workstation-active .removedSecondaryTelescope-input-panel::before{right:5px;}
  .viewer.connected.astro-workstation-active .observatory-status-panel::before,
  .viewer.connected.astro-workstation-active .observatory-goto-panel::before{left:5px;}
  .viewer.connected.astro-workstation-active .removedSecondaryTelescope-panel:focus-within::before,
  .viewer.connected.astro-workstation-active .removedSecondaryTelescope-input-panel:focus-within::before,
  .viewer.connected.astro-workstation-active .observatory-status-panel:hover::before,
  .viewer.connected.astro-workstation-active .observatory-status-panel:focus-within::before,
  .viewer.connected.astro-workstation-active .observatory-goto-panel:hover::before,
  .viewer.connected.astro-workstation-active .observatory-goto-panel:focus-within::before{display:none;}

  /* TESS-LIVE-CAMERA-ASTRO-COLLAPSE-99-5-PERCENT v8 */
  /* TESS-LIVE-CAMERA-ASIAIR-COLLAPSE-MATCH-REMOVED-SECONDARY-TELESCOPE v1 */
  .viewer.connected.astro-workstation-active .roof-camera-panel,
  .viewer.connected.asiair-console-active .roof-camera-panel{
    transition:transform .32s ease,opacity .24s ease,box-shadow .22s ease;
    transform:translateY(99.5%);
    opacity:.72;
    pointer-events:auto;
    z-index:9;
  }
  .viewer.connected.astro-workstation-active .roof-camera-panel:hover,
  .viewer.connected.astro-workstation-active .roof-camera-panel:focus-within,
  .viewer.connected.asiair-console-active .roof-camera-panel:hover,
  .viewer.connected.asiair-console-active .roof-camera-panel:focus-within{
    transform:translateY(0);
    opacity:1;
    box-shadow:0 0 32px rgba(255,0,0,.34), inset 0 0 24px rgba(255,0,0,.09);
  }

  /* TESS-SKY-CAMERA-COLLAPSE-LIKE-LIVE-CAMERA v1 */
  .viewer.connected.astro-workstation-active .sky-camera-panel,
  .viewer.connected.asiair-console-active .sky-camera-panel{
    transition:transform .32s ease,opacity .24s ease,box-shadow .22s ease;
    transform:translateY(99.5%);
    opacity:.72;
    pointer-events:auto;
    z-index:9;
  }
  .viewer.connected.astro-workstation-active .sky-camera-panel:hover,
  .viewer.connected.astro-workstation-active .sky-camera-panel:focus-within,
  .viewer.connected.asiair-console-active .sky-camera-panel:hover,
  .viewer.connected.asiair-console-active .sky-camera-panel:focus-within{
    transform:translateY(0);
    opacity:1;
    box-shadow:0 0 32px rgba(255,0,0,.34), inset 0 0 24px rgba(255,0,0,.09);
  }


  /* TESS-CONSOLE-SELECTION-EXPLICIT-TARGET-STYLE v1 */
  .password-console-button.console-selected{border-color:rgba(255,235,130,.86);box-shadow:0 0 18px rgba(255,235,130,.26), inset 0 0 12px rgba(255,235,130,.10);color:#fff7bd;}



  /* TESS-OBSERVATORY-RED-ASTRONOMY-THEME v1
     Dark-adapted astronomy theme: red text/accents preserve night vision while keeping controls readable. */
  :root{--bg:#070000;--cyan:#ff4a4a;--red:#ff4a4a;--line:rgba(255,72,72,.34);--text:#ffd6d6;--astro-red:#ff4a4a;--astro-red-soft:#ff8a8a;--astro-red-dim:#b74242;--astro-panel:rgba(22,3,5,.88);}
  html,body{background:radial-gradient(circle at 50% 0%,#280509 0%,#080001 48%,#000 100%);color:var(--text);}
  body::before{background:linear-gradient(rgba(255,72,72,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(255,72,72,.035) 1px,transparent 1px);}
  .observatory-shell,.viewer,.viewer iframe{background:#040000;}
  .observatory-shell,.viewer{min-height:960px;}/* TESS-KEYPAD-BELOW-OVERRIDE-SCROLL-ROOM v1 */
  .topbar,.password-card,.observatory-status-panel,.removedSecondaryTelescope-panel,.removedSecondaryTelescope-input-panel,.observatory-goto-panel{border-color:rgba(255,72,72,.42);background:linear-gradient(180deg,rgba(34,4,8,.92),rgba(8,0,2,.88));box-shadow:0 0 24px rgba(255,72,72,.16), inset 0 0 22px rgba(255,72,72,.055);color:#ffd6d6;}
  .password-gate{background:radial-gradient(circle at 50% 20%,rgba(70,8,14,.92),rgba(10,0,2,.98) 55%,#000 100%);}
  .topbar-title,.password-card h1,.observatory-status-panel h2,.removedSecondaryTelescope-panel h2,.removedSecondaryTelescope-input-panel h2,.observatory-goto-panel h2{color:#ffd0d0;text-shadow:0 0 10px rgba(255,72,72,.72),0 0 24px rgba(255,72,72,.28);}
  .topbar a,.topbar .status button,.password-card button,.removedSecondaryTelescope-button,.removedSecondaryTelescope-input-button,.observatory-goto-button,.observatory-park-button,.observatory-roof-button{border-color:rgba(255,72,72,.58);background:rgba(30,2,5,.88);color:#ffdede;box-shadow:0 0 14px rgba(255,72,72,.12) inset;}
  .topbar a:hover,.topbar .status button:hover,.password-card button:hover,.removedSecondaryTelescope-button:hover,.removedSecondaryTelescope-input-button:hover,.observatory-goto-button:hover,.observatory-park-button:hover,.observatory-roof-button:hover{border-color:#ff6b6b;color:#fff2f2;box-shadow:0 0 20px rgba(255,72,72,.28), inset 0 0 16px rgba(255,72,72,.10);}
  .password-card p,.password-card label,.topbar .status,.observatory-status-pill,.observatory-status-note,.removedSecondaryTelescope-note,.removedSecondaryTelescope-input-note,.observatory-goto-note{color:#ff9a9a;}
  .password-card input,.removedSecondaryTelescope-input-field input,.observatory-goto-field input{border-color:rgba(255,72,72,.42);background:rgba(8,0,2,.78);color:#ffe1e1;box-shadow:inset 0 0 14px rgba(255,72,72,.08);}
  .password-card input:focus,.removedSecondaryTelescope-input-field input:focus,.observatory-goto-field input:focus{border-color:#ff6b6b;box-shadow:0 0 0 2px rgba(255,72,72,.12),0 0 18px rgba(255,72,72,.20), inset 0 0 14px rgba(255,72,72,.10);}
  .observatory-status-item,.removedSecondaryTelescope-status-card,.removedSecondaryTelescope-spec{border-color:rgba(255,72,72,.22);background:rgba(12,0,2,.58);}
  .observatory-status-label,.removedSecondaryTelescope-label,.removedSecondaryTelescope-spec b,.removedSecondaryTelescope-input-field label,.observatory-goto-field label{color:#ff8a8a;}
  .observatory-status-value,.removedSecondaryTelescope-value,.removedSecondaryTelescope-spec span{color:#ffe6e6;}
  .viewer::after{border-color:rgba(255,72,72,.24);box-shadow:inset 0 0 36px rgba(255,72,72,.12), inset 0 0 90px rgba(255,20,20,.08);}
  .gate-error{color:#ffb0b0;}
  .removedSecondaryTelescope-input-result,.observatory-goto-result{color:#ffc2c2;}
  .console-selected{border-color:#ff8a8a!important;box-shadow:0 0 22px rgba(255,72,72,.34), inset 0 0 18px rgba(255,72,72,.12)!important;}



  /* TESS-OBSERVATORY-HOT-RED-THEME v1
     Hot red astronomy theme refinement: deeper background, stronger red text/accent glow. */
  :root{--cyan:#ff0000;--red:#ff0000;--line:rgba(255,0,0,.48);--text:#ffb1b1;--astro-red:#ff0000;--astro-red-soft:#ff3636;--astro-red-dim:#990000;--astro-panel:rgba(24,0,0,.92);}
  html,body{background:radial-gradient(circle at 50% 0%,#3a0000 0%,#120000 44%,#000 100%);color:#ffb1b1;}
  body::before{background:linear-gradient(rgba(255,0,0,.07) 1px,transparent 1px),linear-gradient(90deg,rgba(255,0,0,.055) 1px,transparent 1px);opacity:.72;}
  .topbar,.password-card,.observatory-status-panel,.removedSecondaryTelescope-panel,.removedSecondaryTelescope-input-panel,.observatory-goto-panel{border-color:rgba(255,0,0,.62);background:linear-gradient(180deg,rgba(38,0,0,.96),rgba(8,0,0,.92));box-shadow:0 0 28px rgba(255,0,0,.24), inset 0 0 24px rgba(255,0,0,.075);color:#ffb1b1;}
  .password-gate{background:radial-gradient(circle at 50% 20%,rgba(82,0,0,.96),rgba(13,0,0,.98) 55%,#000 100%);}
  .topbar-title,.password-card h1,.observatory-status-panel h2,.removedSecondaryTelescope-panel h2,.removedSecondaryTelescope-input-panel h2,.observatory-goto-panel h2{color:#ff2a2a;text-shadow:0 0 9px rgba(255,0,0,.95),0 0 28px rgba(255,0,0,.55);}
  .topbar a,.topbar .status button,.password-card button,.removedSecondaryTelescope-button,.removedSecondaryTelescope-input-button,.observatory-goto-button,.observatory-park-button,.observatory-roof-button{border-color:rgba(255,0,0,.78);background:rgba(28,0,0,.95);color:#ffb1b1;box-shadow:0 0 16px rgba(255,0,0,.20) inset,0 0 10px rgba(255,0,0,.10);}
  .topbar a:hover,.topbar .status button:hover,.password-card button:hover,.removedSecondaryTelescope-button:hover,.removedSecondaryTelescope-input-button:hover,.observatory-goto-button:hover,.observatory-park-button:hover,.observatory-roof-button:hover{border-color:#ff0000;color:#ffd0d0;box-shadow:0 0 24px rgba(255,0,0,.46), inset 0 0 18px rgba(255,0,0,.18);}
  .password-card p,.password-card label,.topbar .status,.observatory-status-pill,.observatory-status-note,.removedSecondaryTelescope-note,.removedSecondaryTelescope-input-note,.observatory-goto-note{color:#ff4c4c;}
  .password-card input,.removedSecondaryTelescope-input-field input,.observatory-goto-field input{border-color:rgba(255,0,0,.58);background:rgba(10,0,0,.88);color:#ffc0c0;box-shadow:inset 0 0 14px rgba(255,0,0,.12);}
  .password-card input:focus,.removedSecondaryTelescope-input-field input:focus,.observatory-goto-field input:focus{border-color:#ff0000;box-shadow:0 0 0 2px rgba(255,0,0,.20),0 0 22px rgba(255,0,0,.32), inset 0 0 14px rgba(255,0,0,.16);}
  .observatory-status-item,.removedSecondaryTelescope-status-card,.removedSecondaryTelescope-spec{border-color:rgba(255,0,0,.36);background:rgba(15,0,0,.70);}
  .observatory-status-label,.removedSecondaryTelescope-label,.removedSecondaryTelescope-spec b,.removedSecondaryTelescope-input-field label,.observatory-goto-field label{color:#ff1a1a;}
  .observatory-status-value,.removedSecondaryTelescope-value,.removedSecondaryTelescope-spec span{color:#ffc6c6;}
  .viewer::after{border-color:rgba(255,0,0,.34);box-shadow:inset 0 0 42px rgba(255,0,0,.18), inset 0 0 100px rgba(255,0,0,.12);}
  .gate-error{color:#ff6868;}
  .removedSecondaryTelescope-input-result,.observatory-goto-result{color:#ff8080;}
  .console-selected{border-color:#ff0000!important;color:#ffd0d0!important;box-shadow:0 0 28px rgba(255,0,0,.56), inset 0 0 20px rgba(255,0,0,.22)!important;}



  /* TESS-CLEAN-OBSERVATORY-HIERARCHY v1 - sharper cameras, calmer roof controls, subtle telemetry */
  .viewer::after{content:"";position:absolute;inset:44px 0 0;pointer-events:none;background:linear-gradient(rgba(110,231,255,.030) 1px,transparent 1px),linear-gradient(90deg,rgba(110,231,255,.024) 1px,transparent 1px);background-size:32px 32px;mask-image:radial-gradient(circle at 50% 46%,rgba(0,0,0,.62),transparent 78%);opacity:.72;z-index:1;}
  .removedSecondaryTelescope-panel,.observatory-status-panel,.observatory-goto-panel,.roof-camera-panel,.sky-camera-panel{border-radius:16px!important;border-width:1px!important;box-shadow:0 0 0 1px rgba(255,255,255,.025),0 14px 34px rgba(0,0,0,.42),inset 0 0 22px rgba(110,231,255,.035)!important;}
  .removedSecondaryTelescope-panel h2,.observatory-status-panel h2,.observatory-goto-panel h2{border-bottom:1px solid rgba(110,231,255,.18);padding-bottom:6px;margin-bottom:8px!important;}
  .roof-camera-panel,.sky-camera-panel{height:300px!important;padding:8px!important;background:linear-gradient(180deg,rgba(35,0,0,.97),rgba(8,0,0,.95))!important;border-color:rgba(255,42,42,.68)!important;}
  .roof-camera-panel h2,.sky-camera-panel h2{font-size:.70rem!important;margin-bottom:7px!important;text-shadow:0 0 8px rgba(255,0,0,.82)!important;}
  .roof-camera-frame,.sky-camera-frame{height:226px!important;border-radius:12px!important;border:1px solid rgba(255,70,70,.64)!important;background:linear-gradient(135deg,#060000,#120000)!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.035),inset 0 0 22px rgba(255,0,0,.16),0 0 20px rgba(255,0,0,.13)!important;position:relative;}
  .roof-camera-frame::before,.sky-camera-frame::before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(rgba(255,0,0,.055) 1px,transparent 1px);background-size:100% 4px;mix-blend-mode:screen;opacity:.42;z-index:2;}
  .roof-camera-frame::after,.sky-camera-frame::after{content:"LIVE FEED";position:absolute;left:8px;bottom:7px;z-index:3;border:1px solid rgba(255,60,60,.62);border-radius:999px;background:rgba(8,0,0,.74);color:#ffd6d6;font:800 .46rem Orbitron,Arial,sans-serif;letter-spacing:.11em;padding:3px 7px;}
  .roof-camera-frame img,.roof-camera-frame iframe,.sky-camera-frame img{filter:saturate(1.08) contrast(1.16) brightness(1.04)!important;}
  .roof-camera-frame img#roofCameraStream{object-fit:contain!important;width:100%!important;height:100%!important;background:#050000!important;transform:none!important;} /* TESS-ROOF-CAMERA-WEBPAGE-NO-DOUBLE-ROTATE v2: stream is rotated server-side */
  .roof-camera-meta,.sky-camera-meta{font-size:.50rem!important;color:#ff9a9a!important;margin-top:6px!important;align-items:center;}
  .roof-camera-dot,.sky-camera-dot{width:8px!important;height:8px!important;box-shadow:0 0 12px currentColor!important;}
  .observatory-goto-panel{background:linear-gradient(180deg,rgba(3,19,30,.94),rgba(5,8,16,.91))!important;border-color:rgba(110,231,255,.43)!important;}
  .observatory-goto-grid{gap:7px!important;}
  .observatory-goto-field label{color:#9defff!important;}
  .observatory-goto-field input{border-color:rgba(110,231,255,.38)!important;background:rgba(0,10,20,.75)!important;}
  .observatory-roof-actions,.observatory-roof-stop-row{gap:8px!important;margin-top:9px!important;}
  .observatory-roof-button{min-height:33px!important;border-radius:12px!important;background:linear-gradient(180deg,rgba(54,4,7,.96),rgba(20,0,2,.96))!important;border-color:rgba(255,75,75,.72)!important;color:#ffe6e6!important;font-size:.56rem!important;box-shadow:inset 0 0 14px rgba(255,0,0,.07),0 0 0 1px rgba(255,255,255,.025)!important;}
  .observatory-roof-button:hover{transform:translateY(-1px);box-shadow:0 0 18px rgba(255,72,72,.28),inset 0 0 14px rgba(255,72,72,.12)!important;}
  .tess-panel-telemetry{display:grid;grid-template-columns:1fr 1fr 1fr;gap:5px;margin:6px 0 4px;}
  .tess-telemetry-chip{border:1px solid rgba(110,231,255,.20);border-radius:8px;background:rgba(0,9,18,.52);padding:4px 5px;color:#c9f7ff;font:700 .45rem Orbitron,Arial,sans-serif;letter-spacing:.065em;text-transform:uppercase;text-align:center;}
  .tess-telemetry-chip b{display:block;color:#ff7373;font-size:.42rem;margin-bottom:2px;}
  .tess-camera-utility{display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;margin-top:5px;}
  .tess-camera-utility span{border:1px solid rgba(255,70,70,.23);border-radius:7px;background:rgba(16,0,0,.58);color:#ffbaba;font:700 .42rem Orbitron,Arial,sans-serif;letter-spacing:.07em;padding:3px 4px;text-align:center;text-transform:uppercase;}


/* TESS-LIVE-HOME-PARK-CHECKBOX-MODAL v1 */
.tess-live-park-modal{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.78);backdrop-filter:blur(4px)}
.tess-live-park-card{width:min(520px,calc(100vw - 34px));border:1px solid rgba(255,45,45,.78);border-radius:18px;background:linear-gradient(145deg,rgba(18,0,0,.98),rgba(4,0,0,.98));box-shadow:0 0 36px rgba(255,0,0,.35),inset 0 0 24px rgba(255,0,0,.12);padding:20px;color:#ffecec;font-family:Orbitron,Arial,sans-serif;text-transform:uppercase;letter-spacing:.06em}
.tess-live-park-card h3{margin:0 0 10px;font-size:1.05rem;color:#ff4b4b;text-shadow:0 0 10px rgba(255,0,0,.65)}
.tess-live-park-card p{margin:0 0 14px;font-size:.74rem;line-height:1.55;color:#ffd5d5;text-transform:none;letter-spacing:.03em}
.tess-live-park-choice{display:flex;align-items:flex-start;gap:10px;margin:10px 0;padding:12px;border:1px solid rgba(255,70,70,.36);border-radius:12px;background:rgba(70,0,0,.35);cursor:pointer}
.tess-live-park-choice input{width:18px;height:18px;accent-color:#ff2020;margin-top:1px}.tess-live-park-choice span{font-size:.78rem;line-height:1.35}.tess-live-park-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}.tess-live-park-actions button{border:1px solid rgba(255,65,65,.8);border-radius:10px;background:linear-gradient(180deg,rgba(120,0,0,.96),rgba(36,0,0,.98));color:#fff;padding:10px;font-weight:900;letter-spacing:.08em;cursor:pointer}.tess-live-park-actions .deny{background:linear-gradient(180deg,rgba(50,50,50,.9),rgba(12,12,12,.98));border-color:rgba(180,180,180,.4)}


/* TESS-ESP32-ORIENTATION-HOME-COLOR v1 */
.telescope-position-value.orientation-home-ok{color:#39ff14!important;text-shadow:0 0 8px rgba(57,255,20,.95),0 0 16px rgba(57,255,20,.75);font-weight:900;}
.telescope-position-value.orientation-home-bad{color:#ff1b1b!important;text-shadow:0 0 8px rgba(255,27,27,.95),0 0 16px rgba(255,27,27,.75);font-weight:900;}
.telescope-position-value.orientation-home-moving{color:#ff1b1b!important;text-shadow:0 0 8px rgba(255,27,27,1),0 0 18px rgba(255,27,27,.9);font-weight:900;animation:tessOrientationRedFlash .65s steps(2,end) infinite;}
@keyframes tessOrientationRedFlash{0%,100%{opacity:1;filter:brightness(1.4)}50%{opacity:.35;filter:brightness(.8)}}


/* TESS-ESP32-ORIENTATION-LAYOUT v1 */
.telescope-position-grid.orientation-live-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;}
.telescope-position-grid.orientation-live-grid .orientation-home-row{grid-column:1 / 2;border-color:rgba(88,255,157,.35);background:rgba(4,14,20,.72);}
.telescope-position-grid.orientation-live-grid .orientation-motion-row{grid-column:2 / 4;}
@media(max-width:720px){.telescope-position-grid.orientation-live-grid{grid-template-columns:1fr;}}


/* TESS-CAMERA-NO-COLLAPSE-AFTER-LOGIN v1 */
.viewer.connected.astro-workstation-active .roof-camera-panel,
.viewer.connected.asiair-console-active .roof-camera-panel,
.viewer.connected.astro-workstation-active .sky-camera-panel,
.viewer.connected.asiair-console-active .sky-camera-panel{
  transform:none!important;
  opacity:1!important;
  pointer-events:auto!important;
}
.viewer.connected.astro-workstation-active .roof-camera-panel:hover,
.viewer.connected.astro-workstation-active .roof-camera-panel:focus-within,
.viewer.connected.asiair-console-active .roof-camera-panel:hover,
.viewer.connected.asiair-console-active .roof-camera-panel:focus-within,
.viewer.connected.astro-workstation-active .sky-camera-panel:hover,
.viewer.connected.astro-workstation-active .sky-camera-panel:focus-within,
.viewer.connected.asiair-console-active .sky-camera-panel:hover,
.viewer.connected.asiair-console-active .sky-camera-panel:focus-within{
  transform:none!important;
  opacity:1!important;
}

.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}

/* TESS-KEYPAD-RED-DEFAULT-GREEN-ACTIVE v1 */
.tess-keypad-btn{border-color:rgba(255,32,32,.86)!important;background:linear-gradient(180deg,rgba(94,0,0,.96),rgba(22,0,0,.98))!important;color:#ffe1e1!important;box-shadow:0 0 17px rgba(255,0,0,.32),inset 0 0 15px rgba(255,0,0,.14)!important;}
.tess-keypad-btn:hover,.tess-keypad-btn:focus{border-color:rgba(255,92,92,.98)!important;color:#fff!important;box-shadow:0 0 24px rgba(255,0,0,.58),inset 0 0 18px rgba(255,0,0,.20)!important;}
.tess-keypad-btn.keypad-active,.tess-keypad-btn.keypad-selected{border-color:rgba(57,255,20,.96)!important;background:linear-gradient(180deg,rgba(0,120,32,.98),rgba(0,38,10,.98))!important;color:#eaffea!important;box-shadow:0 0 28px rgba(57,255,20,.72),0 0 48px rgba(57,255,20,.26),inset 0 0 20px rgba(57,255,20,.22)!important;transform:translateY(-1px) scale(1.025);}
.tess-keypad-btn.stop{border-color:rgba(255,32,32,.95)!important;background:linear-gradient(180deg,rgba(120,0,0,.98),rgba(28,0,0,.98))!important;color:#ffe1e1!important;}
.tess-keypad-btn.stop.keypad-active,.tess-keypad-btn.stop.keypad-selected{border-color:rgba(57,255,20,.96)!important;background:linear-gradient(180deg,rgba(0,120,32,.98),rgba(0,38,10,.98))!important;color:#eaffea!important;}


/* TESS-UNIFIED-RED-PANEL-THEME-ASIAIR-MATCH v1 */
.roof-camera-panel,
.tess-keypad-panel,
.observatory-status-panel,
.observatory-goto-panel,
.password-card{
  border-color:rgba(255,0,0,.62)!important;
  background:linear-gradient(180deg,rgba(38,0,0,.96),rgba(8,0,0,.92))!important;
  box-shadow:0 0 28px rgba(255,0,0,.24), inset 0 0 24px rgba(255,0,0,.075)!important;
  color:#ffb1b1!important;
}
.roof-camera-panel h2,
.tess-keypad-panel h2,
.observatory-status-panel h2,
.observatory-goto-panel h2,
.password-card h1{
  color:#ff2a2a!important;
  text-shadow:0 0 9px rgba(255,0,0,.95),0 0 28px rgba(255,0,0,.55)!important;
}
.tess-keypad-panel:before{
  background:linear-gradient(rgba(255,0,0,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,0,0,.05) 1px,transparent 1px)!important;
}
.tess-keypad-sub,.tess-keypad-status{
  border-color:rgba(255,0,0,.38)!important;
  color:#ffb1b1!important;
  background:rgba(30,0,0,.58)!important;
}
.roof-camera-meta,.sky-camera-meta{color:#ff8080!important;}

.topbar-user-manual-link{position:static!important;left:auto!important;top:auto!important;transform:none!important;z-index:auto!important;}/* TESS-USER-MANUAL-FLOW-NAV-POSITION v1 */

/* TESS-CLOSE-GAP-OPEN-CLOSE-TO-INDI-PARK v1 */
.asiair-command-row.park-row:empty,
.asiair-command-row.command-park-row:empty,
.asiair-command-row.command-axis-pulse-row:empty{display:none!important;margin:0!important;padding:0!important;height:0!important;min-height:0!important;}
.asiair-command-console .roof-row{margin-bottom:2px!important;}
.asiair-command-console .direct-indi-row{margin-top:2px!important;margin-bottom:2px!important;}
#obsIndiUnparkButton,#obsIndiParkHomeButton{margin-top:0!important;}


/* TESS-TIGHTEN-OPEN-CLOSE-TO-UNPARK-PARK-ROW v3 */
.asiair-command-console .direct-indi-row:has(#obsIndiUnparkButton){margin-top:-4px!important;}
#obsIndiUnparkButton,#obsIndiParkHomeButton{position:relative;top:-4px!important;}


/* TESS-MPC-EMAIL-BUTTON-SLOW-RED-FLASH v1 */
@keyframes tessMpcEmailRedPulse{
  0%,100%{
    border-color:rgba(255,0,0,.72)!important;
    background:linear-gradient(180deg,rgba(42,0,0,.96),rgba(10,0,0,.96))!important;
    color:#ffb1b1!important;
    box-shadow:0 0 10px rgba(255,0,0,.22), inset 0 0 12px rgba(255,0,0,.12)!important;
    text-shadow:0 0 6px rgba(255,0,0,.46)!important;
  }
  50%{
    border-color:#ff2222!important;
    background:linear-gradient(180deg,rgba(120,0,0,.98),rgba(34,0,0,.98))!important;
    color:#fff1f1!important;
    box-shadow:0 0 18px rgba(255,0,0,.72),0 0 36px rgba(255,0,0,.42), inset 0 0 18px rgba(255,70,70,.24)!important;
    text-shadow:0 0 10px rgba(255,70,70,.86),0 0 22px rgba(255,0,0,.52)!important;
  }
}
#mpcEmailButton{
  animation:tessMpcEmailRedPulse 2.4s ease-in-out infinite!important;
  border-radius:999px!important;
  font-weight:900!important;
  letter-spacing:.08em!important;
}
#mpcEmailButton:hover{
  animation-duration:1.25s!important;
  border-color:#ff4a4a!important;
  color:#fff!important;
}

.mpc-email-command-row{display:flex!important;justify-content:center!important;align-items:center!important;margin-top:3px;margin-bottom:7px;grid-template-columns:1fr!important}.mpc-email-command-row #mpcEmailButton{width:min(265px,92%)!important;min-height:34px!important;height:auto!important}/* TESS-MPC-EMAIL-BELOW-STOP-LIGHT-CENTERED v1 */
.telescope-position-grid.orientation-live-grid .orientation-recalibrate-row{grid-column:2 / 4;display:flex;align-items:center;justify-content:center;padding:4px}.orientation-recalibrate-row .observatory-recalibrate-button{width:100%;height:100%;min-height:38px;border-radius:999px;font-size:.50rem;letter-spacing:.055em}.orientation-motion-row{display:block}.orientation-motion-main{display:contents}/* TESS-OBSERVATORY-RECALIBRATE-OLD-MPC-SPOT v1 */

/* TESS-ROOF-STOW-STATUS-PANEL v2 MOVED-INTO-ORIENTATION */
.telescope-position-grid.orientation-live-grid .orientation-roof-stow-row{grid-column:1/-1;border:1px solid rgba(255,0,0,.62);border-radius:12px;background:linear-gradient(180deg,rgba(38,0,0,.92),rgba(8,0,0,.86));box-shadow:0 0 20px rgba(255,0,0,.22), inset 0 0 18px rgba(255,0,0,.075);padding:7px;margin-top:3px;position:relative;overflow:hidden;}
.orientation-roof-stow-row:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(rgba(255,0,0,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(255,0,0,.05) 1px,transparent 1px);background-size:100% 5px,20px 100%;opacity:.32;mix-blend-mode:screen;}
.orientation-roof-stow-row .telescope-position-title,.orientation-roof-stow-row .roof-stow-live-grid{position:relative;}
.orientation-roof-stow-row .telescope-position-title{font-size:.56rem;margin:0 0 5px;color:#ffd6d6;text-shadow:0 0 12px rgba(255,0,0,.62);}
.roof-stow-live-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:0;}
.roof-stow-note-row,.roof-stow-updated-row{grid-column:1/-1;}
.roof-stow-status-row,.roof-stow-asiair-home-card{grid-column:auto;}/* TESS-ROOF-STOW-ASIAIR90-RIGHT-OF-ROOFSTOW v1 */
.roof-stow-live-grid .orientation-axis-card.roof-stow-gravity-card{grid-column:1;grid-row:1;} .roof-stow-live-grid .orientation-home-row.home-status-roof-card{grid-column:2;grid-row:1;} .roof-stow-status-row{grid-column:1;} .roof-stow-asiair-home-card{grid-column:2;} .roof-stow-pitch-card{grid-column:1;} .telescope-pitch-roof-card{grid-column:2;grid-row:3;} .roof-stow-roll-card{grid-column:1;} .telescope-roll-roof-card{grid-column:2;grid-row:4;} .roof-stow-tolerance-card{grid-column:1;} .roof-stow-live-grid .orientation-motion-row.motion-status-roof-card{grid-column:2;} .roof-stow-note-row{grid-column:1/-1;min-height:38px;} .orientation-roof-stow-row{padding-bottom:10px;}/* TESS-HOME-STATUS-RIGHT-OF-EARTH-GRAVITY v3 */
.roof-stow-status-row .telescope-position-value{font-size:.58rem!important;letter-spacing:.045em!important;line-height:1.12;}/* TESS-STOW-STATUS-CONFIRMED-SAME-AS-NOT-CONFIRMED v1 */
.roof-stow-status-row .telescope-position-value.stow-status-confirmed,.roof-stow-status-row .telescope-position-value.stow-status-not-confirmed{font-size:.58rem!important;letter-spacing:.045em!important;line-height:1.12;}
.roof-stow-note-row .telescope-position-value{font-size:.48rem;white-space:normal;line-height:1.25;}


/* TESS-ROOF-STOW-CALIBRATE-BUTTON v1 */
.roof-stow-calibrate-row{grid-column:1/-1;display:flex;align-items:center;justify-content:center;padding:3px 2px;}
.roof-command-grid #clearCommandsButton{grid-column:1;grid-row:2;} .roof-command-grid #roofStowCalibrateButton{grid-column:1;grid-row:3;} .roof-command-grid #obsRecalibrateButton{grid-column:2;grid-row:3;} .roof-command-grid .roof-stow-calibrate-button{border-radius:12px;min-height:34px;font-size:.43rem;line-height:1.15;padding:5px 4px;} .roof-command-grid #roofStowAssistOutput{grid-column:1/-1;}/* TESS-OBS-RECALIBRATE-RIGHT-OF-STOW-RECALIBRATE v2 SCOPED */
.roof-stow-calibrate-button{width:100%;min-height:34px;border:1px solid rgba(255,40,40,.88);border-radius:999px;background:linear-gradient(180deg,rgba(110,0,0,.96),rgba(24,0,0,.98));color:#ffe1e1;font:900 .50rem Orbitron,Arial,sans-serif;letter-spacing:.065em;text-transform:uppercase;cursor:pointer;box-shadow:0 0 17px rgba(255,0,0,.34),inset 0 0 14px rgba(255,0,0,.14);}
.roof-stow-calibrate-button:hover,.roof-stow-calibrate-button:focus{border-color:#ff0000;color:#ffd0d0;box-shadow:0 0 24px rgba(255,0,0,.46), inset 0 0 18px rgba(255,0,0,.18);outline:none;}/* TESS-HOME-MATCH-BUTTON-HIGHLIGHT v1 */
.roof-stow-calibrate-button:disabled{opacity:.55;cursor:wait;}


/* TESS-ROOF-STOW-ASSIST-BUTTONS v1 */
.indi-live-position-panel{grid-column:1/-1;border:1px solid rgba(255,0,0,.38);border-radius:12px;background:rgba(20,0,0,.62);box-shadow:inset 0 0 16px rgba(255,0,0,.10);padding:7px 8px;margin:2px 0 4px;}/* TESS-LIVE-INDI-STOW-DATA-PANEL v1 */
.indi-live-position-title{font:900 .52rem Orbitron,Arial,sans-serif;letter-spacing:.12em;color:#ffd0d0;text-align:center;text-transform:uppercase;margin-bottom:5px;text-shadow:0 0 8px rgba(255,0,0,.45);}
.indi-live-position-grid{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:4px 7px;align-items:center;font:800 .48rem Orbitron,Arial,sans-serif;letter-spacing:.045em;text-transform:uppercase;}
.indi-live-position-grid span{color:#ff8a8a;white-space:nowrap;}
.indi-live-position-grid strong{color:#ffe1e1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-shadow:0 0 7px rgba(255,0,0,.28);}
.roof-stow-assist-row{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:2px;}
.roof-stow-assist-button{min-height:34px;border:1px solid rgba(255,40,40,.88);border-radius:12px;background:linear-gradient(180deg,rgba(105,0,0,.96),rgba(24,0,0,.98));color:#ffe1e1;font:900 .45rem Orbitron,Arial,sans-serif;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;box-shadow:0 0 15px rgba(255,0,0,.30),inset 0 0 13px rgba(255,0,0,.13);line-height:1.15;padding:5px 4px;}
.roof-stow-assist-button:hover,.roof-stow-assist-button:focus{border-color:#ff0000;color:#ffd0d0;box-shadow:0 0 24px rgba(255,0,0,.46), inset 0 0 18px rgba(255,0,0,.18);outline:none;}/* TESS-HOME-MATCH-BUTTON-HIGHLIGHT v1 */
.roof-stow-assist-output{grid-column:1/-1;border:1px solid rgba(255,0,0,.38);border-radius:10px;background:rgba(24,0,0,.64);padding:6px;color:#ffb1b1;font-size:.45rem;line-height:1.35;letter-spacing:.045em;text-transform:uppercase;min-height:40px;}
