/* KYOTO — zen hening */
.ky-page { --color-primary:#dc2626; --color-accent:#1f1f1f; --color-bg:#ffffff; --ky-sakura:#fdf0f7; --ky-muted:#8b8b8b;
  position:relative; background:var(--color-bg); color:var(--color-accent); font-family:'Zen Kaku Gothic New','Inter',system-ui,sans-serif;
  margin:-1.5rem -12px 0; padding-bottom:96px; text-align:center; overflow:hidden; }
.ky-container { width:100%; max-width:820px; margin:0 auto; padding:0 20px; }
.ky-breadcrumb { max-width:820px; margin:0 auto; padding:18px 20px 0; font-size:12px; color:var(--ky-muted); text-align:left; }
.ky-breadcrumb a { color:var(--color-primary); }
.ky-petals { position:absolute; inset:0; opacity:.05; pointer-events:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cg fill='%23dc2626'%3E%3Cellipse cx='20' cy='24' rx='7' ry='4' transform='rotate(-25 20 24)'/%3E%3Cellipse cx='86' cy='62' rx='7' ry='4' transform='rotate(35 86 62)'/%3E%3Cellipse cx='48' cy='96' rx='6' ry='3.5' transform='rotate(-10 48 96)'/%3E%3C/g%3E%3C/svg%3E"); }
.ky-kanji { position:absolute; top:120px; right:14px; writing-mode:vertical-rl; font-size:13px; letter-spacing:.4em; color:#d8d8d8; }

.ky-hero { position:relative; padding:96px 20px 0; }
.ky-torii { width:86px; height:auto; margin:0 auto 34px; display:block; }
.ky-h1 { font-weight:700; font-size:clamp(22px,5vw,34px); letter-spacing:.02em; margin:0 0 12px; }
.ky-date { margin:0; font-size:13px; color:var(--ky-muted); }
.ky-rule { display:block; width:46px; height:2px; background:var(--color-primary); margin:34px auto 0; }

.ky-result { padding:64px 20px 0; }
.ky-balls { display:flex; flex-wrap:wrap; justify-content:center; gap:18px; }
.ky-ball { display:inline-flex; align-items:center; justify-content:center; width:clamp(62px,16vw,84px); height:clamp(62px,16vw,84px);
  border-radius:50%; background:#fff; border:1.5px solid var(--color-primary); color:var(--color-accent);
  font-size:clamp(26px,7vw,36px); font-weight:700; opacity:0; transform:scale(.9); animation:ky-in .5s ease forwards; }
.ky-ball-hanko { background:var(--color-primary); border-color:var(--color-primary); color:#fff; }
.ky-ball-empty { border-color:#e2e2e2; color:#cfcfcf; }
@keyframes ky-in { to{opacity:1;transform:scale(1);} }
.ky-meta { margin:30px 0 0; font-size:12px; color:var(--ky-muted); }
.ky-desc { margin:56px auto 0; max-width:560px; font-size:14px; line-height:1.9; color:var(--ky-muted); }

.ky-section { padding-top:96px; }
.ky-h2 { font-weight:700; font-size:clamp(17px,4vw,22px); margin:0 0 28px; letter-spacing:.06em; }
.ky-h2::after { content:''; display:block; width:28px; height:2px; background:var(--color-primary); margin:14px auto 0; }
.ky-filter { display:flex; flex-wrap:wrap; justify-content:center; gap:8px; margin-bottom:26px; }
.ky-filter select { height:40px; padding:0 12px; border:1px solid #e2e2e2; border-radius:2px; background:#fff; font-family:inherit; font-size:13px; }
.ky-filter select:focus { outline:2px solid rgba(220,38,38,.25); border-color:var(--color-primary); }
.ky-btn { display:inline-flex; align-items:center; height:40px; padding:0 18px; border:1px solid var(--color-accent); border-radius:2px;
  background:var(--color-accent); color:#fff; font-size:12px; letter-spacing:.1em; cursor:pointer; }
.ky-btn:hover { background:#000; color:#fff; }
.ky-btn-ghost { background:#fff; color:var(--color-accent); }

.ky-table { width:100%; border-collapse:collapse; font-size:13.5px; }
.ky-table thead th { padding:12px 10px; border-bottom:1px solid #e2e2e2; font-size:10.5px; font-weight:700; letter-spacing:.18em;
  text-transform:uppercase; color:var(--ky-muted); text-align:left; }
.ky-table tbody td { padding:14px 10px; border-bottom:1px solid #f0f0f0; text-align:left; }
.ky-table tbody tr:nth-child(even) { background:var(--ky-sakura); }
.ky-right { text-align:right !important; }
.ky-result-num { font-size:16px; font-weight:700; letter-spacing:.22em; color:var(--color-primary); }
.ky-muted { color:var(--ky-muted); }
.ky-nowrap { white-space:nowrap; }
.ky-empty { padding:64px 20px; }
.ky-empty-mark { display:inline-block; width:36px; height:36px; border:1.5px solid var(--color-primary); border-radius:50%; margin-bottom:20px; }
.ky-empty h3 { font-size:16px; font-weight:700; margin:0 0 8px; }
.ky-empty p { margin:0; font-size:13px; color:var(--ky-muted); }
.ky-pagination { margin-top:26px; font-size:12.5px; color:var(--ky-muted); }
.ky-pagination .page-link { border-radius:2px; border:1px solid #e2e2e2; color:var(--color-accent); }
.ky-pagination .page-item.active .page-link { background:var(--color-primary); border-color:var(--color-primary); color:#fff; }

.ky-cols { display:grid; grid-template-columns:1fr; gap:0; border-top:1px solid #eee; }
.ky-col { padding:24px 12px; border-bottom:1px solid #eee; }
.ky-col-label { display:block; font-size:10.5px; letter-spacing:.2em; text-transform:uppercase; color:var(--ky-muted); }
.ky-col-value { display:block; margin:8px 0 4px; font-size:19px; font-weight:700; }
.ky-col-note { display:block; font-size:11.5px; color:var(--ky-muted); }
.ky-note { margin:34px 0 0; font-size:12.5px; color:var(--ky-muted); }
.ky-note a { color:var(--color-primary); }

@media (min-width:768px) { .ky-cols { grid-template-columns:repeat(3,1fr); border-bottom:1px solid #eee; }
  .ky-col { border-bottom:0; border-right:1px solid #eee; } .ky-col:last-child { border-right:0; } }
@media (min-width:992px) { .ky-page { margin-left:-24px; margin-right:-24px; } }
@media (max-width:575.98px) { .ky-hide-sm { display:none; } .ky-hero { padding-top:56px; } .ky-result { padding-top:40px; }
  .ky-section { padding-top:60px; } .ky-page { padding-bottom:64px; } .ky-balls { gap:12px; } }
@media (prefers-reduced-motion:reduce) { .ky-ball { animation:none; opacity:1; transform:none; } }
