*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:16px;-webkit-text-size-adjust:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Hiragino Sans','Noto Sans CJK JP',sans-serif;
  background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh;
  transition:background .3s,color .3s
}
.container{max-width:1200px;margin:0 auto;padding:0 1.5rem}

:root{
  --bg:#f0f2f5;--card-bg:#fff;--text:#1f2937;--text-secondary:#6b7280;--border:#e5e7eb;
  --primary:#4f6ef7;--primary-hover:#3b5de7;--primary-light:rgba(79,110,247,.1);
  --ok:#10b981;--ok-bg:rgba(16,185,129,.1);
  --warn:#f59e0b;--warn-bg:rgba(245,158,11,.1);
  --error:#ef4444;--error-bg:rgba(239,68,68,.1);
  --info:#6366f1;--info-bg:rgba(99,102,241,.1);
  --radius:12px;--radius-sm:8px;
  --shadow:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.06);
  --shadow-hover:0 4px 12px rgba(0,0,0,.1)
}

[data-theme=dark]{
  --bg:#0f172a;--card-bg:#1e293b;--text:#f1f5f9;--text-secondary:#94a3b8;--border:#334155;
  --shadow:0 1px 3px rgba(0,0,0,.3);--shadow-hover:0 4px 12px rgba(0,0,0,.3)
}

@media(prefers-color-scheme:dark){
  :root:not([data-theme=light]){
    --bg:#0f172a;--card-bg:#1e293b;--text:#f1f5f9;--text-secondary:#94a3b8;--border:#334155;
    --shadow:0 1px 3px rgba(0,0,0,.3);--shadow-hover:0 4px 12px rgba(0,0,0,.3)
  }
}

.header{
  background:var(--card-bg);border-bottom:1px solid var(--border);padding:1.5rem 0
}
[data-theme=dark] .header{background:rgba(30,41,59,.92)}
:root:not([data-theme]) .header{background:rgba(255,255,255,.92)}
@media(prefers-color-scheme:dark){
  :root:not([data-theme=light]) .header{background:rgba(30,41,59,.92)}
}
.header-top{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}
.header-title{font-size:1.5rem;font-weight:700;letter-spacing:-.02em}
.header-subtitle{font-size:.875rem;color:var(--text-secondary);margin-top:.25rem}
.header-actions{display:flex;gap:.75rem;margin-bottom:.75rem}
.last-updated{font-size:.8rem;color:var(--text-secondary)}

.btn{
  display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1.25rem;
  font-size:.875rem;font-weight:500;border-radius:var(--radius-sm);
  border:1px solid transparent;cursor:pointer;transition:all .2s;font-family:inherit
}
.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}
.btn-primary:hover{background:var(--primary-hover)}
.btn-secondary{background:transparent;color:var(--text);border-color:var(--border)}
.btn-secondary:hover{background:var(--primary-light);border-color:var(--primary);color:var(--primary)}
.btn-secondary:disabled{opacity:.6;cursor:not-allowed}
.btn-icon{
  display:inline-flex;align-items:center;justify-content:center;
  width:40px;height:40px;border-radius:var(--radius-sm);border:1px solid var(--border);
  background:transparent;color:var(--text-secondary);cursor:pointer;transition:all .2s;flex-shrink:0
}
.btn-icon:hover{background:var(--primary-light);color:var(--primary);border-color:var(--primary)}
.btn-icon .icon-sun,.btn-icon .icon-moon{display:none}
.btn-icon.is-dark .icon-sun{display:block}
.btn-icon:not(.is-dark) .icon-moon{display:block}

.main{padding:2rem 0}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:1.5rem}

.loading{grid-column:1/-1;text-align:center;padding:3rem;color:var(--text-secondary);font-size:1rem}

.card{
  background:var(--card-bg);border-radius:var(--radius);box-shadow:var(--shadow);
  border:1px solid var(--border);padding:1.5rem;overflow:hidden;transition:box-shadow .2s
}
.card:hover{box-shadow:var(--shadow-hover)}
.card-title{
  font-size:1rem;font-weight:600;color:var(--primary);margin-bottom:1.25rem;
  padding-bottom:.75rem;border-bottom:2px solid var(--border)
}

