:root{--header-h:56px;--panel-w:380px;--border:#e6e6e6;--muted:#666;--accent:#f0413a}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0}body{color:#1a1a1a;background:#fff;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.site-shell{flex-direction:column;min-height:100dvh;display:flex}.site-main{flex:1}.site-header{height:var(--header-h);border-bottom:1px solid var(--border);z-index:1100;background:#fff;flex:none;align-items:center;gap:24px;padding:0 20px;display:flex;position:sticky;top:0}.site-logo{color:inherit;white-space:nowrap;align-items:center;gap:8px;font-size:17px;font-weight:700;text-decoration:none;display:flex}.site-nav{gap:4px;min-width:0;display:flex}.site-nav a{color:#444;white-space:nowrap;border-radius:8px;padding:7px 12px;font-size:14px;text-decoration:none}.site-nav a:hover{background:#f3f3f3}.site-nav a[aria-current=page]{color:#1a1a1a;background:#f0f0f0;font-weight:600}.site-auth{margin-left:auto;font-size:14px;position:relative}.btn{border:1px solid var(--border);font:inherit;cursor:pointer;color:inherit;white-space:nowrap;background:#fff;border-radius:8px;padding:7px 14px;font-size:14px;text-decoration:none}.btn:hover{background:#f6f6f6}.auth-menu{border:1px solid var(--border);background:#fff;border-radius:10px;flex-direction:column;min-width:200px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 6px 24px #0000001f}.auth-menu a,.auth-menu button{color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 10px;text-decoration:none;display:block}.auth-menu a:hover,.auth-menu button:hover{background:#f3f3f3}.auth-user{align-items:center;gap:8px;display:flex}.auth-name{text-overflow:ellipsis;max-width:160px;overflow:hidden}.auth-initial{background:#eceff1;border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:13px;font-weight:600;display:flex}.nav-short{display:none}.auth-user img{border-radius:50%;width:28px;height:28px}.map-frame{max-width:1280px;margin:24px auto 0;padding:0 20px}.map-layout{border:1px solid var(--border);background:#fff;border-radius:14px;height:520px;display:flex;position:relative;overflow:hidden}.map-layout.is-expanded{z-index:1200;border:none;border-radius:0;height:auto;position:fixed;inset:0}.map-expand-btn{z-index:1000;color:#1a1a1a;cursor:pointer;background:#fff;border:none;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;display:flex;position:absolute;top:12px;right:12px;box-shadow:0 1px 4px #0000004d}.map-expand-btn:hover{background:#f3f3f3}.map-area{flex:1;min-width:0;position:relative}.side-panel{width:var(--panel-w);border-left:1px solid var(--border);background:#fff;flex:none;overflow-y:auto}.panel-toolbar{z-index:1;background:#fff;border-bottom:1px solid #f0f0f0;justify-content:space-between;align-items:center;min-height:44px;padding:6px 10px;display:flex;position:sticky;top:0}.panel-icon-btn{font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:6px 8px;font-size:14px}.panel-icon-btn:hover{color:#1a1a1a;background:#f3f3f3}.panel-body{padding:16px 20px 24px}.panel-body h2{margin:0 0 4px;font-size:20px}.panel-body h3{margin:20px 0 8px;font-size:15px}.panel-sub{color:var(--muted);margin:0 0 12px;font-size:14px}.legend{margin:0;padding:0;font-size:14px;list-style:none}.legend li{align-items:center;gap:10px;padding:5px 0;display:flex}.legend-dot{border-radius:50%;flex:none;width:12px;height:12px}.map-locate-btn{z-index:1000;color:#1e88e5;cursor:pointer;background:#fff;border:none;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;display:flex;position:absolute;bottom:28px;right:12px;box-shadow:0 1px 4px #0000004d}.map-locate-btn:hover{background:#f3f3f3}.map-locate-btn.is-locating svg{animation:1s ease-in-out infinite locate-pulse}@keyframes locate-pulse{50%{opacity:.3}}.map-search{z-index:1001;width:min(320px,100% - 76px);position:absolute;top:12px;left:12px}.map-area .leaflet-top.leaflet-left{top:48px}.map-search-input{width:100%;height:40px;font:inherit;color:#1a1a1a;box-sizing:border-box;background:#fff;border:none;border-radius:10px;padding:0 12px;font-size:16px;box-shadow:0 1px 4px #0000004d}.map-search-input:focus-visible{outline-offset:1px;outline:2px solid #1e88e5}.map-search-list,.map-search-status{background:#fff;border-radius:10px;margin:4px 0 0;box-shadow:0 2px 8px #0000004d}.map-search-list{max-height:min(60vh,360px);padding:4px 0;list-style:none;overflow-y:auto}.map-search-option{cursor:pointer;flex-direction:column;gap:2px;padding:8px 12px;display:flex}.map-search-option.is-active{background:#f0f6fd}.map-search-name{color:#1a1a1a;font-size:15px}.map-search-meta{color:#6b6b6b;font-size:12px}.map-search-status{color:#6b6b6b;padding:8px 12px;font-size:14px}.map-float-error{z-index:1000;color:var(--accent);background:#fff;border-radius:8px;margin:0;padding:6px 12px;font-size:13px;position:absolute;bottom:36px;right:64px;box-shadow:0 1px 4px #0000004d}.home-section{scroll-margin-top:var(--header-h);padding:48px 20px}.home-section-inner{max-width:1080px;margin:0 auto}.home-section h2{margin:0 0 12px;font-size:26px}.home-lead{color:#333;max-width:720px;margin:0 0 24px;font-size:16px;line-height:1.55}.factor-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;display:grid}.factor-card{border:1px solid var(--border);border-radius:12px;padding:16px 18px}.factor-card h3{margin:0 0 6px;font-size:15px}.factor-card p{color:#444;margin:0;font-size:14px;line-height:1.5}.home-note{max-width:720px;color:var(--muted);margin:24px 0 0;font-size:14px;line-height:1.55}.ad-slot{color:#999;border:1px dashed #bbb;border-radius:12px;justify-content:center;align-items:center;max-width:1080px;min-height:120px;margin:0 auto 48px;font-size:13px;display:flex}.site-footer{border-top:1px solid var(--border);background:#f7f7f7;padding:28px 20px;font-size:14px}.site-footer-inner{flex-wrap:wrap;justify-content:space-between;gap:16px 40px;max-width:1080px;margin:0 auto;display:flex}.site-footer-links{gap:20px;display:flex}.site-footer a{color:inherit}.site-footer-muted{color:var(--muted);margin-top:4px;font-size:13px}@media (max-width:767px){.site-header{gap:8px;padding:0 12px}.site-logo span{display:none}.site-nav a{padding:7px 8px}.nav-full,.auth-name{display:none}.nav-short{display:inline}.auth-user{border-radius:50%;padding:4px}.map-frame{margin-top:12px;padding:0 12px}.map-layout:not(.is-expanded){flex-direction:column;height:auto}.map-layout:not(.is-expanded) .map-area{flex:none;height:340px}.map-layout:not(.is-expanded) .side-panel{border-left:none;border-top:1px solid var(--border);width:auto;max-height:none;position:static;overflow:visible}.map-layout:not(.is-expanded) .panel-toolbar{position:static}.ad-slot{margin:0 16px 32px}.map-layout.is-expanded .side-panel{z-index:1000;border-left:none;border-radius:16px 16px 0 0;width:auto;max-height:75%;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -2px 16px #0003}.side-panel.is-empty{display:none}.map-layout.is-expanded .panel-toolbar{border-radius:16px 16px 0 0}}.auth-menu .auth-danger{color:#c62828}.catch-form{flex-direction:column;gap:10px;font-size:14px;display:flex}.catch-form label{color:var(--muted);flex-direction:column;gap:4px;display:flex}.catch-form input,.catch-form select,.catch-form textarea{font:inherit;color:#1a1a1a;border:1px solid var(--border);background:#fff;border-radius:8px;padding:8px 10px}.catch-form .row{gap:10px;display:flex}.catch-form .row>label{flex:1;min-width:0}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.btn-primary:hover{background:#d9352f}.btn-primary:disabled{opacity:.6;cursor:default}.form-error{color:#c62828;margin:0;font-size:14px}.form-ok{color:#2e7d32;font-size:14px}.catch-list{margin:0;padding:0;list-style:none}.catch-list li{border-bottom:1px solid var(--border);padding:12px 0}.plain-page{max-width:720px;margin:0 auto;padding:24px 16px 48px;line-height:1.55}.plain-page h1{margin:0 0 12px;font-size:26px}.plain-page h2{margin:28px 0 8px;font-size:18px}.auth-consent{color:var(--muted);padding:4px 10px 6px;font-size:12px;line-height:1.35}.auth-consent a{padding:0;text-decoration:underline;display:inline}.fchart{touch-action:pan-y;-webkit-user-select:none;user-select:none;border-radius:8px;outline:none;padding-top:26px;position:relative}.fchart:focus-visible{box-shadow:0 0 0 2px #1a1a1a33}.fchart-svg{cursor:crosshair;width:100%;height:auto;display:block}.fchart-bar{transition:opacity .12s}.fchart-bar.is-active{stroke:#1a1a1a;stroke-width:1px}.fchart-now{stroke:#1a1a1a;stroke-width:1px;stroke-dasharray:2 2;pointer-events:none}.fchart-tip{white-space:nowrap;color:#fff;pointer-events:none;background:#1a1a1a;border-radius:6px;padding:3px 8px;font-size:12px;position:absolute;top:0}.daystrip{gap:4px;margin:0 0 14px;padding:2px 0 6px;display:flex}.daystrip-cell{border:1px solid var(--border);min-width:0;font:inherit;color:inherit;cursor:pointer;background:#fff;border-radius:8px;flex-direction:column;flex:1 1 0;align-items:center;gap:2px;padding:6px 2px;display:flex}.daystrip-cell svg{width:100%;max-width:40px;height:auto}.daystrip-cell:hover{border-color:#bbb}.daystrip-cell.is-selected{background:#f6f6f6;border-color:#1a1a1a;box-shadow:inset 0 0 0 1px #1a1a1a}.daystrip-day{color:var(--muted);text-transform:capitalize;font-size:10px}.daystrip-num{font-size:15px;font-weight:600}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.fish-icon{flex:none;display:block}.species-title{align-items:center;gap:10px;display:flex}.view-tabs{background:#f0f0f0;border-radius:8px;gap:4px;margin:0 0 14px;padding:3px;display:flex}.view-tab{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:6px;flex:1 1 0;padding:6px 8px;font-size:14px}.view-tab[aria-selected=true]{background:#fff;font-weight:600;box-shadow:0 1px 2px #0000001f}.species-row{align-items:center;gap:10px;display:flex}.sft{border-collapse:collapse;table-layout:fixed;width:100%;font-size:13px}.sft th,.sft td{padding:0}.sft thead th{color:var(--muted);text-align:center;padding:4px 0 6px;font-size:11px;font-weight:600}.sft thead th span{font-size:10px;font-weight:400;display:block}.sft-name-col{width:auto;text-align:left!important}.sft-period{width:36px}.sft-chevron-col{width:28px}.sft-row>*{border-top:1px solid var(--border)}.sft-name{text-align:left;font-weight:500}.sft-name-btn{width:100%;min-width:0;font:inherit;text-align:left;color:inherit;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:6px 4px 6px 0;display:flex}.sft-name-btn span{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.sft-name-btn:hover span{text-decoration:underline}.sft-cell{text-align:center;font-variant-numeric:tabular-nums;border-bottom:3px solid #0000;height:40px;font-weight:600}.sft-cell-empty{color:var(--muted);font-weight:400}.sft-chevron-cell{text-align:center}.sft-chevron{width:28px;height:36px;font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:16px;line-height:1}.sft-chevron:hover{color:#1a1a1a}.sft-row.is-expanded>*{background-color:#fafafa}.sft-details-row td{border-top:1px solid var(--border);background:#fafafa;padding:4px 8px 16px}.sft-details-row h3:first-child{margin-top:8px}.sft-skeleton-row{background:linear-gradient(90deg,#f0f0f0,#f8f8f8,#f0f0f0) 0 0/200% 100%;border-radius:6px;height:40px;margin-bottom:6px;animation:1.2s linear infinite sft-shimmer}@keyframes sft-shimmer{to{background-position:-200% 0}}
