*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f5f5f5;color:#333;font-size:16px;-webkit-font-smoothing:antialiased}.app{max-width:600px;margin:0 auto;padding:0 12px 80px}.app-header{display:flex;align-items:center;gap:8px;padding:16px 0;position:sticky;top:0;background:#f5f5f5;z-index:10}.app-header h1{font-size:1.3rem;flex:1}.btn{border:none;border-radius:8px;padding:10px 16px;font-size:.95rem;cursor:pointer;font-weight:500;transition:opacity .2s}.btn:active{opacity:.7}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:#4a90d9;color:#fff;width:100%}.btn-danger{background:#e74c3c;color:#fff}.btn-ghost{background:transparent;color:#666;padding:6px 10px}.btn-sm{padding:6px 12px;font-size:.85rem}.btn-icon{background:none;border:none;font-size:1.1rem;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background .2s}.btn-icon:hover{background:#eee}.btn-icon-danger:hover{background:#fdd}.add-items{margin-bottom:16px}.add-textarea{width:100%;padding:12px;border:2px solid #ddd;border-radius:8px;font-size:1rem;font-family:inherit;resize:vertical;margin-bottom:8px;transition:border-color .2s}.add-textarea:focus{outline:none;border-color:#4a90d9}.shopping-list{margin-top:8px}.category-group{margin-bottom:16px}.category-title{font-size:.85rem;font-weight:600;color:#fff;background:#4a90d9;padding:6px 12px;border-radius:6px;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}.shopping-item{background:#fff;border-radius:8px;padding:10px 12px;margin-bottom:3px;display:flex;flex-wrap:wrap;align-items:center;gap:4px;transition:opacity .2s;box-shadow:0 1px 2px #0000000f}.shopping-item.checked{opacity:.5}.shopping-item.checked .item-label{text-decoration:line-through;color:#999}.item-main{flex:1;display:flex;align-items:center;gap:10px;cursor:pointer;min-width:0;-webkit-tap-highlight-color:transparent}.item-checkbox{font-size:1.3rem;flex-shrink:0}.item-label{font-size:1rem;word-break:break-word}.item-actions{display:flex;gap:2px;flex-shrink:0}.category-select{width:100%;display:flex;gap:8px;padding-top:8px;align-items:center}.category-select select{flex:1;padding:8px;border:1px solid #ddd;border-radius:6px;font-size:.9rem;background:#fff}.loading,.empty{text-align:center;padding:40px 20px;color:#999;font-size:1rem}@media(min-width:640px){.app{padding:0 20px 40px}.app-header h1{font-size:1.5rem}}
