/* Free tool pages (ge-tools). Shared site styles stay in style.css + home.css (ge-design); this file only adds tool bits. */
.tl{max-width:880px;margin:0 auto;padding-top:56px;padding-bottom:40px}
.tl h1{font-size:clamp(34px,6vw,60px);line-height:1.02;letter-spacing:-.02em;margin:0 0 16px;text-align:center}
.tl .lede{text-align:center;margin:0 auto 14px;max-width:50ch;line-height:1.5}
.tl .stamp{text-align:center;color:var(--muted);font-size:13.5px;margin:0 0 28px}
.tl h2{font-size:24px;margin:40px 0 12px;letter-spacing:-.01em}
.tl p,.tl li{line-height:1.6}
.tl .card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:22px;min-width:0}
.tl .card h2{font-size:17px;margin:0 0 12px;display:flex;align-items:center;gap:10px}
.tl label.l{display:block;font-weight:600;font-size:14px;margin:0 0 6px}
.tl input[type=text]{width:100%;box-sizing:border-box;font:inherit;font-size:17px;padding:12px 13px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink)}
.tl .badge{margin-left:auto;font-size:12.5px;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--line);color:var(--ink)}
.tl .badge.ok{background:#17803f;color:#fff}.tl .badge.warn{background:#e8a317;color:#160F0F}.tl .badge.bad{background:#c8241a;color:#fff}
.tl .bar{height:6px;border-radius:9px;background:var(--line);overflow:hidden;margin:14px 0 12px;position:relative}
.tl .bar i{display:block;height:100%;background:#17803f;width:0}
.tl .bar i.warn{background:#e8a317}.tl .bar i.bad{background:var(--accent)}
.tl ul.ck{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.tl ul.ck li{font-size:14.5px;line-height:1.45;padding-left:22px;position:relative}
.tl ul.ck li:before{position:absolute;left:0;top:0;font-weight:800}
.tl ul.ck li.ok:before{content:"✓";color:#17803f}.tl ul.ck li.warn:before{content:"!";color:#b67c00}.tl ul.ck li.bad:before{content:"✕";color:var(--accent)}
.tl ul.ck li.na{color:var(--muted)}.tl ul.ck li.na:before{content:"–"}
.tl .lbl{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-radius:6px;padding:1px 6px;margin-right:6px;border:1px solid var(--line);color:var(--muted)}
.tl .lbl.limit{border-color:var(--accent);color:var(--accent)}
.tl .serp{margin-top:16px;background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:14px;display:grid;grid-template-columns:120px 1fr;gap:12px;align-items:start}
.tl .serp .ytthumb{width:100%;height:auto;aspect-ratio:16/9;border-radius:8px;background:linear-gradient(135deg,var(--line),var(--panel))}
.tl .serp b{display:block;font-size:16px;line-height:1.3;overflow-wrap:anywhere}
.tl .serp span{font-size:13px;color:var(--muted)}
.tl .grid2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;margin-top:16px}
@media (max-width:760px){.tl .grid2{grid-template-columns:1fr}.tl .serp{grid-template-columns:88px 1fr}}
.tl .tcta{margin:32px auto 0;text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:26px 18px}
.tl .tcta h2{margin:0 0 8px}
.tl .tcta .row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:14px}
.tl details{border-top:1px solid var(--line);padding:12px 0}.tl details summary{font-weight:600;cursor:pointer}
.tl .src{font-size:14px;color:var(--muted);padding-left:20px}.tl .src li{margin:4px 0;overflow-wrap:anywhere}
.tl .news{background:var(--accent-soft);border:1px solid var(--accent);border-radius:12px;padding:14px 18px;margin:0 0 24px;line-height:1.5;font-size:15.5px}
.tl .big{font-size:clamp(64px,14vw,120px);font-weight:800;line-height:1;text-align:center;color:var(--accent);margin:8px 0 0}
.tl .fine{color:var(--muted);font-size:13px;text-align:center;margin-top:14px}
/* safe-zone checker */
.sz{display:grid;grid-template-columns:minmax(0,360px) minmax(0,1fr);gap:20px;align-items:start;margin-top:4px}
@media (max-width:760px){.sz{grid-template-columns:1fr}}
.szs{position:relative;aspect-ratio:9/16;width:100%;max-width:360px;margin:0 auto;border-radius:12px;overflow:hidden;background:var(--bg);border:1px dashed var(--line)}
.szs img,.szs video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:none}
.szs.has img.on,.szs.has video.on{display:block}
.szs .empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;color:var(--muted);font-size:14px;gap:6px}
.szs.has .empty{display:none}
.szs .z{position:absolute;background:rgba(240,58,46,.30);outline:1px solid rgba(240,58,46,.9);outline-offset:-1px}
.szs .z.convention{background:repeating-linear-gradient(45deg,rgba(232,163,23,.30),rgba(232,163,23,.30) 6px,rgba(232,163,23,.12) 6px,rgba(232,163,23,.12) 12px);outline-color:rgba(232,163,23,.95)}
.szs.off .z{display:none}
.drop{display:block;border:2px dashed var(--line);border-radius:12px;padding:16px;text-align:center;cursor:pointer;font-size:14.5px}
.drop.on{border-color:var(--accent);background:var(--accent-soft)}
.drop input{position:absolute;width:1px;height:1px;opacity:0}
.seg{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0}
.seg button{font:inherit;font-size:14px;font-weight:600;padding:8px 12px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--ink);cursor:pointer}
.seg button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.key{display:flex;gap:14px;flex-wrap:wrap;font-size:13px;color:var(--muted);margin:10px 0}
.key i{display:inline-block;width:14px;height:14px;border-radius:3px;vertical-align:-2px;margin-right:5px;background:rgba(240,58,46,.45);outline:1px solid rgba(240,58,46,.9)}
.key i.c{background:rgba(232,163,23,.4);outline-color:rgba(232,163,23,.95)}
.zl{list-style:none;padding:0;margin:0;font-size:14px;display:grid;gap:6px}
.zl li{display:flex;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding-bottom:6px}
.zl li span{color:var(--muted);white-space:nowrap}
.tl input[type=range]{width:100%}
.tl .stamp,.tl .tcta p,.tl .fine{margin-left:auto;margin-right:auto;max-width:60ch}
.tl p a:not(.btn),.tl li a:not(.btn),.tl .src a{text-decoration:underline;text-underline-offset:2px}
/* Contrast tokens + link underlines now live in style.css (ge-design, w4). */
