.conditions{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:0;border-top:1px solid var(--hair-soft)}.cond-group{display:flex;flex-direction:column;gap:.2rem;padding:.85rem .9rem;border-right:1px solid var(--hair-soft)}.cond-group:last-child{border-right:none}.cond-temp{font-family:var(--mono);font-size:1.6rem;font-weight:400;line-height:1;font-variant-numeric:tabular-nums;color:var(--paper)}.cond-text{font-size:.8rem;color:var(--paper);text-transform:none}.cond-sub{font-family:var(--mono);font-size:.72rem;letter-spacing:.02em;color:var(--muted);font-variant-numeric:tabular-nums}.cond-sub.dim{color:var(--dim)}.tide-state{font-family:var(--sans);font-size:.72rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase}.tide-rising{color:var(--flood)}.tide-falling{color:var(--ebb)}.tide-unknown{color:var(--muted)}.conditions.compact{border-top:none;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.conditions.compact .cond-group{padding:.4rem .7rem;border-right:none}.conditions.compact .cond-temp{font-size:1.05rem}.conditions.compact .cond-text{font-size:.72rem}.conditions.compact .cond-sub{font-size:.65rem}.conditions.compact .tide-state{font-size:.62rem}.status-banner{display:flex;flex-wrap:wrap;gap:.4rem .6rem;align-items:baseline;padding:.7rem .9rem;margin:0 0 1rem;border-left:2px solid var(--muted);background:var(--ink-800);font-size:.82rem;line-height:1.45;color:var(--muted)}.status-banner strong{font-family:var(--sans);font-weight:600;color:var(--paper)}.status-banner.offline{border-left-color:var(--alert)}.status-banner.camera-off{border-left-color:var(--warn)}.status-banner.stale{border-left-color:var(--muted)}.snapbtn-wrap{display:flex;flex-direction:column;gap:.5rem}.snapbtn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.55rem 1.1rem;font-family:var(--sans);font-size:.85rem;font-weight:600;letter-spacing:.02em;color:var(--ink-900);background:var(--amber);border:1px solid var(--amber);border-radius:3px;cursor:pointer;min-height:44px;transition:background .15s ease,border-color .15s ease}.snapbtn:hover:not(:disabled){background:#e2a461;border-color:#e2a461}.snapbtn:disabled{background:transparent;color:var(--dim);border-color:var(--hair-soft);cursor:default}.snapbtn:focus-visible{outline:2px solid var(--amber);outline-offset:3px}.snap-progress{height:3px;background:var(--ink-750);border-radius:2px;overflow:hidden}.snap-progress-bar{height:100%;background:var(--amber);transition:width .5s ease}.snap-progress-bar.working{background-image:linear-gradient(90deg,#fff0,#ffffff59,#fff0);background-size:200% 100%;background-color:var(--amber);animation:snapsheen 1.4s linear infinite}@keyframes snapsheen{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion: reduce){.snap-progress-bar.working{animation:none}}.snap-steps{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.15rem .9rem;font-family:var(--mono);font-size:.66rem;color:var(--dim)}.snap-steps li.done{color:var(--muted)}.snap-steps li.now{color:var(--amber)}.snap-steps li.done:before{content:"✓ "}.snapbtn-meta{display:flex;flex-direction:column;gap:.1rem;font-family:var(--mono);font-size:.7rem;color:var(--dim);font-variant-numeric:tabular-nums}.snapbtn-msg{color:var(--muted);font-family:var(--sans);font-size:.75rem}.daylight{padding:.9rem .9rem 1.5rem;border-top:1px solid var(--hair-soft)}.daylight-track{position:relative;height:6px;background:var(--ink-750);border-radius:1px}.daylight-civil{position:absolute;top:0;height:100%;background:#23424a}.daylight-sun{position:absolute;top:0;height:100%;background:linear-gradient(to right,#3c6570,#8fa98a,#d3924a)}.daylight-now{position:absolute;top:-4px;width:1px;height:14px;background:var(--paper)}.daylight-now:after{content:"";position:absolute;top:-3px;left:-2px;width:5px;height:5px;border-radius:50%;background:var(--paper)}.daylight-marks{position:relative;height:1.9rem;margin-top:.4rem}.daylight-marks span{position:absolute;transform:translate(-50%);font-family:var(--mono);font-size:.68rem;color:var(--muted);text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums}.daylight-marks em{display:block;font-style:normal;font-family:var(--sans);font-size:.6rem;letter-spacing:.09em;text-transform:uppercase;color:var(--dim)}.seq{margin-top:1.5rem;border:1px solid var(--hair-soft);border-radius:2px;background:var(--ink-850)}.seq-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.85rem .9rem;border-bottom:1px solid var(--hair-soft)}.seq-head h2{margin:0;font-family:var(--serif);font-weight:400;font-size:1.15rem}.seq-tabs{display:flex;gap:.35rem}.seq-tab{font-family:var(--sans);font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);background:transparent;border:1px solid transparent;border-radius:2px;padding:.28rem .6rem;cursor:pointer}.seq-tab.on{color:var(--amber);border-color:var(--hair)}.seq-tab:disabled{opacity:.35;cursor:default}.seq-tab:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.seq-stage{background:#000;line-height:0}.seq-stage img{width:100%;height:auto;display:block}.seq-controls{display:flex;align-items:center;gap:.8rem;padding:.7rem .9rem .2rem}.seq-play{font-family:var(--sans);font-size:.78rem;font-weight:600;color:var(--paper);background:transparent;border:1px solid var(--hair);border-radius:3px;padding:.35rem .85rem;cursor:pointer;min-width:4.5rem}.seq-play:hover{border-color:var(--amber)}.seq-play:focus-visible{outline:2px solid var(--amber);outline-offset:2px}.seq-scrub{flex:1;accent-color:var(--amber);cursor:pointer}.seq-count{font-family:var(--mono);font-size:.72rem;color:var(--muted);font-variant-numeric:tabular-nums;min-width:3.2rem;text-align:right}.seq-meta{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:baseline;justify-content:space-between;font-family:var(--mono);font-size:.7rem;color:var(--dim);padding:0 .9rem .85rem;font-variant-numeric:tabular-nums}.seq-video{font-family:var(--sans);font-size:.75rem;font-weight:600;color:var(--amber);text-decoration:none;border:1px solid var(--hair);border-radius:3px;padding:.3rem .7rem}.seq-video:hover{border-color:var(--amber)}.seq-note{margin:0;padding:.9rem;font-size:.82rem;color:var(--muted);max-width:60ch}.fullscreen-mode{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#000;display:flex;align-items:center;justify-content:center;height:100vh;height:100dvh;padding:0}.fullscreen-mode>div{width:100%;height:100%}.card.fullscreen{width:100%;height:100%;margin:0;padding:0;border:none;border-radius:0;background:#000;box-shadow:none;display:flex;align-items:center;justify-content:center}.card.fullscreen .image-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;background:#000}.card.fullscreen .webcam-image,.card.fullscreen .image-container img{width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;border-radius:0;display:block}.card.fullscreen .crop-frame{max-width:100%;max-height:100%}.fullscreen-overlay{position:absolute;left:0;right:0;bottom:0;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:.75rem;padding:1rem 1.1rem;padding-bottom:calc(1rem + env(safe-area-inset-bottom));background:linear-gradient(to top,#040a0beb,#040a0b00);opacity:0;transition:opacity .25s ease;pointer-events:none}.fullscreen-timestamp{font-family:var(--mono);font-size:.8rem;color:var(--paper);font-variant-numeric:tabular-nums}.fullscreen-exit{font-family:var(--sans);font-size:.8rem;color:var(--muted);background:#0000008c;border:1px solid var(--hair);border-radius:3px;padding:.45rem .85rem;cursor:pointer;min-height:44px}@media (prefers-reduced-motion: reduce){.fullscreen-overlay{transition:none}}.crop-frame{position:relative;display:block;width:100%;overflow:hidden}.gallery-summary{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;padding:14px 16px;background:var(--ink-850);border-radius:10px}.summary-stats{display:flex;gap:22px;align-items:baseline}.summary-stats .stat{font-size:13px;color:var(--muted)}.summary-stats .stat strong{font-size:20px;color:var(--paper);margin-right:5px;font-variant-numeric:tabular-nums}.button.toggle{font-size:13px;opacity:.75}.button.toggle.on{opacity:1;background:var(--amber);color:#fff}.day-jump{display:flex;gap:8px;overflow-x:auto;padding:0 2px 12px;margin-bottom:6px;scrollbar-width:thin}.day-chip{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid var(--hair);border-radius:999px;background:var(--ink-800);color:var(--muted);font-size:12.5px;cursor:pointer;white-space:nowrap;transition:background .15s,border-color .15s}.day-chip:hover{background:var(--ink-750);border-color:var(--amber)}.chip-count{font-size:11px;color:var(--dim);background:var(--ink-900);padding:1px 6px;border-radius:999px;font-variant-numeric:tabular-nums}.day-section{margin-bottom:30px;scroll-margin-top:12px}.day-header{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;padding:8px 2px 12px;border-bottom:1px solid var(--hair-soft);margin-bottom:14px;position:sticky;top:0;background:var(--ink-900);z-index:2}.day-header h2{margin:0;font-size:17px;color:var(--paper);letter-spacing:.2px}.day-meta{font-size:12.5px;color:var(--dim);font-variant-numeric:tabular-nums}.motion-count{color:var(--amber)}.day-empty{color:var(--dim);font-size:13px;padding:6px 2px 2px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.grid .card{position:relative;background:var(--ink-850);padding:5px;border-radius:8px;text-decoration:none;color:inherit;cursor:pointer;border:1px solid transparent;transition:transform .15s,box-shadow .15s,border-color .15s}.grid .card:hover{transform:translateY(-2px);box-shadow:0 6px 16px #00000073;border-color:var(--amber)}.grid .card.has-motion{border-color:#f0a04b59}.grid .card img,.grid .card .crop-frame{width:100%;border-radius:5px;display:block;background:var(--ink-900)}.grid .card img{aspect-ratio:4 / 3;object-fit:cover}.grid .card .crop-frame img{aspect-ratio:auto;object-fit:fill;border-radius:0}.meta{display:flex;align-items:center;justify-content:center;gap:6px;font-size:11.5px;color:var(--muted);margin-top:5px;text-align:center;font-variant-numeric:tabular-nums}.motion-dot-sm{width:6px;height:6px;border-radius:50%;background:var(--amber);flex:0 0 auto}.load-more{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;padding:13px;margin:6px 0 30px;font-size:14px}.remaining{font-size:12px;color:var(--dim);font-variant-numeric:tabular-nums}.loading,.empty{text-align:center;padding:40px;color:var(--muted, var(--dim))}@media (max-width: 560px){.grid{grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:8px}.summary-stats{gap:16px}}.image-detail-container{background:var(--card);border-radius:12px;padding:20px;box-shadow:0 6px 18px #02061799}.image-wrapper{width:100%;display:flex;justify-content:center;align-items:center;margin-bottom:16px;min-height:400px}.detail-image{max-width:100%;max-height:70vh;width:auto;height:auto;object-fit:contain;border-radius:8px;box-shadow:0 4px 12px #0000004d}.image-info{text-align:center;margin-bottom:20px}.filename{color:var(--muted);font-size:.9rem;margin:0;word-break:break-all}.navigation-controls{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:20px}.nav-button{flex:1;max-width:150px}.position{color:var(--muted);font-size:.9rem;white-space:nowrap}.loading{text-align:center;padding:40px;color:var(--muted)}@media (max-width: 600px){.navigation-controls{flex-direction:column}.nav-button{max-width:100%;width:100%}}.frame{--frame-strip: 2.9rem;position:fixed;top:0;right:0;bottom:0;left:0;background:#000;cursor:none;overflow:hidden}.frame.ui{cursor:default}.frame-image{position:absolute;top:0;left:0;right:0;bottom:var(--frame-strip);display:flex;align-items:center;justify-content:center;background:#000}.frame-image img,.frame-image .cropped-image,.frame-image .cropped-image img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}.frame-empty{color:var(--dim);font-family:var(--serif);font-size:1.3rem}.frame-bar{position:absolute;left:0;right:0;bottom:0;height:var(--frame-strip);display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:0 1.6rem;padding-bottom:env(safe-area-inset-bottom);background:#000;border-top:1px solid rgba(255,255,255,.07);pointer-events:none}.frame-when{font-family:var(--mono);font-size:.95rem;color:#e8efeceb;font-variant-numeric:tabular-nums;white-space:nowrap}.frame-ago{color:#e8efec8c}.frame-flag{margin-left:.6rem;padding:.1rem .5rem;border:1px solid var(--warn);color:var(--warn);border-radius:2px;font-family:var(--sans);font-size:.68rem;text-transform:uppercase;letter-spacing:.08em}.frame-bar .conditions{display:flex;flex-wrap:nowrap;align-items:baseline;gap:1.9rem;border:none;padding:0}.frame-bar .cond-group{flex-direction:row;align-items:baseline;gap:.55rem;padding:0;border:none;white-space:nowrap}.frame-bar .cond-temp{font-size:1.75rem;color:#fff;line-height:1}.frame-bar .cond-text{font-size:.95rem;color:#e8efeceb}.frame-bar .cond-sub{font-size:.85rem;color:#e8efec9e}.frame-bar .tide-state{font-size:.8rem}.frame-controls{position:absolute;top:1rem;right:1rem;opacity:0;transition:opacity .2s ease;pointer-events:none}.frame.ui .frame-controls{opacity:1;pointer-events:auto}.frame-exit{color:var(--paper);background:#0009;border:1px solid var(--hair);padding:.5rem .9rem;border-radius:3px;text-decoration:none;font-size:.82rem}.frame-exit:hover{border-color:var(--amber)}@media (max-width: 700px){.frame{--frame-strip: 4.4rem}.frame-bar{flex-direction:column;align-items:flex-start;justify-content:center;gap:.2rem;padding:0 1rem;padding-bottom:env(safe-area-inset-bottom)}.frame-bar .conditions{flex-wrap:wrap;gap:.5rem 1.1rem}.frame-bar .cond-temp{font-size:1.35rem}}@media (prefers-reduced-motion: reduce){.frame-controls{transition:none}}.frame-wake{position:absolute;top:1rem;left:50%;transform:translate(-50%);padding:.4rem .9rem;border-radius:999px;background:#0009;color:#e8efecd9;font-family:var(--sans);font-size:.78rem;pointer-events:none}.act-summary{display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;padding:.85rem .9rem;border:1px solid var(--hair-soft);background:var(--ink-850);border-radius:2px;margin-bottom:1rem}.act-count{font-size:.8rem;color:var(--muted)}.act-count strong{font-family:var(--mono);font-size:1.05rem;color:var(--paper);margin-right:.25rem;font-variant-numeric:tabular-nums}.act-filters{display:flex;gap:.4rem;margin-bottom:1rem}.act-filters .button{text-transform:capitalize}.act-filters .button.on{color:var(--amber);border-color:var(--amber)}.act-list{list-style:none;margin:0;padding:0}.act-row{display:grid;grid-template-columns:11.5rem 8rem 1fr;gap:.75rem;align-items:baseline;padding:.5rem .9rem;border-bottom:1px solid var(--hair-soft);border-left:2px solid transparent;font-size:.8rem}.act-row:hover{background:var(--ink-850)}.act-time{font-family:var(--mono);font-size:.72rem;color:var(--dim);font-variant-numeric:tabular-nums;white-space:nowrap}.act-kind{font-family:var(--sans);font-size:.68rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.act-detail{font-family:var(--mono);font-size:.72rem;color:var(--muted);overflow-wrap:anywhere}.act-ok{border-left-color:var(--flood)}.act-skipped{border-left-color:var(--warn)}.act-failed{border-left-color:var(--alert)}.act-greyscale{border-left-color:var(--dim)}.act-empty,.act-note{padding:.9rem;color:var(--dim);font-size:.78rem;max-width:62ch}@media (max-width: 680px){.act-row{grid-template-columns:1fr;gap:.15rem;padding:.65rem .9rem}}:root{--ink-900: #0C1416;--ink-850: #0F1B1E;--ink-800: #121D20;--ink-750: #16262A;--hair: #22383B;--hair-soft: #1A2C2F;--paper: #E8EFEC;--muted: #8CA3A1;--dim: #5F7679;--amber: #D3924A;--flood: #6BB8C4;--ebb: #C4855E;--warn: #E0B15C;--alert: #D2705E;--serif: "Newsreader", Georgia, "Times New Roman", serif;--sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--measure: 1140px;--step: .35rem}*{box-sizing:border-box}body{margin:0;background:var(--ink-900);color:var(--paper);font-family:var(--sans);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent}#root{min-height:100vh;display:flex;flex-direction:column}.app{width:100%;max-width:var(--measure);margin:0 auto;padding:0 1.25rem 3rem;flex:1}@media (display-mode: standalone){body{overflow-x:hidden}.app{padding-top:env(safe-area-inset-top);padding-bottom:calc(3rem + env(safe-area-inset-bottom))}}header{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;padding:1.6rem 0 .9rem;border-bottom:1px solid var(--hair);margin-bottom:1.5rem}header h1{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(1.5rem,3.5vw,2rem);letter-spacing:.01em;line-height:1.1}header h1:after{content:"43°44′N  69°47′W";display:block;margin-top:.35rem;font-family:var(--mono);font-size:.68rem;font-weight:400;letter-spacing:.08em;color:var(--dim)}nav.controls{display:flex;gap:.4rem;align-items:center}.button{display:inline-flex;align-items:center;gap:.4rem;padding:.45rem .8rem;font-family:var(--sans);font-size:.82rem;font-weight:500;letter-spacing:.01em;color:var(--muted);background:transparent;border:1px solid var(--hair);border-radius:3px;text-decoration:none;cursor:pointer;transition:color .15s ease,border-color .15s ease,background .15s ease}.button:hover{color:var(--paper);border-color:var(--amber)}.button:focus-visible{outline:2px solid var(--amber);outline-offset:2px}main{display:block}.card{background:var(--ink-850);border:1px solid var(--hair-soft);border-radius:2px;overflow:hidden}.image-container{position:relative;display:block;line-height:0;background:#000}.webcam-image,.image-container img{width:100%;height:auto;display:block}.timestamp{font-family:var(--mono);font-size:.75rem;letter-spacing:.04em;color:var(--muted);padding:.7rem .9rem 0}.status-wrap{padding:0}.snap-row{display:flex;justify-content:flex-start;padding:.9rem;border-top:1px solid var(--hair-soft);margin-top:.75rem}.toolbar{display:flex;justify-content:flex-end;gap:.5rem;padding:0 .9rem .9rem}.fullscreen-mode{position:fixed;top:0;right:0;bottom:0;left:0;background:#000;z-index:50}.card.fullscreen{height:100%;border:none;border-radius:0;background:#000;display:flex;align-items:center;justify-content:center}.card.fullscreen .image-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center}.card.fullscreen img{max-width:100%;max-height:100vh;width:auto;height:auto;object-fit:contain}.fullscreen-overlay{position:absolute;inset:auto 0 0 0;display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;padding:1rem 1.25rem calc(1rem + env(safe-area-inset-bottom));background:linear-gradient(to top,#040a0be6,#040a0b00);opacity:0;transition:opacity .25s ease;pointer-events:none}.fullscreen-overlay.visible{opacity:1;pointer-events:auto}.fullscreen-timestamp{font-family:var(--mono);font-size:.8rem;color:var(--paper)}.fullscreen-exit{font-family:var(--sans);font-size:.8rem;color:var(--muted);background:#00000080;border:1px solid var(--hair);border-radius:3px;padding:.4rem .8rem;cursor:pointer}.fullscreen-exit:hover{color:var(--paper);border-color:var(--amber)}@media (prefers-reduced-motion: reduce){.fullscreen-overlay,.button{transition:none}}.layout{display:grid;gap:1.1rem;grid-template-columns:1fr;align-items:start}@media (min-width: 920px){.layout{grid-template-columns:minmax(0,1fr) 310px}}.panel{display:flex;flex-direction:column;background:var(--ink-850);border:1px solid var(--hair-soft);border-radius:2px}.panel-when{font-family:var(--mono);font-size:.72rem;letter-spacing:.03em;color:var(--muted);padding:.75rem .9rem;border-bottom:1px solid var(--hair-soft);font-variant-numeric:tabular-nums}.panel .conditions{grid-template-columns:1fr;border-top:none}.panel .cond-group{border-right:none;border-bottom:1px solid var(--hair-soft)}.panel .cond-group:last-child{border-bottom:none}.panel .snap-row{margin-top:0;border-top:1px solid var(--hair-soft);padding:.9rem}.panel .toolbar{padding:0 .9rem .9rem;justify-content:flex-start}.card .image-container img{max-height:72vh;object-fit:contain}.card.fullscreen .image-container img{max-height:100vh}
