*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden;background:#000}body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color:#fff}::-webkit-scrollbar{display:none}.apod-card{position:relative;width:100%;height:100%;overflow:hidden;background:#000;-webkit-user-select:none;user-select:none}.apod-card--clickable{cursor:pointer}.apod-card__click-shield{position:absolute;inset:0;z-index:1}.overlay{z-index:2}.apod-image{width:100%;height:100%;display:block}.apod-image--cover{object-fit:cover;object-position:center}.apod-image--contain{object-fit:contain;object-position:center}.apod-card--video{background:#000}.apod-video{position:absolute;top:50%;left:50%;width:100%;height:100%;min-width:100%;min-height:100%;transform:translate(-50%,-50%);border:none;pointer-events:none}.apod-video--html5{object-fit:cover;object-position:center}.play-indicator{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:3rem;color:#ffffffd9;text-shadow:0 2px 8px rgba(0,0,0,.8);pointer-events:none}.overlay{position:absolute;bottom:0;left:0;right:0;padding:28px 14px 12px;background:linear-gradient(transparent,#000000d1);display:flex;flex-direction:column;gap:3px;transition:opacity .35s ease;-webkit-user-select:none;user-select:none}.overlay--none{display:none}.overlay--hover{opacity:0}.apod-card:hover .overlay--hover,.overlay--always{opacity:1}.overlay__badge{display:inline-block;align-self:flex-start;background:#388fe6eb;color:#fff;font-size:calc(var(--overlay-text-scale, 1) * .6rem);font-weight:700;letter-spacing:.12em;text-transform:uppercase;padding:2px 7px;border-radius:3px;margin-bottom:4px}.overlay__title{color:#fff;font-size:calc(var(--overlay-text-scale, 1) * clamp(.65rem,1.1vw,.95rem));font-weight:600;line-height:1.3;text-shadow:0 1px 3px rgba(0,0,0,.9)}.overlay__date{color:#ffffff94;font-size:calc(var(--overlay-text-scale, 1) * clamp(.55rem,.9vw,.75rem))}.overlay__copyright{color:#ffffff6b;font-size:calc(var(--overlay-text-scale, 1) * clamp(.5rem,.8vw,.68rem))}.apod-grid{display:grid;width:100vw;height:100dvh;overflow:hidden;gap:0}.apod-grid>*{outline:1px solid rgba(255,255,255,.06);outline-offset:-1px}.modal-backdrop{position:fixed;inset:0;z-index:100;background:#000000d1;display:flex;align-items:center;justify-content:center;padding:20px;animation:backdrop-in .18s ease}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}.modal-panel{position:relative;background:#0f0f18;border:1px solid rgba(255,255,255,.1);border-radius:10px;width:min(860px,100%);max-height:calc(100dvh - 40px);display:flex;flex-direction:column;overflow:hidden;animation:panel-in .22s cubic-bezier(.22,1,.36,1);box-shadow:0 24px 80px #000000b3;caret-color:transparent}@keyframes panel-in{0%{opacity:0;transform:scale(.96) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-close{position:absolute;top:10px;right:12px;z-index:10;background:#0000008c;border:1px solid rgba(255,255,255,.18);color:#fffc;width:32px;height:32px;border-radius:50%;cursor:pointer;font-size:.85rem;line-height:1;display:flex;align-items:center;justify-content:center;transition:background .15s,color .15s;-webkit-user-select:none;user-select:none}.modal-close:hover{background:#ffffff26;color:#fff}.modal-media{position:relative;width:100%;max-height:52vh;background:#000;flex-shrink:0;overflow:hidden;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none}.modal-media__img{width:100%;height:100%;max-height:52vh;object-fit:contain;object-position:center;display:block}.modal-media__video{width:100%;max-height:52vh;display:block;background:#000}.modal-media__yt-link{position:relative;display:block;width:100%}.modal-media__play-btn{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:3.5rem;color:#ffffffe6;text-shadow:0 2px 12px rgba(0,0,0,.8);pointer-events:none;transition:transform .15s}.modal-media__yt-link:hover .modal-media__play-btn{transform:translate(-50%,-50%) scale(1.12)}.modal-body{padding:18px 22px 20px;overflow-y:auto;flex:1;min-height:0}.modal-header{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.modal-header__top{display:flex;align-items:baseline;gap:.6rem;flex-wrap:wrap;min-width:0}.modal-copyright{color:#ffffff73;font-size:.8rem;margin-left:.3rem;flex-shrink:1;min-width:0;word-break:break-word;white-space:normal}.modal-title{color:#fff;font-size:clamp(1rem,2.2vw,1.4rem);font-weight:700;line-height:1.3;margin:0}.modal-header__meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.modal-format-badge{display:inline-block;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#ffffffa6;font-size:.65rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:2px 7px;border-radius:3px}.modal-date{color:#ffffff73;font-size:.8rem;white-space:nowrap;flex-shrink:0}.modal-explanation{color:#ffffffbf;font-size:clamp(.78rem,1.2vw,.9rem);line-height:1.65;margin:0 0 16px}.modal-links{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px;-webkit-user-select:none;user-select:none}.modal-link{display:inline-block;padding:6px 14px;background:#ffffff12;border:1px solid rgba(255,255,255,.15);border-radius:5px;color:#fffc;text-decoration:none;font-size:.78rem;transition:background .15s,color .15s}.modal-link:hover{background:#ffffff26;color:#fff}.modal-copyright{color:#ffffff59;font-size:.7rem;margin:0}.gallery-title{position:fixed;top:16px;right:16px;z-index:50;--gallery-title-orbit-radius: 22px;--gallery-title-orbit-center-x: -1px;--gallery-title-orbit-center-y: -1px;display:flex;align-items:center;gap:9px;padding:10px 16px 8px 10px;border-radius:999px;background:#00000085;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.13);box-shadow:0 4px 20px #00000073;animation:badge-breathe 5s ease-in-out infinite;pointer-events:none;-webkit-user-select:none;user-select:none}.gallery-title__logo{height:calc(35px * var(--gallery-title-scale, 1));width:auto;display:block;filter:drop-shadow(0 1px 3px rgba(0,0,0,.6));flex-shrink:0}.gallery-title__logo-wrapper{position:relative;display:inline-flex;align-items:center;justify-content:center}.gallery-title__orbit-dot{position:absolute;width:calc(6px * var(--gallery-title-scale, 1));height:calc(6px * var(--gallery-title-scale, 1));border-radius:50%;background:#fff;top:calc(50% + var(--gallery-title-orbit-center-y) * var(--gallery-title-scale, 1));left:calc(50% + var(--gallery-title-orbit-center-x) * var(--gallery-title-scale, 1));transform:translate(-50%,-50%) rotate(0) translate(calc(var(--gallery-title-orbit-radius) * var(--gallery-title-scale, 1)));animation:gallery-title-orbit 9s linear infinite;box-shadow:0 0 calc(6px * var(--gallery-title-scale, 1)) #ffffffd9}.gallery-title__text{color:#fffffff2;font-size:calc(1rem * var(--gallery-title-scale, 1));font-weight:650;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;text-shadow:0 1px 4px rgba(0,0,0,.8)}@keyframes badge-breathe{0%,to{opacity:.75}50%{opacity:1}}@keyframes gallery-title-orbit{0%{transform:translate(-50%,-50%) rotate(0) translate(calc(var(--gallery-title-orbit-radius) * var(--gallery-title-scale, 1)))}to{transform:translate(-50%,-50%) rotate(360deg) translate(calc(var(--gallery-title-orbit-radius) * var(--gallery-title-scale, 1)))}}.status-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100vw;height:100dvh;background:#080810;color:#fff;gap:16px}.status-spinner{width:48px;height:48px;border:3px solid rgba(255,255,255,.12);border-top-color:#ffffffd9;border-radius:50%;animation:spin .75s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.status-text{font-size:1rem;color:#ffffffa6;margin:0}.status-text--error{color:#fc8181;font-size:1.1rem}.status-subtext{font-size:.8rem;color:#ffffff61;max-width:420px;text-align:center;margin:0;word-break:break-word}.status-retry{margin-top:8px;padding:8px 28px;background:#ffffff14;color:#ffffffe6;border:1px solid rgba(255,255,255,.18);border-radius:6px;cursor:pointer;font-size:.9rem;font-family:inherit;transition:background .2s}.status-retry:hover{background:#ffffff29}
