@import "https://fonts.googleapis.com/css2?family=Gloria+Hallelujah&display=swap";:root{--ink:oklch(38% .09 141.4);--ink-soft:oklch(48% .075 141.3);--danger:oklch(52% .2 26.3);--badge:oklch(93.1% .066 154.9);--badge-up:oklch(93.1% .066 154.9);--badge-up-ink:oklch(38% .09 141.4);--badge-down:oklch(93% .05 25);--badge-down-ink:oklch(52% .2 26.3);--badge-flat:oklch(95.5% .018 95);--badge-flat-ink:oklch(48% .075 141.3);--paper:oklch(96.4% .015 90.2);--paper-2:oklch(99.4% .008 93.6);--sketch:"Gloria Hallelujah", "Comic Sans MS", cursive}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{font-family:var(--sketch);font-synthesis:none;color:var(--ink);background:radial-gradient(circle at 12% 8%, oklch(38% .09 141.4/.05), transparent 28%), radial-gradient(circle at 88% 0%, oklch(52% .2 26.3/.04), transparent 24%), repeating-linear-gradient(0deg, transparent, transparent 27px, oklch(38% .09 141.4/.03) 28px), var(--paper);-webkit-font-smoothing:antialiased}#root{flex-direction:column;min-height:100svh;display:flex}button,input{font-family:inherit}.page{text-align:left;box-sizing:border-box;flex-direction:column;flex:1;width:min(560px,100%);min-height:100svh;margin:0 auto;padding:2.5rem 1.25rem 2rem;display:flex}.header{margin-bottom:1.75rem}.title{color:var(--ink);letter-spacing:-.02em;margin:0;font-size:clamp(2rem,6vw,2.75rem);font-weight:400;line-height:1.1;transform:rotate(-.4deg)}.subtitle{color:var(--ink-soft);max-width:40ch;margin:.4rem 0 0;font-size:1.05rem;transform:rotate(.3deg)}.search{gap:.75rem;margin-bottom:1.5rem;display:grid}.field{gap:.35rem;display:grid}.field span{color:var(--ink-soft);font-size:.95rem}.field input{font:inherit;color:var(--ink);background:var(--paper-2);border:2px solid var(--ink);border-radius:10px 12px 9px 11px/11px 9px 12px 10px;outline:none;min-height:44px;padding:.7rem .85rem;transition:background-color .15s,box-shadow .15s;box-shadow:2px 2px oklch(38% .09 141.4/.12)}.field input:focus{background:oklch(100% 0 0);box-shadow:3px 3px oklch(38% .09 141.4/.18)}.go{font:inherit;cursor:pointer;color:var(--paper);background:var(--ink);border:2px solid var(--ink);border-radius:14px 12px 13px 15px/12px 14px 11px 13px;justify-self:start;min-height:44px;padding:.55rem 1.35rem;transition:transform .15s,opacity .15s;transform:rotate(-.5deg)}.go:hover:not(:disabled){transform:rotate(.4deg)translateY(-1px)}.go:active:not(:disabled){transform:scale(.96)rotate(-.5deg)}.go:disabled{opacity:.55;cursor:not-allowed}.status{color:var(--ink-soft);margin:0 0 1rem}.error{color:var(--danger);max-width:40ch;margin:0 0 1rem}.site-footer{border-top:2px solid oklch(38% .09 141.4/.25);margin-top:auto;padding-top:2rem;padding-bottom:.5rem;transform:rotate(.2deg)}.site-footer p{color:var(--ink-soft);margin:0;font-size:.95rem}.site-footer a{color:var(--ink);text-underline-offset:.15em}.site-footer a:hover{color:var(--ink-soft)}.board-section{margin-top:.5rem;margin-bottom:2.5rem;animation:.4s both board-enter}.board-toolbar{justify-content:flex-end;margin-bottom:.65rem;display:flex}.copy-image{font:inherit;cursor:pointer;color:var(--ink);background:var(--paper-2);border:2px solid var(--ink);border-radius:13px 15px 12px 14px/14px 12px 15px 13px;min-height:44px;padding:.5rem 1.05rem;transition:transform .15s,background-color .15s,opacity .15s;transform:rotate(.4deg);box-shadow:2px 2px oklch(38% .09 141.4/.1)}.copy-image:hover:not(:disabled){background:var(--badge);transform:rotate(-.3deg)translateY(-1px)}.copy-image:active:not(:disabled){transform:scale(.96)rotate(.4deg)}.copy-image:disabled{opacity:.65;cursor:wait}.board{background:var(--paper-2);border:2.5px solid var(--ink);border-radius:18px 20px 17px 19px/19px 17px 20px 18px;padding:1.15rem 1.2rem 1.25rem;box-shadow:3px 3px oklch(38% .09 141.4/.1)}.board-caption{color:var(--ink-soft);align-items:center;gap:.65rem;margin:0 0 1rem;font-size:.95rem;display:flex;transform:rotate(.2deg)}.board-avatar{border:2px solid var(--ink);object-fit:cover;background:var(--paper);border-radius:50%;flex-shrink:0;width:2rem;height:2rem;box-shadow:1px 1px oklch(38% .09 141.4/.12)}.board-caption-text{min-width:0}.month-list{margin:0;padding:0;list-style:none}.month-row{justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 0;animation:.35s both row-enter;display:flex}.month-row:not(:last-child){border-bottom:2.5px solid var(--ink)}.month-row:first-child{animation-delay:0s}.month-row:nth-child(2){animation-delay:.1s}.month-row:nth-child(3){animation-delay:.2s}.month-row:nth-child(4){animation-delay:.3s}.month-row:nth-child(5){animation-delay:.4s}.month-row:nth-child(6){animation-delay:.5s}.month-main{flex-direction:column;gap:.45rem;min-width:0;display:flex}.month-title{color:var(--ink);white-space:nowrap;margin:0;font-size:1.4rem;font-weight:400;line-height:1.1;transform:rotate(-.35deg)}.month-counts{align-items:baseline;gap:1rem;display:flex}.added,.removed{font-variant-numeric:tabular-nums;white-space:nowrap;margin:0;font-size:1.15rem;line-height:1.2}.added{color:var(--ink)}.removed{color:var(--danger)}.badge{text-align:center;font-variant-numeric:tabular-nums;border:2.5px solid;border-radius:12px 14px 11px 13px/13px 11px 14px 12px;flex-shrink:0;min-width:3.4rem;padding:.4rem .8rem .45rem;font-size:1.35rem;line-height:1.1;transform:rotate(1.2deg)translateY(1px)}.badge--up{color:var(--badge-up-ink);background:var(--badge-up);border-color:var(--badge-up-ink);box-shadow:2px 2px oklch(38% .09 141.4/.08)}.badge--down{color:var(--badge-down-ink);background:var(--badge-down);border-color:var(--badge-down-ink);box-shadow:2px 2px oklch(52% .2 26.3/.1)}.badge--flat{color:var(--badge-flat-ink);background:var(--badge-flat);border-color:var(--badge-flat-ink);box-shadow:2px 2px oklch(38% .09 141.4/.06)}@keyframes board-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes row-enter{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media (width<=480px){.month-counts{gap:.75rem}.month-title{font-size:1.15rem}.added,.removed{font-size:1rem}.badge{padding:.35rem .65rem .4rem;font-size:1.15rem}}@media (prefers-reduced-motion:reduce){.board-section,.month-row{animation:none}.go,.copy-image,.field input{transition:none}.go:active:not(:disabled),.copy-image:active:not(:disabled){transform:none}}
