:root{color-scheme:light;--bg:#f5f8fc;--bg2:#edf6f8;--panel:#fff;--panel-border:#dfe8ef;--text:#253c4f;--muted:#64798a;--cyan:#187e9a;--purple:#7b66b0;--green:#238969;--amber:#ab7012;--red:#ce5866;--radius:24px}
body{background:radial-gradient(ellipse at 0 0,#dff6ef,transparent 55%),radial-gradient(ellipse at 100% 35%,#e9e7fa,transparent 50%),#f5f8fc}
#bg-particles{display:none}header{background:#ffffffed;border-color:var(--panel-border);flex-wrap:wrap;gap:10px 20px;padding:18px 26px}header h1{font-size:1.1rem}header .en{display:block;margin:4px 0 0;font-size:.7rem}header>div{margin-top:0!important;margin-left:auto!important}main{padding-top:30px}.hero{display:grid;grid-template-columns:1.2fr 1fr;align-items:center;gap:24px;border-radius:30px;background:linear-gradient(120deg,#e4f6f0,#edf2ff);padding:32px;overflow:hidden;border:1px solid #d7eae7}.eyebrow{display:block;color:var(--cyan);font-size:.7rem;letter-spacing:.15em;font-weight:800;margin-bottom:14px}.hero h2{font-size:clamp(1.7rem,3.2vw,2.5rem);line-height:1.4}.hero p{font-size:.88rem}.network-art{display:block;width:100%;height:auto;border-radius:24px;mix-blend-mode:multiply}.hero-cta{margin-top:16px}.panel{box-shadow:0 8px 28px #31536b09;backdrop-filter:none}.btn,.btn.big{background:linear-gradient(120deg,#187e9a,#238969);color:#fff;box-shadow:0 5px 15px #187e9a20;border-radius:14px;min-height:46px;line-height:1.5}.btn.stop{background:#ce5866;color:white}.btn.ghost{background:#f5f8fc;color:var(--text);border:1px solid var(--panel-border);box-shadow:none}.btn:disabled{opacity:.45}.btn:focus-visible,a:focus-visible,summary:focus-visible,.app-nav button:focus-visible{outline:3px solid #187e9a;outline-offset:3px}.ctrl select,.ctrl input{background:#f5f8fc;border-color:#d7e2eb;min-height:46px;font-size:16px}.controls{gap:16px;padding:24px}.track{background:#d9e4ec!important}.switch input:checked+.track{background:var(--green)!important}.diag{padding:26px}.diag-tag{color:#238969;background:#e3f6ed;border:1px solid #c4e7d5}.phase{background:#f3f7fa;border-color:#dfe8ef}.phase .n{background:#dae5ee;color:#425d70}.phase.active .n,.phase.done .n{color:white}.diag-speed{background:#edf8f5;border-color:#c9e9dd}.diag-speed .bar{background:#dcece6}.stat{position:relative;padding:20px;overflow:hidden;border-color:#dde8ed}.stat .k{font-size:.75rem;color:#4d687b}.stat .v{font-size:1.9rem;letter-spacing:-.04em}.stat .u{color:#64798a;letter-spacing:0}.stats{gap:14px}.stats .stat{background:#eaf5fa}.stats .stat:nth-child(2){background:#f0f3fc}.stats .stat:nth-child(3){background:#f2edfa}.stats .stat:nth-child(4){background:#fff5df}.stats .stat:nth-child(5){background:#fff0f1}.stats .stat:nth-child(6){background:#e5f5ed}.stats .stat::after{content:'↔';position:absolute;right:14px;top:14px;color:#187e9a33;font-size:28px}.stats .stat:nth-child(2)::after{content:'◷'}.stats .stat:nth-child(3)::after{content:'≈'}.stats .stat:nth-child(4)::after{content:'⇥'}.stats .stat:nth-child(5)::after{content:'⋯'}.stats .stat:nth-child(6)::after{content:'✓'}.score-ring{margin-top:4px}.dist{background:#fff}.viz{padding:24px}.viz h3{font-size:1rem}canvas.draw{background:#f5f9fc;border:1px solid #e4edf3;border-radius:18px;margin-top:16px}.badge{background:#f0f5f8;border-color:#dae4ec;color:#496477}.badge.good,.badge.cong.low{background:#e5f5ed;color:#238969;border-color:#c5e7d7}.badge.warn{background:#fff3dc;color:#976313}.badge.bad{background:#fff0f1;color:#b94353}.badge .dot{box-shadow:none}.cong-bars i{background:#d0dce5}.uc{background:#f5f8fc;border-color:#e0e8f0}.diag-metrics .stat{box-shadow:none;background:#f6f9fc}.log-item{background:#f4f8fb}.delta-chip{background:#f4f8fb}.note{padding:20px 24px;margin-top:24px;background:#eef4f8}.note summary{cursor:pointer;font-weight:700;line-height:1.6}.note-content{padding-top:16px}.mobile-dock{display:none}footer{color:#64798a}.section-divider{margin-top:32px}
@media(max-width:700px){body{background:#f2f7fb}header{padding:14px 18px;align-items:flex-start}header .back{font-size:.72rem;width:100%}header h1{font-size:1.1rem}header>div{display:none!important}main{padding:18px 14px 155px}.hero{grid-template-columns:1fr;padding:22px;gap:8px;border-radius:24px}.hero h2{font-size:1.7rem}.hero p{font-size:.84rem}.hero p .en{font-size:.7rem}.network-art{max-width:320px;margin:0 auto;order:-1;height:160px;object-fit:cover}.eyebrow{font-size:.6rem;margin-bottom:10px}.hero-cta{display:none}.diag{padding:20px}.diag-head{gap:10px;align-items:flex-start}.diag h3{font-size:.98rem}.diag-tag{font-size:.65rem;white-space:nowrap}.diag-desc{font-size:.8rem}.diag-actions .btn{width:100%;font-size:.85rem}.diag-phases{display:grid;grid-template-columns:1fr;gap:8px}.phase{padding:9px 12px}.stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.stat{padding:16px;min-width:0}.stat .v{font-size:1.7rem}.stats .stat::after{font-size:22px;top:12px;right:12px}.dist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:18px}.dist .d{border:0}.viz{padding:18px 14px;border-radius:22px}.status-row{gap:8px}.badge{font-size:.65rem;padding:7px 9px;max-width:100%;overflow-wrap:anywhere}.hint{font-size:.73rem;line-height:1.7}.legend{gap:10px;font-size:.68rem}.grade-top{gap:14px;flex-wrap:wrap}.grade-verdict{min-width:0}.diag-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.uc-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.diag-foot{gap:8px}.diag-foot .btn{font-size:.72rem;padding:9px 12px}.controls{flex-direction:column;align-items:stretch;padding:20px}.ctrl input,.ctrl select,#customUrl{width:100%;min-width:0}.ctrl.toggle{flex-direction:row}.section-divider{margin:0 0 20px}.note{font-size:.75rem;padding:16px}footer{padding-bottom:160px;font-size:.7rem}.mobile-dock{display:flex;flex-direction:column;gap:8px;position:fixed;z-index:20;bottom:0;left:0;right:0;padding:10px 14px max(8px,env(safe-area-inset-bottom));background:#fffffff5;border-top:1px solid #dfe8ef;box-shadow:0 -8px 24px #294e670c;backdrop-filter:blur(14px)}#mobileAction{width:100%;min-height:46px}.app-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.app-nav button{border:0;background:transparent;border-radius:14px;padding:7px 3px;min-height:58px;color:#60798d;font-family:inherit;font-weight:700;font-size:.72rem;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:pointer}.app-nav button>span{font-size:20px;line-height:1.1}.app-nav small{font-size:.55rem;font-weight:500}.app-nav button[aria-pressed=true]{background:#e3f4ef;color:#18775d}body[data-app-tab] .app-view{display:none}body[data-app-tab=diagnosis] #diagnosis-view,body[data-app-tab=monitor] #monitor-view,body[data-app-tab=settings] #monitor-view,body[data-app-tab=records] #records-view{display:block}body[data-app-tab=monitor] #monitor-view>.controls{display:none}body[data-app-tab=settings] #monitor-view>:not(.controls){display:none}body[data-app-tab=settings] .controls::before{content:'計測設定 / Measurement settings';font-size:1.1rem;font-weight:800;color:var(--text)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}

.badge.good .dot,.badge.warn .dot,.badge.bad .dot{box-shadow:none}
