:root{color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45;--border: #e2e8f0;--card: #fff;--nav-bg: #f8fafc;--muted: #64748b;--brand: #0f766e;--surface: #f1f5f9}html,body{margin:0;min-height:100%;background:var(--surface)}*{box-sizing:border-box}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{min-height:100%;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1rem;padding:.625rem clamp(1rem,4vw,1.75rem);background:#f8fafceb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);box-shadow:0 1px 2px #0f172a0a}.app-brand{font-weight:700;font-size:1rem;color:var(--brand);text-decoration:none;letter-spacing:-.02em}.header-user{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .75rem}.group-switch select{font-size:.875rem;padding:.35rem .5rem;border-radius:.5rem;border:1px solid var(--border)}.user-email{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.muted{color:var(--muted)}.small{font-size:.8125rem}.banner.error{background:#fef2f2;color:#b91c1c;padding:.75rem 1rem;border-radius:.5rem;margin-bottom:1rem}.card{background:var(--card);border:1px solid var(--border);border-radius:.75rem;padding:1rem}.page{max-width:36rem;margin:0 auto;padding:1rem 1rem 2rem}.page-header h1{margin:0 0 .25rem;font-size:1.5rem}.form-row{display:grid;gap:.75rem}.auth-form label,.form-row label:not(.checkbox-label){display:grid;gap:.25rem;font-size:.875rem}.auth-form input:not([type=checkbox]):not([type=radio]),.form-row input:not([type=checkbox]):not([type=radio]),.form-row select,.auth-form select{font:inherit;padding:.5rem .625rem;border-radius:.5rem;border:1px solid var(--border);width:100%;box-sizing:border-box;background:#fff;color:inherit}.auth-form input:focus-visible,.form-row input:focus-visible,.form-row select:focus-visible,.auth-form select:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.auth-form{display:flex;flex-direction:column;gap:1rem;margin-top:1rem}.auth-form .field-error{color:#b91c1c;font-size:.8125rem;line-height:1.35}.auth-form input.input-invalid{border-color:#fca5a5}.auth-form input.input-invalid:focus-visible{outline-color:#b91c1c}.auth-page{width:100%;max-width:24rem}.auth-card{padding:1.5rem}.auth-card h1{margin:0 0 .25rem;font-size:1.5rem}.auth-card a{color:var(--brand)}.app-main--auth{display:flex;flex:1;align-items:center;justify-content:center;padding:1.5rem}.app-brand:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.main-nav{display:flex;flex-wrap:wrap;gap:.35rem}.main-nav a{font-size:.875rem;padding:.45rem .85rem;border-radius:.6rem;text-decoration:none;color:#334155;border:1px solid transparent;transition:background .15s ease,color .15s ease,border-color .15s ease}.main-nav a:hover{background:#e2e8f0;color:#0f172a}.main-nav a.active{background:#ccfbf1;border-color:#99f6e4;color:var(--brand);font-weight:600}.main-nav a.nav-focus{font-weight:600}.main-nav a:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.app-main{flex:1}.btn-as-link{display:inline-flex;align-items:center;justify-content:center;font-size:.875rem;text-decoration:none}.btn-as-link:hover{background:#f1f5f9}label.btn-file-upload{display:inline-flex;align-items:center;justify-content:center;margin:0;font-size:.875rem}label.btn-file-upload:focus-within{outline:2px solid var(--brand);outline-offset:2px}label.btn-file-upload span{pointer-events:none}.btn{font:inherit;cursor:pointer;border-radius:.5rem;padding:.5rem .75rem;border:1px solid transparent}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{background:var(--brand);color:#fff}.btn.primary:hover:not(:disabled){background:#0d9488}.btn.danger.ghost{background:transparent;color:#b91c1c;border-color:#fecaca}.btn.danger.ghost:hover:not(:disabled){background:#fef2f2}.btn.ghost{background:transparent;color:#334155;border-color:var(--border, #cbd5e1)}.btn.ghost:hover:not(:disabled){background:#f1f5f9}
