@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;600;700;900&display=swap');
:root{
  --bg: #15171c;
  --panel: #1c1f26;
  --panel-border: #2a2e37;
  --text: #ffffff;
  --text-dim: #9aa0ab;
  --accent-1: #5b6bff;
  --accent-2: #7b4fe0;
  --line-1: #3b82f6;
  --line-2: #22d3c6;
}
*{box-sizing:border-box}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:"Noto Sans JP","Hiragino Kaku Gothic ProN",sans-serif;
}
.topbar{
  height:12px;
  background:linear-gradient(90deg,var(--accent-1),var(--accent-2));
}
.header{
  display:flex; align-items:center; justify-content:space-between;
  padding:20px 28px;
}
.header .brand{font-size:22px; font-weight:700}
.header .logout{color:var(--text-dim); text-decoration:none; font-size:13px}
.page-title-row{padding:0 28px; display:flex; justify-content:space-between; align-items:flex-end; margin-bottom:18px}
.page-title .eyebrow{color:var(--text-dim); font-size:13px}
.page-title h1{margin:4px 0 0; font-size:26px}
.date-range{color:var(--text-dim); border:1px solid var(--panel-border); border-radius:8px; padding:8px 14px; font-size:13px}
.cards{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; padding:0 28px}
.card{background:var(--panel); border:1px solid var(--panel-border); border-radius:6px; padding:20px}
.card h2{font-size:17px; margin:0 0 2px}
.card .sub{color:var(--text); font-size:13.5px; margin-bottom:14px; opacity:0.85}
.stat-row{display:flex; gap:14px; margin-bottom:14px; flex-wrap:wrap}
.stat{background:#20242d; border:1px solid var(--panel-border); border-radius:5px; padding:12px 16px; flex:1; min-width:110px}
.stat .label{color:var(--text); font-size:13.5px; margin-bottom:4px}
.stat .value{font-size:24px; font-weight:700}
svg.spark{width:100%; height:130px}
.table-wrap{padding:24px 28px}
table{width:100%; border-collapse:separate; border-spacing:0; background:var(--panel); border:1px solid var(--panel-border); border-radius:6px; overflow:hidden}
th,td{padding:10px 16px; text-align:left; font-size:13px; border-bottom:1px solid var(--panel-border)}
th{color:var(--text-dim); font-weight:600}
tr:last-child td{border-bottom:none}

.login-body{display:flex; align-items:center; justify-content:center; height:100vh}
.login-card{background:var(--panel); border:1px solid var(--panel-border); border-radius:12px; padding:36px; width:320px}
.login-logo{font-weight:700; font-size:20px; margin-bottom:8px; background:linear-gradient(90deg,var(--accent-1),var(--accent-2)); -webkit-background-clip:text; background-clip:text; color:transparent}
.login-logo-img{height:32px; width:auto; margin-bottom:16px; display:block}
.login-card h1{font-size:16px; margin:0 0 20px; color:var(--text-dim); font-weight:500}
.client-picker-list{display:flex; flex-direction:column; gap:10px}
.client-picker-item{
  width:100%; padding:14px 16px; background:#20242d; border:1px solid var(--panel-border);
  border-radius:6px; color:var(--text); font-size:14px; font-weight:600; text-align:left; cursor:pointer;
}
.client-picker-item:hover{border-color:var(--accent-1); background:#262b35}
.client-switcher{position:relative}
.client-switcher-btn{
  display:flex; align-items:center; gap:6px; width:100%; background:transparent; border:1px solid var(--panel-border);
  border-radius:6px; padding:8px 10px; color:var(--text); font-size:12.5px; font-weight:600; cursor:pointer; font-family:inherit;
}
.client-switcher-btn:hover{border-color:var(--accent-1)}
.client-switcher-label{flex:1 1 auto; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:left}
.login-card label{display:block; font-size:12px; color:var(--text-dim); margin-bottom:14px}
.login-card input{width:100%; margin-top:6px; padding:10px; background:#0f1216; border:1px solid var(--panel-border); border-radius:6px; color:var(--text); font-size:14px}
.login-card button{width:100%; padding:11px; margin-top:8px; background:var(--accent-1); color:#fff; border:none; border-radius:6px; font-size:14px; cursor:pointer}
.login-error{color:#ff6b6b; font-size:13px; margin-bottom:14px}

/* ===== レイアウト(サイドバー + メイン) ===== */
.layout{display:flex; align-items:flex-start}
.sidebar{
  width:272px; flex:0 0 272px; background:var(--panel); border-right:1px solid var(--panel-border);
  height:100vh; position:sticky; top:0; display:flex; flex-direction:column; padding:18px 0;
}
.sidebar-top{padding:0 20px 18px; flex:0 0 auto}
.sidebar .brand{display:flex; align-items:center; gap:8px; color:var(--text); text-decoration:none; font-size:19px; font-weight:700}
.brand-logo{height:26px; width:auto; display:block}
.navgroups{flex:1 1 auto; min-height:0; overflow-y:auto; padding:0 10px; scrollbar-color:#454b58 var(--panel); scrollbar-width:thin}
.navgroups::-webkit-scrollbar{width:8px}
.navgroups::-webkit-scrollbar-track{background:var(--panel)}
.navgroups::-webkit-scrollbar-thumb{background:#454b58; border-radius:6px}
.navgroup{margin-bottom:2px}
.navgroup summary{
  list-style:none; cursor:pointer; display:flex; align-items:center; gap:10px;
  padding:10px 10px; border-radius:8px; color:var(--text); font-size:14px; font-weight:600;
}
.navgroup summary::-webkit-details-marker{display:none}
.navgroup summary:hover{background:#262b35}
.navgroup-icon{color:var(--text-dim); flex:0 0 auto; display:flex}
.navgroup-label{flex:1 1 auto}
.navgroup-chevron{
  flex:0 0 auto; color:var(--text-dim); transition:transform .15s ease;
}
.navgroup[open] > summary > .navgroup-chevron{transform:rotate(90deg)}
.navitems{display:flex; flex-direction:column; padding:2px 0 10px 34px}
.navitem{
  color:var(--text-dim); text-decoration:none; font-size:13.5px; padding:8px 12px;
  border-radius:8px; margin:1px 0;
}
.navitem:hover{background:#262b35; color:var(--text)}
.navitem.active{background:rgba(91,107,255,0.18); color:#9fb0ff; font-weight:600}
/* アプローチデータ配下のサブグループ(マネカツオンライン/税金対策セミナー) */
.navgroup-sub{margin:4px 0}
.navgroup-sub summary{
  font-size:12.5px; font-weight:600; color:var(--text-dim); padding:7px 10px;
}
.navgroup-sub .navgroup-icon-sub{color:var(--text-dim)}
.navgroup-sub .navitems{padding-left:14px}
.navgroup-sub .navitem{font-size:13px}
.sidebar .logout{color:var(--text-dim); text-decoration:none; font-size:13px; padding:12px 20px 0; flex:0 0 auto}
.main{flex:1; min-width:0; padding-bottom:40px}
.main > .page-title-row{padding-top:24px}
.main .cards, .main .table-wrap, .main .page-title-row, .main .approach-grid{padding-left:28px; padding-right:28px}

/* ===== 日付範囲ピッカー ===== */
.daterange{position:relative}
.daterange-btn{
  display:flex; align-items:center; gap:10px; background:transparent; color:var(--text-dim);
  border:1px solid var(--panel-border); border-radius:8px; padding:8px 14px; font-size:13px;
  cursor:pointer; font-family:inherit;
}
.daterange-btn:hover{border-color:var(--accent-1)}
.daterange-pop{
  display:none; position:absolute; right:0; top:calc(100% + 8px); z-index:20; background:var(--panel);
  border:1px solid var(--panel-border); border-radius:10px; padding:16px; width:240px;
  box-shadow:0 12px 28px rgba(0,0,0,0.4);
}
.daterange-pop.open{display:block}
.daterange-pop label{display:block; font-size:12px; color:var(--text-dim); margin-bottom:10px}
.daterange-pop input[type=date]{
  width:100%; margin-top:5px; padding:8px; background:#0f1216; border:1px solid var(--panel-border);
  border-radius:6px; color:var(--text); font-size:13px;
}
.daterange-presets{display:flex; gap:6px; margin-bottom:12px; flex-wrap:wrap}
.daterange-presets button{
  background:#262b35; border:1px solid var(--panel-border); color:var(--text-dim); border-radius:6px;
  padding:5px 9px; font-size:11px; cursor:pointer;
}
.daterange-presets button:hover{color:var(--text); border-color:var(--accent-1)}
.daterange-apply{
  width:100%; padding:9px; background:var(--accent-1); color:#fff; border:none; border-radius:6px;
  font-size:13px; cursor:pointer;
}

/* ===== アプローチサマリー 2カラムカード ===== */
.approach-grid{display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:20px}
@media (max-width: 900px){ .approach-grid{grid-template-columns:1fr} }

/* ===== 小さめ統計ボックス(5個並び等) ===== */
.stat-mini-row{display:flex; gap:16px; flex-wrap:wrap; padding:0 28px; margin-bottom:20px}
.stat-mini{
  background:var(--panel); border:1px solid var(--panel-border); border-radius:6px;
  padding:16px 20px; flex:1; min-width:140px;
}
.stat-mini .label{color:var(--text); font-size:13.5px; margin-bottom:6px}
.stat-mini .value{font-size:24px; font-weight:700}

.chart-grid{display:grid; grid-template-columns:1fr 1fr; gap:20px; padding:0 28px; margin-bottom:24px}
@media (max-width: 900px){ .chart-grid{grid-template-columns:1fr} }
.chart-card{background:var(--panel); border:1px solid var(--panel-border); border-radius:6px; padding:18px}
.chart-card canvas{max-height:260px}

/* ===== スクロール可能テーブル ===== */
.table-scroll{max-height:360px; overflow-y:auto; border-radius:6px; scrollbar-color:#454b58 var(--panel); scrollbar-width:thin}
.table-scroll table{border-radius:0}
.table-scroll thead th{position:sticky; top:0; background:var(--panel); z-index:1}
.table-scroll::-webkit-scrollbar{width:10px}
.table-scroll::-webkit-scrollbar-track{background:var(--panel)}
.table-scroll::-webkit-scrollbar-thumb{background:#454b58; border-radius:6px; border:2px solid var(--panel)}
.table-scroll::-webkit-scrollbar-thumb:hover{background:#5a6170}

.loading-note{color:var(--text-dim); font-size:12px; padding:0 28px}

/* ===== 月別/日別サマリー表 ===== */
.agg-table-wrap{padding:0 28px; margin-bottom:24px}
