:root{
  --bg:#f6f8fb; --panel:#fff; --line:#e7ecf3; --text:#172033; --muted:#687287;
  --blue:#2563eb; --green:#16a34a; --red:#ef4444; --orange:#f59e0b; --purple:#7c3aed;
  --shadow:0 10px 30px rgba(24,38,61,.06);
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Hiragino Sans","Yu Gothic",Meiryo,sans-serif}
.app{display:grid;grid-template-columns:244px 1fr;min-height:100vh}
.sidebar{background:#fbfdff;border-right:1px solid var(--line);padding:24px 18px;position:relative;overflow:hidden}
.logo{font-size:22px;font-weight:800;letter-spacing:.02em}
.sub{font-size:13px;color:var(--muted);margin-top:6px}
.nav{margin-top:38px;display:grid;gap:8px}
.nav a{display:flex;align-items:center;gap:12px;color:#283245;text-decoration:none;padding:12px 14px;border-radius:13px;font-weight:700}
.nav a.active{background:#eaf2ff;color:var(--blue)}
.sourcebadge{margin-top:26px;background:#eef6ff;border:1px solid #dbeafe;color:#17376d;border-radius:12px;padding:11px 13px;font-size:12px;font-weight:800;line-height:1.5}
.mountain{position:absolute;bottom:0;left:0;right:0;height:160px;background:linear-gradient(160deg,#dbeafe,transparent 70%);opacity:.7;clip-path:polygon(0 100%,18% 70%,27% 84%,40% 52%,56% 100%,72% 66%,88% 96%,100% 74%,100% 100%)}
.main{padding:26px 28px 40px;overflow:auto}
.top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:20px}
h1{margin:0;font-size:30px;letter-spacing:.02em}
.updated{display:flex;align-items:center;gap:14px;color:var(--muted);font-size:13px;white-space:nowrap}
.updated strong{font-size:20px;color:var(--text)}
.ok{background:#eafaf0;color:var(--green);padding:7px 10px;border-radius:999px;font-weight:800;font-size:12px}
.smallnote{font-size:11px;color:var(--muted);line-height:1.4}
.filters{display:grid;grid-template-columns:1.2fr repeat(3,minmax(150px,1fr));gap:12px;margin-bottom:18px}
.control{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:11px 13px;box-shadow:var(--shadow)}
.control label{display:block;font-size:11px;color:var(--muted);font-weight:800;margin-bottom:6px}
select,input[type=file]{width:100%;border:0;background:transparent;font-weight:800;color:var(--text);outline:none}
.cards{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow)}
.card .label{font-size:12px;color:var(--muted);font-weight:800}
.big{font-size:28px;font-weight:900;margin-top:8px;line-height:1}
.delta{font-size:12px;margin-top:8px;font-weight:800}
.up{color:var(--red)} .down{color:var(--green)} .flat{color:var(--muted)}
.grid{display:grid;grid-template-columns:1.15fr 1.05fr .95fr;gap:14px;margin-bottom:14px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px;box-shadow:var(--shadow)}
.panel h2{font-size:15px;margin:0 0 12px;font-weight:900}
.chart{height:210px;width:100%}
.legend{display:flex;gap:14px;font-size:11px;color:var(--muted);margin-bottom:10px;font-weight:700}
.dot{width:8px;height:8px;border-radius:99px;display:inline-block;margin-right:5px}
.tablewrap{display:grid;grid-template-columns:1fr 330px;gap:14px}
table{width:100%;border-collapse:collapse;font-size:12px}
th{text-align:left;color:var(--muted);font-weight:900;background:#f9fbfe;border-bottom:1px solid var(--line);padding:10px}
td{border-bottom:1px solid var(--line);padding:9px 10px;vertical-align:middle}
tr:last-child td{border-bottom:0}
.status{font-weight:900;border-radius:999px;padding:4px 8px;display:inline-block;font-size:11px}
.status.available{background:#e8f8ef;color:var(--green)}
.status.sold_out{background:#fff1f2;color:var(--red)}
.status.excluded,.status.not_found{background:#fff7ed;color:#c2410c}
.conf{font-size:10px;font-weight:800;border-radius:6px;padding:2px 6px;margin-left:4px}
.conf.high{background:#e8f8ef;color:var(--green)}
.conf.medium{background:#fef9e7;color:#b7791f}
.conf.low{background:#f1f3f5;color:#868e96}
.bar{height:6px;background:#edf2f7;border-radius:99px;overflow:hidden}
.bar span{display:block;height:100%;border-radius:99px}
.heat{display:grid;grid-template-columns:88px repeat(7,1fr);gap:3px;font-size:11px;align-items:center}
.heat div{padding:7px 5px;border-radius:7px;text-align:center;font-weight:800}
.heat .head{color:var(--muted);background:#f8fafc}
.heat .rowlab{text-align:left;background:#f8fafc;color:#344054;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.comp{display:grid;gap:10px}
.compitem{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff}
.compitem b{font-size:14px}
.compitem .rate{font-size:18px;font-weight:900}
.insight{background:#f0f7ff;border:1px solid #dbeafe;color:#17376d}
.insight p{font-size:13px;line-height:1.7;color:#334155}
.spark{width:110px;height:28px}
.footer{margin-top:12px;font-size:11px;color:var(--muted)}
@media(max-width:1200px){
  .app{grid-template-columns:1fr}.sidebar{display:none}.cards{grid-template-columns:repeat(3,1fr)}.grid,.tablewrap,.filters{grid-template-columns:1fr}
}
