/* Janjan · river-side mobile interface */
:root{color-scheme:light;--ink:#09233f;--muted:#75818a;--teal:#008d96;--teal-dark:#007780;--line:#e9ece7;--cream:#fffefa;--soft:#f2f6f4;--amber:#c37c13;--danger:#b34a3f;font-family:"Apple SD Gothic Neo","Malgun Gothic","맑은 고딕",sans-serif;color:var(--ink);background:#f5f3ec;font-synthesis:none;-webkit-font-smoothing:antialiased}
*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.5;background:#f5f3ec}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:default;opacity:.55}a{color:var(--teal-dark);text-underline-offset:3px}svg{display:block}button svg{pointer-events:none}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #58b9bc;outline-offset:4px}button,input,select,textarea{min-width:0}button{touch-action:manipulation}button:active{transform:translateY(1px)}
.app-shell{width:100%;max-width:470px;min-height:100vh;min-height:100dvh;margin:0 auto;padding:26px 18px calc(104px + env(safe-area-inset-bottom));background:var(--cream)}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:46px;margin-bottom:17px}.topbar h1{margin:0;font-size:32px;line-height:1.2;font-weight:800;letter-spacing:-.065em;white-space:nowrap}.header-actions{display:flex;align-items:center;gap:4px;min-width:0}.location-trigger{display:flex;align-items:center;gap:4px;border:0;background:none;padding:9px 2px;font-weight:700;font-size:12px;min-width:0}.location-trigger span{max-width:162px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.location-trigger svg{width:16px;height:18px;fill:var(--ink);stroke:var(--cream);stroke-width:1.4;flex-shrink:0}.icon-button{width:34px;height:34px;display:grid;place-items:center;border:0;border-radius:12px;background:#f0f3f1;font-size:23px;flex-shrink:0}.icon-button svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}#openRecords{background:none;width:28px}#openRecords svg{fill:currentColor;stroke:none}
.date-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px 15px;margin:0 0 16px;border-radius:15px;background:#eef5f1}.date-eyebrow{display:block;font-size:11px;color:#6d817d;letter-spacing:.08em;font-weight:600}.date-strip time{display:block;font-size:24px;line-height:1.35;letter-spacing:-.045em;font-weight:800;font-variant-numeric:tabular-nums}.date-side{display:flex;align-items:center;gap:8px}.date-side>span{font-size:15px;color:var(--teal-dark);font-weight:700;font-variant-numeric:tabular-nums}.date-side .icon-button{background:rgba(255,255,255,.8);color:var(--teal-dark);width:30px;height:30px}.date-side svg{width:16px;height:16px}.app-shell:not([data-view="surface"]) .date-strip{display:none}
.network-note{margin:0 0 10px;padding:8px 11px;background:#fff3dd;color:#8a631e;border-radius:9px;font-size:11px}.network-note:empty{display:none}.status-line{font-size:12px;color:var(--muted);margin:9px 0;overflow-wrap:anywhere}.status-line:empty{display:none}#connectionStatus{display:none}#connectionStatus.error{display:block;color:var(--danger);padding:9px 11px;background:#fff1eb;border-radius:9px}.view{display:none;min-width:0}.view.active{display:block}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.live-hero{border-radius:17px;overflow:hidden;background:#fff;border:1px solid #e4eae6;margin-bottom:12px}.live-top{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 13px;font-size:12px;font-weight:700}.live-chip{display:inline-flex;align-items:center;gap:5px;color:var(--teal-dark);font-size:10px;background:#eaf5f1;padding:3px 7px;border-radius:20px;font-weight:600}.live-chip i{height:5px;width:5px;border-radius:50%;background:var(--teal)}.live-player{width:100%;background:#eff3f1;overflow:visible}#cameraFrame{display:block;width:100%;height:300px;border:0;margin:0;background:#edf1f0}.live-caption{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:11px 13px}.live-caption>div:first-child{min-width:0}.live-caption strong{display:block;font-size:13px;letter-spacing:-.025em}.live-caption>div>span{display:block;font-size:10px;color:var(--muted);margin-top:2px}.live-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.live-actions a{font-size:11px;text-decoration:none;color:#607a80}.live-actions button{display:grid;place-items:center;width:29px;height:29px;border:0;border-radius:9px;color:var(--teal-dark);background:#eff5f2;font-size:14px;font-weight:800}.camera-restart{display:flex;align-items:center;justify-content:center;gap:11px;width:100%;min-height:260px;border:0;background:#e8f0ec;color:var(--teal-dark);font-weight:700}.play-symbol{display:grid;place-items:center;width:45px;height:45px;border:1px solid #a9cfca;border-radius:50%;padding-left:3px}.empty-camera{padding:36px 20px;text-align:center;background:#f0f5f1;border-radius:16px;color:var(--muted);font-size:13px}
.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0 11px}.metric-card{position:relative;min-width:0;padding:14px 13px 12px;border:1px solid #e6eae4;border-radius:16px;background:#fffffc}.metric-label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700}.metric-label svg{width:24px;height:24px;fill:none;stroke:var(--teal);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.metric-card .metric-value{display:block;margin:5px 0 5px;font-size:43px;line-height:1.2;font-weight:800;letter-spacing:-.065em;font-variant-numeric:tabular-nums;white-space:nowrap}.metric-value em{font-size:20px;font-style:normal;letter-spacing:-.035em;margin-left:3px;font-weight:700}.metric-card small{display:block;color:#79837d;font-size:10px;line-height:1.5;overflow-wrap:anywhere}.wind-extra{display:flex;align-items:center;gap:4px;flex-wrap:wrap;color:#7a8583;font-size:10px;margin-top:4px}.wind-extra time{margin-left:auto;font-size:9px}.ferry-teaser{width:100%;display:flex;align-items:center;gap:12px;text-align:left;border:1px solid #f9e3b9;border-radius:15px;background:#fff0d2;padding:15px 13px;color:var(--ink)}.ferry-icon{flex:0 0 57px;color:#bc7716}.ferry-icon svg{width:57px;height:43px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.ferry-copy{display:block;min-width:0;flex:1}.ferry-copy strong{display:block;font-size:15px;font-weight:800}.ferry-copy b{display:block;font-size:19px;line-height:1.45;letter-spacing:-.04em;overflow-wrap:anywhere}.ferry-copy small{display:block;font-size:10px;color:#a1834e;margin-top:2px}.chevron{font-size:29px;line-height:1;color:#bc7716;font-weight:400}.home-caution{margin:8px 0 0;text-align:center;font-size:10px;color:#8c9089}
.section-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:12px 0 15px}.section-head h2{margin:0;font-size:20px;font-weight:800;letter-spacing:-.045em}.section-head p{font-size:11px;color:var(--muted);margin:4px 0 0}.text-button{border:0;background:none;color:var(--teal-dark);font-size:12px;font-weight:700;padding:9px 2px;white-space:nowrap}.fine{font-size:11px;color:var(--muted);line-height:1.7;margin:10px 0 14px;overflow-wrap:anywhere}.notice-line{display:flex;gap:7px;background:#f0f3f1;padding:11px 13px;border-radius:10px;font-size:11px;color:#6f7c82;margin-top:17px}.notice-line:before{content:"i";display:inline-grid;place-items:center;border:1px solid #a3afb3;border-radius:50%;height:15px;width:15px;flex-shrink:0;font-size:10px}.day-tabs{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;padding:0 0 5px;margin:0 0 10px}.day-tabs::-webkit-scrollbar{display:none}.day-tabs button{flex:1;min-width:64px;white-space:nowrap;border:1px solid #e9edeb;border-radius:12px;background:#f1f3f2;padding:9px 12px;font-size:12px;color:#64737a}.day-tabs button.active{background:var(--teal);border-color:var(--teal);color:#fff;font-weight:700}.wind-chart{padding:13px 0 12px;margin:3px 0 8px;color:var(--teal);border-bottom:1px solid var(--line)}.wind-chart svg{display:block;width:100%;height:auto;min-height:125px;max-height:170px;overflow:visible}.wind-chart svg text{font-family:inherit}.hour-list{position:relative;display:grid;padding-left:8px}.hour-row{position:relative;display:grid;grid-template-columns:53px minmax(0,1fr) auto;align-items:center;gap:13px;min-height:68px;padding:13px 9px 13px 21px;border-bottom:1px solid #eef0ec}.hour-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:#dbe4df}.hour-row:after{content:"";position:absolute;left:-4px;top:28px;width:9px;height:9px;border-radius:50%;background:#b1bfc3;border:2px solid var(--cream)}.hour-row.now{background:#edf6f2;border-radius:0 13px 13px 0;border-bottom-color:transparent}.hour-row.now:after{background:var(--teal);box-shadow:0 0 0 2px #d6eee7}.hour-row b{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums}.hour-row span{font-size:11px;color:var(--muted);line-height:1.55;min-width:0}.hour-row strong{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:-.025em}
.river-map{display:block;width:100%;height:auto;overflow:hidden;border-radius:16px;margin:0 0 12px;background:#f1f4f1}.river-map text{font-family:"Apple SD Gothic Neo","Malgun Gothic",sans-serif}.bus-summary{display:block}.bus-estimate{text-align:center;padding:16px 8px 14px;border:1px solid #eef0e9;border-radius:16px;background:#fff}.bus-estimate strong{display:block;font-size:clamp(31px,9.5vw,47px);line-height:1.2;font-weight:800;letter-spacing:-.065em;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.bus-estimate span{display:block;color:#597079;font-size:13px;margin-top:5px}.bus-estimate small{display:block;font-size:10px;color:#929990;margin-top:4px}.bus-route{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px 12px;background:#eff5f1;border-radius:11px;padding:10px;margin-top:8px}.bus-route span{font-size:11px;color:#728480}.bus-route strong{font-size:17px;font-variant-numeric:tabular-nums}.bus-route small{font-size:10px;color:#7e8c86}.external-links{display:flex;align-items:center;justify-content:center;gap:17px;flex-wrap:wrap;margin:13px 0}.external-links a{font-size:11px;color:#6b8284;text-decoration:none}.wake-box{margin-top:23px}.wake-box .section-head{margin-bottom:5px}.wake-box h2{font-size:16px}.wake-box select{width:auto;max-width:150px;font-size:11px;padding:6px 9px;background:#f2f5f1;border:0}.wake-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:18px 0 23px}.wake-steps>div{position:relative;text-align:center;display:flex;flex-direction:column;align-items:center;gap:5px;min-width:0}.wake-steps>div:before{content:"";position:absolute;left:50%;right:-50%;top:11px;border-top:1px dashed #b6c4c5}.wake-steps>div:last-child:before{display:none}.wake-steps i{position:relative;display:block;height:20px;width:20px;border:1px solid #aebfc3;border-radius:50%;background:#94a4ad;box-shadow:inset 0 0 0 3px var(--cream);margin-bottom:2px}.wake-steps>div:first-child i{background:var(--teal);border-color:var(--teal)}.wake-steps span{font-size:12px;font-weight:700}.wake-steps b{font-size:13px;font-variant-numeric:tabular-nums;font-weight:500}.primary{border:0;border-radius:12px;background:var(--teal);color:#fff;padding:12px 15px;font-size:14px;font-weight:700;min-height:44px}.primary:hover{background:var(--teal-dark)}.wide-button{display:block;width:100%}#passNow{font-size:17px;min-height:53px;border-radius:13px;letter-spacing:-.025em}#activeWake{text-align:center}
.panel-detail{padding:15px 0;border-top:1px solid var(--line);margin-top:12px}.panel-detail summary,.source-notes summary{font-size:13px;font-weight:700;cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-detail summary::-webkit-details-marker,.source-notes summary::-webkit-details-marker{display:none}.panel-detail summary:after,.source-notes summary:after{content:"+";color:#94a39e;font-size:19px;font-weight:400}.panel-detail[open]>summary:after,.source-notes[open]>summary:after{content:"−"}.panel-detail[open]>summary{margin-bottom:14px}.panel-detail>small{display:block;font-size:10px;color:var(--muted);margin-top:10px;line-height:1.65}.panel-detail>p{font-size:11px;color:var(--muted);line-height:1.7}.panel-detail>a{font-size:12px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px;margin:12px 0}.form-grid .wide{grid-column:1/-1}.form-grid button{align-self:end}.filter-row{display:flex;align-items:end;gap:9px;margin:12px 0}.filter-row label{flex:1;min-width:0}label{display:block;font-size:11px;color:#71817f}input,select,textarea{width:100%;max-width:100%;border:1px solid #dfe7e1;border-radius:10px;background:#fff;padding:10px 9px;min-height:41px;font-size:13px}label input,label select,label textarea{display:block;margin-top:5px;color:var(--ink)}textarea{min-height:85px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid #a2d4cd;outline-offset:1px}.record-list{margin-top:12px;overflow-wrap:anywhere}.record{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.record p,.record small{font-size:11px;color:var(--muted);margin:3px 0;line-height:1.65}.record strong{font-size:13px}.record button{border:0;background:#f5f1ed;color:#a17561;padding:5px 8px;font-size:10px;border-radius:7px;flex-shrink:0}.trip{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}.trip strong{display:block;font-size:15px;font-variant-numeric:tabular-nums}.trip small{font-size:10px;color:var(--muted)}.file-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #dce7df;border-radius:9px;padding:9px 13px;color:var(--teal-dark);background:#f3f7f2;font-size:12px;cursor:pointer}.source-notes{margin:16px 0 20px;padding-top:17px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}.source-notes p{margin:12px 0;line-height:1.75}.source-notes summary{color:#70817c;font-size:12px}
.bottom-nav{position:fixed;z-index:20;bottom:0;left:50%;transform:translateX(-50%);display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;max-width:470px;padding:8px 17px calc(9px + env(safe-area-inset-bottom));border-top:1px solid #e8ece5;background:rgba(255,254,250,.96);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}.bottom-nav button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:none;color:#8a989f;min-height:49px;padding:3px 7px 5px;font-size:11px}.bottom-nav svg{height:25px;width:27px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.bottom-nav button:last-child svg{width:32px}.bottom-nav button.active{color:var(--teal);font-weight:800}.bottom-nav button.active:after{content:"";position:absolute;bottom:-6px;left:25%;right:25%;height:3px;border-radius:3px;background:var(--teal)}
dialog{color:var(--ink);border:0;border-radius:22px;padding:0;background:var(--cream);width:min(430px,calc(100% - 28px));max-height:88vh;max-height:88dvh;box-shadow:0 20px 90px #09233f30}dialog::backdrop{background:#09233f66;backdrop-filter:blur(3px)}.settings{padding:20px}.settings>.section-head{margin-top:0}.settings>p{font-size:11px;color:var(--muted);line-height:1.7}.settings .section-head h2{font-size:23px}.location-item{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.location-item small{display:block;font-size:10px;color:var(--muted)}.location-item button{border:0;border-radius:8px;background:#f0f4ef;font-size:11px;padding:6px 8px}
@media(min-width:600px){body{padding:28px 0 0}.app-shell{min-height:calc(100vh - 28px);border-radius:25px 25px 0 0;box-shadow:0 8px 65px #323a2810;padding:26px 21px calc(106px + env(safe-area-inset-bottom))}.topbar{margin-bottom:20px}.metric-card{padding:15px}.metric-card .metric-value{font-size:46px}#cameraFrame{height:315px}.bottom-nav{box-shadow:0 -8px 25px #fffefa66}}
@media(max-width:359px){.app-shell{padding:19px 12px calc(98px + env(safe-area-inset-bottom))}.topbar{gap:5px;margin-bottom:13px}.topbar h1{font-size:29px}.header-actions{gap:1px}.location-trigger{font-size:11px}.location-trigger span{max-width:125px}.date-strip{padding:12px}.date-strip time{font-size:21px}.date-side{gap:5px}.date-side>span{font-size:13px}.metric-grid{gap:8px}.metric-card{padding:12px 10px}.metric-label{font-size:13px;gap:5px}.metric-card .metric-value{font-size:36px}.metric-value em{font-size:17px}.ferry-teaser{padding:13px 10px;gap:9px}.ferry-icon{flex-basis:47px}.ferry-icon svg{width:47px}.ferry-copy b{font-size:16px}.ferry-copy strong{font-size:14px}#cameraFrame{height:280px}.live-caption{padding:10px}.live-actions{gap:7px}.live-caption>div>span{font-size:9px}.form-grid{gap:9px}.hour-row{grid-template-columns:45px minmax(0,1fr) auto;gap:9px;padding-right:4px}.hour-row strong{font-size:14px}.bottom-nav{padding-left:10px;padding-right:10px}}
@media(prefers-reduced-motion:no-preference){button,a{transition:background-color .15s,color .15s}dialog[open]{animation:appear .18s ease-out}@keyframes appear{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}}
[hidden]{display:none!important}

/* Keep the complete first-page summary above the mobile navigation. */
.app-shell{padding-top:18px}.topbar{min-height:40px;margin-bottom:12px}.date-strip{padding:10px 14px;margin-bottom:12px}.date-eyebrow{font-size:10px;line-height:1.25}.date-strip time{font-size:23px;line-height:1.3}.date-side>span{font-size:12px}.live-top{display:none}.live-caption{padding:8px 12px}.live-caption strong{font-size:12px}.live-caption>div>span{font-size:9px;margin-top:1px}.live-actions button{width:25px;height:25px}.metric-card{padding:11px 12px}.metric-card .metric-value{font-size:40px;margin:4px 0;line-height:1.15}.metric-label{font-size:13px}.metric-label svg{width:22px;height:22px}.metric-card small{font-size:9px}.wind-extra{font-size:9px;margin-top:2px}.wind-extra time{font-size:8px}.ferry-teaser{padding:11px 12px;gap:10px}.ferry-copy b{font-size:18px}.ferry-copy strong{font-size:14px}.ferry-copy small{font-size:9px}.hour-row span small{display:block;font-size:10px}.hour-row strong em{display:block;font-size:10px;font-style:normal;color:#7b8a91;font-weight:500;letter-spacing:0;text-align:right}.chart-label{display:flex;justify-content:space-between;font-size:12px;color:#607480}.chart-label span{font-size:10px}.wake-steps .done i{background:var(--teal);border-color:var(--teal)}.wake-steps>div:first-child:not(.done) i{background:#94a4ad;border-color:#aebfc3}@media(min-width:600px){body{padding-top:18px}.app-shell{padding-top:18px;min-height:calc(100vh - 18px)}.topbar{margin-bottom:12px}.metric-card{padding:12px}.metric-card .metric-value{font-size:42px}}@media(max-width:359px){.date-strip time{font-size:19px}.date-side>span{font-size:10px}.metric-card .metric-value{font-size:35px}.metric-value em{font-size:16px}.ferry-copy b{font-size:16px}}
.live-caption>div>span{font-size:10px}.metric-card small{font-size:10px}.ferry-copy small{font-size:10px}
