:root{--boat:#007d91;--boat-dark:#005567;--boat-sky:#e7f7fa;--boat-orange:#f39800;--boat-red:#d74747}*{box-sizing:border-box}body{background:#f4f7f8;color:#19333a;padding-bottom:78px}.boat-nav{background:linear-gradient(135deg,#004d60,#008da1);box-shadow:0 5px 18px rgba(0,65,78,.22)}.boat-nav a{color:#fff;text-decoration:none}.brand-icon{display:inline-flex;width:38px;height:38px;border-radius:13px;align-items:center;justify-content:center;background:#fff;color:var(--boat);margin-right:8px;font-size:1.3rem}.card-soft{border:0;border-radius:20px;box-shadow:0 8px 24px rgba(10,65,75,.08)}.metric{background:#fff;border-radius:18px;padding:16px;height:100%;box-shadow:0 5px 18px rgba(10,65,75,.07)}.metric small{color:#688087}.metric strong{font-size:1.35rem}.profit-plus{color:#087f5b}.profit-minus{color:#d13d52}.boat-btn{background:var(--boat);color:#fff;border:0}.boat-btn:hover{background:var(--boat-dark);color:#fff}.race-card{display:block;background:#fff;border:1px solid #dfeaec;border-radius:16px;padding:14px;color:inherit;text-decoration:none;transition:.15s}.race-card:hover{border-color:#69b9c5;transform:translateY(-1px)}.lane{display:inline-flex;width:30px;height:30px;border-radius:7px;align-items:center;justify-content:center;font-weight:800;border:1px solid #bbc6ca}.lane-1{background:#fff;color:#222}.lane-2{background:#444;color:#fff}.lane-3{background:#ef4b4b;color:#fff}.lane-4{background:#4285d4;color:#fff}.lane-5{background:#f3d338;color:#222}.lane-6{background:#48a65b;color:#fff}.racer-row{display:grid;grid-template-columns:38px 1fr auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid #edf1f2}.confidence{color:#f2a000;letter-spacing:2px}.bottom-nav{position:fixed;z-index:1030;left:0;right:0;bottom:0;height:68px;background:#fff;border-top:1px solid #dce8ea;display:flex;padding-bottom:env(safe-area-inset-bottom)}.bottom-nav a{flex:1;text-decoration:none;color:#6a7c80;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.68rem;gap:2px}.bottom-nav i{font-size:1.2rem}.bottom-nav .main-action{color:var(--boat);font-weight:700}.bottom-nav .main-action i{font-size:1.55rem}.budget-bar{height:12px;background:#e1eaec;border-radius:999px;overflow:hidden}.budget-bar>span{display:block;height:100%;background:linear-gradient(90deg,#1ba286,#f3a000,#d74747)}.bet-row{display:grid;grid-template-columns:110px 1fr 115px 40px;gap:8px}.public-badge{background:#e5f7f1;color:#077459;padding:3px 8px;border-radius:999px;font-size:.72rem;font-weight:700}@media(max-width:575px){.bet-row{grid-template-columns:92px 1fr 90px 36px}.metric{padding:13px}.race-title{font-size:.95rem}}@media(min-width:992px){body{padding-bottom:0}.bottom-nav{display:none}}
.practice-banner{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:14px 16px;border:1px solid #f1cc6b;border-radius:15px;background:linear-gradient(135deg,#fff9e8,#fffdf8)}.practice-banner>div{display:flex;flex-direction:column;gap:3px}.practice-banner strong{color:#624b12}.practice-banner small{color:#776a4a}.practice-badge,.practice-mini-badge{display:inline-flex;align-items:center;gap:5px;width:max-content;border-radius:999px;background:#7257b5;color:#fff;font-size:.7rem;font-weight:800;padding:4px 9px}.practice-mini-badge{padding:2px 7px;margin-left:5px}.practice-lock{color:#796b4d;font-size:.75rem;font-weight:700}@media(max-width:767px){.practice-banner{align-items:stretch;flex-direction:column}.practice-banner .btn{width:100%}}
.practice-mode-switch{display:grid!important;grid-template-columns:1fr 1fr;gap:5px!important;padding:4px;background:#fff;border:1px solid #eadba9;border-radius:12px;min-width:250px}.practice-mode-switch a{display:flex;align-items:center;justify-content:center;gap:5px;padding:9px 12px;border-radius:9px;color:#695f46;text-decoration:none;font-size:.78rem;font-weight:800}.practice-mode-switch a.active{background:#7257b5;color:#fff;box-shadow:0 3px 9px rgba(77,52,139,.2)}.practice-mode-switch a.result-active{background:#d99000}@media(max-width:767px){.practice-mode-switch{min-width:0;width:100%}}
.past-mode-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid #d8d1ef;border-radius:15px;background:#f8f6ff}.past-mode-bar>div:first-child{display:flex;flex-direction:column}.past-mode-bar strong{color:#493878}.past-mode-bar small{color:#736b86}@media(max-width:767px){.past-mode-bar{align-items:stretch;flex-direction:column}}
.attention-section{background:linear-gradient(135deg,#123f4a,#08788b);border-radius:20px;padding:16px;color:#fff;box-shadow:0 9px 28px rgba(9,82,96,.18)}.attention-head{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:10px}.attention-head small{display:block;color:#8ee4ef;font-size:.65rem;font-weight:800;letter-spacing:.08em}.attention-head h2{font-size:1.18rem;margin:2px 0 0;font-weight:800}.attention-head>span{font-size:.65rem;color:#c7e5e9}.attention-tabs{display:flex;gap:6px;overflow-x:auto;padding:2px 0 11px;scrollbar-width:none}.attention-tabs::-webkit-scrollbar{display:none}.attention-tabs button{flex:0 0 auto;border:1px solid rgba(255,255,255,.28);background:rgba(255,255,255,.08);color:#daf1f4;border-radius:999px;padding:6px 10px;font-size:.68rem;font-weight:800}.attention-tabs button.active{background:#fff;color:#096f80;border-color:#fff}.attention-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.attention-card{display:block;background:#fff;color:#203a40;text-decoration:none;border-radius:14px;padding:11px;border-top:4px solid #53b8c6}.attention-card[hidden]{display:none}.attention-card:hover{color:#203a40;transform:translateY(-1px)}.attention-card.type-solid{border-color:#22a06b}.attention-card.type-hole{border-color:#ef9b27}.attention-card.type-danger{border-color:#e15360}.attention-card.type-exhibition{border-color:#4b8ee8}.attention-card.type-soon{border-color:#d74754}.attention-label{font-size:.68rem;font-weight:800;margin-bottom:5px}.attention-label i{margin-right:4px}.attention-label small{float:right;background:#eef4f5;color:#63777c;border-radius:999px;padding:2px 5px;font-size:.54rem}.attention-card>strong{font-size:.95rem}.attention-meta{display:flex;justify-content:space-between;gap:5px;font-size:.62rem;color:#6e8186;margin-top:5px}.attention-action{border-top:1px solid #e8edef;margin-top:8px;padding-top:7px;text-align:right;color:#08788b;font-size:.66rem;font-weight:800}.attention-note{font-size:.62rem;color:#c7e5e9;margin:9px 0 0}.attention-empty{text-align:center;padding:22px;background:rgba(255,255,255,.09);border-radius:12px;font-size:.76rem}.attention-card.type-danger .attention-label,.attention-card.type-soon .attention-label{color:#c83243}.attention-card.type-solid .attention-label{color:#087459}.attention-card.type-hole .attention-label{color:#b66a00}.attention-card.type-exhibition .attention-label{color:#286cc4}@media(max-width:991px){.attention-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:575px){.attention-head{align-items:start}.attention-head>span{max-width:105px;text-align:right}.attention-card{padding:9px}.attention-meta{display:block}}
.stats-mode-switch{display:flex;gap:.5rem;padding:.3rem;background:#eef5f7;border-radius:14px;max-width:420px}.stats-mode-switch a{flex:1;text-align:center;padding:.7rem .8rem;border-radius:11px;text-decoration:none;color:#60747b;font-weight:800}.stats-mode-switch a.active{background:#fff;color:#087c8b;box-shadow:0 2px 10px rgba(30,65,72,.1)}.stats-mode-switch a.practice-active{color:#7257b5}.result-summary-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.result-judge{display:inline-flex;align-items:center;gap:.35rem;padding:.32rem .65rem;border-radius:999px;font-size:.8rem;font-weight:900}.result-judge.is-hit{background:#dcf7e8;color:#137446}.result-judge.is-miss{background:#fee8e8;color:#b52d38}.result-money{display:grid;grid-template-columns:repeat(2,minmax(85px,1fr));gap:.45rem}.result-money>div{background:#f6f8f9;border-radius:10px;padding:.45rem .65rem;text-align:right}.result-money small{display:block;color:#6c7b80;font-size:.68rem}.result-money strong{font-size:1rem}.practice-result-link{margin-top:1rem;padding-top:.8rem;border-top:1px solid #e7ecee;text-align:right}.practice-result-link a{font-weight:800;color:#7257b5;text-decoration:none}@media(max-width:575.98px){.result-summary-head{display:block}.result-money{margin-top:1rem}.stats-mode-switch{max-width:none}}
.action-card{display:flex;gap:.85rem;align-items:flex-start;padding:1rem;border:1px solid #d9e8ec;border-radius:14px;background:#fff;box-shadow:0 4px 16px rgba(0,75,88,.06)}
.action-icon{display:grid;place-items:center;flex:0 0 42px;height:42px;border-radius:12px;background:#e4f7f9;color:#08788a;font-size:1.2rem}
.trend-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.85rem 1rem;border-radius:13px;border:1px solid}.trend-good{background:#effbf5;border-color:#bce8d1;color:#17663c}.trend-risk{background:#fff6f3;border-color:#f3c9bd;color:#8b3824}
.sample-badge{white-space:nowrap;padding:.25rem .5rem;border-radius:999px;font-size:.72rem;font-weight:700}.sample-high{background:#147a4b;color:#fff}.sample-mid{background:#ffe39a;color:#6b4b00}.sample-low{background:#e9ecef;color:#59636b}
.attention-badges{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:7px}.attention-badges>small{margin-left:auto;background:#eef4f5;color:#63777c;border-radius:999px;padding:2px 5px;font-size:.54rem}.attention-badge{display:inline-flex;align-items:center;gap:3px;border-radius:999px;padding:3px 7px;font-size:.6rem;font-weight:900;background:#e9f5f6;color:#08788b}.attention-badge.type-solid{background:#e6f7ef;color:#087459}.attention-badge.type-hole{background:#fff0d8;color:#a85f00}.attention-badge.type-exhibition{background:#e8f1ff;color:#286cc4}.attention-badge.type-danger,.attention-badge.type-soon{background:#ffe7e9;color:#c83243}
.attention-card.type-makuri{border-color:#d93774}.attention-badge.type-makuri{background:#fce8f0!important;color:#b51f58!important}

/* 注目レース：狭い画面でカードが画面外へはみ出さないようにする */
.attention-section,.attention-grid,.attention-card{min-width:0}
.attention-card{overflow-wrap:anywhere}
@media(max-width:575px){
  .attention-section{padding:14px;overflow:hidden}
  .attention-grid{grid-template-columns:minmax(0,1fr)}
  .attention-card{width:100%;padding:11px}
  .attention-tabs{margin-right:-14px;padding-right:14px}
}
.public-lock-item[href]{color:inherit;text-decoration:none;transition:transform .15s,border-color .15s}
.public-lock-item[href]:hover{color:inherit;border-color:#96d4dc;transform:translateY(-2px)}
.desktop-main-menu{font-size:.88rem}.desktop-logout{border-left:1px solid rgba(255,255,255,.3);padding-left:14px;color:#ffe2e2!important}.mobile-menu-button{display:flex;align-items:center;gap:4px;border:1px solid rgba(255,255,255,.38);border-radius:10px;background:rgba(255,255,255,.12);color:#fff;padding:6px 9px}.mobile-menu-button i{font-size:1.35rem;line-height:1}.mobile-menu-button span{font-size:.65rem;font-weight:800}.funamemo-menu{--bs-offcanvas-width:min(88vw,360px);color:#19333a}.funamemo-menu .offcanvas-header{border-bottom:1px solid #e1eaec;padding:15px 17px}.funamemo-menu .offcanvas-body{display:flex;flex-direction:column;padding:13px;background:#f6f9fa}.mobile-user{display:flex;align-items:center;gap:10px}.mobile-user>span{display:grid;place-items:center;width:44px;height:44px;border-radius:50%;overflow:hidden;background:#e4f4f6;color:var(--boat);font-size:1.2rem}.mobile-user img{width:100%;height:100%;object-fit:cover}.mobile-user small,.mobile-user strong{display:block}.mobile-user small{font-size:.62rem;color:#75878b}.mobile-user strong{font-size:.9rem}.mobile-menu-group{background:#fff;border:1px solid #e0e9eb;border-radius:14px;padding:8px;margin-bottom:9px}.mobile-menu-group>small{display:block;padding:3px 8px 6px;color:#819095;font-size:.58rem;font-weight:900;letter-spacing:.08em}.mobile-menu-group>a{display:grid;grid-template-columns:31px 1fr auto;align-items:center;gap:7px;color:#29464c!important;text-decoration:none;padding:9px 8px;border-top:1px solid #edf1f2;font-size:.78rem;font-weight:800}.mobile-menu-group>a:first-of-type{border-top:0}.mobile-menu-group>a>i:first-child{display:grid;place-items:center;width:29px;height:29px;border-radius:9px;background:#eaf7f8;color:var(--boat)}.mobile-menu-group>a>i:last-child:not(:first-child){color:#9aa7aa;font-size:.7rem}.mobile-menu-group em{font-style:normal;font-size:.5rem;color:#fff;background:linear-gradient(135deg,#f4b942,#e47b20);padding:2px 5px;border-radius:999px}.mobile-logout,.mobile-login{display:flex;align-items:center;justify-content:center;gap:7px;text-decoration:none;border-radius:12px;padding:11px;font-size:.8rem;font-weight:900;margin-top:auto}.mobile-logout{color:#bd3e4a!important;background:#fff;border:1px solid #e6bdc2}.mobile-login{color:#fff!important;background:#13a15f}.mobile-logout i,.mobile-login i{font-size:1rem}

/* Mobile layout guard: prevent long labels and grid children from widening the page. */
html,body{max-width:100%;overflow-x:hidden}
img,svg,video,canvas,iframe{max-width:100%}
.container,.container-fluid,.row,[class*="col-"],.card,.card-body,
.card-soft,.venue-card,.race-card,.race-tile,.metric,.action-card,
.practice-banner,.past-mode-bar,.result-summary-head{min-width:0}
.table-responsive{max-width:100%;-webkit-overflow-scrolling:touch}
.form-control,.form-select,.input-group{min-width:0;max-width:100%}

@media(max-width:575.98px){
  body{font-size:.94rem;padding-bottom:calc(72px + env(safe-area-inset-bottom))}
  main.container{width:100%;padding-left:10px!important;padding-right:10px!important}
  .card-soft{border-radius:15px}
  .card-soft>.card-body{padding:14px}
  .row{--bs-gutter-x:12px}

  /* Headings and value rows may wrap instead of pushing outside the viewport. */
  .d-flex.justify-content-between{min-width:0;flex-wrap:wrap;gap:5px 10px}
  .d-flex.justify-content-between>*{min-width:0}
  h1,h2,h3,strong,small,span,a,button,label{overflow-wrap:anywhere}
  .btn{white-space:normal}

  /* Four filters remain usable on narrow iPhones. */
  .race-filter{gap:3px;padding:4px;border-radius:12px}
  .race-filter button{min-width:0;padding:8px 2px;font-size:.66rem;line-height:1.15}
  .race-filter button b{min-width:22px;padding:2px 5px}

  /* Budget and result amounts must not collide. */
  .budget-bar{width:100%}
  .result-money{grid-template-columns:repeat(2,minmax(0,1fr))}
  .result-money strong{font-size:.9rem;overflow-wrap:normal}

  /* Keep the fixed navigation inside the safe area. */
  .bottom-nav{height:calc(64px + env(safe-area-inset-bottom))}
  .bottom-nav a{min-width:0;font-size:.62rem;padding:3px 1px}
  .bottom-nav i{font-size:1.08rem}
  .bottom-nav .main-action i{font-size:1.35rem}
}

/* Desktop navigation: grouped menu */
@media(min-width:992px){
.desktop-main-menu{gap:3px!important;font-size:.82rem}
.desktop-main-menu .desktop-nav-link,.desktop-main-menu .desktop-nav-icon,.desktop-main-menu .desktop-logout{height:40px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;transition:.15s ease}
.desktop-main-menu .desktop-nav-link{gap:5px;padding:0 9px;color:#fff;border:0;background:transparent;font-weight:800;white-space:nowrap}
.desktop-main-menu .desktop-nav-link:hover,.desktop-main-menu .desktop-nav-link:focus,.desktop-main-menu .desktop-nav-icon:hover{background:rgba(255,255,255,.13);color:#fff}
.desktop-main-menu .desktop-nav-link>i{font-size:.9rem;opacity:.92}
.desktop-nav-dropdown .dropdown-toggle::after{margin-left:2px;font-size:.62rem;vertical-align:.12em}
.desktop-plus-trigger{gap:4px!important}
.desktop-plus-trigger .premium-nav-badge{margin-left:1px;padding:2px 5px;font-size:.46rem}
.desktop-main-menu .dropdown-menu{width:285px;margin-top:9px;padding:8px;border:0;border-radius:15px;box-shadow:0 14px 36px rgba(7,47,57,.22)}
.desktop-main-menu .dropdown-menu:before{content:"";position:absolute;right:22px;top:-5px;width:10px;height:10px;background:#fff;transform:rotate(45deg);border-radius:2px}
.desktop-menu-label{position:relative;padding:5px 9px 8px;color:#819095;font-size:.61rem;font-weight:900;letter-spacing:.08em}
.desktop-main-menu .dropdown-item{position:relative;display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:8px;padding:9px;border-radius:10px;color:#29464c!important;white-space:normal}
.desktop-main-menu .dropdown-item:hover,.desktop-main-menu .dropdown-item:focus{background:#edf8f9;color:#173b43!important}
.desktop-main-menu .dropdown-item>i{display:grid;place-items:center;width:31px;height:31px;border-radius:9px;background:#e7f6f8;color:var(--boat);font-size:.94rem}
.desktop-main-menu .dropdown-item span{min-width:0}
.desktop-main-menu .dropdown-item strong,.desktop-main-menu .dropdown-item small{display:block}
.desktop-main-menu .dropdown-item strong{font-size:.76rem;line-height:1.25}
.desktop-main-menu .dropdown-item small{margin-top:2px;color:#849397;font-size:.6rem;line-height:1.25;font-weight:600}
.desktop-main-menu .dropdown-item em{font-style:normal;font-size:.48rem;font-weight:900;color:#fff;background:linear-gradient(135deg,#f4b942,#e47b20);padding:2px 5px;border-radius:999px}
.desktop-main-menu .dropdown-divider{margin:6px 4px;border-color:#e8eff0}
.desktop-main-menu .desktop-nav-icon{width:40px;color:#fff!important;font-size:1rem;text-decoration:none}
.desktop-main-menu .admin-nav-link{color:#fff!important}
.desktop-main-menu .desktop-logout{gap:5px;margin-left:3px;padding:0 9px;border-left:0;background:rgba(105,15,27,.2);color:#ffe9e9!important;font-size:.75rem;font-weight:800;white-space:nowrap}
.desktop-main-menu .desktop-logout:hover{background:rgba(105,15,27,.34)}
}
@media(min-width:992px) and (max-width:1199.98px){
.desktop-main-menu .desktop-nav-link{padding-left:7px;padding-right:7px}
.desktop-main-menu .desktop-nav-link>i{display:none}
.desktop-main-menu .desktop-logout span{display:none}
.desktop-main-menu .desktop-logout{width:40px;padding:0}
}

/* ===== 共通ローディング / 二重操作防止 ===== */
.funamemo-loading-overlay{position:fixed;inset:0;z-index:200000;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(0,0,0,.62);backdrop-filter:blur(1.5px);-webkit-backdrop-filter:blur(1.5px);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .16s ease,visibility .16s ease}
.funamemo-loading-overlay.is-active{opacity:1;visibility:visible;pointer-events:all}
.funamemo-loading-box{display:flex;flex-direction:column;align-items:center;gap:14px;min-width:190px;max-width:min(88vw,320px);padding:24px 28px;border:1px solid rgba(255,255,255,.16);border-radius:18px;background:rgba(18,18,22,.9);box-shadow:0 18px 48px rgba(0,0,0,.32);color:#fff;text-align:center}
.funamemo-loading-spinner{width:44px;height:44px;border:4px solid rgba(255,255,255,.22);border-top-color:#fff;border-radius:50%;animation:funamemo-spin .72s linear infinite}
.funamemo-loading-box strong{font-size:15px;letter-spacing:.02em}.funamemo-loading-box span{font-size:12px;color:rgba(255,255,255,.72)}
html.funamemo-loading{overflow:hidden}
@keyframes funamemo-spin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){.funamemo-loading-spinner{animation-duration:1.4s}.funamemo-loading-overlay{transition:none}}

/* 舟メモ SNS共有 */
.funamemo-share{margin-top:14px;padding:13px 14px;background:#f7fbfc;border:1px solid #d7e9ed;border-radius:14px}.funamemo-share-head{display:flex;align-items:center;gap:7px;margin-bottom:9px;color:#296973;font-size:.86rem}.funamemo-share-head i{color:#0b8595}.funamemo-share-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.share-btn{display:flex;align-items:center;justify-content:center;gap:6px;min-height:38px;padding:7px 9px;border-radius:10px;border:1px solid #d6e2e5;background:#fff;color:#44545a;font-size:.78rem;font-weight:800;line-height:1;cursor:pointer}.share-btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px rgba(20,64,75,.1)}.share-x{background:#111;color:#fff;border-color:#111}.share-x span{font-size:1rem}.share-line{background:#06c755;color:#fff;border-color:#06c755}.share-copy,.share-native{color:#0b7180}.funamemo-share-status{display:block;min-height:16px;margin-top:6px;text-align:right;color:#0b7180;font-size:.72rem;font-weight:700}@media(max-width:580px){.funamemo-share-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.share-btn{min-height:41px}}
