@charset "UTF-8";
:root{color-scheme:dark;--bg:#10171f;--surface:#19232e;--line:#2b3744;--text:#f3f5f7;--muted:#a6b1bd;--lime:#dbf568;--dock-space:170px;font-family:Arial,"Hiragino Kaku Gothic ProN","Noto Sans JP",Meiryo,sans-serif;font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:16px;line-height:1.6}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer;border:0;background:transparent}button:disabled{opacity:.3;cursor:default}button:focus-visible,a:focus-visible,[tabindex]:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--lime);outline-offset:4px}a{color:inherit;text-decoration:none}a:hover{text-decoration:underline}button:hover:not(:disabled){filter:brightness(1.12)}[hidden]{display:none!important}.masthead{height:78px;max-width:1320px;margin:auto;display:flex;align-items:center;gap:24px;padding:0 32px}.brand{display:flex;gap:8px;align-items:center;font-size:25px;font-weight:900;letter-spacing:-1.5px}.brand:hover{text-decoration:none}.brand-bang{color:var(--lime);font-size:32px;font-style:italic;margin-left:-4px}.brand-mark{width:30px;height:30px;line-height:25px;display:grid;place-items:center;transform:rotate(-9deg);border-radius:8px;background:var(--lime);color:var(--bg);font-style:italic;font-size:30px}.edition{font-size:11px;letter-spacing:2px;color:var(--lime);font-weight:700;flex:1}.edition span{color:var(--muted);font-size:12px;margin-left:14px;letter-spacing:1px}.icon-button{width:44px;height:44px;border:1px solid var(--line);border-radius:50%;flex-shrink:0;display:grid;place-items:center;font-size:21px}main{max-width:1320px;display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:30px;margin:auto;padding:16px 32px calc(var(--dock-space) + 32px)}.watch-column,.explore-column{min-width:0}.watch{min-width:0}.screen{width:100%;aspect-ratio:16/9;min-height:200px;background:#060a0e;overflow:hidden;position:relative;border-radius:12px}.filmstrip{height:100%;width:300%;display:flex;transform:translateX(-33.333333%);will-change:transform}.filmstrip.animating{transition:transform .23s cubic-bezier(.2,.8,.25,1)}.player-card,.neighbor{flex:0 0 33.333333%;height:100%;position:relative;min-width:0}.player-card #player,.player-card iframe{display:block;width:100%;height:100%;border:0}.loading{height:100%;display:grid;place-items:center;color:var(--muted);margin:0;font-size:14px}.neighbor{background:#18232d;display:grid;place-items:center;overflow:hidden}.neighbor img{width:100%;height:100%;object-fit:contain;opacity:.65}.neighbor span{position:absolute;bottom:20px;left:20px;padding:6px 12px;background:#10171fe6;border-radius:4px;font-weight:700}.playback-line{display:flex;gap:10px;justify-content:space-between;align-items:center;min-height:30px;margin-top:8px;font-size:12px;color:var(--muted)}.playback-line button{font-size:12px;color:var(--lime);text-decoration:underline}.camera-meta{display:flex;justify-content:space-between;align-items:center;gap:14px;padding-top:10px}.eyebrow{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}.dot{height:6px;width:6px;border-radius:50%;background:var(--lime)}time{font-variant-numeric:tabular-nums;letter-spacing:1px;margin-left:6px;color:#d2dae3}h1{margin:5px 0 0;font-size:30px;letter-spacing:-.7px;line-height:1.4}.favorite{border-radius:12px;width:48px;height:48px;font-size:29px}.favorite[aria-pressed=true]{color:var(--lime);background:#dbf56812;border-color:#829548}.source-row{display:flex;justify-content:space-between;gap:14px;font-size:12px;color:var(--muted);padding:12px 0 18px;border-bottom:1px solid var(--line);align-items:center}.source-row a::before{content:'配信：';color:#728190}.text-button{font-size:13px;white-space:nowrap;min-height:36px}.place-panel{padding:24px 0}.section-kicker{font-size:11px;letter-spacing:2px;font-weight:700;color:var(--lime);margin:0 0 10px}.place-panel>p:not(.section-kicker){font-size:15px;line-height:1.95;margin:0 0 14px;max-width:660px;color:#c1cbd5}.place-panel>a{font-size:12px;color:var(--muted)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}h2{font-size:15px;margin:0}.map-panel{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#141e28}.section-heading>button{display:flex;align-items:center;width:100%;text-align:left;padding:16px;font-size:14px;font-weight:700;gap:8px}.map-symbol{color:var(--lime);font-size:22px;line-height:1}#map-chevron{margin-left:auto;font-size:18px}.map-toolbar{padding:0 12px 10px;display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11px;color:var(--muted)}.map-toolbar button{font-size:11px;color:var(--lime);min-height:32px}#map{height:235px;background:#d4e2e6;color:#142029;z-index:0}.map-note{font-size:11px;color:var(--muted);margin:8px 12px 10px}.map-pin{width:24px!important;height:24px!important;background:#19232e;border:3px solid white;border-radius:50%;box-shadow:0 2px 7px #0008}.map-pin.current{background:#c4e244;border-color:#19232e;width:28px!important;height:28px!important;z-index:1000!important}.leaflet-container{font-family:inherit!important}.leaflet-container a{color:#1f4961}.leaflet-tooltip{font-family:inherit}.collection{margin-top:28px}.collection .section-heading{margin-bottom:14px}#camera-count{font-size:12px;color:var(--muted)}.camera-list{display:grid;gap:6px;max-height:360px;overflow:auto;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.camera-item{width:100%;text-align:left;display:flex;align-items:center;gap:12px;padding:8px;border-radius:8px;position:relative;border:1px solid transparent}.camera-item:hover{background:#1b2733}.camera-item.selected{border-color:#61703f;background:#202b2b}.camera-item img{width:76px;height:48px;border-radius:5px;object-fit:cover;background:#263340;flex-shrink:0}.camera-item strong{display:block;font-size:13px;line-height:1.5}.camera-item small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.camera-item .item-star{margin-left:auto;color:var(--lime);font-size:15px}.empty{text-align:center;padding:20px 4px}.empty>span{font-size:36px;color:var(--lime)}.empty h3{font-size:15px;margin:12px 0}.empty p{font-size:13px;color:var(--muted)}.empty button{color:var(--lime);font-size:14px;min-height:44px}footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:11px;color:#9aa7b4;border-top:1px solid var(--line);margin-top:24px;padding-top:18px}footer button{font-size:11px;padding:10px 0}.beta{font-size:10px;background:#26323f;border-radius:3px;margin-left:6px;padding:2px 5px}.dock{position:fixed;bottom:0;left:0;right:0;margin:0 auto;max-width:900px;padding:10px 20px calc(8px + env(safe-area-inset-bottom));z-index:1001;background:#10171ff5;border:1px solid #33414c;border-bottom:0;border-radius:18px 18px 0 0;box-shadow:0 -10px 35px #0002;backdrop-filter:blur(16px)}.mode-row{display:flex;gap:8px;align-items:center;margin-bottom:10px}.modes{display:flex;align-items:center;gap:5px;overflow-x:auto;scrollbar-width:none;flex:1;min-width:0}.modes::-webkit-scrollbar{display:none}.mode{font-size:13px;white-space:nowrap;padding:7px 13px;border-radius:20px;min-height:36px;color:#bdc7d0}.mode.active{background:#2c3947;color:#fff;font-weight:700}.mode span{font-size:10px;border-radius:5px;padding:1px 4px;background:#ffffff16;margin-left:3px}.tour-settings{font-size:12px;color:var(--muted);min-height:36px;min-width:44px;border-left:1px solid var(--line);padding-left:12px}.swipe-row{display:flex;align-items:stretch;gap:10px}.step{width:48px;flex-shrink:0;background:#23303d;border-radius:12px;font-size:24px;min-height:60px}.swipe{flex:1;min-width:0;background:var(--lime);color:#17220d;display:flex;justify-content:space-around;align-items:center;border-radius:12px;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab;min-height:60px;overflow:hidden}.swipe.dragging{cursor:grabbing;background:#e6ff80}.swipe>div{text-align:center}.swipe strong{display:block;font-size:15px;letter-spacing:.8px}.swipe div>span{display:block;font-size:10px;letter-spacing:1px;opacity:.75;margin-top:1px}.swipe-arrow{font-size:23px;letter-spacing:-3px;opacity:.5}.dock-foot{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:#9ba8b5;padding-top:7px;min-height:22px}.dock-foot button{font-size:11px;color:var(--lime);padding:0 3px}.tutorial{position:absolute;bottom:calc(100% + 10px);left:20px;right:20px;display:flex;justify-content:space-between;gap:10px;padding:18px 20px;background:#273543;border:1px solid #4a5f70;border-radius:14px;box-shadow:0 8px 32px #0005}.tutorial:after{content:'';position:absolute;bottom:-7px;left:50%;width:12px;height:12px;transform:rotate(45deg);background:#273543;border-right:1px solid #4a5f70;border-bottom:1px solid #4a5f70}.tutorial strong{font-size:15px;color:var(--lime)}.tutorial p{font-size:13px;margin:5px 0 0;color:#c4cfd9}.tutorial .icon-button{width:30px;height:30px;font-size:21px}.toast{position:fixed;top:85px;left:50%;transform:translateX(-50%);background:var(--lime);color:#17220d;padding:10px 18px;max-width:90%;width:max-content;font-size:13px;border-radius:8px;z-index:3000;box-shadow:0 8px 25px #0003}dialog{background:#19232e;border:1px solid #435261;border-radius:18px;color:var(--text);width:min(92vw,460px);max-height:80dvh;padding:24px;box-shadow:0 20px 100px #0009}dialog::backdrop{background:#050b13b0;backdrop-filter:blur(5px)}.dialog-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.dialog-heading h2{font-size:21px}dialog p{font-size:14px;color:#c1cbd5;line-height:1.9}dialog h3{font-size:15px;margin-top:24px}dialog label{display:block;font-size:13px;margin:18px 0 8px}select,input{width:100%;padding:12px;border:1px solid #4a5b6c;background:#10171f;border-radius:8px;color:#fff;font-size:16px}.primary{padding:12px 18px;min-height:46px;background:var(--lime);color:#17220d;font-weight:700;border-radius:8px;width:100%;margin-top:16px;font-size:14px}dialog .subtle{font-size:12px;color:var(--muted)}dialog a{text-decoration:underline;font-size:12px}.affiliate{border:1px dashed var(--line);padding:18px;margin-bottom:24px;border-radius:8px}.affiliate span,.affiliate small{font-size:11px;color:var(--muted)}.affiliate p{font-size:14px}.error-placeholder{height:100%;padding:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#c5ced8}.error-placeholder strong{font-size:18px}.error-placeholder p{font-size:13px;max-width:350px}.error-placeholder button{background:var(--lime);color:#15200c;padding:10px 18px;border-radius:8px;font-size:14px}
@media(min-width:1200px){main{grid-template-columns:minmax(0,1fr) 340px;gap:36px}.screen{border-radius:14px}.place-panel{padding-top:28px}}
@media(max-width:850px){.masthead{height:60px;padding:0 18px;gap:14px}.brand{font-size:22px}.brand-mark{width:27px;height:27px;font-size:27px}.brand-bang{font-size:27px}.edition{font-size:9px;letter-spacing:1.5px}.edition span{display:none}.masthead>.icon-button{width:34px;height:34px;font-size:17px}main{display:block;padding:0 0 calc(var(--dock-space) + 20px)}.screen{border-radius:0}.camera-meta,.source-row,.playback-line{margin-left:18px;margin-right:18px}.camera-meta{padding-top:5px}h1{font-size:23px}.eyebrow{font-size:12px}time{font-size:12px}.favorite{width:44px;height:44px;font-size:26px}.source-row{padding:8px 0 12px}.playback-line{margin-top:6px;min-height:24px;font-size:11px}.place-panel{padding:18px;margin:0}.place-panel>p:not(.section-kicker){font-size:14px;line-height:1.8;margin-bottom:8px}.section-kicker{font-size:10px;margin-bottom:7px}.place-panel>a{font-size:11px}.explore-column{padding:0 18px}.map-panel{border-radius:10px}#map{height:230px}.collection{margin-top:24px}.camera-list{display:grid;grid-template-columns:1fr 1fr;max-height:none;gap:8px}.camera-item{display:block;padding:0 0 8px;overflow:hidden;border-radius:8px;background:#18232d}.camera-item img{width:100%;height:auto;aspect-ratio:16/9;display:block;border-radius:0;object-fit:cover}.camera-item>div{padding:8px 9px 0}.camera-item strong{font-size:12px}.camera-item small{font-size:10px}.camera-item .item-star{position:absolute;right:7px;top:5px;background:#10171fc9;border-radius:50%;width:22px;text-align:center}.dock{border-radius:14px 14px 0 0;padding-left:12px;padding-right:12px}.step{width:42px;min-height:56px}.swipe{min-height:56px}.swipe-row{gap:8px}.swipe strong{font-size:14px;letter-spacing:0}.swipe div>span{font-size:10px;letter-spacing:.2px}.swipe-arrow{font-size:20px}.mode{font-size:12px;padding:6px 11px}.tutorial{left:12px;right:12px;padding:14px}.tutorial strong{font-size:14px}.tutorial p{font-size:12px}.affiliate{margin:0 18px 18px}.toast{top:65px}}
@media(max-height:620px){.tutorial{position:static;margin:0 0 10px;padding:10px}.tutorial p{display:none}.tutorial:after{display:none}.dock{padding-top:6px}.mode-row{margin-bottom:6px}.step,.swipe{min-height:48px}.dock-foot{padding-top:3px}.swipe div>span{display:none}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}

/* Compact camera actions and one continuous thumb control. */
/* Suppress double-tap zoom on app controls; preserve pinch zoom. The YouTube
   iframe retains its own gestures. Do not intercept the map's gestures. */
button,a,select,input{touch-action:manipulation}
#swipe{touch-action:pan-y pinch-zoom}
.camera-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.camera-actions .icon-button{width:44px;height:44px;border-radius:10px}
.camera-meta>div:first-child{min-width:0}
.source-row{padding:6px 0 12px;min-height:30px}
.explore-column .place-panel{padding:22px 0 0}
.watch-column{padding-bottom:14px}
.swipe-row{gap:0;background:var(--lime);border-radius:12px;overflow:hidden}
.swipe-row .step{background:transparent;color:#17220d;border-radius:0;width:52px}
.swipe-row .swipe{background:transparent;border-radius:0}
.swipe-row:has(.dragging){background:#e6ff80}
.swipe-row .step:focus-visible,.swipe-row .swipe:focus-visible{outline:2px solid #17220d;outline-offset:-5px}
@media(max-width:850px){.camera-meta{gap:8px}h1{font-size:21px}.camera-actions{gap:4px}.camera-actions .icon-button{width:44px;height:44px}.eyebrow{flex-wrap:wrap;gap:5px}.source-row{padding:5px 0 10px}.swipe-row .step{width:44px}.explore-column .place-panel{padding:22px 0 0}}

@media(max-width:850px){
  .masthead{height:52px;padding:0 16px}
  .brand{font-size:20px}.brand-mark{width:25px;height:25px;font-size:25px}
  .camera-meta,.source-row,.playback-line{margin-left:16px;margin-right:16px}
  .playback-line{min-height:20px;margin-top:3px;font-size:10px}
  .camera-meta{padding-top:2px}h1{font-size:18px;line-height:1.4;margin-top:3px}
  .eyebrow,time{font-size:11px}.source-row{font-size:11px;padding:3px 0 7px;min-height:26px}
  .camera-actions .favorite{font-size:24px}
  .watch-column{padding-bottom:10px}.explore-column{padding:0 16px}
  .section-heading>button{padding:10px 12px;min-height:44px;font-size:13px}
  .collection{margin-top:18px}.collection .section-heading{margin-bottom:10px}h2{font-size:14px}
  .dock{padding-top:7px}.mode-row{margin-bottom:7px}.mode{font-size:11px;min-height:34px;padding:5px 10px}
  .swipe-row .step,.swipe-row .swipe{min-height:50px}
  .swipe strong{font-size:13px}.swipe div>span{font-size:10px}.dock-foot{font-size:10px;padding-top:5px}
}
