:root{--bg:#ECEAE5;--surface:#ffffff;--surface-2:#f4f1ec;--text:#1c1917;--muted:#6a635d;--border:rgba(28,25,23,0.1);--gold:#b8871e;--accent:#7f5612;--accent-weak:rgba(184,135,30,0.12);--primary:#b8871e;--ink:#1c1917;--ink-text:#ffffff;--on-gold:#ffffff;--stone:#c4bfb8;--danger:#dc2626;--ok:#5a8a6a;--chart-1:#b8871e;--chart-2:#5a8a6a;--chart-3:#4a7a9b;--chart-4:#8a4a3a;--chart-5:#6a4a8a;--radius:0.625rem;--radius-sm:calc(var(--radius) - 4px);--radius-md:calc(var(--radius) - 2px);--radius-lg:var(--radius);--radius-xl:calc(var(--radius) + 4px);--radius-2xl:calc(var(--radius) + 6px);--shadow-sm:0 1px 2px rgba(28,25,23,0.05);--shadow:0 1px 2px rgba(28,25,23,0.04),0 4px 14px rgba(28,25,23,0.05);--shadow-md:0 4px 8px -2px rgba(28,25,23,0.08),0 2px 4px -2px rgba(28,25,23,0.06);--shadow-lg:0 12px 28px -6px rgba(28,25,23,0.14),0 4px 10px -4px rgba(28,25,23,0.08);--shadow-xl:0 24px 56px -12px rgba(28,25,23,0.22),0 8px 20px -8px rgba(28,25,23,0.12);--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:1.5rem;--space-8:2rem;--space-10:2.5rem;--space-12:3rem;--space-16:4rem;--space:var(--space-4);--ease:cubic-bezier(0.4,0,0.2,1);--dur-fast:120ms;--dur:150ms;--dur-slow:200ms;--font-body:var(--font-sans),system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;--font-display:var(--font-serif),Georgia,"Times New Roman",serif;--font-micro:var(--font-mono),ui-monospace,"SFMono-Regular",Menlo,monospace;color-scheme:light}[data-theme=dark]{--bg:#17130d;--surface:#211c14;--surface-2:#2c261c;--text:#ece5d8;--muted:#a99f8d;--border:rgba(236,229,216,0.14);--gold:#d0a03f;--accent:#e7ba5c;--accent-weak:rgba(224,176,78,0.16);--primary:#d0a03f;--on-gold:#201a12;--ink:#0e0c08;--ink-text:#f3efe6;--stone:#6c6456;--danger:#f0766b;--ok:#82b391;--chart-1:#d0a03f;--chart-2:#82b391;--chart-3:#6ea6c6;--chart-4:#cf805e;--chart-5:#ab8dcb;--shadow-sm:0 1px 2px rgba(0,0,0,0.4);--shadow:0 1px 2px rgba(0,0,0,0.4),0 4px 14px rgba(0,0,0,0.5);--shadow-md:0 4px 8px -2px rgba(0,0,0,0.5),0 2px 4px -2px rgba(0,0,0,0.4);--shadow-lg:0 12px 28px -6px rgba(0,0,0,0.6),0 4px 10px -4px rgba(0,0,0,0.45);--shadow-xl:0 24px 56px -12px rgba(0,0,0,0.7),0 8px 20px -8px rgba(0,0,0,0.5);color-scheme:dark;scrollbar-color:rgba(236,229,216,.22) transparent}@media (prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]){--bg:#17130d;--surface:#211c14;--surface-2:#2c261c;--text:#ece5d8;--muted:#a99f8d;--border:rgba(236,229,216,0.14);--gold:#d0a03f;--accent:#e7ba5c;--accent-weak:rgba(224,176,78,0.16);--primary:#d0a03f;--on-gold:#201a12;--ink:#0e0c08;--ink-text:#f3efe6;--stone:#6c6456;--danger:#f0766b;--ok:#82b391;--chart-1:#d0a03f;--chart-2:#82b391;--chart-3:#6ea6c6;--chart-4:#cf805e;--chart-5:#ab8dcb;--shadow-sm:0 1px 2px rgba(0,0,0,0.4);--shadow:0 1px 2px rgba(0,0,0,0.4),0 4px 14px rgba(0,0,0,0.5);--shadow-md:0 4px 8px -2px rgba(0,0,0,0.5),0 2px 4px -2px rgba(0,0,0,0.4);--shadow-lg:0 12px 28px -6px rgba(0,0,0,0.6),0 4px 10px -4px rgba(0,0,0,0.45);--shadow-xl:0 24px 56px -12px rgba(0,0,0,0.7),0 8px 20px -8px rgba(0,0,0,0.5);color-scheme:dark;scrollbar-color:rgba(236,229,216,.22) transparent}}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;zoom:.75}@media (max-width:1024px){html{zoom:1}}body{margin:0;font-family:var(--font-body);line-height:1.55;color:var(--text);background:var(--bg)}*{scrollbar-width:thin;scrollbar-color:rgba(28,25,23,.18) transparent}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:rgba(28,25,23,.16);border-radius:999px}::-webkit-scrollbar-thumb:hover{background:rgba(28,25,23,.28)}h1,h2,h3{font-family:var(--font-display);line-height:1.2;font-weight:400;margin:0 0 .6rem}h1{font-size:2rem;letter-spacing:-.005em}h2{font-size:1.35rem}h3{font-size:1rem}.mono-label,h3{color:var(--muted);font-weight:500}.mono-label{font-family:var(--font-micro);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em}p{margin:0 0 .75rem}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.container{width:100%;padding-inline:clamp(2rem,2.6vw,5.5rem)}@media (max-width:1024px){.container{padding-inline:1.5rem}}@media (max-width:640px){.container{padding-inline:1rem}}main{padding:var(--space-10) 0 var(--space-16)}.portfolio-page{padding-top:var(--space-4)}.stack>*+*{margin-top:var(--space-4)}.dash-head{margin-bottom:var(--space-8)}.dash-head h1{margin-bottom:.25rem}.dash-sub{margin:0}.dash-signed{margin:.25rem 0 0;font-size:.9rem}.row{align-items:center;gap:.5rem;flex-wrap:wrap}.field,.row{display:flex}.field{flex-direction:column;gap:.35rem;align-items:flex-start}.spread{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.muted{color:var(--muted)}.crumbs{display:flex;align-items:center;flex-wrap:wrap;gap:.4rem;font-size:.85rem;margin:0 0 .25rem}.crumbs a{color:var(--accent);font-weight:500}.crumb-current{color:var(--muted);min-width:0}.crumb-sep{color:color-mix(in srgb,var(--muted) 50%,transparent);font-size:.9em}.site-header{border-bottom:1px solid var(--border);background:var(--surface);position:-webkit-sticky;position:sticky;top:0;z-index:10}.site-header .bar{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:84px;flex-wrap:wrap}.brand{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--font-display);font-weight:500;font-size:1.35rem;color:var(--text);letter-spacing:0}.brand:hover{text-decoration:none}.brand-logo{display:inline-flex;justify-content:center;width:28px;height:28px;border-radius:50%;background:var(--gold);color:var(--on-gold);font-family:var(--font-body);font-weight:700;font-size:.82rem;line-height:1;box-shadow:var(--shadow)}.brand-logo,.nav{align-items:center}.nav{display:flex;gap:.3rem;flex-wrap:wrap}.nav a{color:var(--muted);padding:.4rem .9rem;border-radius:var(--radius-md);font-size:1.05rem;font-weight:500;transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.nav a:hover{color:var(--text);text-decoration:none}.nav a[aria-current=page]{color:var(--text);background:var(--surface-2)}.nav-signout{display:inline-flex;align-items:center;gap:.4rem;border:none;background:transparent;color:var(--muted);font-weight:500;padding:.35rem .6rem}.nav-signout:hover:not(:disabled){color:var(--text);background:transparent;border-color:transparent}.nav-divider{width:1px;height:1rem;background:var(--border);margin:0 .35rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-5);box-shadow:var(--shadow)}.cards{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));list-style:none;padding:0;margin:0}.card-link{display:block;color:inherit;transition:border-color var(--dur) var(--ease),box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}.card-link:hover{text-decoration:none;border-color:color-mix(in srgb,var(--gold) 40%,var(--border));box-shadow:var(--shadow-md)}.feature-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:.85rem}.feature-icon{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-md);background:var(--accent-weak);color:var(--accent)}.feature-chevron{color:color-mix(in srgb,var(--muted) 55%,transparent);transition:color .15s ease,transform .15s ease}.card-link:hover .feature-chevron{color:var(--accent);transform:translateX(2px)}.card-link h2{font-weight:500;font-size:1.05rem;margin:0 0 .25rem}.stats{display:grid;grid-gap:1rem;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));list-style:none;padding:0;margin:0 0 var(--space-6)}.stat{display:flex;flex-direction:column;gap:var(--space-3)}.stat-head{display:flex;align-items:center;justify-content:space-between}.stat-icon{display:inline-flex;color:color-mix(in srgb,var(--muted) 55%,transparent)}.stat-value{font-family:var(--font-display);font-size:2.5rem;font-weight:300;line-height:1.05;letter-spacing:-.01em}.stat-value.is-money{font-size:1.6rem}.stat-label{font-family:var(--font-micro);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.recent{margin-top:var(--space-6)}.recent-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-3)}.recent-head h2{font-family:var(--font-display);font-weight:300;font-size:1.25rem;margin:0}.recent-viewall{font-weight:500;font-size:.75rem;white-space:nowrap}.recent-list{list-style:none;margin:0;padding:0}.recent-row+.recent-row{border-top:1px solid var(--border)}.recent-link{display:flex;align-items:center;gap:var(--space-5);padding:var(--space-5) var(--space-6);color:inherit;border-radius:var(--radius-sm);transition:background-color var(--dur) var(--ease)}.recent-link:hover{text-decoration:none;background:var(--surface-2)}.recent-link:hover .recent-title{color:var(--accent)}.recent-thumbs{flex:0 0 auto;display:flex;gap:var(--space-2)}.recent-thumb{flex:0 0 auto;width:80px;height:80px;border-radius:var(--radius-sm);overflow:hidden;background:var(--accent-weak);border:1px solid var(--border)}.recent-thumb img{width:100%;height:100%;object-fit:cover;display:block}.recent-thumb-empty{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:color-mix(in srgb,var(--muted) 55%,transparent)}.recent-thumb-empty svg{width:30px;height:30px}.recent-main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:.35rem}.recent-title{font-weight:500;font-size:1.2rem;transition:color var(--dur) var(--ease)}.recent-meta,.recent-title{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.recent-meta{font-size:.875rem;color:var(--muted)}.recent-aside{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:.3rem;text-align:right}.recent-price{font-family:var(--font-display);font-weight:500;font-size:1.25rem;white-space:nowrap}.recent-date{font-size:.875rem;color:var(--muted)}@media (max-height:900px){.recent-row:nth-child(5){display:none}}@media (max-height:760px){.recent-row:nth-child(4){display:none}}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:.45rem .6rem;max-width:100%}input::placeholder,textarea::placeholder{color:var(--muted)}[tabindex]:focus-visible,a:focus-visible,button:focus-visible,input:focus,select:focus,summary:focus-visible,textarea:focus{outline:2px solid var(--gold);outline-offset:1px;border-radius:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link{position:absolute;left:.5rem;top:-3rem;z-index:100;padding:.5rem .85rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);transition:top .15s ease}.skip-link:focus{top:.5rem}label{display:inline-flex;flex-direction:column;gap:.25rem;font-size:.88rem;color:var(--muted)}button{font:inherit;font-weight:500;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.45rem .9rem;border-radius:var(--radius-md);transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),opacity var(--dur-fast) var(--ease)}button:hover:not(:disabled){background:var(--surface-2);border-color:color-mix(in srgb,var(--text) 22%,var(--border))}button:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--on-gold);border-color:var(--accent);box-shadow:var(--shadow)}.btn-primary:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 88%,#000);border-color:color-mix(in srgb,var(--accent) 88%,#000)}.btn-danger{color:var(--danger)}.btn-danger,.btn-danger:hover:not(:disabled){border-color:color-mix(in srgb,var(--danger) 30%,var(--border))}.btn-danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 8%,var(--surface))}.btn-sm{padding:.3rem .65rem;font-size:.82rem}.theme-toggle{--tt-h:2.1rem;--tt-w:4.6rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;width:-moz-fit-content;width:fit-content;padding:0;border:none;background:none;line-height:0;cursor:pointer}.theme-toggle:disabled{cursor:default;opacity:.6}.theme-toggle-track{position:relative;display:block;width:var(--tt-w);height:var(--tt-h);border-radius:999px;background:var(--surface-2);border:1px solid var(--border)}.theme-toggle-icon{position:absolute;top:50%;z-index:2;transform:translateY(-50%);display:flex;color:var(--muted);transition:color .18s ease}.theme-toggle-sun{left:.5rem}.theme-toggle-moon{right:.5rem}.theme-toggle[data-checked=false] .theme-toggle-sun,.theme-toggle[data-checked=true] .theme-toggle-moon{color:var(--on-gold)}.theme-toggle-thumb{position:absolute;top:50%;left:.2rem;z-index:1;width:calc(var(--tt-h) - .5rem);height:calc(var(--tt-h) - .5rem);border-radius:50%;background:var(--gold);transform:translateY(-50%);transition:transform .18s ease}.theme-toggle[data-checked=true] .theme-toggle-thumb{transform:translateY(-50%) translateX(calc(var(--tt-w) - var(--tt-h)))}.theme-toggle:focus-visible{outline:none}.theme-toggle:focus-visible .theme-toggle-track{outline:2px solid var(--accent);outline-offset:2px}.btn-ghost{background:transparent;border-color:transparent;box-shadow:none}.btn-ghost:hover:not(:disabled){background:var(--surface-2);border-color:transparent}.btn-icon{display:inline-flex;align-items:center;gap:.35rem}.btn-icon svg{flex-shrink:0}.coin-edit-btn{background:transparent;border-color:transparent;box-shadow:none;color:var(--muted);padding:.3rem}.coin-edit-btn:focus-visible,.coin-edit-btn:hover:not(:disabled){background:transparent;border-color:transparent;color:var(--accent)}.coin-edit-btn:hover:not(:disabled) svg{stroke-width:2.75}.toolbar{display:flex;gap:.5rem;align-items:flex-end;flex-wrap:wrap}.create-bar{display:flex;align-items:center;gap:.625rem;margin-bottom:.75rem;padding:.875rem 1.25rem;border:1px solid color-mix(in srgb,var(--primary) 30%,transparent);border-radius:var(--radius-xl)}.create-bar,.rows{background:var(--surface)}.rows{list-style:none;margin:0;padding:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.rows>li{display:flex;align-items:center;gap:.6rem;padding:.7rem .9rem}.rows>li+li{border-top:1px solid var(--border)}.rows .grow{flex:1 1;min-width:0}.empty{color:var(--muted);border:1px dashed var(--border);border-radius:var(--radius);padding:1.25rem;text-align:center;background:var(--surface-2)}.table-wrap{overflow-x:auto;contain:content}.data-table{width:100%;border-collapse:collapse;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden;font-size:1rem}.data-table thead th{text-align:left;font-family:var(--font-micro);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);padding:.7rem .9rem;background:var(--surface-2);border-bottom:1px solid var(--border)}.data-table tbody tr+tr{border-top:1px solid var(--border)}.data-table tbody tr:hover{background:var(--surface-2)}.data-table td{padding:1rem .9rem;vertical-align:middle}.data-table td.td-actions{white-space:nowrap;text-align:right}.row-actions{opacity:0;transition:opacity var(--dur-fast) var(--ease)}.collection-card:hover .row-actions,.data-table tr:hover .row-actions,.row-actions:focus-within{opacity:1}@media (hover:none){.row-actions{opacity:1}}.data-table td.td-thumb,.data-table th.td-thumb{width:1%;white-space:nowrap}.data-table .col-title{max-width:18rem}.data-table td.col-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.data-table .td-num{text-align:right;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;width:1%}.data-table .thumb{display:block}.table-sort{display:none;align-items:center;gap:.5rem}.hide-phone{display:contents}.data-table .card-only{display:none}@media (max-width:640px){.table-sort{display:flex}.hide-phone{display:none}.table-wrap{overflow-x:visible;contain:none}.data-table{display:block;border:0;background:transparent;overflow:visible}.data-table thead{display:none}.data-table tbody{display:grid;grid-gap:.75rem;gap:.75rem}.data-table tbody tr,.data-table tbody tr+tr{display:flex;flex-wrap:wrap;align-items:center;column-gap:.4rem;row-gap:.3rem;padding:.85rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow)}.data-table td{display:block;padding:0}.data-table td[data-empty]{display:none}.data-table td.card-only{display:block}.data-table td.td-thumb{order:1;width:auto;flex:0 0 auto}.data-table td.col-title{order:2;flex:1 1 55%;max-width:none;white-space:normal;overflow:visible;text-overflow:clip;font-size:1.05rem}.data-table td.muted{order:3;flex:0 0 auto;font-size:.9rem}.data-table td.td-actions{order:4;flex:0 0 auto;margin-left:auto}.data-table td.muted:not([data-empty])~td.muted:not([data-empty]):before{content:"·";margin-right:.4rem;color:color-mix(in srgb,var(--muted) 55%,transparent)}.data-table td.td-thumb .thumb{width:64px;height:64px}.data-table td.td-thumb span>img+img{display:none}}.collection-grid{list-style:none;margin:var(--space-4) 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));grid-gap:var(--space-5);gap:var(--space-5)}.collection-card{position:relative;min-height:380px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow);overflow:hidden}.collection-card.has-cover:before{content:"";position:absolute;inset:0;background-image:var(--cover);background-size:cover;background-position:50%;opacity:.82;z-index:0}.collection-card.has-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,color-mix(in srgb,var(--ink) 4%,transparent) 40%,color-mix(in srgb,var(--ink) 26%,transparent));z-index:0}.collection-card>*{position:relative;z-index:1}.collection-card-link{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;padding:var(--space-4);text-decoration:none;color:inherit}.collection-card-link:hover .collection-card-name{text-decoration:underline}.collection-card-panel{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.25rem;padding:var(--space-3) var(--space-4);background:color-mix(in srgb,var(--surface) 86%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow)}.collection-card-name{font-family:var(--font-display);font-size:1.5rem;font-weight:400;line-height:1.2;color:var(--text)}.collection-card-meta{color:var(--muted)}.collection-card-actions{position:absolute;top:var(--space-3);right:var(--space-3);z-index:2;justify-content:flex-end}.collection-card>form{position:relative;z-index:2;width:100%;padding:var(--space-4)}.badge{display:inline-block;font-size:.75rem;color:var(--accent);background:var(--accent-weak);border:1px solid color-mix(in srgb,var(--gold) 30%,transparent);border-radius:999px;padding:.05rem .5rem}.badge,.chip{font-weight:500}.chip{font-family:var(--font-body);font-size:.8rem;padding:.3rem .7rem;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;transition:color var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}.chip:hover:not(:disabled){color:var(--text);border-color:color-mix(in srgb,var(--text) 20%,var(--border));background:var(--surface)}.chip.is-active,.chip[aria-pressed=true]{color:var(--accent);background:var(--accent-weak);border-color:color-mix(in srgb,var(--gold) 40%,transparent)}.pos{color:var(--ok)}.alert,.neg{color:var(--danger)}.alert{background:color-mix(in srgb,var(--danger) 8%,var(--surface));border:1px solid color-mix(in srgb,var(--danger) 30%,var(--border));border-radius:8px;padding:.5rem .75rem}.alert-ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 8%,var(--surface));border-color:color-mix(in srgb,var(--ok) 30%,var(--border))}.danger-zone{border-color:color-mix(in srgb,var(--danger) 30%,var(--border))}.bar-track{display:inline-block;height:.6rem;width:160px;max-width:45vw;background:var(--surface-2);border:1px solid var(--border);border-radius:999px;overflow:hidden;vertical-align:middle}.bar-fill{display:block;height:100%;background:var(--accent)}.chart-title{margin:0;font-size:1.25rem;font-weight:400;color:var(--text)}.chart-axis{fill:var(--muted);font-family:var(--font-micro);font-size:.72rem;letter-spacing:.04em}.chart-line{stroke:var(--gold);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.chart-area{fill:color-mix(in srgb,var(--gold) 16%,transparent);stroke:none}.chart-dot{fill:var(--gold)}.chart-guide{stroke:var(--accent);stroke-width:1;stroke-dasharray:3 3;opacity:.7}.chart-plot{position:relative;display:flex;align-items:stretch}.chart-yaxis{flex:0 0 auto;display:block}.chart-scroll{flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain}.bar-col{cursor:pointer}.chart-tooltip{position:absolute;transform:translate(-50%,-100%);margin-top:-10px;z-index:5;pointer-events:none;min-width:11rem;max-width:16rem;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:.6rem .7rem}.chart-tooltip-title{margin:0;font-weight:600;font-size:.85rem;line-height:1.3}.chart-tooltip-sub{margin:.1rem 0 .5rem;font-size:.62rem}.chart-tooltip-rows{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.2rem}.chart-tooltip-rows>li{display:flex;align-items:center;gap:.4rem;font-size:.78rem}.chart-tooltip-val{margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chart-tooltip-total{margin-top:.45rem;padding-top:.4rem;border-top:1px solid var(--border);display:flex;justify-content:space-between;gap:1rem;font-weight:600;font-size:.82rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.range-btn[aria-pressed=true]{background:var(--accent-weak);color:var(--accent);border-color:color-mix(in srgb,var(--gold) 40%,transparent)}.portfolio-summary{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-3) var(--space-4)}.portfolio-summary-line{display:flex;align-items:baseline;flex-wrap:wrap;gap:.6rem}.portfolio-total{font-family:var(--font-display);font-weight:300;font-size:2rem;line-height:1;color:var(--text)}.portfolio-note{margin:0}.base-currency{gap:.5rem}.analytics-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:1.25rem;gap:1.25rem;align-items:stretch}.analytics-grid>*{min-width:0}@media (max-width:1024px){.analytics-grid{grid-template-columns:1fr}}.bar-seg{stroke:var(--surface);stroke-width:.5}.chart-grid{stroke:var(--border);stroke-width:1;opacity:.6}.bar-total{fill:var(--text);font-size:.8rem;font-weight:600}.bar-avatar-ring{fill:none;stroke:var(--border);stroke-width:2}.legend-top{align-items:baseline;gap:.75rem;flex-wrap:wrap}.legend-inline{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.25rem .75rem;font-size:.8rem}.legend-inline>li{display:flex;align-items:center;gap:.3rem}.swatch{display:inline-block;width:.85rem;height:.85rem;border-radius:3px;flex:0 0 auto}.seg-hammer{background:var(--gold)}.seg-premium{background:var(--muted)}.seg-shipping{background:var(--stone)}.seg-tax{background:var(--chart-4)}.seg-unsplit{background:color-mix(in srgb,var(--muted) 45%,var(--surface-2))}.bar-hammer{fill:var(--gold)}.bar-premium{fill:var(--muted)}.bar-shipping{fill:var(--stone)}.bar-tax{fill:var(--chart-4)}.bar-unsplit{fill:color-mix(in srgb,var(--muted) 45%,var(--surface-2))}.coin-overview{display:flex;align-items:flex-start;gap:3.25rem}.coin-overview-left{flex:1 1;display:flex;flex-direction:column;gap:var(--space-4);min-width:0}.coin-detail-title{margin:0;font-size:1.875rem;font-weight:300;line-height:1.3}.coin-notes{display:flex;flex-direction:column;gap:var(--space-3)}.coin-note{padding:var(--space-4) var(--space-5)}.coin-note .mono-label{margin:0 0 .4rem}.coin-note p:last-child{margin:0;line-height:1.6}.coin-side{flex:0 0 520px;width:520px;display:flex;flex-direction:column;gap:var(--space-4)}@media (max-width:1024px){.coin-overview{flex-direction:column}.coin-side{flex:0 1 auto;width:100%;max-width:520px}}.coin-image-card{width:100%;display:flex;flex-direction:column;gap:var(--space-3)}.coin-invoices-card{padding:var(--space-4) var(--space-5);gap:var(--space-3)}.invoice-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.invoice-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-2)}.invoice-icon{display:flex;flex:0 0 auto;color:var(--accent)}.invoice-info{display:flex;flex-direction:column;gap:.1rem;min-width:0;flex:1 1}.invoice-name{font-weight:500;color:var(--text);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.invoice-name:hover{text-decoration:underline}.invoice-meta{font-size:.65rem}.invoice-actions{flex:0 0 auto}.invoice-actions a{font:inherit;font-weight:500;text-decoration:none;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.3rem .65rem;border-radius:var(--radius-md);transition:background var(--dur-fast) var(--ease),border-color var(--dur-fast) var(--ease)}.invoice-actions a:hover{background:var(--surface-2);border-color:color-mix(in srgb,var(--text) 22%,var(--border))}.coin-photo-wrap{position:relative;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center;background:var(--surface-2);border-radius:16px;overflow:hidden}.head-row{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-2)}.attr-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--space-3);gap:var(--space-3);margin:0}@media (max-width:1024px){.attr-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:640px){.attr-grid{grid-template-columns:repeat(2,1fr)}}.attr-tile{background:var(--surface-2);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.attr-tile dt{font-family:var(--font-micro);font-size:.72rem;font-weight:500;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin:0 0 .3rem}.attr-tile dd{margin:0;font-size:1.05rem}.coin-details dl{display:grid;grid-template-columns:max-content 1fr;grid-gap:0 1.25rem;gap:0 1.25rem;margin:0}.coin-details-row{display:contents}.coin-details dt{color:var(--muted);font-size:.85rem;font-weight:600;padding:.3rem 0}.coin-details dd{margin:0;font-size:.92rem;padding:.3rem 0}.coin-details dd,.coin-details dt{border-bottom:1px solid var(--border)}.coin-details-row:last-child dd,.coin-details-row:last-child dt{border-bottom:none}.coin-edit-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:.6rem 1rem;gap:.6rem 1rem}@media (max-width:640px){.coin-edit-grid{grid-template-columns:1fr}}.coin-edit-label{display:flex;flex-direction:column;gap:.25rem;font-size:.82rem;font-weight:600;color:var(--muted)}.coin-edit-label input{font-weight:400;font-size:.92rem;color:var(--fg)}.coin-photo{display:block;width:100%;height:100%;object-fit:cover}.coin-thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));grid-gap:var(--space-3);gap:var(--space-3)}.coin-thumb{aspect-ratio:1/1;padding:0;border:2px solid transparent;border-radius:10px;overflow:hidden;background:var(--surface-2);cursor:pointer;transition:border-color var(--dur-fast) var(--ease)}.coin-thumb:hover:not(.is-active){border-color:var(--border)}.coin-thumb.is-active{border-color:var(--gold)}.coin-thumb-img{display:block;width:100%;height:100%;object-fit:cover}.coin-photo-caption{margin:0;text-align:center}.coin-photo-expand{position:absolute;bottom:.5rem;right:.5rem;width:2rem;height:2rem;background:rgba(0,0,0,.52);color:#fff;border:none;border-radius:6px;padding:0;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.75;transition:opacity .15s ease,background .15s ease}.coin-photo-expand:hover:not(:disabled){opacity:1;background:rgba(0,0,0,.78)}.btn-upload-image{display:inline-flex;align-items:center;gap:.45rem;border:1.5px dashed var(--border);background:transparent;color:var(--muted);font-size:.85rem;padding:.45rem .85rem;border-radius:8px;cursor:pointer;transition:border-color .15s ease,color .15s ease,background .15s ease}.btn-upload-image:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:var(--accent-weak)}.btn-upload-image:disabled{opacity:.5;cursor:not-allowed}.thumb{width:160px;height:160px;object-fit:cover;border-radius:6px;border:1px solid var(--border);flex:none}.skeleton,.thumb,.thumb-empty{background:var(--surface-2)}.skeleton{animation:skeleton-pulse 1.4s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.55}}.lightbox-dialog{border:none;background:transparent;padding:0;max-width:95vw;max-height:95vh}.lightbox-dialog::-webkit-backdrop{background:rgba(0,0,0,.88)}.lightbox-dialog::backdrop{background:rgba(0,0,0,.88)}.lightbox-dialog img{display:block;max-width:90vw;max-height:90vh;object-fit:contain;border-radius:var(--radius)}@keyframes chat-panel-in{0%{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes chat-dot-bounce{0%,80%,to{transform:scale(.5);opacity:.3}40%{transform:scale(1);opacity:1}}.chat-widget{position:fixed;bottom:1.5rem;right:1.5rem;z-index:200;display:flex;flex-direction:column;align-items:flex-end;gap:.85rem}.chat-fab{width:52px;height:52px;border-radius:50%;padding:0;background:var(--ink);color:var(--ink-text);border:none;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 16px rgba(0,0,0,.28);transition:box-shadow .15s ease,transform .12s ease,background .12s ease}.chat-fab:hover:not(:disabled){box-shadow:0 6px 22px rgba(0,0,0,.34);transform:scale(1.08);background:color-mix(in srgb,var(--ink) 88%,#fff);border-color:transparent}.chat-panel{width:370px;max-width:calc(100vw - 3rem);display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden;max-height:clamp(420px,65vh,600px);box-shadow:var(--shadow-xl);animation:chat-panel-in var(--dur-slow) var(--ease)}@media (min-width:1440px){.chat-widget{bottom:2.5rem;right:2.5rem}.chat-panel{width:460px;max-height:clamp(540px,70vh,760px)}}@media (max-width:640px){.chat-panel{position:fixed;bottom:0;left:0;right:0;width:100%;max-width:100%;max-height:72vh;border-radius:var(--radius) var(--radius) 0 0;border-bottom:none}.chat-fab[aria-expanded=true]{display:none}}.chat-panel-header{gap:.75rem;padding:.9rem 1rem;background:var(--ink);color:var(--ink-text)}.chat-avatar,.chat-panel-header{display:flex;align-items:center;flex-shrink:0}.chat-avatar{width:38px;height:38px;border-radius:50%;background:var(--gold);color:var(--on-gold);justify-content:center;font-size:1.05rem}.chat-panel-meta{flex:1 1;display:flex;flex-direction:column;gap:.08rem}.chat-panel-name{font-weight:600;font-size:.92rem}.chat-panel-online{display:flex;align-items:center;gap:.35rem;font-size:.75rem;opacity:.75}.chat-online-dot{width:7px;height:7px;border-radius:50%;background:#4caf50;flex-shrink:0}.chat-close-btn{background:transparent;border:none;color:inherit;opacity:.65;padding:.3rem;border-radius:6px;display:flex;align-items:center;justify-content:center}.chat-close-btn:hover:not(:disabled){opacity:1;background:color-mix(in srgb,var(--ink-text) 14%,transparent);border-color:transparent}.chat-panel-body{flex:1 1;overflow-y:auto;padding:1rem;min-height:160px}.chat-welcome p{font-size:.9rem;margin:0 0 .85rem}.chat-suggestions{display:flex;flex-direction:column;gap:.4rem}.chat-suggestion{text-align:left;font-size:.86rem;padding:.5rem .8rem;border-radius:8px;border:1px solid color-mix(in srgb,var(--accent) 40%,var(--border));color:var(--accent);background:var(--accent-weak);cursor:pointer;transition:background .12s ease}.chat-suggestion:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 14%,var(--surface));border-color:var(--accent)}.chat-typing{display:inline-flex;gap:4px;align-items:center;padding:3px 2px}.chat-typing span{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--muted);animation:chat-dot-bounce 1.4s ease-in-out infinite}.chat-typing span:nth-child(2){animation-delay:.22s}.chat-typing span:nth-child(3){animation-delay:.44s}.chat-error{margin:0 .85rem .6rem;flex-shrink:0}.chat-markdown p{margin:0 0 .5rem;white-space:pre-line}.chat-markdown>:last-child{margin-bottom:0}.chat-markdown ol,.chat-markdown ul{margin:0 0 .5rem;padding-left:1.15rem}.chat-markdown li{margin:.15rem 0}.chat-markdown strong{font-weight:600}.chat-markdown code{font-family:var(--font-micro),monospace;font-size:.9em;padding:.05rem .25rem;border-radius:var(--radius-sm);background:var(--accent-weak);color:var(--accent)}.chat-markdown a{color:var(--accent);text-decoration:underline}.chat-limit-notice{margin:0 .85rem .6rem;padding:.5rem .65rem;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--accent-weak);color:var(--accent);font-size:.82rem;line-height:1.4;flex-shrink:0}.chat-input-bar{display:flex;align-items:center;gap:.5rem;padding:.7rem .85rem;border-top:1px solid var(--border);flex-shrink:0}.chat-input-bar input{flex:1 1;min-width:0;border-radius:999px;padding:.42rem .9rem;font-size:.9rem}.chat-send-btn{width:36px;height:36px;border-radius:50%;padding:0;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--accent);color:var(--on-gold);border-color:var(--accent);transition:opacity .12s ease,transform .12s ease,background .12s ease}.chat-send-btn:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 88%,#000);border-color:transparent;transform:scale(1.08)}.chat-send-btn:disabled{opacity:.35;cursor:not-allowed}.chat-attach-btn{background:transparent;border:none;color:var(--muted);padding:.3rem;border-radius:6px;display:flex;align-items:center;flex-shrink:0;transition:color .12s ease,background .12s ease}.chat-attach-btn:hover:not(:disabled){color:var(--accent);background:var(--accent-weak);border-color:transparent}.chat-image-preview{display:flex;align-items:center;gap:.5rem;padding:.6rem .85rem 0;flex-shrink:0}.chat-image-thumb{width:52px;height:52px;object-fit:cover;border-radius:6px;border:1px solid var(--border)}.chat-image-remove{background:transparent;border:none;color:var(--muted);padding:.25rem;border-radius:4px;display:flex;align-items:center;cursor:pointer;transition:color .12s ease,background .12s ease}.chat-image-remove:hover:not(:disabled){color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--surface));border-color:transparent}.chat-msg-image{display:block;max-width:100%;max-height:180px;object-fit:contain;border-radius:8px;margin-bottom:.3rem}.chat{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.msg{max-width:82%;padding:.55rem .85rem;font-size:.9rem;line-height:1.5;white-space:pre-wrap;border:none}.msg-user{align-self:flex-end;background:var(--accent);color:var(--on-gold);border-radius:16px 16px 4px 16px}.msg-assistant{align-self:flex-start;background:var(--surface-2);border:1px solid var(--border);border-radius:4px 16px 16px 16px}.msg .actions{margin:.4rem 0 0;padding-left:1.1rem;font-size:.83rem;color:var(--ok)}dialog.modal{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);padding:1.2rem;max-width:420px;width:calc(100% - 2rem);box-shadow:var(--shadow-lg)}dialog.modal::-webkit-backdrop{background:rgba(0,0,0,.4)}dialog.modal::backdrop{background:rgba(0,0,0,.4)}dialog.modal.modal-chart{max-width:96vw;width:96vw;max-height:96vh;padding:var(--space-5)}@media (min-width:1025px){dialog.modal.modal-chart{max-width:calc(96vw / .75);width:calc(96vw / .75);max-height:calc(96vh / .75)}}.chart-modal-close{display:flex;justify-content:flex-end;margin-bottom:calc(-1 * var(--space-2))}.filters{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-end;--filter-control-h:2.25rem}.filters .btn-sm,.filters .chip,.filters input:not([type=checkbox]){min-height:var(--filter-control-h);font-size:.82rem;padding:0 .7rem}.filters .btn-sm,.filters .chip{display:inline-flex;align-items:center;gap:.25rem}.filters input{min-width:0}.filters input[type=text]{width:15rem}.filters input[type=number]{width:7rem}.filters .badge{align-self:center}.filter-toggle{display:none}.filter-chips{display:flex;align-items:center;gap:.25rem;border:0;margin:0;padding:0;flex-wrap:wrap}.filter-chips legend{float:left;width:100%;padding:0 0 .25rem}.filter-active{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap}.facet-picker{left:0;right:auto;max-height:16rem;overflow-y:auto}.facet-search{position:-webkit-sticky;position:sticky;top:0;z-index:1;width:100%;margin-bottom:.35rem;background:var(--surface)}.facet-search::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none}.facet-wrap{position:relative}@media (max-width:640px){.facet-wrap{width:100%}.facet-wrap>.btn-sm{width:100%;justify-content:space-between}.filters .facet-picker{position:static;width:100%;min-width:0;max-height:50vh;margin-top:.35rem}.filters .facet-picker .col-picker-item{min-height:44px}}.pager{display:flex;align-items:center;gap:.75rem;justify-content:flex-end}.col-picker{position:absolute;top:calc(100% + .4rem);right:0;z-index:20;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.4rem;min-width:210px;box-shadow:var(--shadow-lg)}.col-picker-hint{font-size:.75rem;color:var(--muted);margin:0 0 .35rem .5rem}.col-picker-item{display:flex;flex-direction:row;align-items:center;gap:.45rem;padding:.35rem .5rem;border-radius:calc(var(--radius) - 2px);font-size:.9rem;font-weight:400;-webkit-user-select:none;-moz-user-select:none;user-select:none;border:2px solid transparent;transition:background .1s}.col-picker-item:hover{background:var(--surface-2)}.col-picker-item.drag-over{border-top-color:var(--accent,#b8963e)}.col-picker-item.dragging{opacity:.4}.col-picker-handle{cursor:-webkit-grab;cursor:grab;color:var(--muted);font-size:.95rem;line-height:1;padding:0 .1rem;flex-shrink:0}.col-picker-handle:active{cursor:-webkit-grabbing;cursor:grabbing}.col-picker-item input[type=checkbox]{width:auto;margin:0;cursor:pointer;flex-shrink:0}.col-picker-item:has(input:disabled) .col-picker-handle,.col-picker-item:has(input:disabled) input{opacity:.4;cursor:not-allowed}.col-picker-label{flex:1 1}.col-picker-hidden-badge{font-size:.7rem;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:3px;padding:0 .3rem}.data-table th[draggable=true]:hover .th-drag-grip{opacity:.6}.th-drag-grip{opacity:0;margin-right:.3rem;font-size:.85rem;transition:opacity .15s;cursor:-webkit-grab;cursor:grab}.data-table th.th-drop-target{background:var(--surface-2);box-shadow:inset 3px 0 0 var(--accent,#b8963e)}@media (max-width:640px){.site-header .bar{min-height:0;padding-block:.75rem;gap:.5rem}.nav{width:100%;flex-wrap:nowrap;overflow-x:auto;gap:.15rem;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav a,.nav form,.nav-signout{flex:0 0 auto;white-space:nowrap}.nav a,.nav-signout{display:inline-flex;align-items:center;min-height:44px;padding:0 .6rem;font-size:.95rem}.brand{font-size:1.15rem}.brand,.table-sort select{min-height:44px}main{padding:var(--space-6) 0 var(--space-10)}.collection-grid{grid-template-columns:1fr;gap:var(--space-4)}.collection-card{min-height:300px}.filter-toggle{display:inline-flex;align-items:center;justify-content:space-between;width:100%;min-height:44px}.filters[data-open=false],.filters[data-open=false]~.filter-active .filter-clear{display:none}.filters{gap:.6rem;--filter-control-h:2.75rem}.filters input[type=number],.filters input[type=text],.filters>label{width:100%}.filters>label:has(input[type=number]){width:calc(50% - .3rem)}.btn-icon{min-width:44px;min-height:44px}.btn-icon,.pager{justify-content:center}}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.demo-entry{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--border)}.btn-demo{background:transparent;color:var(--accent);border:1px solid color-mix(in srgb,var(--gold) 45%,transparent)}.btn-demo:hover{background:var(--accent-weak)}.demo-entry-hint{margin:0;font-size:.85rem}.demo-banner{justify-content:center;flex-wrap:wrap;gap:var(--space-2) var(--space-4);padding:.5rem var(--space-4);background:var(--accent-weak);border-bottom:1px solid color-mix(in srgb,var(--gold) 30%,transparent)}.demo-banner,.demo-banner-text{display:flex;align-items:center}.demo-banner-text{gap:var(--space-2);margin:0;font-size:.9rem;color:var(--text)}.demo-banner-badge,.demo-banner-cta{background:transparent}.demo-banner-cta{border:none;padding:0;font:inherit;font-weight:500;color:var(--accent);text-decoration:underline;cursor:pointer}.demo-banner-cta:hover{text-decoration:none}@media (max-width:640px){.demo-banner{justify-content:flex-start;padding:.5rem var(--space-3);font-size:.85rem}}