:root{--color-bg:#0f1117;--color-surface:#1a1d27;--color-surface-muted:#22262f;--color-border:#2e3340;--color-border-input:#3d4454;--color-text:#f3f4f6;--color-text-secondary:#9ca3af;--color-text-muted:#6b7280;--color-accent:#818cf8;--color-accent-hover:#6366f1;--color-accent-strong:#4f46e5;--color-danger:#f87171;--color-success:#34d399;--shadow-sm:0 4px 16px #00000040;--shadow-md:0 4px 12px #00000059;color:var(--color-text);background-color:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-weight:400;line-height:1.5}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{min-height:100vh;margin:0}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;cursor:pointer}input,textarea{font:inherit;color:var(--color-text);background-color:var(--color-surface)}#root{min-height:100vh}.layout{flex-direction:column;min-height:100vh;display:flex}.header{background:var(--color-surface);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex}.logo{color:var(--color-text);font-size:1.25rem;font-weight:700;text-decoration:none}.nav{align-items:center;gap:1rem;display:flex}.nav a{color:var(--color-text-secondary);font-size:.875rem;font-weight:500;text-decoration:none}.nav a:hover{color:var(--color-accent);text-decoration:none}.main{flex:1;width:100%;max-width:960px;margin:0 auto;padding:2rem}.page-center{text-align:center;color:var(--color-text-muted);padding:4rem 1rem}.auth-hero-shell{justify-content:center;align-items:center;display:flex}.auth-hero-shell:not(.auth-hero-shell--login){min-height:calc(100vh - 4.5rem);padding:2rem 0}.layout:has(.auth-hero-shell--login){height:100dvh;min-height:100dvh;max-height:100dvh;overflow:hidden}.main:has(.auth-hero-shell--login){min-height:0;padding:1rem;padding-bottom:max(1rem, env(safe-area-inset-bottom));flex-direction:column;flex:1;justify-content:center;display:flex;overflow:hidden}.auth-hero-shell--login{flex-shrink:0;width:100%;min-height:auto;padding:0}.main:has(.auth-hero-shell--login) .auth-hero-panel{box-sizing:border-box;width:100%;max-width:420px;margin:0 auto}.auth-hero-panel{text-align:center;background:var(--color-surface);border:1px solid var(--color-border);width:100%;max-width:420px;box-shadow:var(--shadow-sm);border-radius:16px;padding:2rem 2rem 2.25rem;position:relative}.auth-hero-panel h1{color:var(--color-text);margin:0 0 .75rem;font-size:2rem}.auth-hero-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent);margin:0 0 .5rem;font-size:.75rem;font-weight:600}.auth-hero-lead{color:var(--color-text-secondary);margin:0 0 1.5rem;line-height:1.6}.auth-hero-panel .error{margin-bottom:1rem}.auth-hero-panel .btn-google,.auth-hero-panel .btn-primary{text-align:center;width:100%}.dashboard-header{margin-bottom:2rem}.dashboard-header h1{margin:0 0 .25rem}.dashboard-header p{color:var(--color-text-muted);margin:0}.card-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;margin-bottom:2rem;padding:1.5rem}.card-form h2{margin-top:0;font-size:1.125rem}.card-form label{margin-bottom:1rem;font-size:.875rem;font-weight:500;display:block}.card-form input,.card-form textarea{border:1px solid var(--color-border-input);background:var(--color-surface);width:100%;color:var(--color-text);border-radius:8px;margin-top:.375rem;padding:.625rem .75rem;display:block}.form-actions{gap:.75rem;display:flex}.card-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;display:grid}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;overflow:hidden}.card-image{object-fit:cover;width:100%;height:160px}.card-body{padding:1rem}.card-body h3{margin:0 0 .5rem;font-size:1rem}.card-bank{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .25rem;font-size:.75rem}.card-network{color:var(--color-text-muted);margin:0 0 1rem;font-size:.875rem}.card-body p{color:var(--color-text-secondary);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0 0 .75rem;font-size:.875rem;display:-webkit-box;overflow:hidden}.card-actions{gap:.75rem;display:flex}.card-detail{max-width:640px;margin:0 auto}.card-detail-image{object-fit:cover;border-radius:12px;width:100%;max-height:400px;margin-bottom:1.5rem}.card-detail-description{color:var(--color-text-secondary);font-size:1.125rem;line-height:1.7}.meta{color:var(--color-text-muted);margin-top:2rem}.portfolio h1{margin:0 0 .5rem;font-size:1.25rem;font-weight:600;line-height:1.3}.empty-state{color:var(--color-text-muted);text-align:center;padding:2rem}.error{color:var(--color-danger);font-size:.875rem}.btn-primary{background:var(--color-accent-strong);border:none;border-radius:8px;padding:.625rem 1.25rem;font-weight:500;text-decoration:none;display:inline-block;color:#fff!important}.btn-primary:hover{background:var(--color-accent-hover);text-decoration:none}.btn-compact{border-radius:6px;padding:.375rem .875rem;font-size:.875rem}.btn-secondary{background:var(--color-surface);color:var(--color-text-secondary);border:1px solid var(--color-border-input);border-radius:8px;padding:.625rem 1.25rem}.btn-text{color:var(--color-accent);background:0 0;border:none;padding:0;font-size:.875rem}.btn-text:hover{text-decoration:underline}.btn-danger{color:var(--color-danger)}.btn-google{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border-input);border-radius:8px;padding:.75rem 1.5rem;font-weight:500;text-decoration:none;display:inline-block}.btn-google:hover{background:var(--color-surface-muted);text-decoration:none}.btn-google--fancy{justify-content:center;align-items:center;gap:.625rem;padding:.875rem 1.5rem;font-size:.9375rem;transition:transform .15s,box-shadow .15s;display:inline-flex;box-shadow:0 1px 2px #0003}.btn-google--fancy:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-google-icon{flex-shrink:0}.card-search{margin-bottom:1rem;position:relative}.card-search-results{z-index:10;background:var(--color-surface);border:1px solid var(--color-border);max-height:360px;box-shadow:var(--shadow-md);border-radius:8px;margin:.25rem 0 0;padding:0;list-style:none;position:absolute;top:100%;left:0;right:0;overflow-y:auto}.card-search-footer{color:var(--color-text-muted);text-align:center;border-top:1px solid var(--color-border);background:var(--color-surface-muted);padding:.5rem 1rem;font-size:.75rem}.card-search-item{text-align:left;cursor:pointer;width:100%;color:var(--color-text);background:0 0;border:none;flex-direction:column;align-items:flex-start;padding:.75rem 1rem;display:flex}.card-search-item:hover{background:var(--color-surface-muted)}.card-search-item.muted{color:var(--color-text-muted);cursor:default}.card-search-name{color:var(--color-text);font-weight:500}.card-search-bank{color:var(--color-text-muted);font-size:.8125rem}.card-preview{border-radius:12px;max-width:360px;margin-bottom:1rem;overflow:hidden}.card-preview-empty{background:var(--color-surface-muted);text-align:center;color:var(--color-text-muted);border-radius:12px;padding:2rem}.card-preview-image{border-radius:12px;width:100%;display:block}.card-preview-fallback{color:#fff;background:linear-gradient(135deg,#1a1a2e,#4f46e5);border-radius:12px;flex-direction:column;gap:.5rem;min-height:160px;padding:2rem;display:flex}.card-preview-fallback.hidden{display:none}.card-preview-bank{opacity:.8;text-transform:uppercase;font-size:.75rem}.card-preview-name{font-size:1.125rem;font-weight:600}.card-preview-network{opacity:.7;font-size:.875rem}.setup-username{max-width:480px;margin:2rem auto}.setup-username h1{margin-bottom:.5rem}.setup-username p{color:var(--color-text-secondary);margin-bottom:1.5rem}.username-input-wrap{border:1px solid var(--color-border-input);border-radius:8px;align-items:center;margin-top:.375rem;display:flex;overflow:hidden}.username-prefix{background:var(--color-surface-muted);color:var(--color-text-muted);white-space:nowrap;padding:.625rem .75rem;font-size:.875rem}.username-input-wrap input{background:var(--color-surface);min-width:0;color:var(--color-text);border:none;flex:1;margin:0;padding:.625rem .75rem}.username-preview{color:var(--color-text-muted);margin:.75rem 0 0;font-size:.875rem}.username-preview-url{color:var(--color-accent);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace}.hint-ok{color:var(--color-success);font-size:.875rem}.share-banner{background:var(--color-surface);border:1px solid var(--color-border);border-radius:12px;flex-direction:column;align-items:stretch;gap:.75rem;margin-bottom:1.5rem;padding:1.25rem;display:flex;box-shadow:0 1px 3px #0003}.share-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0;font-size:.75rem;font-weight:500}.share-change-link{color:var(--color-text-muted);font-size:.8125rem;text-decoration:none}.share-change-link:hover{color:var(--color-accent);text-decoration:underline}.public-url-bar{background:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:999px;align-items:center;gap:.5rem;min-width:0;padding:.5rem .75rem;display:flex}.public-url-text{min-width:0;color:var(--color-accent);text-overflow:ellipsis;white-space:nowrap;flex:1;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.875rem;text-decoration:none;overflow:hidden}.public-url-text:hover{text-decoration:underline}.public-url-copy{flex-shrink:0;padding:.375rem .75rem;font-size:.8125rem}.portfolio-header{flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:2rem;display:flex}.portfolio-header-row{flex-wrap:wrap;flex:1;align-items:center;gap:.75rem;min-width:0;display:flex}.portfolio-header-row h1{white-space:nowrap;flex-shrink:0;margin:0}.portfolio-header-row .public-url-bar{flex-shrink:1;gap:.375rem;min-width:0;padding:.125rem .375rem .125rem .625rem}.portfolio-header-row .public-url-text{font-size:.8125rem}.portfolio-header-row .public-url-copy{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text-muted);border-radius:999px;padding:.25rem .625rem;font-size:.8125rem}.favorite-btn{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-text-muted);cursor:pointer;border-radius:999px;align-items:center;gap:.375rem;padding:.375rem .75rem;font-size:.8125rem;font-weight:500;transition:border-color .15s,color .15s,background .15s;display:inline-flex}.favorite-btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-text)}.favorite-btn:disabled{opacity:.6;cursor:not-allowed}.favorite-btn--active{border-color:var(--color-accent);background:color-mix(in srgb, var(--color-accent) 12%, transparent);color:var(--color-accent)}.favorite-btn-icon{font-size:1rem;line-height:1}.favorites-page{max-width:42rem}.favorites-header h1{margin:0 0 .5rem}.favorites-lead{color:var(--color-text-muted);margin:0 0 1.5rem}.favorites-empty{padding:2rem 0}.favorites-list{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.favorites-item{border:1px solid var(--color-border);background:var(--color-surface);border-radius:12px;justify-content:space-between;align-items:center;gap:1rem;padding:1rem 1.125rem;display:flex}.favorites-item-main{flex-direction:column;gap:.25rem;min-width:0;display:flex}.favorites-item-link{color:var(--color-accent);font-weight:600;text-decoration:none}.favorites-item-link:hover{text-decoration:underline}.favorites-item-meta,.favorites-item-date{color:var(--color-text-muted);font-size:.875rem}.favorites-item-actions{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:.375rem;display:flex}.favorites-remove-btn{font-size:.8125rem}.portfolio-avatar{object-fit:cover;border-radius:50%;width:48px;height:48px}.generic-avatar{background:var(--color-accent-strong);color:#fff;flex-shrink:0;justify-content:center;align-items:center;font-size:1.5rem;font-weight:600;display:flex}.portfolio-header .generic-avatar{font-size:1.125rem}.portfolio-url{color:var(--color-text-muted);margin:.25rem 0 0;font-size:.875rem}.hidden{display:none}@media (width<=640px){.layout{overflow-x:clip}.main{min-width:0;padding:1rem}.dashboard{width:100%;min-width:0}.header{flex-wrap:wrap;align-items:flex-start;gap:.625rem;padding:.75rem 1rem}.nav{flex-wrap:wrap;gap:.5rem .875rem;width:100%}.nav a,.nav .btn-text{font-size:.8125rem}.card-grid{grid-template-columns:1fr;width:100%}.card{width:100%}.card-image{aspect-ratio:1.586;object-fit:contain;background:var(--color-surface-muted);height:auto}.card-actions{flex-wrap:wrap;gap:.5rem .75rem}.share-banner{width:100%;padding:1rem}.share-banner .public-url-bar{width:100%}.card-form{padding:1rem}.card-preview{width:100%;max-width:none}.form-actions{flex-direction:column}.form-actions .btn-primary,.form-actions .btn-secondary{text-align:center;width:100%}.public-url-bar{border-radius:10px;flex-wrap:wrap;width:100%;font-size:.8125rem}.public-url-text{white-space:normal;word-break:break-all;font-size:.8125rem}.public-url-copy{text-align:center;width:100%}.portfolio-header{align-items:center}.portfolio-header-row{flex-wrap:wrap;width:100%}.portfolio-header .generic-avatar{width:56px;height:56px;font-size:1.375rem}.portfolio-header .public-url-copy{width:auto}.portfolio-header-row .public-url-bar{border-radius:999px;flex-wrap:nowrap;width:auto}.favorites-item{flex-direction:column;align-items:stretch}.favorites-item-actions{flex-direction:row;justify-content:space-between;align-items:center}.username-input-wrap{flex-direction:column;align-items:stretch}.username-prefix{border-bottom:1px solid var(--color-border);text-align:center}.auth-hero-shell:not(.auth-hero-shell--login){min-height:calc(100dvh - 3.75rem);padding:1rem 0}.auth-hero-panel{padding:1.5rem 1.25rem 1.75rem}.auth-hero-panel h1{font-size:1.625rem}}
