:root{color-scheme:light;--accent: #2f6fed;--accent-dark: #244fb0;--bg: #f4f5f7;--surface: #ffffff;--text: #22272e;--text-muted: #5b6472;--border: #e1e4e9;--danger: #d64545}*{box-sizing:border-box}html{font-size:17px}body{margin:0;background:var(--bg);color:var(--text);font-family:Meiryo,Yu Gothic,Hiragino Sans,-apple-system,BlinkMacSystemFont,MS PGothic,sans-serif;line-height:1.65}a{color:var(--accent-dark)}button{font-family:inherit;font-size:1rem;cursor:pointer;border:none;border-radius:6px;background:var(--accent);color:#fff;padding:8px 16px;transition:background-color .15s}button:hover{background:var(--accent-dark)}button:disabled{background:#c7ccd3;cursor:not-allowed}button.secondary{background:var(--surface);color:var(--text);border:1px solid var(--border)}button.secondary:hover{background:var(--bg)}button.danger{background:var(--danger)}button.danger:hover{background:#b23636}input,select,textarea{font-family:inherit;font-size:1rem;border:1px solid #cbd0d8;border-radius:6px;padding:8px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px}.app-shell{min-height:100vh;display:flex;flex-direction:column}.top-nav{display:flex;align-items:center;gap:20px;padding:10px 24px;background:var(--surface);border-bottom:3px solid var(--accent)}.brand{font-weight:800;color:var(--accent);font-size:1.05rem;letter-spacing:.02em}.top-nav a{color:var(--text-muted);text-decoration:none;font-size:.95rem}.top-nav a.active,.top-nav a:hover{color:var(--accent)}.spacer{flex:1}.top-nav button{font-size:.9rem;padding:6px 14px}.page{flex:1;padding:28px 24px;max-width:980px;width:100%;margin:0 auto}.card{background:var(--surface);border-radius:10px;padding:22px 24px;box-shadow:0 1px 3px #00000014;margin-bottom:18px;border-top:3px solid transparent}.card.accent{border-top-color:var(--accent)}.error-text{color:var(--danger);font-size:.9rem}.service-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.service-tile{display:block;background:var(--surface);border-radius:10px;padding:20px;box-shadow:0 1px 3px #00000014;text-decoration:none;color:var(--text);border:1px solid var(--border);transition:box-shadow .15s,border-color .15s}.service-tile:hover{border-color:var(--accent);box-shadow:0 2px 8px #0000001f}.service-tile .name{font-weight:700;font-size:1.05rem;margin-bottom:4px}.service-tile .role{color:var(--text-muted);font-size:.85rem}table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}th{color:var(--text-muted);font-weight:600;font-size:.82rem}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:.78rem;background:var(--bg);border:1px solid var(--border);color:var(--text-muted)}.badge.on{background:#e6f0ff;color:var(--accent-dark);border-color:#c9dcff}.badge.off{background:#fbe9e9;color:var(--danger);border-color:#f4c9c9}.grant-row{display:flex;align-items:center;gap:8px;margin-bottom:6px}.grant-row .service-name{width:160px;flex-shrink:0;font-size:.88rem}.tabs{display:flex;gap:4px;margin-bottom:18px}.tabs button{background:var(--surface);color:var(--text-muted);border:1px solid var(--border);border-radius:8px 8px 0 0;padding:8px 18px}.tabs button.active{background:var(--accent);color:#fff;border-color:var(--accent)}
