*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{--bg:#0d1117;--surface:#161b22;--border:#30363d;--text:#e6edf3;--dim:#8b949e;--accent:#58a6ff;--accent2:#3fb950;--red:#f85149;--mono:'SF Mono',Consolas,'Liberation Mono',Menlo,monospace;--sans:-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif}
html{font-family:var(--sans);font-size:15px;background:var(--bg);color:var(--text);line-height:1.5}
body{max-width:960px;margin:0 auto;padding:1rem}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
nav{font-size:.85rem;color:var(--dim);margin-bottom:1.5rem;padding-bottom:.75rem;border-bottom:1px solid var(--border)}
nav a{color:var(--dim)}nav a:hover{color:var(--accent)}
h1{font-size:1.4rem;margin-bottom:1rem;font-weight:600}
h2{font-size:1.1rem;margin:1.5rem 0 .75rem;font-weight:600}
label{display:block;font-size:.85rem;color:var(--dim);margin-bottom:.25rem}
input,textarea,select{font-family:var(--mono);font-size:.9rem;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:.5rem;width:100%}
input:focus,textarea:focus,select:focus{outline:none;border-color:var(--accent)}
textarea{resize:vertical;min-height:80px}
select{cursor:pointer}
button{font-family:var(--sans);font-size:.85rem;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:4px;padding:.4rem .8rem;cursor:pointer}
button:hover{border-color:var(--accent);color:var(--accent)}
button.primary{background:var(--accent);color:var(--bg);border-color:var(--accent);font-weight:600}
button.primary:hover{opacity:.9}
.row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-end}
.row>*{flex:1;min-width:120px}
.output{font-family:var(--mono);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:.75rem;white-space:pre-wrap;word-break:break-all;min-height:2.5rem;font-size:.9rem}
.toolbar{display:flex;gap:.5rem;margin:.5rem 0}
.error{color:var(--red);font-size:.85rem;margin-top:.25rem}
.note{color:var(--dim);font-size:.8rem;margin-top:.5rem;font-style:italic}
.grid{display:grid;gap:.5rem}
.grid-2{grid-template-columns:1fr 1fr}
.grid-3{grid-template-columns:1fr 1fr 1fr}
.card{background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:.75rem 1rem}
.card:hover{border-color:var(--accent)}
.badge{display:inline-block;font-size:.7rem;padding:.1rem .4rem;border-radius:3px;background:var(--border);color:var(--dim)}
.badge.ready{background:#1a3a2a;color:var(--accent2)}
.badge.planned{background:#2a2000;color:#d29922}
table{width:100%;border-collapse:collapse;font-size:.85rem;margin:.5rem 0}
th,td{text-align:left;padding:.4rem .6rem;border-bottom:1px solid var(--border)}
th{color:var(--dim);font-weight:500}
.fav-btn{background:none;border:none;cursor:pointer;font-size:1rem;padding:0;line-height:1}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
@media(max-width:600px){.grid-2,.grid-3{grid-template-columns:1fr}.row{flex-direction:column}body{padding:.75rem}}
