:root{--bg: #fbfdf9;--surface: #ffffff;--border: #dfe5db;--text: #1b2419;--muted: #5f6b5c;--accent: #2f5d33;--accent-weak: #e8f0e6;--danger: #a3271f;--warn: #8a6d1f;--radius: 10px;color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #12160f;--surface: #1a1f17;--border: #2f382c;--text: #e6ece3;--muted: #9aa697;--accent: #8fc094;--accent-weak: #22301f;--danger: #e08a83;--warn: #d6b45c}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 ui-sans-serif,system-ui,-apple-system,Hiragino Sans,Noto Sans JP,sans-serif}a{color:var(--accent)}h1{font-size:1.4rem;margin:0 0 .25rem}h2{font-size:1.05rem;margin:1.5rem 0 .5rem}.layout{display:flex;min-height:100vh}nav.side{width:190px;flex:none;border-right:1px solid var(--border);padding:1rem .75rem;background:var(--surface)}nav.side .brand{font-weight:700;padding:0 .5rem 1rem}nav.side a{display:block;padding:.45rem .5rem;border-radius:8px;text-decoration:none;color:var(--text)}nav.side a[aria-current=page]{background:var(--accent-weak);color:var(--accent);font-weight:600}main{flex:1;padding:1.5rem 1.75rem 4rem;min-width:0}.who{margin-top:auto;font-size:.82rem;color:var(--muted);padding:.5rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem}.grid{display:grid;gap:.9rem;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}.stat .n{font-size:1.5rem;font-weight:700}.stat .k{color:var(--muted);font-size:.85rem}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{text-align:left;padding:.55rem .7rem;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--muted);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.03em}tbody tr:last-child td{border-bottom:none}td.wrap{white-space:normal}.tag{display:inline-block;padding:.1rem .45rem;border-radius:999px;font-size:.75rem;border:1px solid var(--border)}.tag.active{background:var(--accent-weak);color:var(--accent);border-color:transparent}.tag.revoked{color:var(--danger)}.tag.expired{color:var(--warn)}input,select,button{font:inherit}input[type=text],input[type=email],input[type=password],input[type=datetime-local],select{padding:.4rem .55rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);min-width:0;max-width:100%}button{padding:.4rem .8rem;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}button.primary{background:var(--accent);border-color:transparent;color:#fff}button.danger{color:var(--danger)}button:disabled{opacity:.5;cursor:default}.row{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.muted{color:var(--muted)}.error{color:var(--danger)}.spacer{flex:1}.center{display:grid;place-items:center;min-height:100vh;padding:1rem}.login{width:min(360px,100%);display:grid;gap:.7rem}@media(max-width:720px){.layout{flex-direction:column}nav.side{width:auto;border-right:none;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:.25rem;flex-wrap:wrap;padding:.6rem .75rem}nav.side .brand{padding:0 .5rem 0 0}nav.side a{padding:.3rem .5rem}nav.side .who{margin:0 0 0 auto;display:flex;align-items:center;gap:.5rem}main{padding:1rem .9rem 3rem}}
