[
  {
    "id": "button-primary",
    "name": "Primary action",
    "category": "Actions",
    "html": "<div class=\"pkd-row\"><button class=\"pkd-btn\" data-demo-toast=\"Primary action selected\">Explore devices</button><button class=\"pkd-btn accent\" data-demo-toast=\"Accent action selected\">Start comparing <svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 12h15m-6-6 6 6-6 6\"/></svg></button></div>",
    "note": "One dominant action per decision area. The ink button is the everyday default; lime marks a deliberate brand moment.",
    "tokens": "44px minimum · 22px horizontal padding · full pill",
    "source": "iPhone / homepage button anatomy; PtaKaro colors"
  },
  {
    "id": "button-secondary",
    "name": "Secondary & text actions",
    "category": "Actions",
    "html": "<div class=\"pkd-row\"><button class=\"pkd-btn secondary\" data-demo-toast=\"Comparison opened\">Compare models</button><button class=\"pkd-btn quiet\" data-demo-toast=\"Details opened\">Learn more <svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m9 5 7 7-7 7\"/></svg></button></div>",
    "note": "Use a secondary action beside a primary CTA; a text action is useful for navigation with less visual weight.",
    "tokens": "1px border · 16–24px action gap",
    "source": "iPhone paired CTA pattern"
  },
  {
    "id": "button-sizes",
    "name": "Button sizes",
    "category": "Actions",
    "html": "<div class=\"pkd-row\"><button class=\"pkd-btn small\" data-demo-toast=\"Compact button selected\">Compact</button><button class=\"pkd-btn\" data-demo-toast=\"Standard button selected\">Standard</button><button class=\"pkd-btn large\" data-demo-toast=\"Large button selected\">Large action</button></div>",
    "note": "Compact buttons belong in dense toolbars. Standalone mobile controls still need a 44px touch target, using wrapper padding when needed.",
    "tokens": "40 / 44 / 52px · 14 / 17 / 17px text",
    "source": "PtaKaro size adaptation"
  },
  {
    "id": "button-states",
    "name": "Button states",
    "category": "Actions",
    "html": "<div class=\"pkd-row\"><button class=\"pkd-btn\">Default</button><button class=\"pkd-btn is-hover\">Hover</button><button class=\"pkd-btn is-focus\">Focus</button><button class=\"pkd-btn is-pressed\">Pressed</button><button class=\"pkd-btn\" disabled>Unavailable</button><button class=\"pkd-btn\" aria-busy=\"true\" disabled><span class=\"pkd-spinner\" aria-hidden=\"true\"></span>Saving</button></div>",
    "note": "Hover changes surface; press compresses 2%; focus remains distinct from selection. Keep a useful label during loading.",
    "tokens": "160ms feedback · 2px focus outline · disabled semantic attribute",
    "source": "Source state mechanics; loading proposed extension"
  },
  {
    "id": "icon-actions",
    "name": "Icon actions & tooltips",
    "category": "Actions",
    "html": "<div class=\"pkd-row\"><button class=\"pkd-icon-btn\" aria-label=\"Add a device\" data-demo-toast=\"Device added\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 5v14M5 12h14\"/></svg></button><button class=\"pkd-icon-btn\" aria-label=\"Next item\" data-demo-toast=\"Next item\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m9 5 7 7-7 7\"/></svg></button><span class=\"pkd-tooltip\"><button class=\"pkd-icon-btn\" aria-label=\"Copy link\" aria-describedby=\"tip-copy\" data-demo-toast=\"Example link copied\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"8\" y=\"8\" width=\"12\" height=\"12\" rx=\"2\"/><path d=\"M16 8V4H4v12h4\"/></svg></button><span role=\"tooltip\" id=\"tip-copy\">Copy link</span></span></div>",
    "note": "Every icon-only action needs an accessible name. Tooltips supplement that name and appear on hover and keyboard focus.",
    "tokens": "24px icon · 44px hit area · circular surface",
    "source": "iPhone card controls and paddle navigation"
  },
  {
    "id": "product-card",
    "name": "Product card",
    "category": "Cards",
    "html": "<article class=\"pkd-card product interactive\"><span class=\"pkd-tag new\">Example product</span><h3>Device profile</h3><div class=\"pkd-art\" aria-hidden=\"true\"><div class=\"device\"></div></div><div class=\"pkd-swatches\" role=\"group\" aria-label=\"Choose sample finish\"><button class=\"pkd-swatch\" style=\"--swatch:#101827\" aria-label=\"Ink\" aria-pressed=\"true\"></button><button class=\"pkd-swatch\" style=\"--swatch:#d2d2d7\" aria-label=\"Silver\" aria-pressed=\"false\"></button><button class=\"pkd-swatch\" style=\"--swatch:#c5f135\" aria-label=\"Lime\" aria-pressed=\"false\"></button></div><p style=\"margin:18px 0\">One clear benefit.<br>Room for the product to breathe.</p><button class=\"pkd-btn\" data-demo-toast=\"Example product selected\">View details</button></article>",
    "note": "Reserve a consistent image area. Align names, color choices, descriptions, and CTAs across a shelf. Use current, sourced product data in production.",
    "tokens": "24px radius · 32px padding · 230px image area",
    "source": "Mac product shelf + iPhone lineup"
  },
  {
    "id": "feature-card",
    "name": "Immersive feature card",
    "category": "Cards",
    "html": "<article class=\"pkd-card feature dark interactive\"><div><span class=\"pkd-eyebrow\" style=\"color:#bdc4ce\">Built around you</span><h3>Less noise.<br>More clarity.</h3></div><div class=\"feature-orbit\" aria-hidden=\"true\"></div><button class=\"pkd-icon-btn\" data-open-demo aria-label=\"Read the feature story\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 5v14M5 12h14\"/></svg></button></article>",
    "note": "One story, one image focus, one reveal action. Keep the headline readable against every crop. Avoid covering the focal point.",
    "tokens": "28px radius · 32px inset · plus at bottom right",
    "source": "iPhone feature gallery"
  },
  {
    "id": "editorial-card",
    "name": "Editorial card",
    "category": "Cards",
    "html": "<article class=\"pkd-card editorial interactive\"><div class=\"pkd-art\" aria-hidden=\"true\"><div class=\"device\"></div></div><div class=\"copy\"><p class=\"pkd-eyebrow\">Buying guide · Example</p><h3>Find your kind of phone.</h3><p>A short, useful introduction to the decision.</p><div class=\"pkd-row\"><button class=\"pkd-btn quiet\" data-demo-toast=\"Example guide opened\">Read the guide <svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m9 5 7 7-7 7\"/></svg></button></div></div></article>",
    "note": "Use editorial cards for explanation and discovery, with a clear category, concise title, and one next step.",
    "tokens": "24px radius · 28px copy inset · no heavy border",
    "source": "Mac shopping guide cards"
  },
  {
    "id": "benefit-card",
    "name": "Benefit & service card",
    "category": "Cards",
    "html": "<article class=\"pkd-card interactive\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m5 12 4 4L19 6\"/></svg><h3>Details you can compare.</h3><p>Keep the benefit short, specific, and easy to scan.</p><div class=\"pkd-row\"><button class=\"pkd-btn quiet\" data-open-demo>See how it works <svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m9 5 7 7-7 7\"/></svg></button></div></article>",
    "note": "A supporting benefit should explain a concrete experience. Do not turn every card into a banner with competing CTAs.",
    "tokens": "24px radius · 28px title · 17px body",
    "source": "Mac store difference + iPhone shopping benefits"
  },
  {
    "id": "review-card",
    "name": "Review card",
    "category": "Cards",
    "html": "<article class=\"pkd-card soft\"><div class=\"pkd-rating\"><span class=\"stars\" aria-label=\"4 out of 5 stars\">★★★★☆</span><span>Sample review</span></div><h3 style=\"font-size:21px\">A clearer way to choose.</h3><p>This sample demonstrates the shape of a review: a short title, readable excerpt, and quieter author metadata.</p><p class=\"pkd-caption\" style=\"margin-top:20px\">Example user · Illustrative content</p><button class=\"pkd-btn quiet small\" data-open-demo>Read full example</button></article>",
    "note": "Separate the review title, rating, excerpt, and attribution. Examples in this guide are labeled and are not customer testimonials.",
    "tokens": "21px title · 17px body · 12px metadata",
    "source": "App Store reviews"
  },
  {
    "id": "app-card",
    "name": "App or compact item",
    "category": "Cards",
    "html": "<article class=\"pkd-folder-list\"><img src=\"assets/avatar-lime.svg\" width=\"64\" height=\"64\" style=\"border-radius:15px\" alt=\"PtaKaro sample app icon\"><div><strong>PtaKaro Library</strong><div class=\"pkd-caption pkd-muted\">Example app card</div></div><button class=\"pkd-btn small secondary\" style=\"margin-left:auto\" data-demo-toast=\"Example app details opened\">View</button></article>",
    "note": "A compact identity row uses a square icon, two levels of copy, and a single trailing action.",
    "tokens": "64px icon · 16px gap · 40px compact action",
    "source": "App Store app identity and related-app shelves"
  },
  {
    "id": "collection-folder",
    "name": "Collection folder",
    "category": "Collections",
    "html": "<div class=\"pkd-row\"><button class=\"pkd-folder\" aria-pressed=\"false\"><svg viewBox=\"0 0 64 52\" aria-hidden=\"true\"><path d=\"M3 9a5 5 0 0 1 5-5h16l7 7h25a5 5 0 0 1 5 5v29a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4Z\"/></svg><span><strong>Phone shortlist</strong><small>6 saved examples</small></span></button><button class=\"pkd-folder\" aria-pressed=\"false\"><svg viewBox=\"0 0 64 52\" aria-hidden=\"true\"><path d=\"M3 9a5 5 0 0 1 5-5h16l7 7h25a5 5 0 0 1 5 5v29a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4Z\"/></svg><span><strong>Buying guides</strong><small>12 reference files</small></span></button></div>",
    "note": "A PtaKaro extension for organizing saved products or files. The folder shape signals a collection, not a single product. Selection is demonstrated locally.",
    "tokens": "20px radius · 24px inset · named item count",
    "source": "Proposed extension from store grouping and card mechanics"
  },
  {
    "id": "folder-row",
    "name": "Folder list row",
    "category": "Collections",
    "html": "<div class=\"pkd-folder-list\"><svg viewBox=\"0 0 64 52\" aria-hidden=\"true\"><path d=\"M3 9a5 5 0 0 1 5-5h16l7 7h25a5 5 0 0 1 5 5v29a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4Z\"/></svg><div><strong>Comparison exports</strong><div class=\"pkd-caption pkd-muted\">Example collection · 4 items</div></div><button class=\"pkd-icon-btn\" aria-label=\"Open comparison exports\" data-demo-toast=\"Example collection opened\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m9 5 7 7-7 7\"/></svg></button></div>",
    "note": "Use list rows when names, dates, or file sizes matter more than artwork. Keep the folder icon and text baseline consistent.",
    "tokens": "44px action · 12px radius · 18px vertical inset",
    "source": "Proposed PtaKaro collection pattern"
  },
  {
    "id": "global-navigation",
    "name": "Global navigation",
    "category": "Navigation",
    "html": "<nav class=\"pkd-nav\" aria-label=\"Example global navigation\"><img src=\"assets/logo-ink.svg\" alt=\"ptakaro\"><div class=\"links\"><a href=\"#recipes\">Explore</a><a href=\"#comparison\">Compare</a><a href=\"#collections\">Saved</a></div></nav>",
    "note": "Keep the global bar quiet, stable, and predictable. Collapse to an explicitly labeled menu on narrow screens.",
    "tokens": "60px PtaKaro header · 13px links · restrained divider",
    "source": "Apple global navigation adapted to PtaKaro"
  },
  {
    "id": "breadcrumbs",
    "name": "Breadcrumb trail",
    "category": "Navigation",
    "html": "<nav class=\"pkd-breadcrumb\" aria-label=\"Example breadcrumbs\"><a href=\"#overview\">PtaKaro</a><span aria-hidden=\"true\">›</span><a href=\"#cards\">Devices</a><span aria-hidden=\"true\">›</span><span aria-current=\"page\">Compare</span></nav>",
    "note": "Expose the current location with a short path. Decorative chevrons stay out of the accessible name.",
    "tokens": "12px text · 10px gap",
    "source": "Apple global footer breadcrumb"
  },
  {
    "id": "tabs",
    "name": "Tabs",
    "category": "Navigation",
    "html": "<div data-tabs><div class=\"pkd-tabs\" role=\"tablist\" aria-label=\"Example device details\"><button role=\"tab\" aria-selected=\"true\" id=\"tab-overview\" aria-controls=\"panel-overview\">Overview</button><button role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" id=\"tab-specs\" aria-controls=\"panel-specs\">Specifications</button><button role=\"tab\" aria-selected=\"false\" tabindex=\"-1\" id=\"tab-reviews\" aria-controls=\"panel-reviews\">Reviews</button></div><div class=\"pkd-tab-panel\" role=\"tabpanel\" id=\"panel-overview\" aria-labelledby=\"tab-overview\">Start with the main story and the most useful details.</div><div class=\"pkd-tab-panel\" role=\"tabpanel\" id=\"panel-specs\" aria-labelledby=\"tab-specs\" hidden>Show comparable facts in a consistent order.</div><div class=\"pkd-tab-panel\" role=\"tabpanel\" id=\"panel-reviews\" aria-labelledby=\"tab-reviews\" hidden>Keep ratings, excerpts, and attribution easy to distinguish.</div></div>",
    "note": "Tabs switch panels in the same context. Use left/right arrows, Home, and End; one tab is in the tab order.",
    "tokens": "44px minimum · 2px active indicator",
    "source": "Adapted from source platform and gallery navigation"
  },
  {
    "id": "segmented-control",
    "name": "Segmented control",
    "category": "Navigation",
    "html": "<div class=\"pkd-segment\" role=\"group\" aria-label=\"Example density\"><button aria-pressed=\"true\">Comfortable</button><button aria-pressed=\"false\">Compact</button></div>",
    "note": "Use a segmented control for a small, mutually exclusive set of choices. Selected is a persistent state, not the same as hover.",
    "tokens": "4px inner gutter · 40px segment · pill container",
    "source": "App Store platform choice / PtaKaro density extension"
  },
  {
    "id": "pagination",
    "name": "Pagination",
    "category": "Navigation",
    "html": "<nav class=\"pkd-pagination\" aria-label=\"Example pagination\"><button aria-label=\"Previous page\" disabled>‹</button><button aria-current=\"page\" aria-label=\"Page 1\">1</button><button aria-label=\"Page 2\">2</button><button aria-label=\"Page 3\">3</button><button aria-label=\"Next page\">›</button></nav>",
    "note": "Use explicit pages for result sets; use arrows and swipe for a gallery. Disable unavailable directions.",
    "tokens": "44px targets · tabular numeric labels",
    "source": "Proposed extension using source paddle mechanics"
  },
  {
    "id": "search-field",
    "name": "Search field",
    "category": "Inputs",
    "html": "<label class=\"pkd-field\"><span>Search the collection</span><input type=\"search\" placeholder=\"Try camera or battery\" data-sample-search aria-describedby=\"sample-search-help\"><small id=\"sample-search-help\">Example search filters the options below.</small></label><ul class=\"pkd-list\" data-sample-results><li>Camera details</li><li>Battery comparison</li><li>Display guide</li></ul>",
    "note": "A visible label explains scope. Provide useful empty results; do not use the placeholder as the only label.",
    "tokens": "52px height · 12px radius · 17px input",
    "source": "Global search + App Store sidebar search"
  },
  {
    "id": "text-fields",
    "name": "Text field & validation",
    "category": "Inputs",
    "html": "<div class=\"pkd-stack\"><label class=\"pkd-field\"><span>Collection name</span><input type=\"text\" placeholder=\"e.g. My next phone\" aria-describedby=\"name-help\"><small id=\"name-help\">Choose a name you will recognize later.</small></label><label class=\"pkd-field\"><span>Email address</span><input type=\"email\" value=\"name@\" aria-invalid=\"true\" aria-describedby=\"email-error\"><small class=\"error\" id=\"email-error\">Enter a complete email address, such as name@example.com.</small></label></div>",
    "note": "Explain the correction next to the field and preserve the value. Validation should identify the problem without blame.",
    "tokens": "52px input · 8px label gap · 12px helper",
    "source": "Proposed form pattern adapted to source controls"
  },
  {
    "id": "select-control",
    "name": "Select & model picker",
    "category": "Inputs",
    "html": "<label class=\"pkd-field\"><span>Compare a device</span><select><option>Choose a sample model</option><option>Sample model A</option><option>Sample model B</option><option>Sample model C</option></select><small>Keep selection persistent while reading the comparison.</small></label>",
    "note": "Prefer a native select for accessible keyboard and mobile behavior. Keep comparison selectors above their columns.",
    "tokens": "52px height · 1px outline · 12px radius",
    "source": "Watch model selector"
  },
  {
    "id": "choice-controls",
    "name": "Checkboxes & radio buttons",
    "category": "Inputs",
    "html": "<div class=\"pkd-stack\"><label class=\"pkd-check\"><input type=\"checkbox\" checked>Include saved devices</label><fieldset style=\"border:0;padding:0;margin:0\"><legend class=\"pkd-caption\">Example view</legend><label class=\"pkd-check\"><input type=\"radio\" name=\"view-example\" checked>All features</label><label class=\"pkd-check\"><input type=\"radio\" name=\"view-example\">Differences only</label></fieldset></div>",
    "note": "Checkboxes allow independent choices. Radios represent one choice in a labeled group. Keep the whole label clickable.",
    "tokens": "20px indicator · 44px row target · 12px gap",
    "source": "Proposed comparison controls"
  },
  {
    "id": "switch",
    "name": "Switch",
    "category": "Inputs",
    "html": "<label class=\"pkd-switch\"><input type=\"checkbox\" role=\"switch\" checked>Show helpful tips</label>",
    "note": "A switch applies an immediate on/off setting. Use a checkbox for agreement or a choice submitted later.",
    "tokens": "44×26px track · 22px thumb · 200ms movement",
    "source": "Proposed PtaKaro control"
  },
  {
    "id": "stepper",
    "name": "Quantity stepper",
    "category": "Inputs",
    "html": "<div class=\"pkd-stepper\" data-stepper><button aria-label=\"Decrease quantity\" disabled>−</button><output aria-live=\"polite\" aria-label=\"Quantity\">1</output><button aria-label=\"Increase quantity\">+</button></div>",
    "note": "Keep a clear minimum and maximum; disable the exhausted direction and announce value changes.",
    "tokens": "44px controls · tabular numbers · 12px border radius",
    "source": "Proposed commerce control"
  },
  {
    "id": "accordion",
    "name": "Accordion",
    "category": "Overlays",
    "html": "<div><details class=\"pkd-accordion\" open><summary>What belongs in the first view?</summary><p>The essential decision. Put the key fact, product, or next step in view; reveal supporting explanation when requested.</p></details><details class=\"pkd-accordion\"><summary>How much information should a card hold?</summary><p>One topic, a concise title, a small amount of supporting text, and one primary interaction.</p></details></div>",
    "note": "Use disclosure for supporting detail. Native details elements provide keyboard access and expanded state without extra ARIA.",
    "tokens": "21px summary · 20px vertical spacing · fine divider",
    "source": "iPhone ecosystem accordion / app detail disclosure"
  },
  {
    "id": "modal",
    "name": "Detail dialog",
    "category": "Overlays",
    "html": "<button class=\"pkd-btn\" data-open-demo>Open detail dialog</button>",
    "note": "A modal keeps the surrounding page in place. Trap focus, support Escape, include a visible close action, and return focus to its trigger.",
    "tokens": "28px radius · 48px content inset · 85dvh maximum",
    "source": "iPhone feature overlays + App Store review dialog"
  },
  {
    "id": "menu",
    "name": "Action menu",
    "category": "Overlays",
    "html": "<div class=\"pkd-menu\" aria-label=\"Example collection actions\"><button data-demo-toast=\"Example collection renamed\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 6h7l2 2h9v12H3Z\"/><path d=\"M3 6V4h6l2 2\"/></svg>Rename collection</button><button data-demo-toast=\"Example link copied\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"8\" y=\"8\" width=\"12\" height=\"12\" rx=\"2\"/><path d=\"M16 8V4H4v12h4\"/></svg>Copy link</button><button data-demo-toast=\"Example export prepared\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 3v12m-5-5 5 5 5-5M4 16v5h16v-5\"/></svg>Export collection</button></div>",
    "note": "These example actions remain ordinary buttons. Add menu/menubar ARIA only when the full menu keyboard interaction is implemented.",
    "tokens": "16px outer radius · 8px padding · 40px rows",
    "source": "Proposed collection action pattern"
  },
  {
    "id": "alerts",
    "name": "Status messages",
    "category": "Feedback",
    "html": "<div class=\"pkd-stack\"><div class=\"pkd-alert positive\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m5 12 4 4L19 6\"/></svg><div><strong>Collection saved</strong>Your changes are ready.</div></div><div class=\"pkd-alert warning\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"m12 3 10 18H2Z\"/><path d=\"M12 9v5M12 17v.1\"/></svg><div><strong>One detail needs attention</strong>Review the highlighted field.</div></div><div class=\"pkd-alert negative\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 11v6M12 7v.1\"/></svg><div><strong>Couldn’t save this time</strong>Your changes are still here. Try again.</div></div></div>",
    "note": "Pair color with an icon and clear text. Error copy explains what happened, what remains safe, and what to do next.",
    "tokens": "12px radius · 18×20px padding · 14px text",
    "source": "Proposed system feedback"
  },
  {
    "id": "toast",
    "name": "Confirmation toast",
    "category": "Feedback",
    "html": "<button class=\"pkd-btn secondary\" data-demo-toast=\"Saved to your example collection\">Show confirmation</button>",
    "note": "Use brief non-blocking feedback for a completed action. Keep critical errors persistent in context instead of hiding them in a toast.",
    "tokens": "16px radius · 14px copy · 4 second display",
    "source": "Proposed completion feedback"
  },
  {
    "id": "loading",
    "name": "Loading & progress",
    "category": "Feedback",
    "html": "<div class=\"pkd-stack\" style=\"max-width:360px;width:100%\" aria-label=\"Example loading states\"><div class=\"pkd-skeleton large\" aria-hidden=\"true\"></div><div class=\"pkd-skeleton\" style=\"width:70%\" aria-hidden=\"true\"></div><div class=\"pkd-skeleton\" style=\"width:45%\" aria-hidden=\"true\"></div><label class=\"pkd-caption\" for=\"example-progress\">Example export · 65%</label><progress class=\"pkd-progress\" id=\"example-progress\" max=\"100\" value=\"65\">65%</progress></div>",
    "note": "Reserve the final content dimensions before assets arrive. Use actual progress only when it is measurable. Reduced motion removes shimmer.",
    "tokens": "1.8s skeleton cycle · 6px progress track",
    "source": "Proposed loading behavior; source reserved media geometry"
  },
  {
    "id": "empty-state",
    "name": "Empty & zero results",
    "category": "Feedback",
    "html": "<div class=\"pkd-empty\"><svg class=\"pkd-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M3 6h7l2 2h9v12H3Z\"/><path d=\"M3 6V4h6l2 2\"/></svg><h3>Your shortlist starts here.</h3><p>Save a device while exploring, then find it in this collection.</p><button class=\"pkd-btn\" data-demo-toast=\"Example exploration opened\">Explore devices</button></div>",
    "note": "Describe the current state, explain how to change it, and offer one relevant action. Empty is not an error.",
    "tokens": "44px illustration · 24px title · 15px description",
    "source": "Proposed saved-collection state"
  },
  {
    "id": "badges",
    "name": "Labels, badges & metadata",
    "category": "Data",
    "html": "<div class=\"pkd-row\"><span class=\"pkd-tag new\">New</span><span class=\"pkd-tag positive\">Saved</span><span class=\"pkd-tag\">Example specification</span><span class=\"pkd-caption pkd-muted\">Updated today · Sample</span></div>",
    "note": "Use badges sparingly to mark meaningful status. Metadata remains quieter than the headline and primary action.",
    "tokens": "12px text · pill tag · semantic color pairing",
    "source": "iPhone new label + App Store metadata"
  },
  {
    "id": "rating-metrics",
    "name": "Ratings & metrics",
    "category": "Data",
    "html": "<div class=\"pkd-row\" style=\"gap:40px\"><div class=\"pkd-metric\"><strong>4.5</strong><span>Example rating</span></div><div class=\"pkd-metric\"><strong>24</strong><span>Example devices</span></div><div class=\"pkd-rating\"><span class=\"stars\" aria-label=\"4 out of 5 stars\">★★★★☆</span><span>Sample rating</span></div></div>",
    "note": "Use tabular numerals, consistent units, and quieter descriptors. Numbers in this specimen are illustrative.",
    "tokens": "36px metric · 12px descriptor · consistent baseline",
    "source": "App Store information ribbon"
  },
  {
    "id": "comparison-table",
    "name": "Comparison table",
    "category": "Data",
    "html": "<div style=\"overflow:auto;width:100%\"><table class=\"pkd-table\"><caption style=\"text-align:left;margin-bottom:16px\">Example comparison structure</caption><thead><tr><th scope=\"col\">Feature</th><th scope=\"col\">Model A</th><th scope=\"col\">Model B</th></tr></thead><tbody><tr><th scope=\"row\">Display</th><td>Compact</td><td>Large</td></tr><tr><th scope=\"row\">Finish</th><td>Ink</td><td>Silver</td></tr><tr><th scope=\"row\">Best for</th><td>Everyday use</td><td>More screen space</td></tr></tbody></table></div>",
    "note": "Comparisons rely on alignment, not decorative cards. Every feature stays in the same row with named column and row headers.",
    "tokens": "16px row inset · fine rules · aligned columns",
    "source": "Watch comparison matrix"
  },
  {
    "id": "list-row",
    "name": "Content list row",
    "category": "Data",
    "html": "<ul class=\"pkd-list\" style=\"width:100%\"><li><span class=\"pkd-avatar\" aria-hidden=\"true\">A</span><div><strong>Example device A</strong><div class=\"pkd-caption pkd-muted\">Saved to your shortlist</div></div><span class=\"meta\">Today</span></li><li><span class=\"pkd-avatar\" aria-hidden=\"true\">B</span><div><strong>Example device B</strong><div class=\"pkd-caption pkd-muted\">Ready to compare</div></div><span class=\"meta\">Yesterday</span></li></ul>",
    "note": "Dense information should still have a clear leading element, primary label, secondary label, and trailing metadata.",
    "tokens": "44px leading element · 16px gaps · 1px divider",
    "source": "App Store information density / proposed saved list"
  },
  {
    "id": "gallery",
    "name": "Horizontal gallery",
    "category": "Layout",
    "html": "<div data-gallery style=\"width:100%\"><div class=\"pkd-gallery\" tabindex=\"0\" aria-label=\"Example feature gallery\"><article class=\"pkd-card soft\"><span class=\"pkd-eyebrow\">Example 1</span><h3>Look closer.</h3><p>One clear idea with its own breathing room.</p></article><article class=\"pkd-card soft\"><span class=\"pkd-eyebrow\">Example 2</span><h3>Compare clearly.</h3><p>One clear idea with its own breathing room.</p></article><article class=\"pkd-card soft\"><span class=\"pkd-eyebrow\">Example 3</span><h3>Choose calmly.</h3><p>One clear idea with its own breathing room.</p></article></div><div class=\"pkd-gallery-controls\"><button class=\"pkd-icon-btn\" aria-label=\"Previous cards\" data-gallery-dir=\"-1\">‹</button><button class=\"pkd-icon-btn\" aria-label=\"Next cards\" data-gallery-dir=\"1\">›</button></div></div>",
    "note": "Allow touch scroll and keyboard access. A partial next card suggests more content; arrows never replace scrolling.",
    "tokens": "24px desktop gap · 20px mobile gap · scroll snap",
    "source": "iPhone and Mac card galleries"
  },
  {
    "id": "footer",
    "name": "Footer & utility navigation",
    "category": "Layout",
    "html": "<footer class=\"pkd-footer\"><div><strong>Explore</strong><a href=\"#cards\">Devices</a><a href=\"#comparison\">Compare</a><a href=\"#collections\">Collections</a></div><div><strong>Help</strong><a href=\"#writing\">Buying guides</a><a href=\"#accessibility\">Accessibility</a></div><div><strong>PtaKaro</strong><a href=\"#identity\">Brand</a><a href=\"#downloads\">Resources</a></div></footer>",
    "note": "Group footer links by purpose. Reduce contrast and type size without sacrificing legibility; stack or disclose groups on mobile.",
    "tokens": "12px utility type · 32px group gap · subtle background",
    "source": "Apple footer navigation"
  }
]