:root{--paper: #e8dfc8;--paper-deep: #ddd0af;--ink: #262019;--ink-soft: #4a4032;--stamp-red: #a63328;--label-green: #24503d;--gold: #b8862b;--carbon-blue: #3c5a70;--rule: rgba(38, 32, 25, .22);--font-display: "Special Elite", "Courier New", monospace;--font-body: "IBM Plex Sans", system-ui, sans-serif;--font-mono: "IBM Plex Mono", "Courier New", monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-body);color:var(--ink);background-color:var(--paper);background-image:radial-gradient(ellipse at top left,rgba(255,255,255,.12),transparent 55%),radial-gradient(ellipse at bottom right,rgba(0,0,0,.06),transparent 60%)}.paper-grain{min-height:100%;position:relative}.paper-grain:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;opacity:.05;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}a{color:inherit}button{font-family:inherit}.masthead{padding:2.25rem 1.5rem 1.25rem;text-align:center;border-bottom:3px double var(--ink);margin:0 1.25rem}.masthead__eyebrow{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;color:var(--carbon-blue);margin:0 0 .4rem}.masthead__title{font-family:var(--font-display);font-size:clamp(2rem,5vw,3.1rem);letter-spacing:.02em;margin:0;line-height:1.05}.masthead__sub{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-soft);margin:.55rem 0 0}.masthead__nav{display:flex;justify-content:center;gap:.5rem;margin-top:1.1rem;flex-wrap:wrap}.masthead__nav a{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;padding:.4rem .85rem;border:1px solid var(--ink);color:var(--ink);background:transparent}.masthead__nav a.active,.masthead__nav a:hover{background:var(--ink);color:var(--paper)}.page{max-width:880px;margin:0 auto;padding:2rem 1.5rem 5rem}.loading,.error-box{font-family:var(--font-mono);padding:2rem 1.5rem;text-align:center;color:var(--ink-soft)}.error-box{color:var(--stamp-red)}.week-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.75rem;flex-wrap:wrap}.week-nav-btn{font-family:var(--font-mono);font-size:.85rem;background:transparent;border:1px solid var(--ink);color:var(--ink);padding:.55rem .9rem;cursor:pointer;letter-spacing:.04em}.week-nav-btn:hover:not(:disabled){background:var(--ink);color:var(--paper)}.week-nav-btn:disabled{opacity:.3;cursor:default}.week-stamp{text-align:center;position:relative}.week-stamp__code{display:inline-block;font-family:var(--font-display);font-size:1.5rem;color:var(--stamp-red);border:3px solid var(--stamp-red);padding:.3rem 1rem;transform:rotate(-2deg);border-radius:3px;opacity:.92}.week-stamp__date{display:block;font-family:var(--font-mono);font-size:.85rem;color:var(--ink-soft);margin-top:.5rem}.week-picker{font-family:var(--font-mono);font-size:.85rem;background:var(--paper);border:1px solid var(--ink);color:var(--ink);padding:.5rem .6rem;max-width:100%}.unpublished-notice{border:1px dashed var(--stamp-red);color:var(--stamp-red);font-family:var(--font-mono);font-size:.9rem;padding:1.25rem;text-align:center;margin-bottom:1.5rem}.week-note{font-family:var(--font-mono);font-size:.78rem;color:var(--carbon-blue);text-align:center;margin:-1rem 0 1.5rem;font-style:italic}.chart-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.chart-row{display:grid;grid-template-columns:3rem 2.75rem 1fr auto;align-items:center;gap:.85rem;padding:.7rem .25rem;border-bottom:1px dashed var(--rule);text-decoration:none;color:inherit}.chart-row:hover{background:#2620190d}.chart-row__pos{font-family:var(--font-mono);font-weight:700;font-size:1.35rem;text-align:right;color:var(--ink)}.chart-row__song{min-width:0}.chart-row__title{display:block;font-weight:600;font-size:1rem;line-height:1.25}.chart-row__artist{display:block;font-family:var(--font-mono);font-size:.8rem;color:var(--ink-soft);margin-top:.2rem}.chart-row__meta{font-family:var(--font-mono);font-size:.72rem;color:var(--ink-soft);text-align:right;white-space:nowrap}.stamp{display:inline-flex;align-items:center;justify-content:center;min-width:2.5rem;height:1.7rem;padding:0 .4rem;font-family:var(--font-mono);font-size:.72rem;font-weight:700;letter-spacing:.03em;border:2px solid currentColor;border-radius:3px;transform:rotate(-3deg);opacity:.88;position:relative}.stamp:after{content:"";position:absolute;top:-2px;right:-2px;bottom:-2px;left:-2px;border:1px solid currentColor;border-radius:4px;opacity:.4;transform:rotate(1.5deg)}.stamp--up{color:var(--label-green);transform:rotate(-3deg)}.stamp--down{color:var(--stamp-red);transform:rotate(2deg)}.stamp--same{color:var(--ink-soft);transform:rotate(-1deg)}.stamp--new{color:var(--gold);transform:rotate(3deg)}.stamp--re-entry{color:var(--carbon-blue);transform:rotate(-2deg)}.stamp--unresolved,.stamp--unknown{color:var(--ink-soft);border-style:dashed;transform:rotate(1deg)}.song-search{width:100%;font-family:var(--font-mono);font-size:.9rem;padding:.7rem .85rem;border:1px solid var(--ink);background:var(--paper);color:var(--ink);margin-bottom:.85rem}.song-list-controls{display:flex;align-items:center;gap:.6rem;margin-bottom:1rem}.song-list-controls__label{font-family:var(--font-mono);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.song-list-controls .week-picker{flex:0 0 auto}.song-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule)}.song-list-row{display:grid;grid-template-columns:1fr auto;gap:.5rem;align-items:center;padding:.85rem .25rem;border-bottom:1px dashed var(--rule);text-decoration:none;color:inherit}.song-list-row:hover{background:#2620190d}.song-list-row__title{font-weight:600}.song-list-row__artist{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-soft)}.song-list-row__stats{font-family:var(--font-mono);font-size:.75rem;text-align:right;color:var(--ink-soft);white-space:nowrap}.peak-badge{display:inline-block;font-family:var(--font-mono);font-weight:700;color:var(--stamp-red)}.song-detail-header{text-align:center;margin-bottom:1rem}.song-detail-header__title{font-family:var(--font-display);font-size:1.6rem;margin:0 0 .2rem}.song-detail-header__artist{font-family:var(--font-mono);font-size:.95rem;color:var(--ink-soft);margin:0}.song-stats-row{display:flex;justify-content:center;gap:1.75rem;font-family:var(--font-mono);font-size:.78rem;color:var(--ink-soft);margin:.9rem 0 1.8rem;flex-wrap:wrap}.song-stats-row strong{color:var(--ink);font-size:1rem}.graph-frame{border:1px solid var(--ink);background:var(--paper-deep);padding:1rem .5rem .5rem}.trajectory-table{margin-top:1.75rem;border-top:1px solid var(--rule)}.trajectory-row{display:grid;grid-template-columns:6rem 3rem 1fr;gap:.75rem;align-items:center;padding:.45rem .25rem;border-bottom:1px dashed var(--rule);font-family:var(--font-mono);font-size:.8rem}.trajectory-row--gap{color:var(--ink-soft);font-style:italic;opacity:.65}.trajectory-row a{text-decoration:none;color:var(--carbon-blue)}.footer-note{text-align:center;font-family:var(--font-mono);font-size:.72rem;color:var(--ink-soft);margin-top:3rem;opacity:.75}@media (max-width: 520px){.chart-row{grid-template-columns:2.4rem 2.3rem 1fr}.chart-row__meta{grid-column:1 / -1;text-align:left;margin-top:.15rem}}
