:root{--paper: #f7efe1;--card: #fffaf0;--ink: #3b2a20;--ink-soft: #7a6553;--accent: #f2a541;--accent-deep: #c97f22;--line: #e6d7bc;--ok: #3f8a5a;--radius: 16px;--topbar: 56px}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100dvh;background:radial-gradient(circle at 50% 0%,#fbf5ea,var(--paper) 60%);color:var(--ink);font:500 16px/1.5 Nunito,system-ui,sans-serif}h1,h2,h3{font-family:"Baloo 2",Nunito,sans-serif;line-height:1.15;margin:0 0 .4em}a{color:var(--accent-deep)}.app{min-height:100dvh}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--topbar);padding:max(8px,env(safe-area-inset-top)) 16px 8px;background:#f7efe1eb;backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}.topbar__brand,.topbar__back{color:var(--ink);font:800 20px/1 "Baloo 2",sans-serif;text-decoration:none;white-space:nowrap}.topbar__back{font-size:17px}.topbar__brand{display:inline-flex;align-items:center;gap:8px}.brand-mark{display:inline-flex;width:30px;height:30px;flex:none}.brand-mark svg{width:100%;height:100%}.topbar__nav{display:flex;align-items:center;flex-wrap:wrap;justify-content:flex-end;gap:6px 14px;font-weight:700}.topbar__nav>a{color:var(--ink);text-decoration:none}.topbar__user{display:inline-flex;align-items:center;gap:10px}.wallet{padding:3px 10px;border-radius:999px;background:var(--card);border:1px solid var(--line);font-size:14px}.lang{display:inline-flex;padding:3px;border-radius:999px;background:var(--card);border:1px solid var(--line)}.lang button{border:0;padding:4px 10px 2px;border-radius:999px;background:none;color:inherit;font:700 13px/1 "Baloo 2",sans-serif;cursor:pointer}.lang button[aria-pressed=true]{background:var(--accent);color:#fff}.main{width:min(100%,1040px);margin:0 auto;padding:20px 16px 48px}.button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px;padding:8px 18px;border:2px solid var(--ink);border-radius:999px;background:var(--card);color:var(--ink);font:700 16px/1 "Baloo 2",sans-serif;text-decoration:none;cursor:pointer;box-shadow:0 3px 0 var(--ink)}.button:active{transform:translateY(2px);box-shadow:0 1px 0 var(--ink)}.button:disabled{opacity:.5;cursor:progress}.button--primary{background:var(--accent)}.button--small{min-height:32px;padding:4px 12px;font-size:14px;box-shadow:0 2px 0 var(--ink)}.link{border:0;padding:0;background:none;color:var(--ink-soft);font:inherit;text-decoration:underline;cursor:pointer}.muted{color:var(--ink-soft)}.hero,.page-head{margin:8px 0 28px}.hero h1{font-size:clamp(30px,6vw,44px)}.hero p,.page-head p{max-width:60ch}.hero__actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}.shelf-section{margin-bottom:36px}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:22px 16px}.card{display:flex;flex-direction:column;gap:4px;padding:0;border:0;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.card__cover{position:relative;display:block;aspect-ratio:3 / 4;border-radius:12px;overflow:hidden;box-shadow:2px 3px #e6d7bc,4px 6px #d8c6a6,0 12px 24px #3c28142e;transition:transform .2s ease}.card:hover .card__cover,.card:focus-visible .card__cover{transform:translateY(-4px) rotate(-1deg)}.card:focus-visible{outline:none}.card:focus-visible .card__cover{outline:3px solid var(--accent-deep);outline-offset:3px}.card__cover img{display:block;width:100%;height:100%;object-fit:cover}.card.is-locked img{filter:saturate(.55) brightness(.92)}.card__lock{position:absolute;right:8px;bottom:8px;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--card);border:2px solid var(--ink);font-size:18px}.card__tag{position:absolute;bottom:8px;left:8px;padding:2px 9px;border-radius:999px;background:var(--ok);color:#fff;font-size:12px;font-weight:800}.card__title{margin-top:8px;font:700 17px/1.2 "Baloo 2",sans-serif}.card__meta{color:var(--ink-soft);font-size:13px}.owned{display:grid;gap:8px;justify-items:start}.packages{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:28px}.package{padding:20px;border-radius:var(--radius);background:var(--card);border:2px solid var(--ink);box-shadow:0 4px 0 var(--ink)}.package__price{margin:0;font:800 30px/1.1 "Baloo 2",sans-serif;color:var(--accent-deep)}.checkout:empty{display:none}.checkout{padding:20px;border-radius:var(--radius);background:var(--card);border:1px solid var(--line)}.checkout__body{display:flex;flex-wrap:wrap;gap:20px;align-items:center}.checkout__qr{width:240px;max-width:100%;height:auto;border-radius:12px;background:#fff}.checkout__info{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;margin:0}.checkout__info dt{color:var(--ink-soft)}.checkout__info dd{margin:0;font-weight:800;word-break:break-all}.checkout__code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:18px;color:var(--accent-deep)}.checkout__status{font-weight:800}.checkout__status.is-done{color:var(--ok)}.request-form{display:grid;gap:14px;max-width:520px}.field{display:grid;gap:4px}.field__label{font-weight:800}.field__hint{color:var(--ink-soft);font-size:13px}.field__input{width:100%;padding:10px 12px;border:2px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font:inherit}.field__input:focus{outline:none;border-color:var(--accent-deep)}.requests,.shares,.admin__list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.request{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 14px;padding:12px 14px;border-radius:12px;background:var(--card);border:1px solid var(--line)}.request.is-ready{border-color:var(--ok)}.shares li{display:flex;justify-content:space-between;align-items:center;gap:10px}.dialog-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px;background:#281c1273}.dialog{width:min(100%,440px);max-height:calc(100dvh - 32px);overflow:auto;padding:22px;border-radius:20px;background:var(--card);border:2px solid var(--ink);box-shadow:0 6px 0 var(--ink)}.dialog__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:18px}.login,.login__dev{display:grid;gap:10px}.login__dev p,.login p{margin:0}.login__reason{padding:10px 12px;border:1px solid var(--accent);border-radius:12px;background:#f2a54124;font-weight:700}.login__intro{color:var(--ink-soft)}.login__perks{display:grid;gap:8px;margin:0;padding:0;list-style:none;font-weight:700}.login__perks li{display:flex;align-items:flex-start;gap:10px}.login__perks li:before{content:"✓";display:grid;place-items:center;flex:none;width:22px;height:22px;margin-top:1px;border-radius:50%;background:var(--ok);color:#fff;font-size:13px}.login__google{display:flex;justify-content:center;min-height:44px;margin-top:6px}.login__note{padding-top:12px;border-top:1px dashed var(--line);color:var(--ink-soft);font-size:13px}.toast{position:fixed;left:50%;bottom:max(20px,env(safe-area-inset-bottom));z-index:60;max-width:calc(100% - 32px);padding:10px 18px;border-radius:999px;background:var(--ink);color:#fff;font-weight:700;transform:translate(-50%)}.admin-tabs{display:flex;gap:6px;margin:-12px 0 22px;padding-bottom:10px;overflow-x:auto;border-bottom:1px solid var(--line)}.admin-tabs__tab{display:inline-flex;align-items:center;gap:6px;flex:none;padding:7px 14px;border:2px solid transparent;border-radius:999px;color:var(--ink);font-weight:800;text-decoration:none;white-space:nowrap}.admin-tabs__tab:hover{border-color:var(--line)}.admin-tabs__tab[aria-current=page]{background:var(--ink);color:var(--card)}.admin-tabs__count{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#c2410c;color:#fff;font-size:12px}.admin{display:grid;gap:12px}.admin__section-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}.admin__section-head h2{margin:0;font-size:22px}.admin__empty{margin:0;padding:14px 16px;border:1px dashed var(--line);border-radius:12px}.admin__small{font-size:12px}.admin__chips,.admin__actions{display:flex;flex-wrap:wrap;gap:6px}.admin__search{width:min(100%,280px);padding:6px 12px}.admin__scroll{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--card)}.admin__table{width:100%;border-collapse:collapse;font-size:14px}.admin__table th,.admin__table td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.admin__table th{color:var(--ink-soft);font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}.admin__table tbody tr:last-child td{border-bottom:0}.admin__grant{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}.admin__grant .field__input{width:auto;min-width:0;padding:4px 8px}.admin__grant .admin__amount{width:64px}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px}.stat{padding:16px;border:2px solid var(--ink);border-radius:var(--radius);background:var(--card);box-shadow:0 4px 0 var(--ink)}.stat__label{color:var(--ink-soft);font-size:13px;font-weight:800}.stat__value{margin:4px 0 2px;font:800 30px/1.1 "Baloo 2",sans-serif}.stat__hint{color:var(--ok);font-size:13px;font-weight:700}.todo{display:grid;gap:8px;margin:0;padding:0;list-style:none}.todo__item{display:flex;justify-content:space-between;gap:10px;padding:12px 16px;border:1px solid var(--line);border-left-width:5px;border-radius:12px;background:var(--card);color:var(--ink);font-weight:700;text-decoration:none}.todo__item--warn{border-left-color:var(--accent)}.todo__item--bad{border-left-color:#c2410c}.todo__item--info{border-left-color:#3b82f6}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:800;white-space:nowrap}.badge--ok{background:#dcf1e2;color:#1f6b3a}.badge--warn{background:#fdebcf;color:#8a5212}.badge--bad{background:#fde0d6;color:#9a3412}.badge--info{background:#dbe8fd;color:#1e4fa8}.badge--muted{background:#eee6d8;color:var(--ink-soft)}.notice{margin:0;padding:12px 14px;border:1px solid var(--accent);border-radius:12px;background:#f2a54124;font-weight:700}body.is-reading{overflow:hidden}body.is-reading .main{width:100%;max-width:none;padding:0}.reader{position:relative;height:calc(100dvh - var(--topbar) - 1px)}.reader__frame{display:block;width:100%;height:100%;border:0}.reader__status{position:absolute;inset:40% 16px auto;text-align:center;font-weight:800}@media (max-width: 560px){.topbar__nav>a{font-size:14px}.wallet{display:none}}
