:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#1d1f22;background:#fdf6f4}*{box-sizing:border-box}#root{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 16px}.container{width:min(880px,100%);display:flex;flex-direction:column;gap:20px}header{display:flex;flex-direction:column;gap:8px}header .title-row{display:flex;align-items:center;gap:12px}header h1{margin:0;font-size:32px}.cat-sticker{background:#fff2e5;color:#d97706;border-radius:999px;padding:6px 12px;font-weight:700;font-size:14px;box-shadow:0 6px 14px #ffc69966}header p{margin:0;color:#585d6a}.panel{background:#fff;border-radius:16px;padding:20px;box-shadow:0 12px 30px #fed7aa40}.highlight-panel{border:1px solid rgba(251,146,60,.2);background:linear-gradient(180deg,#fff7ed,#fff)}.stats-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px}.stats-panel h2{margin:0 0 6px;font-size:14px;color:#6b7280;text-transform:uppercase;letter-spacing:.06em}.stats-panel p{margin:0;font-size:18px}.stats-panel strong{font-size:20px;color:#d97706}.progress-header{display:flex;justify-content:space-between;align-items:center;font-size:18px;margin-bottom:12px}.progress-header strong{font-size:24px;color:#fe6b35}.progress-bar{width:100%;height:10px;background:#f1f3f8;border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#ff7c3f,#ffb347);border-radius:inherit;transition:width .3s ease}.progress-text{margin:12px 0 0;color:#6b7280}.paw-row{margin-top:10px;display:flex;gap:8px;font-size:18px}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}.grid h2{margin:0 0 8px;font-size:16px;color:#4b5563;text-transform:uppercase;letter-spacing:.06em}.grid p{margin:4px 0;font-size:15px}.calendar-panel h2{margin:0 0 4px;font-size:18px}.calendar-panel p{margin:0;color:#6b7280}.calendar-header{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}.calendar-controls{display:flex;gap:8px}.calendar-controls .ghost{background:transparent;color:#374151;border:1px solid #e5e7eb;box-shadow:none;padding:8px 12px;font-size:14px}.calendar-controls .ghost:hover:enabled{transform:none;box-shadow:none;background:#fef3c7}.calendar-legend{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;color:#4b5563}.legend-item{display:inline-flex;align-items:center;gap:6px}.legend-dot{width:10px;height:10px;border-radius:999px;background:#e5e7eb;display:inline-block}.legend-dot.checked{background:#ff7c3f}.legend-dot.redeemed{background:#fbbf24}.legend-dot.pending{background:#facc15}.legend-dot.today{background:#2563eb}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.calendar-weekday{font-size:12px;color:#6b7280;text-align:center;text-transform:uppercase;letter-spacing:.04em}.calendar-cell{position:relative;min-height:48px;border-radius:12px;background:#f9fafb;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#1f2937;font-weight:600}.calendar-cell.blank{background:transparent}.calendar-cell.checked{background:#ff7c3f29;color:#c2410c}.calendar-cell.redeemed{background:#fbbf242e;color:#92400e}.calendar-cell.pending{background:#facc1533;color:#92400e}.calendar-cell.today{border:2px solid rgba(37,99,235,.6)}.calendar-cell em{font-style:normal;font-size:12px;color:inherit}.calendar-icons{display:flex;gap:4px}.calendar-icons .icon{font-size:12px;line-height:1}.actions{display:flex;flex-direction:column;gap:12px}button{border:none;border-radius:12px;padding:12px 16px;font-size:16px;font-weight:600;cursor:pointer;background:#ff7c3f;color:#fff;transition:transform .2s ease,box-shadow .2s ease;box-shadow:0 8px 18px #ff7c3f40}button:hover:enabled{transform:translateY(-1px);box-shadow:0 12px 22px #ff7c3f47}button:disabled{opacity:.6;cursor:not-allowed;box-shadow:none}button.secondary{background:#1f2937;box-shadow:0 8px 18px #0f172a40}.hint{margin:0;font-size:14px;color:#6b7280}.hint.subtle{font-size:12px;color:#9ca3af}.hint code{background:#fef3c7;border-radius:6px;padding:2px 6px;font-size:12px}.notice{padding:12px 16px;border-radius:12px;font-size:14px}.notice.success{background:#ecfdf3;color:#166534;border:1px solid #bbf7d0}.notice.error{background:#fef2f2;color:#991b1b;border:1px solid #fecaca}.review-panel,.review-block{display:flex;flex-direction:column;gap:12px}.review-block h2{margin:0;font-size:16px;color:#4b5563;text-transform:uppercase;letter-spacing:.06em}.review-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.cat-badge{background:#ffe4e6;color:#be185d;border-radius:16px;padding:6px 12px;font-size:14px}.review-login{display:grid;gap:12px}.review-login label{display:grid;gap:6px;font-size:14px;color:#374151}.review-login input{border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px;font-size:14px}.review-login button{align-self:start}.review-form{display:flex;flex-direction:column;gap:8px;padding:12px 16px;border-radius:12px;background:#fff7ed}.review-form label{display:grid;gap:6px;font-size:14px;color:#374151}.review-form input{border:1px solid #e5e7eb;border-radius:10px;padding:10px 12px;font-size:14px}.review-form button{align-self:start}.review-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.review-item{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border-radius:12px;background:#f9fafb}.review-item p{margin:4px 0 0;font-size:13px;color:#6b7280}.review-actions{display:flex;gap:8px}@media (max-width: 540px){header h1{font-size:26px}header .title-row{flex-direction:column;align-items:flex-start;gap:6px}button{font-size:15px}.panel{padding:16px}.stats-panel{grid-template-columns:1fr 1fr;gap:12px}.stats-panel p{font-size:16px}.stats-panel strong{font-size:18px}.calendar-grid{gap:6px}.calendar-cell{min-height:42px;font-size:14px}.calendar-header{flex-direction:column;align-items:flex-start}.calendar-controls{width:100%;justify-content:space-between}.calendar-controls .ghost{flex:1;text-align:center}.calendar-legend{font-size:11px;gap:8px}button,.actions button.secondary{width:100%}.review-header,.review-item{flex-direction:column;align-items:flex-start}}body{margin:0}
