:root{--background: #0b0f14;--background-elevated: #121820;--surface: #121820;--surface-variant: #1a222d;--primary: #4a90d9;--on-primary: #ffffff;--primary-container: #1e3a5f;--on-primary-container: #d6e9ff;--on-surface: #ffffff;--on-surface-variant: #a9b4c0;--outline: #2a3442;--error: #e05252;--ok: #4a90d9}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100vh}body{background:linear-gradient(180deg,var(--background),var(--background-elevated));color:var(--on-surface);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.45;-webkit-font-smoothing:antialiased}code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.92em}a{color:var(--primary)}.app-shell{max-width:760px;margin:0 auto;padding:16px 16px 96px}.admin-shell{padding:16px 24px 48px}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:12px 16px;background:#0b0f14eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--outline)}.topbar .brand{font-weight:700;letter-spacing:.02em;color:var(--on-surface);text-decoration:none;margin-right:auto}.topbar .who{color:var(--on-surface-variant);font-size:13px}.bottom-nav{position:fixed;bottom:0;left:0;right:0;z-index:10;display:flex;justify-content:center;gap:4px;padding:6px 12px calc(6px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--outline)}.bottom-nav a{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:84px;padding:8px 10px;border-radius:12px;color:var(--on-surface-variant);text-decoration:none;font-size:12px;font-weight:600}.bottom-nav a.active{background:var(--primary-container);color:var(--on-primary-container)}.page-title{font-size:22px;margin:18px 0 6px}.page-subtitle{color:var(--on-surface-variant);margin:0 0 18px;font-size:14px}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row-end{justify-content:flex-end}.spacer{flex:1}.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.92em}.dim{color:var(--on-surface-variant)}.small{font-size:13px}.muted-link{color:var(--on-surface-variant)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px 16px;border-radius:12px;border:1px solid transparent;background:var(--surface-variant);color:var(--on-surface);font-size:14px;font-weight:600;cursor:pointer;text-decoration:none;transition:filter .15s ease,opacity .15s ease}.btn:hover:not(:disabled){filter:brightness(1.12)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--primary);color:var(--on-primary)}.btn.danger{background:var(--error);color:#fff}.btn.ghost{background:transparent;border-color:var(--outline);color:var(--on-surface)}.btn.small{padding:6px 12px;font-size:13px}.btn.block{width:100%}.card{background:var(--surface);border:1px solid var(--outline);border-radius:16px;padding:16px;margin-bottom:12px}.card.elevated{background:var(--surface-variant)}.card h2,.card h3{margin:0 0 10px;font-size:16px}.key-card{display:flex;flex-direction:column;gap:8px;color:inherit;text-decoration:none;cursor:pointer}.key-card .title-line{display:flex;align-items:center;gap:8px}.key-card .name{font-size:17px;font-weight:700}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}.stat{background:var(--surface-variant);border-radius:10px;padding:8px 10px}.stat .label{color:var(--on-surface-variant);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.stat .value{font-size:14px;font-weight:600}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;background:var(--primary-container);color:var(--on-primary-container)}.badge.mine{background:var(--primary);color:var(--on-primary)}.badge.warn{background:var(--error);color:#fff}.badge.muted{background:var(--surface-variant);color:var(--on-surface-variant)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:13px;font-weight:600;color:var(--on-surface-variant)}.input,select.input,textarea.input{width:100%;padding:10px 12px;border-radius:12px;border:1px solid var(--outline);background:var(--surface-variant);color:var(--on-surface);font-size:15px;font-family:inherit}.input:focus{outline:2px solid var(--primary);outline-offset:1px}.input::placeholder{color:var(--on-surface-variant)}.field .hint{font-size:12px;color:var(--on-surface-variant)}.field .error{font-size:13px;color:var(--error)}.error-banner{display:flex;align-items:center;gap:8px;background:var(--error);color:#fff;border-radius:12px;padding:10px 14px;margin-bottom:12px;font-size:14px}.info-banner{background:var(--primary-container);color:var(--on-primary-container);border-radius:12px;padding:10px 14px;margin-bottom:12px;font-size:14px}.empty{text-align:center;color:var(--on-surface-variant);padding:36px 16px}.spinner{display:inline-block;width:22px;height:22px;border:2px solid var(--outline);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.center-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--outline);border-radius:18px;padding:28px 24px}.auth-card h1{font-size:22px;margin:0 0 4px}.auth-card .lead{color:var(--on-surface-variant);font-size:14px;margin:0 0 18px}.auth-card .alt{margin-top:16px;font-size:14px;color:var(--on-surface-variant);text-align:center}.modal-overlay{position:fixed;inset:0;z-index:40;background:#05080cb3;display:flex;align-items:center;justify-content:center;padding:20px}.modal{width:100%;max-width:440px;max-height:90vh;overflow-y:auto;background:var(--background-elevated);border:1px solid var(--outline);border-radius:18px;padding:20px}.modal h2{margin:0 0 12px;font-size:18px}.modal .actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}table{width:100%;border-collapse:collapse;font-size:14px}th{text-align:left;color:var(--on-surface-variant);font-size:12px;text-transform:uppercase;letter-spacing:.05em;padding:8px 10px;border-bottom:1px solid var(--outline)}td{padding:9px 10px;border-bottom:1px solid var(--outline);vertical-align:top;overflow-wrap:anywhere}.tabs{display:flex;gap:6px;margin-bottom:16px;flex-wrap:wrap}.tabs a{padding:7px 14px;border-radius:999px;border:1px solid var(--outline);color:var(--on-surface-variant);text-decoration:none;font-size:14px;font-weight:600}.tabs a.active{background:var(--primary-container);border-color:var(--primary-container);color:var(--on-primary-container)}.qr{display:block;margin:8px auto;width:200px;height:200px;border-radius:12px;background:#fff;padding:8px}.share-code{font-size:22px;letter-spacing:.18em;text-align:center;font-weight:700}.history-row{display:flex;align-items:baseline;gap:10px;padding:9px 4px;border-bottom:1px solid var(--outline);font-size:14px}.history-row:last-child{border-bottom:none}.history-row .verb{font-weight:700}.history-row .when{margin-left:auto;color:var(--on-surface-variant);font-size:12px;white-space:nowrap}.detail-list{display:grid;grid-template-columns:max-content 1fr;gap:6px 16px;margin:0}.detail-list dt{color:var(--on-surface-variant);font-size:13px}.detail-list dd{margin:0;word-break:break-all}.app-only-note{display:block;margin-top:4px;color:var(--on-surface-variant);font-size:12px}.locked-note{color:var(--error);font-weight:600}.footer-links{margin-top:20px;text-align:center;font-size:13px}
