
:root{
  --ink:#45616d; --muted:#8aa0aa; --line:#d9edf4; --panel:rgba(255,255,255,.86);
}
*{box-sizing:border-box}
body{margin:0;min-height:100vh;background:linear-gradient(180deg,#f8fdff 0%,#edf9fd 100%);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans JP",sans-serif}
.wheel-page{width:min(1040px,calc(100% - 32px));margin:0 auto;padding:42px 0 70px}
.wheel-header{display:flex;gap:28px;align-items:flex-start;margin-bottom:28px}
.back-link{flex:none;text-decoration:none;color:#66b3d0;background:#fff;border:1px solid #d5edf6;border-radius:999px;padding:9px 14px;font-size:13px;font-weight:700;box-shadow:0 5px 18px rgba(74,145,172,.07)}
.eyebrow{margin:0 0 3px;color:#9bc9d9;font-size:10px;font-weight:800;letter-spacing:.18em}
h1{margin:0;font-size:32px;letter-spacing:.04em}
.description{margin:7px 0 0;color:var(--muted);font-size:13px}
.wheel-card{position:relative;display:grid;place-items:center;min-height:620px;padding:38px;border:1px solid rgba(153,211,231,.38);border-radius:34px;background:var(--panel);box-shadow:0 18px 55px rgba(76,147,174,.08);overflow:hidden}
.color-wheel{position:relative;width:min(72vw,560px);aspect-ratio:1;border-radius:50%;background:conic-gradient(from 0deg,#ff5555,#ffd455,#75d85b,#52d9cf,#55a7ff,#8b68ee,#df67df,#ff5555);box-shadow:0 14px 45px rgba(69,118,139,.13)}
.color-wheel::after{content:"";position:absolute;inset:8%;border-radius:50%;background:#f9fdff;box-shadow:inset 0 0 0 1px rgba(120,184,207,.18)}
.wheel-center{position:absolute;z-index:2;inset:34%;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:50%;color:#a0bbc5;font-size:10px;letter-spacing:.18em;text-align:center}
.wheel-center strong{color:#77aec2;font-size:17px;letter-spacing:.12em}
.character-dot{position:absolute;z-index:10;width:54px;height:54px;border:4px solid #fff;border-radius:50%;overflow:hidden;background:#fff;box-shadow:0 5px 18px rgba(48,87,103,.25);transform:translate(-50%,-50%);cursor:pointer;transition:transform .16s ease,box-shadow .16s ease}
.character-dot:hover,.character-dot:focus-visible{transform:translate(-50%,-50%) scale(1.13);box-shadow:0 8px 25px rgba(48,87,103,.32);outline:none}
.character-dot img{width:100%;height:100%;object-fit:cover;display:block}
.character-dot .fallback{width:100%;height:100%;display:grid;place-items:center;font-size:18px;font-weight:800;color:#fff}
.character-dot::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:inset 0 0 0 2px var(--character-color,#ccc);pointer-events:none}
.empty-message{position:absolute;z-index:20;margin:0;padding:10px 16px;border-radius:999px;background:#fff;color:#8aa0aa;font-size:13px}
.legend-section{margin-top:22px;padding:24px 26px;border:1px solid rgba(153,211,231,.38);border-radius:28px;background:rgba(255,255,255,.72)}
.legend-title{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:15px}
.legend-title h2{margin:0;font-size:17px}.legend-title span{color:#9bb1ba;font-size:11px}
.character-legend{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:9px}
.legend-item{display:flex;align-items:center;gap:9px;min-width:0;padding:8px 10px;border-radius:14px;background:rgba(244,251,253,.9);font-size:12px}
.legend-swatch{width:11px;height:11px;flex:none;border-radius:50%;background:var(--swatch)}
.legend-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:720px){
 .wheel-page{width:min(100% - 20px,620px);padding:20px 0 44px}
 .wheel-header{display:block;margin-bottom:16px}.back-link{display:inline-block;margin-bottom:20px}
 h1{font-size:27px}.description{font-size:12px}
 .wheel-card{min-height:auto;padding:24px 8px;border-radius:25px}
 .color-wheel{width:min(88vw,470px)}
 .character-dot{width:42px;height:42px;border-width:3px}
 .legend-section{padding:18px 15px;border-radius:22px}
 .character-legend{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* v1.5.36 色相環: 細いリング + 名前ツールチップ */
.character-dot{overflow:visible}
.character-dot img,.character-dot .fallback{border-radius:50%;overflow:hidden}
.character-name-tooltip{
  position:absolute;
  left:50%;bottom:calc(100% + 9px);
  transform:translateX(-50%) translateY(3px);
  z-index:30;
  max-width:180px;
  padding:6px 10px;
  border:1px solid #dceef5;
  border-radius:10px;
  background:rgba(255,255,255,.97);
  box-shadow:0 6px 20px rgba(48,87,103,.13);
  color:#587581;
  font-size:11px;
  font-weight:700;
  line-height:1.3;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .14s ease,transform .14s ease;
}
.character-dot:hover .character-name-tooltip,
.character-dot:focus-visible .character-name-tooltip{
  opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);
}

/* v1.5.37 色と配置の同期・広めの衝突回避領域 */
.wheel-card{overflow:visible !important;padding:70px !important}
.character-dot{text-decoration:none}
@media(max-width:720px){
  .wheel-card{padding:48px 18px !important}
}

/* =========================================================
   v1.5.38 - compact color wheel / achromatic row
========================================================= */
.wheel-card{
  overflow:hidden !important;
  padding:46px 72px !important;
}
.color-wheel{
  flex:none;
}
.achromatic-strip{
  position:absolute;
  left:calc(50% + min(36vw, 300px));
  top:50%;
  z-index:20;
  display:flex;
  flex-direction:column;
  gap:2px;
  transform:translateY(-50%);
  padding:8px;
  border:1px solid rgba(153,211,231,.28);
  border-radius:999px;
  background:rgba(255,255,255,.74);
  box-shadow:0 8px 24px rgba(76,147,174,.08);
}
.achromatic-strip .character-dot{
  position:relative !important;
  left:auto !important;
  top:auto !important;
  transform:none !important;
  flex:none;
  margin:0;
}
.achromatic-strip .character-dot:hover,
.achromatic-strip .character-dot:focus-visible{
  transform:scale(1.08) !important;
}
@media(max-width:720px){
  .wheel-card{
    padding:30px 54px 30px 12px !important;
  }
  .achromatic-strip{
    left:auto;
    right:6px;
    gap:2px;
    padding:5px;
  }
}

/* =========================================================
   v1.5.39 - inward packing / two-row achromatic palette
========================================================= */
.wheel-card{
  overflow:hidden !important;
  padding:44px 190px 44px 44px !important;
}
.achromatic-strip{
  position:absolute !important;
  left:auto !important;
  right:18px !important;
  top:50% !important;
  bottom:auto !important;
  width:124px !important;
  max-height:calc(100% - 36px);
  display:grid !important;
  grid-template-rows:repeat(2,54px) !important;
  grid-auto-flow:column !important;
  grid-auto-columns:54px !important;
  gap:2px !important;
  align-content:center;
  justify-content:start;
  padding:8px !important;
  overflow-x:auto !important;
  overflow-y:hidden !important;
  transform:translateY(-50%) !important;
  border-radius:22px !important;
}
.achromatic-strip .character-dot{
  width:54px !important;
  height:54px !important;
}
@media(max-width:720px){
  .wheel-card{
    padding:26px 92px 26px 12px !important;
  }
  .achromatic-strip{
    right:5px !important;
    width:86px !important;
    grid-template-rows:repeat(2,42px) !important;
    grid-auto-columns:42px !important;
    padding:5px !important;
  }
  .achromatic-strip .character-dot{
    width:42px !important;
    height:42px !important;
  }
}

/* =========================================================
   v1.5.40 - achromatic vertical list
========================================================= */
.achromatic-strip{
  position:absolute !important;
  left:auto !important;
  right:18px !important;
  top:50% !important;
  width:76px !important;
  max-height:calc(100% - 48px) !important;
  display:flex !important;
  flex-direction:column !important;
  flex-wrap:nowrap !important;
  gap:2px !important;
  align-items:center !important;
  justify-content:flex-start !important;
  padding:8px !important;
  overflow-x:hidden !important;
  overflow-y:auto !important;
  transform:translateY(-50%) !important;
  border-radius:24px !important;
  scrollbar-width:thin;
  scrollbar-color:rgba(112,151,166,.45) transparent;
}
.achromatic-strip::-webkit-scrollbar{width:5px}
.achromatic-strip::-webkit-scrollbar-track{background:transparent}
.achromatic-strip::-webkit-scrollbar-thumb{
  background:rgba(112,151,166,.38);
  border-radius:999px;
}
.achromatic-strip .character-dot{
  position:relative !important;
  left:auto !important;
  top:auto !important;
  width:54px !important;
  height:54px !important;
  min-width:54px !important;
  min-height:54px !important;
  flex:0 0 54px !important;
  transform:none !important;
}
@media(max-width:720px){
  .achromatic-strip{
    right:5px !important;
    width:58px !important;
    padding:5px !important;
    max-height:calc(100% - 28px) !important;
  }
  .achromatic-strip .character-dot{
    width:42px !important;
    height:42px !important;
    min-width:42px !important;
    min-height:42px !important;
    flex-basis:42px !important;
  }
}

/* =========================================================
   v1.5.41 - achromatic 2 columns
========================================================= */
.achromatic-strip{
  position:absolute !important;
  left:auto !important;
  right:18px !important;
  top:50% !important;
  width:136px !important;
  max-height:calc(100% - 48px) !important;
  display:grid !important;
  grid-template-columns:repeat(2,54px) !important;
  grid-auto-rows:54px !important;
  grid-auto-flow:row !important;
  gap:2px !important;
  align-content:start !important;
  justify-content:center !important;
  padding:8px !important;
  overflow-x:hidden !important;
  overflow-y:auto !important;
  transform:translateY(-50%) !important;
  border-radius:24px !important;
  scrollbar-width:thin;
  scrollbar-color:rgba(112,151,166,.45) transparent;
}
.achromatic-strip .character-dot{
  width:54px !important;
  height:54px !important;
  min-width:54px !important;
  min-height:54px !important;
}
@media(max-width:720px){
  .achromatic-strip{
    right:5px !important;
    width:100px !important;
    grid-template-columns:repeat(2,42px) !important;
    grid-auto-rows:42px !important;
    padding:5px !important;
    max-height:calc(100% - 28px) !important;
  }
  .achromatic-strip .character-dot{
    width:42px !important;
    height:42px !important;
    min-width:42px !important;
    min-height:42px !important;
  }
}

/* v1.5.43 公開サイト用 */
.wheel-card{
  position:relative;
  overflow:hidden !important;
  padding:44px 190px 44px 44px !important;
}
.achromatic-strip{
  position:absolute !important;
  right:18px !important;
  top:50% !important;
  left:auto !important;
  width:136px !important;
  max-height:calc(100% - 48px) !important;
  display:grid !important;
  grid-template-columns:repeat(2,54px) !important;
  grid-auto-rows:54px !important;
  gap:2px !important;
  align-content:start !important;
  justify-content:center !important;
  padding:8px !important;
  overflow-x:hidden !important;
  overflow-y:auto !important;
  transform:translateY(-50%) !important;
  border:1px solid rgba(153,211,231,.28);
  border-radius:24px !important;
  background:rgba(255,255,255,.78);
}
.achromatic-strip[hidden]{display:none !important}
.achromatic-strip .character-dot{
  position:relative !important;
  left:auto !important;
  top:auto !important;
  width:54px !important;
  height:54px !important;
  transform:none !important;
}
@media(max-width:720px){
  .wheel-card{padding:26px 102px 26px 12px !important}
  .achromatic-strip{
    right:5px !important;
    width:100px !important;
    grid-template-columns:repeat(2,42px) !important;
    grid-auto-rows:42px !important;
    max-height:calc(100% - 28px) !important;
    padding:5px !important;
  }
  .achromatic-strip .character-dot{
    width:42px !important;
    height:42px !important;
  }
}
