.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;padding:0.7rem 1.25rem;border-radius:var(--radius-md);border:1px solid transparent;font-family:var(--font-display);font-weight:600;font-size:var(--text-sm);letter-spacing:-0.005em;line-height:1;text-decoration:none;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background var(--dur-quick) var(--ease-out),color var(--dur-quick) var(--ease-out),border-color var(--dur-quick) var(--ease-out),transform var(--dur-quick) var(--ease-out),box-shadow var(--dur-quick) var(--ease-out);}.btn:active:not(:disabled):not(.is-loading){transform:scale(0.975);transition-duration:80ms;}.btn:focus-visible{outline:none;box-shadow:var(--focus-ring);}.btn:disabled,.btn.is-loading{opacity:0.55;cursor:not-allowed;pointer-events:none;}.btn-primary{background:var(--color-accent);color:var(--color-on-accent);border-color:var(--color-accent);box-shadow:var(--shadow-sm);}@media (hover:hover){.btn-primary:hover:not(:disabled):not(.is-loading){background:color-mix(in srgb,var(--color-accent) 88%,black);border-color:color-mix(in srgb,var(--color-accent) 88%,black);box-shadow:var(--shadow-md);}}.btn-ghost{background:transparent;color:var(--color-ink);border-color:var(--color-line-strong);}@media (hover:hover){.btn-ghost:hover:not(:disabled):not(.is-loading){border-color:var(--color-accent);color:var(--color-accent);background:var(--color-accent-soft);}}.btn-sm{min-height:36px;padding:0.5rem 0.95rem;font-size:var(--text-xs);}.btn-lg{min-height:52px;padding:1rem 1.6rem;font-size:var(--text-base);}.btn-block{width:100%;}.btn-arrow{display:inline-block;transition:transform var(--dur-quick) var(--ease-out);}@media (hover:hover){.btn:hover:not(:disabled) .btn-arrow{transform:translateX(3px);}}.btn.is-loading{color:transparent !important;position:relative;}.btn.is-loading::after{content:"";position:absolute;top:50%;left:50%;width:1.15em;height:1.15em;margin:-0.575em 0 0 -0.575em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;color:var(--color-on-accent);animation:btn-spin 640ms linear infinite;}.btn-ghost.is-loading::after,.btn-danger.is-loading::after{color:var(--color-ink);}@keyframes btn-spin{to{transform:rotate(360deg);}}@media (prefers-reduced-motion:reduce){.btn.is-loading::after{animation-duration:1400ms;}}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:var(--radius-md);color:var(--color-ink-soft);background:transparent;border:1px solid var(--color-line);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:color var(--dur-quick) var(--ease-out),border-color var(--dur-quick) var(--ease-out),background var(--dur-quick) var(--ease-out);}.icon-btn svg{width:18px;height:18px;display:block;}.icon-btn:focus-visible{outline:none;box-shadow:var(--focus-ring);}@media (hover:hover){.icon-btn:hover{color:var(--color-ink);border-color:var(--color-accent-line);background:var(--color-accent-soft);}}.icon-btn.theme-toggle .icon-moon{display:none;}[data-theme="dark"] .icon-btn.theme-toggle .icon-sun{display:none;}[data-theme="dark"] .icon-btn.theme-toggle .icon-moon{display:block;}.avatar{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:var(--radius-full);background:var(--color-accent-soft);color:var(--color-accent);font-family:var(--font-display);font-weight:700;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:0;flex-shrink:0;border:1px solid var(--color-accent-line);overflow:hidden;}.avatar img{width:100%;height:100%;object-fit:cover;display:block;}.avatar-sm{width:1.9rem;height:1.9rem;font-size:0.7rem;}.avatar-lg{width:4.5rem;height:4.5rem;font-size:1.5rem;border-width:2px;}.modal-overlay{position:fixed;inset:0;z-index:9000;display:flex;align-items:center;justify-content:center;padding:var(--space-4);opacity:0;transition:opacity 240ms var(--ease-out);}.modal-overlay.is-visible{opacity:1;}.modal-overlay[hidden]{display:none !important;}.modal-backdrop{position:absolute;inset:0;background:rgba(8,14,18,0.55);backdrop-filter:blur(8px) saturate(130%);-webkit-backdrop-filter:blur(8px) saturate(130%);cursor:zoom-out;}@media (max-width:640px){.modal-overlay{align-items:flex-end;padding:0;}}.alert{display:flex;align-items:flex-start;gap:var(--space-3);padding:0.85rem 1rem;border-radius:var(--radius-md);border:1px solid;font-family:var(--font-body);font-size:var(--text-sm);line-height:1.5;margin-bottom:var(--space-4);}.alert svg{width:18px;height:18px;flex-shrink:0;margin-top:1px;}.alert a{text-decoration:underline;font-weight:600;}.alert-error{background:var(--color-danger-soft);border-color:var(--color-danger-line);color:var(--color-danger);}.alert-success{background:var(--color-success-soft);border-color:var(--color-success-line);color:var(--color-success);}.alert-warning{background:var(--color-warm-soft);border-color:var(--color-warm-line);color:var(--color-warm);}.form-group{margin-bottom:var(--space-5);}.form-group>label,.form-label{display:block;margin-bottom:var(--space-2);font-family:var(--font-display);font-weight:600;font-size:var(--text-xs);letter-spacing:0.06em;text-transform:uppercase;color:var(--color-ink-soft);}.form-control{display:block;width:100%;min-height:44px;padding:0.75rem 1rem;border:1px solid var(--color-line-strong);border-radius:var(--radius-md);background:var(--color-surface);font-family:var(--font-body);font-size:max(16px,var(--text-base));color:var(--color-ink);outline:none;transition:border-color var(--dur-quick) var(--ease-out),box-shadow var(--dur-quick) var(--ease-out),background var(--dur-quick) var(--ease-out);}.form-control:focus{border-color:var(--color-accent);box-shadow:var(--focus-ring);}.form-control::placeholder{color:var(--color-ink-faint);}.form-control:disabled{background:var(--color-surface-2);color:var(--color-ink-soft);cursor:not-allowed;}.form-control.is-invalid{border-color:var(--color-danger);box-shadow:0 0 0 3px var(--color-danger-soft);}.form-hint{margin-top:var(--space-2);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:0.04em;color:var(--color-ink-faint);}.form-error{margin-top:var(--space-2);font-family:var(--font-body);font-size:var(--text-sm);line-height:1.45;color:var(--color-danger);}select.form-control{appearance:none;-webkit-appearance:none;padding-right:2.75rem;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2357625c' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 0.95rem center;background-size:16px 16px;}[data-theme="dark"] select.form-control{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239aa69f' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");}select.form-control::-ms-expand{display:none;}textarea.form-control{min-height:6rem;padding-top:0.85rem;padding-bottom:0.85rem;line-height:1.55;resize:vertical;}.field{position:relative;display:block;}.field-icon{position:absolute;left:0.95rem;top:50%;transform:translateY(-50%);width:18px;height:18px;color:var(--color-ink-faint);pointer-events:none;transition:color var(--dur-quick) var(--ease-out);}.field-icon svg{width:100%;height:100%;display:block;}.field .form-control{padding-left:2.75rem;padding-right:2.75rem;}.field:focus-within .field-icon{color:var(--color-accent);}.field-action{position:absolute;right:0.35rem;top:50%;transform:translateY(-50%);width:2.25rem;height:2.25rem;display:inline-flex;align-items:center;justify-content:center;color:var(--color-ink-soft);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:color var(--dur-quick) var(--ease-out),background var(--dur-quick) var(--ease-out);}.field-action svg{width:18px;height:18px;}.field-action .icon-eye-off{display:none;}.field-action.is-revealed .icon-eye{display:none;}.field-action.is-revealed .icon-eye-off{display:block;}@media (hover:hover){.field-action:hover{color:var(--color-ink);background:color-mix(in srgb,var(--color-ink) 6%,transparent);}}.badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25rem;height:1.25rem;padding:0 6px;border-radius:var(--radius-full);background:var(--color-accent);color:var(--color-on-accent);font-family:var(--font-display);font-weight:700;font-size:0.625rem;line-height:1;letter-spacing:0;flex-shrink:0;}.badge-danger{background:#ef4444;color:#ffffff;}.badge-warm{background:var(--color-warm);color:#ffffff;}.badge[hidden]{display:none;}.toast-container{position:fixed;left:50%;bottom:calc(var(--space-5) + var(--safe-bottom));transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:var(--space-2);max-width:calc(100vw - 2rem);pointer-events:none;z-index:var(--z-toast);}.toast{pointer-events:auto;max-width:100%;padding:0.7rem 1.15rem;background:var(--color-ink);color:var(--color-bg);border-radius:var(--radius-full);font-family:var(--font-display);font-size:var(--text-sm);font-weight:500;line-height:1.3;box-shadow:var(--shadow-md);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transform:translateY(1rem) scale(0.96);transition:opacity var(--dur-normal) var(--ease-out),transform var(--dur-normal) var(--ease-spring);}.toast.is-visible{opacity:1;transform:translateY(0) scale(1);}.toast.toast-error{background:var(--color-danger);color:#ffffff;}[data-theme="dark"] .toast.toast-error{background:var(--color-danger);color:#1a0000;}@media (max-width:900px){.toast-container{bottom:calc(var(--dock-height) + var(--space-4) + var(--safe-bottom));}}.spinner{width:1.25rem;height:1.25rem;border:2px solid color-mix(in srgb,var(--color-ink) 12%,transparent);border-top-color:var(--color-accent);border-radius:50%;animation:spinner-spin 700ms linear infinite;display:inline-block;}@keyframes spinner-spin{to{transform:rotate(360deg);}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:1400ms;}}.divider{height:1px;background:var(--color-line);border:none;margin:var(--space-5) 0;}.confirm-modal{width:100%;max-width:24rem;padding:var(--space-5);background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);transform:translateY(12px) scale(0.96);opacity:0;transition:transform var(--dur-slow) var(--ease-spring),opacity var(--dur-normal) var(--ease-out);}.confirm-overlay.is-visible .confirm-modal{transform:translateY(0) scale(1);opacity:1;}.confirm-text{margin:0 0 var(--space-5);font-family:var(--font-body);font-size:var(--text-base);line-height:1.5;color:var(--color-ink);text-align:center;text-wrap:pretty;}.confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);}.confirm-actions .btn{min-height:44px;width:100%;}.confirm-modal.is-danger [data-confirm-ok]{background:var(--color-danger);border-color:var(--color-danger);color:#ffffff;}@media (hover:hover){.confirm-modal.is-danger [data-confirm-ok]:hover:not(:disabled){background:color-mix(in srgb,var(--color-danger) 88%,black);border-color:color-mix(in srgb,var(--color-danger) 88%,black);}}@media (max-width:640px){.confirm-overlay{align-items:flex-end;padding:0;}.confirm-modal{max-width:none;border-radius:var(--radius-lg) var(--radius-lg) 0 0;padding:var(--space-5) var(--space-5) calc(var(--space-5) + var(--safe-bottom));transform:translateY(24px) scale(1);}.confirm-overlay.is-visible .confirm-modal{transform:translateY(0) scale(1);}}@media (prefers-reduced-motion:reduce){.confirm-overlay,.confirm-modal{transition-duration:1ms;}.confirm-modal{transform:none;}}.site-footer{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding-top:var(--space-5);margin-top:var(--space-6);border-top:1px solid color-mix(in srgb,var(--color-line) 60%,transparent);font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:0.12em;text-transform:uppercase;color:var(--color-ink-faint);text-align:center;}.site-footer-brand{margin:0;color:var(--color-ink-faint);}.site-footer-links{display:flex;align-items:center;gap:10px;margin:0;}.site-footer-links a{color:var(--color-accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;padding:4px 6px;margin:-4px -6px;border-radius:var(--radius-sm);transition:color 180ms var(--ease-out),background 180ms var(--ease-out),text-decoration-thickness 180ms var(--ease-out);}.site-footer-links a:focus-visible{outline:none;box-shadow:var(--focus-ring);}@media (hover:hover){.site-footer-links a:hover{color:color-mix(in srgb,var(--color-accent) 85%,black);background:var(--color-accent-soft);text-decoration-thickness:2px;}}[data-theme="dark"] .site-footer-links a:hover{color:color-mix(in srgb,var(--color-accent) 85%,white);}.site-footer-links span[aria-hidden="true"]{color:var(--color-ink-faint);opacity:0.5;}.lightbox[hidden]{display:none;}.lightbox{position:fixed;inset:0;z-index:9700;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity 240ms var(--ease-out);isolation:isolate;}.lightbox.is-visible{opacity:1;}.lightbox-backdrop{position:absolute;inset:0;background:rgba(8,14,18,0.9);backdrop-filter:blur(14px) saturate(120%);-webkit-backdrop-filter:blur(14px) saturate(120%);cursor:zoom-out;}.lightbox-counter{position:absolute;top:calc(var(--safe-top) + 16px);left:calc(var(--safe-left) + 16px);z-index:2;padding:6px 13px;background:rgba(255,255,255,0.14);backdrop-filter:blur(10px) saturate(140%);-webkit-backdrop-filter:blur(10px) saturate(140%);border:1px solid rgba(255,255,255,0.1);border-radius:var(--radius-full);font-family:var(--font-mono);font-size:0.75rem;font-weight:500;letter-spacing:0.06em;color:#ffffff;line-height:1;user-select:none;}.lightbox-close{position:absolute;top:calc(var(--safe-top) + 16px);right:calc(var(--safe-right) + 16px);z-index:3;display:inline-flex;align-items:center;justify-content:center;width:2.75rem;height:2.75rem;border-radius:50%;background:rgba(255,255,255,0.14);backdrop-filter:blur(10px) saturate(140%);-webkit-backdrop-filter:blur(10px) saturate(140%);border:1px solid rgba(255,255,255,0.1);color:#ffffff;cursor:pointer;padding:0;transition:background 180ms var(--ease-out),transform 140ms var(--ease-out);}.lightbox-close svg{width:20px;height:20px;display:block;}@media (hover:hover){.lightbox-close:hover{background:rgba(255,255,255,0.24);}}.lightbox-close:active{transform:scale(0.92);}.lightbox-close:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,0.45);}.lightbox-img{position:relative;z-index:2;max-width:min(92vw,900px);max-height:88vh;width:auto;height:auto;object-fit:contain;border-radius:var(--radius-md);box-shadow:0 24px 72px -24px rgba(0,0,0,0.65);user-select:none;-webkit-user-drag:none;}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;display:inline-flex;align-items:center;justify-content:center;width:3rem;height:3rem;border-radius:50%;background:rgba(255,255,255,0.14);backdrop-filter:blur(10px) saturate(140%);-webkit-backdrop-filter:blur(10px) saturate(140%);border:1px solid rgba(255,255,255,0.1);color:#ffffff;cursor:pointer;padding:0;transition:background 180ms var(--ease-out),transform 140ms var(--ease-out);}.lightbox-nav[hidden]{display:none;}.lightbox-nav svg{width:22px;height:22px;display:block;}.lightbox-nav-prev{left:calc(var(--safe-left) + 16px);}.lightbox-nav-next{right:calc(var(--safe-right) + 16px);}@media (hover:hover){.lightbox-nav:hover{background:rgba(255,255,255,0.24);}}.lightbox-nav:active{transform:translateY(-50%) scale(0.92);}.lightbox-nav:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(255,255,255,0.45);}@media (max-width:640px){.lightbox-counter{font-size:0.6875rem;padding:5px 11px;}.lightbox-close{width:2.5rem;height:2.5rem;}.lightbox-nav{width:2.5rem;height:2.5rem;}.lightbox-img{max-width:96vw;max-height:80vh;border-radius:var(--radius-sm);}}@media (prefers-reduced-motion:reduce){.lightbox{transition:opacity 180ms var(--ease-out);}.lightbox-close,.lightbox-nav{transition-duration:1ms;}}.scroll-top{position:fixed;right:16px;bottom:16px;z-index:var(--z-sticky);display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;background:var(--color-surface);color:var(--color-ink-soft);border:1px solid color-mix(in srgb,var(--color-line) 85%,transparent);border-radius:50%;box-shadow:0 1px 2px -1px rgba(12,30,38,0.08),0 8px 20px -10px rgba(12,30,38,0.2);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;opacity:0;transform:translateY(8px) scale(0.94);transition:opacity 220ms var(--ease-out),transform 260ms var(--ease-spring),background 180ms var(--ease-out),border-color 180ms var(--ease-out),box-shadow 200ms var(--ease-out);}.scroll-top[hidden]{display:none !important;}.scroll-top.is-visible{opacity:1;transform:translateY(0) scale(1);}.scroll-top svg{width:20px;height:20px;display:block;}@media (hover:hover){.scroll-top:hover{background:var(--color-accent-soft);color:var(--color-accent);border-color:var(--color-accent-line);box-shadow:0 1px 2px -1px rgba(12,30,38,0.08),0 12px 28px -12px rgba(12,30,38,0.25);}.scroll-top:hover svg{transform:translateY(-1px);}}.scroll-top svg{transition:transform 200ms var(--ease-out);}.scroll-top:active{transform:translateY(0) scale(0.94);transition-duration:90ms;}.scroll-top:focus-visible{outline:none;box-shadow:var(--focus-ring);}[data-theme="dark"] .scroll-top{border-color:color-mix(in srgb,var(--color-line) 100%,transparent);box-shadow:0 1px 2px -1px rgba(0,0,0,0.5),0 8px 20px -10px rgba(0,0,0,0.6);}@media (max-width:900px){.scroll-top{bottom:calc(var(--dock-height) + var(--safe-bottom) + 12px);right:12px;}}@media (prefers-reduced-motion:reduce){.scroll-top{transition:opacity 160ms var(--ease-out);transform:none;}.scroll-top.is-visible{transform:none;}.scroll-top:hover svg{transform:none;}}.install-modal{position:relative;z-index:2;width:100%;max-width:380px;background:var(--color-surface);border:1px solid var(--color-line);border-radius:var(--radius-lg);box-shadow:0 1px 2px -1px rgba(12,30,38,0.1),0 32px 64px -24px rgba(12,30,38,0.4);transform:translateY(20px) scale(0.94);opacity:0;transition:transform 340ms var(--ease-spring),opacity 240ms var(--ease-out);overflow:hidden;}.install-modal-overlay.is-visible .install-modal{transform:translateY(0) scale(1);opacity:1;}[data-theme="dark"] .install-modal{box-shadow:0 1px 2px -1px rgba(0,0,0,0.5),0 32px 64px -24px rgba(0,0,0,0.75);}.install-modal-close{position:absolute;top:12px;right:12px;z-index:3;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:transparent;border:none;color:var(--color-ink-soft);cursor:pointer;padding:0;transition:background 160ms var(--ease-out),color 160ms var(--ease-out);}.install-modal-close svg{width:16px;height:16px;display:block;}@media (hover:hover){.install-modal-close:hover{background:color-mix(in srgb,var(--color-ink) 8%,transparent);color:var(--color-ink);}}.install-modal-close:focus-visible{outline:none;box-shadow:var(--focus-ring);}.install-modal-hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:32px 24px 20px;gap:10px;touch-action:none;}.install-modal-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:14px;background:linear-gradient( 140deg,var(--color-accent) 0%,color-mix(in srgb,var(--color-accent) 55%,var(--color-ink)) 100% );color:var(--color-on-accent);box-shadow:0 1px 0 0 color-mix(in srgb,white 30%,transparent) inset,0 12px 24px -10px color-mix(in srgb,var(--color-accent) 55%,transparent);}.install-modal-icon svg{width:32px;height:32px;}.install-modal-title{margin:0;font-family:var(--font-display);font-weight:800;font-size:1.25rem;letter-spacing:-0.03em;color:var(--color-ink);}.install-modal-subtitle{margin:0;font-family:var(--font-body);font-size:0.875rem;line-height:1.5;color:var(--color-ink-soft);max-width:30ch;text-wrap:pretty;}.install-modal-body{padding:0 24px 20px;display:flex;flex-direction:column;align-items:center;gap:14px;}.install-qr{display:flex;align-items:center;justify-content:center;padding:12px;background:#ffffff;border-radius:var(--radius-md);border:1px solid color-mix(in srgb,var(--color-line) 55%,transparent);}.install-qr svg{display:block;width:168px;height:168px;}.install-qr-loading,.install-qr-url{font-size:12px;color:#666;font-family:var(--font-mono);word-break:break-all;text-align:center;padding:24px 12px;max-width:168px;}.install-modal-hint{margin:0;font-family:var(--font-body);font-size:0.8125rem;line-height:1.5;color:var(--color-ink-faint);text-align:center;max-width:34ch;text-wrap:pretty;}.install-steps{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px;width:100%;text-align:left;}.install-steps li{display:flex;align-items:flex-start;gap:12px;font-family:var(--font-body);font-size:0.875rem;line-height:1.5;color:var(--color-ink-soft);}.install-steps strong{color:var(--color-ink);font-weight:600;}.install-step-num{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;border-radius:50%;background:var(--color-accent-soft);color:var(--color-accent);font-family:var(--font-display);font-weight:700;font-size:0.75rem;line-height:1;}.install-modal-actions{display:flex;flex-direction:column;gap:8px;padding:0 24px 24px;}.install-btn{display:inline-flex;align-items:center;justify-content:center;width:100%;min-height:46px;padding:0 20px;border-radius:var(--radius-md);font-family:var(--font-display);font-weight:700;font-size:0.9375rem;letter-spacing:-0.005em;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background 180ms var(--ease-out),border-color 180ms var(--ease-out),transform 140ms var(--ease-out);}.install-btn--primary{background:var(--color-accent);color:var(--color-on-accent);border:1px solid var(--color-accent);box-shadow:0 6px 20px -8px color-mix(in srgb,var(--color-accent) 55%,transparent);}@media (hover:hover){.install-btn--primary:hover{background:color-mix(in srgb,var(--color-accent) 88%,black);border-color:color-mix(in srgb,var(--color-accent) 88%,black);}}.install-btn--ghost{background:transparent;color:var(--color-ink-soft);border:1px solid color-mix(in srgb,var(--color-line) 70%,transparent);}@media (hover:hover){.install-btn--ghost:hover{background:color-mix(in srgb,var(--color-ink) 5%,transparent);color:var(--color-ink);}}.install-btn:active{transform:scale(0.98);transition-duration:90ms;}.install-btn:focus-visible{outline:none;box-shadow:var(--focus-ring);}@media (max-width:640px){.install-modal-overlay{align-items:flex-end;padding:0;}.install-modal{max-width:none;border-radius:var(--radius-lg) var(--radius-lg) 0 0;border-bottom:none;transform:translateY(40px);}.install-modal-overlay.is-visible .install-modal{transform:translateY(0);}.install-modal-hero{padding-top:28px;}.install-modal-actions{padding-bottom:calc(24px + var(--safe-bottom));}}@media (prefers-reduced-motion:reduce){.install-modal-overlay,.install-modal{transition-duration:160ms;}.install-modal{transform:none;}}.browser-hint{position:fixed;top:calc(var(--safe-top) + 10px);left:12px;right:12px;z-index:calc(var(--z-sticky) + 20);display:flex;align-items:flex-start;gap:12px;padding:12px 12px 12px 14px;background:var(--color-surface);border:1px solid color-mix(in srgb,var(--color-line) 85%,transparent);border-radius:var(--radius-md);box-shadow:0 1px 2px -1px rgba(12,30,38,0.08),0 16px 32px -12px rgba(12,30,38,0.24);opacity:0;transform:translateY(-12px);transition:opacity 240ms var(--ease-out),transform 280ms var(--ease-spring);}.browser-hint.is-visible{opacity:1;transform:translateY(0);}[data-theme="dark"] .browser-hint{box-shadow:0 1px 2px -1px rgba(0,0,0,0.5),0 16px 32px -12px rgba(0,0,0,0.7);}.browser-hint-icon{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--color-accent-soft);color:var(--color-accent);}.browser-hint-icon svg{width:18px;height:18px;display:block;}.browser-hint-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:8px;}.browser-hint-text{margin:0;font-family:var(--font-body);font-size:0.8125rem;line-height:1.4;color:var(--color-ink-soft);}.browser-hint-actions{display:flex;gap:8px;}.browser-hint-btn{display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 14px;border-radius:var(--radius-full);font-family:var(--font-display);font-weight:700;font-size:0.75rem;letter-spacing:-0.005em;text-decoration:none;transition:background 160ms var(--ease-out),border-color 160ms var(--ease-out);}.browser-hint-btn--primary{background:var(--color-accent);color:var(--color-on-accent);border:1px solid var(--color-accent);}@media (hover:hover){.browser-hint-btn--primary:hover{background:color-mix(in srgb,var(--color-accent) 88%,black);}}.browser-hint-btn--ghost{background:transparent;color:var(--color-ink-soft);border:1px solid color-mix(in srgb,var(--color-line) 70%,transparent);}@media (hover:hover){.browser-hint-btn--ghost:hover{background:color-mix(in srgb,var(--color-ink) 6%,transparent);}}.browser-hint-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border-radius:50%;background:transparent;border:none;color:var(--color-ink-faint);cursor:pointer;transition:background 160ms var(--ease-out),color 160ms var(--ease-out);}.browser-hint-close svg{width:14px;height:14px;display:block;}@media (hover:hover){.browser-hint-close:hover{background:color-mix(in srgb,var(--color-ink) 8%,transparent);color:var(--color-ink);}}@media (prefers-reduced-motion:reduce){.browser-hint{transition:opacity 160ms var(--ease-out);transform:none;}.browser-hint.is-visible{transform:none;}}.sw-update-banner{position:fixed;top:calc(var(--safe-top) + 12px);left:12px;right:12px;z-index:calc(var(--z-sticky) + 30);display:flex;align-items:center;gap:12px;padding:10px 12px 10px 16px;max-width:480px;margin:0 auto;background:var(--color-ink);color:var(--color-bg);border-radius:var(--radius-md);box-shadow:0 12px 32px -12px rgba(0,0,0,0.35);opacity:0;transform:translateY(-12px);transition:opacity 240ms var(--ease-out),transform 280ms var(--ease-spring);}.sw-update-banner.is-visible{opacity:1;transform:translateY(0);}.sw-update-text{flex:1;min-width:0;font-family:var(--font-display);font-weight:600;font-size:0.875rem;letter-spacing:-0.005em;line-height:1.3;}.sw-update-btn{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;height:32px;padding:0 14px;background:var(--color-accent);color:var(--color-on-accent);border:none;border-radius:var(--radius-full);font-family:var(--font-display);font-weight:700;font-size:0.8125rem;cursor:pointer;transition:background 160ms var(--ease-out);}@media (hover:hover){.sw-update-btn:hover{background:color-mix(in srgb,var(--color-accent) 88%,black);}}.sw-update-btn:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--color-accent) 40%,transparent);}.sw-update-close{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;background:transparent;border:none;color:var(--color-bg);opacity:0.6;cursor:pointer;border-radius:50%;transition:opacity 160ms var(--ease-out);}.sw-update-close svg{width:14px;height:14px;display:block;}@media (hover:hover){.sw-update-close:hover{opacity:1;}}@media (prefers-reduced-motion:reduce){.sw-update-banner{transition:opacity 160ms var(--ease-out);transform:none;}.sw-update-banner.is-visible{transform:none;}}.avatar.has-image{background:var(--color-surface-2);border-color:var(--color-line);padding:0;}.avatar img{width:100%;height:100%;object-fit:cover;display:block;border-radius:inherit;}.verse-card{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-7) var(--space-4);overflow:hidden;}.verse-content{position:relative;z-index:1;display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-4);}.verse-content::before{content:"";position:absolute;inset:0;background:radial-gradient( ellipse at center,color-mix(in srgb,var(--color-accent) 10%,transparent) 0%,transparent 70% );pointer-events:none;z-index:-1;}[data-theme="dark"] .verse-content::before{background:radial-gradient( ellipse at center,color-mix(in srgb,var(--color-accent) 15%,transparent) 0%,transparent 70% );}.verse-card::before{content:"“";position:absolute;top:0;left:0;font-family:var(--font-verse);font-size:clamp(6rem,15vw,12rem);line-height:1;color:var(--color-accent);opacity:0.15;pointer-events:none;z-index:0;}.verse-card::after{content:"”";position:absolute;bottom:-40px;right:0;font-family:var(--font-verse);font-size:clamp(6rem,15vw,12rem);line-height:1;color:var(--color-accent);opacity:0.15;pointer-events:none;z-index:0;}.verse-text{margin:0;font-family:var(--font-verse);font-style:italic;font-weight:400;font-size:clamp(1.75rem,5vw,2.5rem);line-height:1.3;letter-spacing:-0.01em;color:var(--color-ink);text-wrap:balance;}.verse-ref{display:block;font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;letter-spacing:0.18em;text-transform:uppercase;color:var(--color-accent);}.verse-ref::before,.verse-ref::after{content:"—";margin:0 8px;opacity:0.5;}.verse-card--feed{padding:var(--space-6) var(--space-3);}.verse-card--feed .verse-text{font-size:clamp(1.5rem,4vw,2rem);}.verse-card--feed::before{font-size:6rem;top:-10px;}.verse-card--feed::after{font-size:6rem;bottom:-30px;}