:root{--brand:#0078d7;--brand-light:#5ec1ee;--bg:#f4f9fd;--panel:#fff;--text:#11243a;--muted:#5b6f84;--line:#d7e4f0;--good:#15803d;--good-bg:#dcfce7;--caution:#a16207;--caution-bg:#fef3c7;--bad:#b91c1c;--bad-bg:#fee2e2;--unknown:#64748b;--unknown-bg:#e8eef4;--radius:14px}@media (prefers-color-scheme:dark){:root{--brand:#4aa8f0;--bg:#0b1620;--panel:#12222f;--text:#e6f0f8;--muted:#9bb0c3;--line:#25394a;--good:#4ade80;--good-bg:#123524;--caution:#facc15;--caution-bg:#3b3210;--bad:#f87171;--bad-bg:#3d1a1a;--unknown:#94a3b8;--unknown-bg:#1d2e3c}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);margin:0;font-family:Pretendard,Apple SD Gothic Neo,Noto Sans KR,Malgun Gothic,system-ui,sans-serif;line-height:1.55}a{color:var(--brand)}h2{margin:0 0 12px;font-size:1.15rem}h3{margin:16px 0 8px;font-size:1rem}.container{width:100%;max-width:960px;margin:0 auto;padding:0 16px}main.container{padding-top:16px;padding-bottom:32px}.site-header{background:var(--panel);border-bottom:1px solid var(--line);z-index:1000;position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:12px;min-height:56px;display:flex}.logo{width:auto;height:32px;display:block}.header-inner nav{gap:4px;display:flex}.header-inner nav a{color:var(--text);border-radius:999px;padding:8px 12px;font-weight:600;text-decoration:none}.header-inner nav a:hover{background:var(--bg)}.site-footer{color:var(--muted);padding-bottom:32px;font-size:.85rem}.stack{gap:16px;display:grid}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.row{align-items:flex-end;gap:8px;display:flex}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between;align-items:center}.hint{color:var(--muted);margin:8px 0 0;font-size:.9rem}.sub{color:var(--muted);margin:2px 0 0}.detail-title{margin:0;font-size:1.4rem}.error{color:var(--bad);background:var(--bad-bg);border-radius:10px;margin:0;padding:10px 12px}input[type=search],input[type=date],input[type=number]{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--line);border-radius:10px;min-width:0;min-height:44px;padding:10px 12px}input[type=search]{flex:1}input:focus-visible,button:focus-visible,a:focus-visible,label.btn:focus-within{outline:3px solid var(--brand-light);outline-offset:2px}.date-field{color:var(--muted);gap:4px;font-size:.85rem;display:grid}.btn{white-space:nowrap;font:inherit;border:1px solid var(--brand);background:var(--brand);color:#fff;cursor:pointer;border-radius:10px;justify-content:center;align-items:center;min-height:44px;padding:10px 16px;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-accent{background:#0a5ea8;border-color:#0a5ea8}.btn-ghost{color:var(--brand);background:0 0}.btn-danger{background:var(--bad);border-color:var(--bad);color:#fff}.btn-icon{min-width:44px;color:var(--brand);background:0 0;padding:0;font-size:1.4rem}.file-btn{position:relative}.map{border:1px solid var(--line);z-index:0;border-radius:12px;width:100%;margin-top:12px;overflow:hidden}.candidates ul{gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.candidate{text-align:left;width:100%;font:inherit;color:inherit;background:var(--bg);border:1px solid var(--line);cursor:pointer;border-radius:10px;min-height:44px;padding:10px 12px;display:grid}.candidate span{color:var(--muted);font-size:.85rem}.cards{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px;margin:12px 0;display:grid}.cards.one{grid-template-columns:minmax(0,360px)}.daycard{font:inherit;color:inherit;text-align:left;background:var(--bg);border:2px solid var(--line);cursor:pointer;border-radius:12px;gap:8px;padding:12px;display:grid}.daycard.rating-good{border-color:var(--good)}.daycard.rating-caution{border-color:var(--caution)}.daycard.rating-bad{border-color:var(--bad)}.daycard-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.daycard-weather{align-items:center;gap:8px;font-weight:600;display:flex}.big-icon{font-size:1.6rem}.tide-line{color:var(--muted);margin:0;font-size:.9rem}.facts{grid-template-columns:repeat(auto-fit,minmax(90px,1fr));gap:8px;margin:0;display:grid}.facts>div{display:grid}.facts dt{color:var(--muted);font-size:.78rem}.facts dd{margin:0;font-weight:600}.facts.big dd{font-size:1.1rem}.badge{white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:700}.badge-good{color:var(--good);background:var(--good-bg)}.badge-caution{color:var(--caution);background:var(--caution-bg)}.badge-bad{color:var(--bad);background:var(--bad-bg)}.badge-unknown{color:var(--unknown);background:var(--unknown-bg)}.calendar{grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;display:grid}.cal-dow{text-align:center;color:var(--muted);padding:4px 0;font-size:.8rem}.cal-dow.sun{color:var(--bad)}.cal-dow.sat{color:var(--brand)}.cal-cell{font:inherit;color:inherit;text-align:left;background:var(--bg);border:1px solid var(--line);cursor:pointer;border-radius:10px;grid-template-rows:auto 1fr;align-content:start;gap:3px;min-width:0;min-height:132px;padding:5px 6px;display:grid}.cal-cell:disabled{opacity:.35;cursor:default;min-height:0}.cal-cell.rating-good{background:var(--good-bg)}.cal-cell.rating-caution{background:var(--caution-bg)}.cal-cell.rating-bad{background:var(--bad-bg)}.cal-top{align-items:center;gap:4px;display:flex}.cal-date{font-size:.9rem;font-weight:700}.cal-date.sun{color:var(--bad)}.cal-date.sat{color:var(--brand)}.cal-wd{display:none}.cal-icon{margin-left:auto;font-size:1.1rem}.cal-dot{border-radius:50%;flex:none;width:8px;height:8px}.cal-info{color:var(--muted);min-width:0;font-size:.66rem;line-height:1.35;display:grid}.cal-info>span{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cal-info .cal-weather{color:var(--text);font-weight:600}.cal-wrap{grid-template-columns:auto minmax(0,1fr) auto;align-items:stretch;gap:6px;display:grid}.cal-side{font:inherit;color:var(--brand);background:var(--bg);border:1px solid var(--line);cursor:pointer;border-radius:10px;width:40px;font-size:1.6rem}.cal-side:hover:not(:disabled){background:var(--line)}.cal-side:disabled{opacity:.4}@media (max-width:760px){.calendar{grid-template-columns:minmax(0,1fr)}.cal-dow,.cal-pad,.cal-side{display:none}.cal-wrap{grid-template-columns:minmax(0,1fr)}.cal-cell{grid-template-rows:auto;grid-template-columns:72px minmax(0,1fr);gap:8px;min-height:0;padding:8px 10px}.cal-top{flex-wrap:wrap;align-content:flex-start}.cal-wd{margin-left:3px;font-weight:400;display:inline}.cal-icon{margin-left:0}.cal-info{flex-wrap:wrap;gap:2px 12px;font-size:.8rem;display:flex}}.dot,.dot-good,.dot-caution,.dot-bad,.dot-unknown{background:var(--unknown)}.dot{border-radius:50%;width:10px;height:10px;margin:0 2px 0 8px;display:inline-block}.dot-good{background:var(--good)}.dot-caution{background:var(--caution)}.dot-bad{background:var(--bad)}.legend{color:var(--muted);margin:0 0 8px;font-size:.85rem}.month-nav{align-items:center;gap:4px;display:flex}.month-nav h2{text-align:center;min-width:8.5em;margin:0}.reasons{margin:0 0 12px;padding-left:20px}.table{border-collapse:collapse;width:100%}.table th,.table td{text-align:left;border-bottom:1px solid var(--line);padding:8px 6px}.flows{margin:12px 0 0;padding-left:20px}.notes{color:var(--muted);margin:0;padding-left:18px;font-size:.82rem}.list{gap:6px;margin:8px 0 0;padding:0;list-style:none;display:grid}.list-item{border:1px solid var(--line);background:var(--bg);border-radius:10px;align-items:center;gap:8px;padding:6px 10px;display:flex}.list-item.active{border-color:var(--brand)}.list-main{color:inherit;flex:1;align-content:center;min-width:0;min-height:44px;text-decoration:none;display:grid}.list-main span{color:var(--muted);font-size:.85rem}.as-button{font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0}.check{place-items:center;min-width:36px;min-height:44px;display:grid}.check input{width:20px;height:20px}@media (max-width:520px){.row:not(.wrap):not(.between){flex-wrap:wrap}.btn-accent{width:100%}.month-nav h2{min-width:7em;font-size:1.05rem}}input[type=text],input[type=password],textarea{font:inherit;color:inherit;background:var(--bg);border:1px solid var(--line);border-radius:10px;width:100%;min-width:0;min-height:44px;padding:10px 12px}textarea{resize:vertical}.notice{background:var(--unknown-bg);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;padding:10px 14px;font-weight:600}.notice-warning{background:var(--caution-bg);color:var(--caution);border-color:#0000}.warn-box{background:var(--caution-bg);color:var(--text);border-radius:10px;margin-top:12px;padding:10px 12px}.warn-box.warn-strong{background:var(--bad-bg)}.warn-box strong{color:var(--bad)}.warn-box ul{margin:6px 0;padding-left:20px}.warn-box li.muted{color:var(--muted)}.warn-none{margin:10px 0 0;font-size:.9rem}.hint-inline{color:var(--muted);font-size:.82rem}.warn-text{font-weight:600;color:var(--bad)!important}.list-item.alert{border-color:var(--bad);background:var(--bad-bg)}.guide ul{margin:8px 0 0;padding-left:20px}.guide p{margin:0}.push-box{border-top:1px solid var(--line);margin-top:14px;padding-top:12px}.recent{margin-top:10px}.chips{flex-wrap:wrap;gap:6px;margin:6px 0 0;padding:0;list-style:none;display:flex}.chip{font:inherit;border:1px solid var(--line);background:var(--bg);min-height:36px;color:var(--text);cursor:pointer;text-overflow:ellipsis;white-space:nowrap;border-radius:999px;max-width:100%;padding:6px 12px;font-size:.9rem;overflow:hidden}.chip.on,.chip:hover{border-color:var(--brand);color:var(--brand)}.footer-link{color:var(--muted);font-size:.8rem}.ok-msg{color:var(--good);background:var(--good-bg);border-radius:10px;margin:0;padding:10px 12px}.check-label{align-items:center;gap:6px;min-height:44px;display:inline-flex}.th-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;margin-bottom:12px;display:grid}.admin-login{width:100%;max-width:420px;margin:0 auto}.tide-list{gap:2px;margin:0;font-size:.86rem;display:grid}.tide-list>div{grid-template-columns:4.6em minmax(0,1fr);gap:6px;display:grid}.tide-list dt{color:var(--muted)}.tide-list dd{margin:0}.more-days{align-items:center;margin-top:8px}.source-info{border:1px solid var(--line);border-radius:10px;padding:8px 12px;font-size:.85rem}.source-info p{margin:2px 0}.source-info.fallback{border-color:var(--caution);background:var(--caution-bg)}.muted{color:var(--muted)}