.diagnostic-list{display:grid;grid-template-columns:auto 1fr;gap:.6rem 1rem;align-items:baseline}
.diagnostic-list dt{
  font-size:.85rem;color:var(--text-secondary);white-space:nowrap;
  line-height:1.5;padding:.1rem 0
}
.diagnostic-list dd{
  font-size:.9rem;font-weight:500;text-align:right;word-break:break-all;
  line-height:1.5;padding:.1rem 0;display:flex;align-items:center;justify-content:flex-end;gap:.4rem
}
.diagnostic-list dd .dot{
  display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0
}
.diagnostic-list dd .dot.ok{background:var(--ok)}
.diagnostic-list dd .dot.warn{background:var(--warn)}
.diagnostic-list dd .dot.error{background:var(--error)}
.diagnostic-list dd .dot.info{background:var(--info)}

.card-score{border-color:var(--primary)}
.card-score .card-title{color:var(--text);border-bottom-color:var(--primary)}
.score-body{display:flex;align-items:center;gap:1.5rem}
.score-ring-container{position:relative;width:130px;height:130px;flex-shrink:0}
.score-ring-container svg{width:100%;height:100%}
.score-ring-bg{fill:none;stroke:var(--border);stroke-width:8}
.score-ring-fill{fill:none;stroke:var(--primary);stroke-width:8;stroke-linecap:round;
  transform:rotate(-90deg);transform-origin:center;transition:stroke-dashoffset 1.2s ease}
.score-label{font-size:.7rem;color:var(--text-secondary);text-align:center;margin-top:.2rem}
.score-value{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  display:flex;flex-direction:column;align-items:center;line-height:1}
.score-value .num{font-size:2.4rem;font-weight:700;color:var(--text)}
.score-value .den{font-size:.9rem;font-weight:400;color:var(--text-secondary)}
.score-rec{
  display:inline-block;margin-top:.35rem;padding:.15rem .6rem;border-radius:999px;
  font-size:.65rem;font-weight:600;white-space:nowrap
}
.score-rec--excellent{background:var(--ok-bg);color:var(--ok)}
.score-rec--good{background:var(--info-bg);color:var(--info)}
.score-rec--fair{background:var(--warn-bg);color:var(--warn)}
.score-rec--poor{background:var(--error-bg);color:var(--error)}
.score-breakdown{flex:1;min-width:0}
.score-bar-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.45rem}
.score-bar-row:last-child{margin-bottom:0}
.score-bar-label{font-size:.75rem;color:var(--text-secondary);width:6.5rem;flex-shrink:0}
.score-bar-track{flex:1;height:7px;background:var(--border);border-radius:4px;overflow:hidden}
.score-bar-fill{height:100%;border-radius:4px;transition:width 1s ease}
.score-bar-value{font-size:.78rem;font-weight:600;color:var(--text);width:3.8rem;text-align:right;flex-shrink:0}

.card-adblock{text-align:center;padding:1rem}
.card-adblock .adblock-status{display:inline-flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:600}
.card-adblock .adblock-status .dot{width:12px;height:12px}
.card-adblock .adblock-sub{font-size:.8rem;color:var(--text-secondary);margin-top:.25rem}

@media(max-width:600px){
  .score-body{flex-direction:column;align-items:center}
  .score-ring-container{width:100px;height:100px}
  .score-value .num{font-size:1.8rem}
  .score-breakdown{width:100%}
}

.footer{border-top:1px solid var(--border);padding:1.5rem 0;text-align:center;font-size:.8rem;color:var(--text-secondary)}

@media(max-width:768px){
  .grid{grid-template-columns:1fr;gap:1rem}
  .header-title{font-size:1.25rem}
  .container{padding:0 1rem}
  .main{padding:1rem 0}
}
@media(max-width:480px){
  .header-top{flex-direction:column;gap:.75rem}
  .header-actions{flex-wrap:wrap}
  .btn{padding:.4rem 1rem;font-size:.8rem}
}
