.login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:24px;padding-bottom:calc(24px + env(safe-area-inset-bottom));box-sizing:border-box;font-family:var(--login-font, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);color:var(--login-text, #1a2027)}.login *,.login *:before,.login *:after{box-sizing:border-box}.login-card{width:100%;max-width:340px;display:grid;gap:14px;padding:clamp(22px,6vw,32px);background:var(--login-card-bg, #ffffff);border:1px solid var(--login-card-border, #e4e8ed);border-radius:var(--login-radius, 16px);box-shadow:var(--login-card-shadow, 0 12px 32px rgba(16, 24, 40, .12))}.login-badge{justify-self:center;width:60px;height:60px;display:grid;place-items:center;font-size:30px;line-height:1;border-radius:var(--login-badge-radius, 18px);background:var(--login-badge-bg, rgba(79, 70, 229, .12))}.login-title{margin:0 0 2px;text-align:center;font-family:var(--login-title-font, inherit);font-size:var(--login-title-size, 24px);font-weight:var(--login-title-weight, 800);letter-spacing:-.02em;color:var(--login-title-color, var(--login-text, #1a2027))}.login-notice{margin:0;padding:11px 13px;font-size:14px;line-height:1.45;text-align:center;color:var(--login-title-color, var(--login-text, #1a2027));background:var(--login-badge-bg, rgba(79, 70, 229, .12));border-radius:var(--login-input-radius, 10px)}.login-form{display:grid;gap:10px}.login-verify{display:grid;gap:12px}.login-input{width:100%;font:inherit;color:var(--login-input-text, var(--login-text, #1a2027));background:var(--login-input-bg, #f4f6f8);border:1px solid var(--login-input-border, #e4e8ed);border-radius:var(--login-input-radius, 10px);padding:11px 13px}.login-input::placeholder{color:var(--login-text-dim, #9aa6b2)}.login-input:focus{outline:2px solid var(--login-accent, #4f46e5);outline-offset:1px;border-color:transparent}.login-btn{font:inherit;font-weight:600;border-radius:var(--login-input-radius, 10px);padding:11px 16px;cursor:pointer;border:1px solid transparent;text-align:center;transition:background-color .15s ease,border-color .15s ease}.login-submit{background:var(--login-accent, #4f46e5);color:var(--login-accent-text, #ffffff)}.login-submit:hover{background:var(--login-accent-strong, #4338ca)}.login-google{background:var(--login-google-bg, #ffffff);color:var(--login-google-text, var(--login-text, #1a2027));border-color:var(--login-google-border, #e4e8ed)}.login-google:hover{border-color:var(--login-accent, #4f46e5)}.login-divider{display:flex;align-items:center;gap:12px;color:var(--login-text-dim, #9aa6b2);font-size:13px}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background:var(--login-card-border, #e4e8ed)}.login-switch{justify-self:center;background:none;border:none;color:var(--login-link, var(--login-accent, #4f46e5));cursor:pointer;padding:2px;font:inherit;font-size:14px}.login-switch:hover{text-decoration:underline}.login-msg{margin:0;font-size:14px;line-height:1.5;text-align:center}.login-info{color:var(--login-success, #059669)}.login-error{color:var(--login-error, #dc2626)}@media (prefers-reduced-motion: reduce){.login-btn{transition:none}}:root{--bg: #f4f6f8;--surface: #ffffff;--surface-2: #eef1f4;--text: #1a2027;--text-dim: #6b7785;--text-faint: #9aa6b2;--border: #e4e8ed;--accent: #4f46e5;--accent-strong: #4338ca;--accent-soft: #e0e7ff;--success: #059669;--danger: #dc2626;--shadow-sm: 0 1px 2px rgba(16, 24, 40, .06), 0 1px 3px rgba(16, 24, 40, .08);--radius: 14px;color-scheme:light}@media (prefers-color-scheme: dark){:root{--bg: #0f1419;--surface: #1a2027;--surface-2: #232b34;--text: #e8edf2;--text-dim: #9aa6b2;--text-faint: #6b7785;--border: #2c353f;--accent: #818cf8;--accent-strong: #a5b4fc;--accent-soft: #1e213a;--success: #34d399;--danger: #f87171;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .35);color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.app{max-width:520px;margin:0 auto;min-height:100vh;padding:0 16px calc(48px + env(safe-area-inset-bottom));display:grid;gap:18px;align-content:start}.hdr{display:flex;align-items:baseline;justify-content:space-between;padding:22px 2px 6px}.title{margin:0;font-size:26px;font-weight:800;letter-spacing:-.02em}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:18px;display:grid;gap:12px}.card-title{margin:0;font-size:18px;font-weight:700}.subhead{margin:8px 0 0;font-size:15px;font-weight:700}.admin-divider{margin-top:10px;padding-top:8px;border-top:1px solid var(--border);color:var(--text-faint);font-size:13px;text-transform:uppercase;letter-spacing:.08em}.muted{margin:0;color:var(--text-dim);line-height:1.5}.error{margin:0;color:var(--danger);line-height:1.5}.success{margin:0;color:var(--success);line-height:1.5}.stack{display:grid;gap:12px}.field{display:grid;gap:6px}.label{font-size:13px;font-weight:600;color:var(--text-dim)}.input{width:100%;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:10px 12px}.input:focus{outline:2px solid var(--accent);outline-offset:1px}textarea.input{resize:vertical}.btn,.btn-danger,.btn-soft,.btn-ghost{font:inherit;font-weight:600;border-radius:10px;padding:10px 16px;cursor:pointer;border:1px solid transparent;text-decoration:none;display:inline-block;text-align:center}.btn{background:var(--accent);color:#fff}.btn:hover:not(:disabled){background:var(--accent-strong)}.btn-danger{background:transparent;color:var(--danger);border-color:var(--border)}.btn-soft{background:var(--surface-2);color:var(--text);border-color:var(--border);justify-self:start}.btn-ghost{background:transparent;color:var(--text-dim);border-color:var(--border);padding:6px 12px}.btn:disabled,.btn-danger:disabled,.btn-soft:disabled{opacity:.5;cursor:default}.btn-row{display:flex;gap:10px}.link-box{display:grid;gap:8px}.link-code{word-break:break-all;background:var(--surface-2);border:1px solid var(--border);padding:8px 10px;border-radius:8px;font-size:13px}.roster{list-style:none;margin:0;padding:0;display:grid;gap:10px}.roster-item{display:flex;align-items:center;gap:12px}.avatar{width:34px;height:34px;flex:none;border-radius:50%;display:grid;place-items:center;font-size:18px}.roster-text{display:grid;line-height:1.2}.roster-name{font-weight:600}.roster-sub{font-size:12px;color:var(--text-faint)}.badge{margin-left:auto;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--accent-strong);background:var(--accent-soft);padding:2px 8px;border-radius:999px}.app-links{display:flex;flex-wrap:wrap;gap:10px}.app-link{padding:10px 16px;border-radius:10px;background:var(--accent-soft);color:var(--accent-strong);font-weight:600;text-decoration:none}.tabs{display:flex;gap:6px}.tab{font:inherit;font-size:13px;padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--text-dim);cursor:pointer;text-transform:capitalize}.tab-on{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent}.notice{display:grid;gap:8px;padding:12px;border-radius:10px;background:var(--surface-2)}.req-list{list-style:none;margin:0;padding:0;display:grid;gap:14px}.req-item{display:grid;gap:8px;padding-top:12px;border-top:1px solid var(--border)}.req-item:first-child{border-top:0;padding-top:0}.req-head{display:grid;line-height:1.3}.req-msg{margin:0;color:var(--text-dim);font-size:14px}.req-actions{display:grid;gap:10px}.kind-picker{display:flex;gap:16px;font-size:14px}.household-row{display:grid;gap:6px;padding-top:12px;border-top:1px solid var(--border)}.household-row:first-child{border-top:0;padding-top:0}.chip-row{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:12px;padding:2px 10px;border-radius:999px;background:var(--surface-2);border:1px solid var(--border)}.checkbox-group{display:flex;flex-wrap:wrap;gap:12px}.checkbox{font-size:14px}.grant-row{display:flex;align-items:center;justify-content:space-between;gap:10px}button.chip{font-family:inherit;cursor:pointer;line-height:1.5}button.chip:disabled{opacity:.6;cursor:default}.chip-on{background:var(--accent-soft);color:var(--accent-strong);border-color:transparent}.chip-off{background:var(--surface-2);color:var(--text-dim)}.hdr-actions{display:flex;align-items:center;gap:8px}.catalog{list-style:none;margin:0;padding:0;display:grid;gap:12px}.app-card{border:1px solid var(--border);border-radius:12px;padding:14px;display:grid;gap:6px;background:var(--surface)}.app-card-off{background:var(--surface-2)}.app-card-link{display:grid;gap:6px;text-decoration:none;color:inherit}.app-card-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.app-card-label{font-weight:700;font-size:16px}.app-card-off .app-card-label{color:var(--text-dim)}.app-card-open{font-size:13px;font-weight:600;color:var(--accent-strong);flex:none}.app-card-locked{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-faint);flex:none}.app-card-tagline{margin:0;font-size:14px;color:var(--text-dim)}.app-card-desc{margin:0;font-size:13px;color:var(--text-faint);line-height:1.5}.app-card-hint{margin:0;font-size:13px;color:var(--text-faint);font-style:italic}.explainer-list{margin:0;padding-left:18px;display:grid;gap:6px;color:var(--text-dim);line-height:1.5;font-size:14px}@media (prefers-reduced-motion: reduce){*{transition:none!important}}:root{--login-text: var(--text);--login-text-dim: var(--text-dim);--login-title-color: var(--text);--login-card-bg: var(--surface);--login-card-border: var(--border);--login-card-shadow: var(--shadow-sm);--login-radius: var(--radius);--login-input-bg: var(--bg);--login-input-border: var(--border);--login-input-text: var(--text);--login-accent: var(--accent);--login-accent-strong: var(--accent-strong);--login-accent-text: #fff;--login-google-bg: var(--surface-2);--login-google-text: var(--text);--login-google-border: var(--border);--login-link: var(--accent-strong);--login-success: var(--success);--login-error: var(--danger);--login-badge-bg: var(--accent-soft)}
