/*
 * Loreledger Design System — ported from the claude.ai/design project
 * (0d454af4-1d01-4825-bf0e-f381a676cc6f). The source ships React components;
 * this file carries just their CSS (selectors/custom properties are
 * framework-agnostic), reused here by ERB partials/helpers instead of JSX.
 * Re-sync by hand from the design project when tokens or components change.
 */

@import url("https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400;12..96,600;12..96,700;12..96,800&family=Work+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&family=IBM+Plex+Mono:wght@400;500&display=swap");

/* ---- tokens/colors.css ---- */
:root{
  --grey-0:#FFFDF8;--grey-50:#FBF6EC;--grey-100:#F3EBDC;--grey-200:#E5DBC8;--grey-300:#CDC1AB;--grey-400:#A39883;--grey-500:#7C7264;--grey-600:#5A5348;--grey-700:#3F3A33;--grey-800:#272420;--grey-900:#171512;
  --green-50:#E9F4EA;--green-100:#CDE7D2;--green-200:#A2D2AE;--green-300:#6FB283;--green-500:#3C8B57;--green-600:#2E7047;--green-700:#235739;--green-900:#12281C;
  --brass-50:#FFF4DC;--brass-100:#FCE3AE;--brass-200:#F7CF7C;--brass-400:#E8A62A;--brass-500:#C9821A;--brass-700:#8E5A10;
  --oxblood-100:#FBDEDA;--oxblood-500:#C0392F;--oxblood-700:#8E2620;
  --amber-100:#FDEBC4;--amber-500:#CE7A0C;
  --slate-100:#D9E6F2;--slate-500:#3E6E9C;
  --plum-100:#EBDDF3;--plum-500:#6E3E96;

  --surface-page:var(--grey-50);
  --surface-card:var(--grey-0);
  --surface-sunken:var(--grey-100);
  --surface-inset:var(--grey-200);
  --surface-brand:var(--green-700);
  --surface-brand-soft:var(--green-50);
  --surface-accent-soft:var(--brass-50);
  --surface-overlay:rgba(23,26,25,.52);

  --text-body:var(--grey-800);
  --text-heading:var(--green-900);
  --text-muted:var(--grey-500);
  --text-faint:var(--grey-400);
  --text-on-brand:var(--grey-0);
  --text-brand:var(--green-700);
  --text-accent:var(--brass-700);
  --text-danger:var(--oxblood-500);
  --text-link:var(--green-600);
  --text-link-hover:var(--brass-500);
  --text-arcane:var(--plum-500);

  --line-hairline:var(--grey-200);
  --line-rule:var(--grey-300);
  --line-strong:var(--grey-400);
  --line-brand:var(--green-700);
  --line-focus:var(--brass-500);

  --status-success-fg:var(--green-600);--status-success-bg:var(--green-50);
  --status-warning-fg:var(--amber-500);--status-warning-bg:var(--amber-100);
  --status-danger-fg:var(--oxblood-500);--status-danger-bg:var(--oxblood-100);
  --status-info-fg:var(--slate-500);--status-info-bg:var(--slate-100);
  --status-arcane-fg:var(--plum-500);--status-arcane-bg:var(--plum-100);
}

.ll-dark{
  --surface-page:var(--green-900);
  --surface-card:#1B2E24;
  --surface-sunken:#122019;
  --surface-inset:#0E1A14;
  --surface-brand:var(--brass-500);
  --surface-brand-soft:#22392C;
  --surface-accent-soft:#2A3327;
  --surface-overlay:rgba(9,14,11,.66);
  --text-body:var(--grey-200);
  --text-heading:var(--grey-50);
  --text-muted:#8FA396;
  --text-faint:#6B7D72;
  --text-on-brand:var(--green-900);
  --text-brand:var(--brass-200);
  --text-accent:var(--brass-200);
  --text-link:var(--brass-200);
  --text-link-hover:var(--brass-100);
  --line-hairline:#2C4436;
  --line-rule:#375243;
  --line-strong:#4A6B57;
  --line-brand:var(--brass-500);
}

/* ---- tokens/typography.css ---- */
:root{
  --font-display:"Bricolage Grotesque","Bitter",Georgia,serif;
  --font-ui:"Work Sans","Helvetica Neue",Arial,sans-serif;
  --font-mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;

  --text-display:42px;--text-display-lh:1.06;
  --text-h1:31px;--text-h1-lh:1.14;
  --text-h2:22px;--text-h2-lh:1.26;
  --text-h3:17px;--text-h3-lh:1.35;
  --text-body-size:15px;--text-body-lh:1.6;
  --text-small:13px;--text-small-lh:1.5;
  --text-micro:11px;--text-micro-lh:1.45;

  --weight-regular:400;--weight-medium:500;--weight-semibold:600;--weight-bold:700;
  --tracking-tight:-0.02em;
  --tracking-normal:0;
  --tracking-label:0.09em;
  --tracking-eyebrow:0.16em;

  --type-eyebrow:var(--weight-semibold) var(--text-micro)/var(--text-micro-lh) var(--font-ui);
  --type-label:var(--weight-medium) var(--text-small)/var(--text-small-lh) var(--font-ui);
  --type-body:var(--weight-regular) var(--text-body-size)/var(--text-body-lh) var(--font-ui);
  --type-h3:700 var(--text-h3)/var(--text-h3-lh) var(--font-display);
  --type-h2:700 var(--text-h2)/var(--text-h2-lh) var(--font-display);
  --type-h1:800 var(--text-h1)/var(--text-h1-lh) var(--font-display);
  --type-display:800 var(--text-display)/var(--text-display-lh) var(--font-display);
  --type-numeric:500 var(--text-small)/var(--text-small-lh) var(--font-mono);
}

/* ---- tokens/spacing.css ---- */
:root{
  --space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;
  --radius-xs:3px;--radius-sm:6px;--radius-md:10px;--radius-lg:18px;--radius-full:999px;
  --border-hair:1px;--border-rule:1.5px;--border-strong:2px;
  --control-h-sm:28px;--control-h-md:36px;--control-h-lg:44px;
  --page-max:1200px;--prose-max:68ch;--sidebar-w:248px;
}

/* ---- tokens/elevation.css ---- */
:root{
  --shadow-flat:none;
  --shadow-raised:0 1px 1px rgba(39,36,32,.06),0 2px 5px rgba(39,36,32,.07);
  --shadow-lifted:0 2px 4px rgba(39,36,32,.07),0 10px 24px rgba(39,36,32,.11);
  --shadow-overlay:0 16px 44px rgba(39,36,32,.24);
  --shadow-inset-rule:inset 0 -1px 0 var(--line-hairline);
  --ring-focus:0 0 0 2px var(--surface-card),0 0 0 4px var(--line-focus);
  --ring-selected:inset 0 0 0 2px var(--green-600);
}

/* ---- tokens/motion.css ---- */
:root{
  --dur-fast:120ms;
  --dur-base:200ms;
  --dur-slow:320ms;
  --ease-standard:cubic-bezier(.2,.8,.3,1);
  --ease-bounce:cubic-bezier(.34,1.56,.64,1);
  --ease-exit:cubic-bezier(.4,0,1,1);
  --press-scale:.96;
  --hover-lift:-1px;
}
@media (prefers-reduced-motion:reduce){
  :root{--dur-fast:0ms;--dur-base:0ms;--dur-slow:0ms;--ease-bounce:linear;--press-scale:1;--hover-lift:0px;}
}

/* ---- tokens/base.css ---- */
body{margin:0;background:var(--surface-page);color:var(--text-body);font:var(--type-body);-webkit-font-smoothing:antialiased}
h1,h2,h3,h4{font-family:var(--font-display);color:var(--text-heading);letter-spacing:var(--tracking-tight);margin:0}
a{color:var(--text-link);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px;transition:color var(--dur-fast) var(--ease-standard)}
a:hover{color:var(--text-link-hover)}
::selection{background:var(--brass-100);color:var(--green-900)}

/* ---- components/core/Icon.jsx ---- */
.ll-icon{display:inline-block;flex:none;background-color:currentColor;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:contain;mask-size:contain;vertical-align:-0.15em}

/* ---- components/core/Button.jsx ---- */
.ll-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-family:var(--font-ui);font-weight:var(--weight-medium);border-radius:var(--radius-md);border:var(--border-hair) solid transparent;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),transform var(--dur-base) var(--ease-bounce),box-shadow var(--dur-fast) var(--ease-standard)}
.ll-btn:focus-visible{outline:none;box-shadow:var(--ring-focus)}
.ll-btn:hover:not([disabled]){transform:translateY(var(--hover-lift))}
.ll-btn:active{transform:translateY(.5px) scale(var(--press-scale));transition-duration:var(--dur-fast)}
.ll-btn[disabled]{cursor:not-allowed;opacity:.45;transform:none}
.ll-btn--sm{height:var(--control-h-sm);padding:0 var(--space-3);font-size:var(--text-small)}
.ll-btn--md{height:var(--control-h-md);padding:0 var(--space-4);font-size:var(--text-body-size)}
.ll-btn--lg{height:var(--control-h-lg);padding:0 var(--space-6);font-size:var(--text-body-size)}
.ll-btn--primary{background:var(--green-600);color:var(--text-on-brand);box-shadow:var(--shadow-raised)}
.ll-btn--primary:hover:not([disabled]){background:var(--green-500)}
.ll-btn--secondary{background:var(--surface-card);color:var(--text-body);border-color:var(--line-rule)}
.ll-btn--secondary:hover:not([disabled]){background:var(--surface-sunken);border-color:var(--line-strong)}
.ll-btn--ghost{background:transparent;color:var(--text-brand)}
.ll-btn--ghost:hover:not([disabled]){background:var(--surface-brand-soft)}
.ll-btn--accent{background:var(--brass-400);color:var(--green-900);box-shadow:var(--shadow-raised)}
.ll-btn--accent:hover:not([disabled]){background:var(--brass-200)}
.ll-btn--danger{background:var(--oxblood-500);color:#fff}
.ll-btn--danger:hover:not([disabled]){background:var(--oxblood-700)}
.ll-btn--block{width:100%}

/* ---- components/core/IconButton.jsx ---- */
.ll-iconbtn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius-md);border:var(--border-hair) solid transparent;background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard)}
.ll-iconbtn:hover:not([disabled]){background:var(--surface-sunken);color:var(--text-body)}
.ll-iconbtn:active{transform:scale(var(--press-scale))}
.ll-iconbtn:focus-visible{outline:none;box-shadow:var(--ring-focus)}
.ll-iconbtn[disabled]{opacity:.4;cursor:not-allowed}
.ll-iconbtn--sm{width:var(--control-h-sm);height:var(--control-h-sm)}
.ll-iconbtn--md{width:var(--control-h-md);height:var(--control-h-md)}
.ll-iconbtn--lg{width:var(--control-h-lg);height:var(--control-h-lg)}
.ll-iconbtn--outlined{border-color:var(--line-rule);background:var(--surface-card)}
.ll-iconbtn--solid{background:var(--green-700);color:var(--text-on-brand)}
.ll-iconbtn--solid:hover:not([disabled]){background:var(--green-600);color:var(--text-on-brand)}

/* ---- components/core/Card.jsx ---- */
.ll-card{background:var(--surface-card);border:var(--border-hair) solid var(--line-hairline);border-radius:var(--radius-lg);box-shadow:var(--shadow-raised);overflow:hidden}
.ll-card--flat{box-shadow:none}
.ll-card--lifted{box-shadow:var(--shadow-lifted)}
.ll-card--interactive{cursor:pointer;transition:box-shadow var(--dur-base) var(--ease-standard),border-color var(--dur-base) var(--ease-standard),transform var(--dur-base) var(--ease-bounce)}
.ll-card--interactive:hover{box-shadow:var(--shadow-lifted);border-color:var(--brass-200);transform:translateY(-3px) rotate(-.35deg)}
.ll-card--interactive:active{transform:translateY(0) scale(var(--press-scale))}
.ll-card--selected{box-shadow:var(--ring-selected),var(--shadow-lifted);border-color:transparent}
.ll-card__rule{height:5px;background:var(--brass-400)}
.ll-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-5) var(--space-5) 0}
.ll-card__eyebrow{display:inline-block;font:var(--type-eyebrow);letter-spacing:var(--tracking-eyebrow);text-transform:uppercase;color:var(--brass-700);background:var(--surface-accent-soft);border-radius:var(--radius-full);padding:3px var(--space-2);margin:0 0 var(--space-2)}
.ll-card__title{font:var(--type-h3);color:var(--text-heading);margin:0}
.ll-card__body{padding:var(--space-4) var(--space-5) var(--space-5)}
.ll-card__foot{padding:var(--space-3) var(--space-5);border-top:var(--border-rule) dashed var(--line-rule);background:var(--surface-accent-soft);font:var(--type-label);color:var(--text-muted);display:flex;align-items:center;gap:var(--space-3)}

/* ---- components/core/Badge.jsx ---- */
.ll-badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-ui);font-size:var(--text-micro);font-weight:var(--weight-semibold);letter-spacing:var(--tracking-label);text-transform:uppercase;padding:3px 8px;border-radius:var(--radius-sm);white-space:nowrap}
.ll-badge__dot{width:5px;height:5px;border-radius:var(--radius-full);background:currentColor}
.ll-badge--neutral{background:var(--surface-sunken);color:var(--text-muted)}
.ll-badge--brand{background:var(--surface-brand-soft);color:var(--text-brand)}
.ll-badge--accent{background:var(--brass-50);color:var(--text-accent)}
.ll-badge--success{background:var(--status-success-bg);color:var(--status-success-fg)}
.ll-badge--warning{background:var(--status-warning-bg);color:var(--status-warning-fg)}
.ll-badge--danger{background:var(--status-danger-bg);color:var(--status-danger-fg)}
.ll-badge--info{background:var(--status-info-bg);color:var(--status-info-fg)}
.ll-badge--outline{background:transparent;box-shadow:inset 0 0 0 1px var(--line-rule);color:var(--text-muted)}

/* ---- components/core/Tag.jsx ---- */
.ll-tag{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-ui);font-size:var(--text-small);color:var(--text-body);background:var(--surface-card);border:var(--border-hair) solid var(--line-rule);border-radius:var(--radius-full);padding:3px 10px;transition:background var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard)}
.ll-tag--clickable{cursor:pointer}
.ll-tag--clickable:hover{background:var(--surface-sunken);border-color:var(--line-strong)}
.ll-tag--active{background:var(--surface-brand-soft);border-color:var(--green-300);color:var(--text-brand)}
.ll-tag__swatch{width:7px;height:7px;border-radius:var(--radius-full);background:var(--brass-500)}
.ll-tag__x{display:inline-flex;border:0;background:none;padding:0;margin-left:2px;color:var(--text-faint);cursor:pointer}
.ll-tag__x:hover{color:var(--text-danger)}

/* ---- components/forms/Input.jsx ---- */
.ll-field{display:flex;flex-direction:column;gap:6px}
.ll-field__label{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--grey-600)}
.ll-field__req{color:var(--text-danger);margin-left:3px}
.ll-field__hint{font-size:var(--text-small);color:var(--grey-600)}
.ll-field__error{display:flex;align-items:center;gap:5px;font-size:var(--text-small);font-weight:var(--weight-semibold);color:var(--text-danger)}
.ll-field__error::before{content:"";width:5px;height:5px;flex:none;background:var(--oxblood-500);transform:rotate(45deg)}
.ll-control{font-family:var(--font-ui);font-size:var(--text-body-size);color:var(--text-body);background:var(--surface-inset);border:var(--border-strong) solid var(--line-rule);border-radius:var(--radius-sm);padding:0 var(--space-3);height:var(--control-h-md);width:100%;box-sizing:border-box;box-shadow:inset 0 2px 3px rgba(39,36,32,.10);transition:border-color var(--dur-fast) var(--ease-standard),background var(--dur-fast) var(--ease-standard),box-shadow var(--dur-base) var(--ease-bounce)}
.ll-control::placeholder{color:var(--text-faint);font-style:italic}
.ll-control:hover:not(:disabled){border-color:var(--brass-400)}
.ll-control:focus{outline:none;background:var(--surface-card);border-color:var(--brass-400);box-shadow:inset 0 2px 3px rgba(39,36,32,.06),0 0 0 3px var(--brass-100)}
.ll-control:disabled{background:var(--surface-sunken);color:var(--text-faint);cursor:not-allowed;box-shadow:none}
.ll-control--invalid,.ll-control--invalid:hover{border-color:var(--oxblood-500)}
.ll-control--invalid:focus{box-shadow:inset 0 2px 3px rgba(39,36,32,.06),0 0 0 3px var(--oxblood-100)}
.ll-control--sm{height:var(--control-h-sm);font-size:var(--text-small)}
.ll-control--lg{height:var(--control-h-lg)}
.ll-control--area{height:auto;min-height:96px;padding:var(--space-3);line-height:var(--text-body-lh);resize:vertical}
.ll-input__wrap{position:relative;display:flex;align-items:center}
.ll-input__wrap::before,.ll-input__wrap::after{content:"";position:absolute;width:9px;height:9px;border:2px solid var(--brass-400);opacity:0;transition:opacity var(--dur-fast) var(--ease-standard),transform var(--dur-base) var(--ease-bounce);pointer-events:none}
.ll-input__wrap::before{top:-4px;left:-4px;border-right:0;border-bottom:0;transform:translate(3px,3px)}
.ll-input__wrap::after{bottom:-4px;right:-4px;border-left:0;border-top:0;transform:translate(-3px,-3px)}
.ll-input__wrap:focus-within::before,.ll-input__wrap:focus-within::after{opacity:1;transform:translate(0,0)}
.ll-input__icon{position:absolute;left:var(--space-3);color:var(--brass-500);pointer-events:none}
.ll-input--has-icon{padding-left:34px}

/* ---- components/forms/Select.jsx ---- */
.ll-select__wrap{position:relative;display:flex;align-items:center}
.ll-select{appearance:none;padding-right:40px;cursor:pointer;font-weight:var(--weight-medium)}
.ll-select__plate{position:absolute;right:5px;top:5px;bottom:5px;width:26px;display:flex;align-items:center;justify-content:center;color:var(--green-900);background:var(--brass-200);border-radius:var(--radius-xs);pointer-events:none;transition:background var(--dur-fast) var(--ease-standard),transform var(--dur-base) var(--ease-bounce)}
.ll-select:hover:not(:disabled)+.ll-select__plate{background:var(--brass-400)}
.ll-select:focus+.ll-select__plate{background:var(--brass-400);transform:translateY(1px)}
.ll-select:disabled+.ll-select__plate{background:var(--surface-sunken);color:var(--text-faint)}

/* ---- components/forms/Checkbox.jsx ---- */
.ll-check{display:inline-flex;align-items:flex-start;gap:var(--space-2);font-family:var(--font-ui);font-size:var(--text-body-size);color:var(--text-body);cursor:pointer}
.ll-check input{appearance:none;margin:0;flex:none;width:22px;height:22px;border:var(--border-strong) solid var(--line-strong);border-radius:var(--radius-sm);background:var(--surface-inset);box-shadow:inset 0 2px 3px rgba(39,36,32,.12);cursor:pointer;transition:background var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-fast) var(--ease-standard),transform var(--dur-base) var(--ease-bounce)}
.ll-check input:hover{border-color:var(--brass-400)}
.ll-check input:active{transform:scale(var(--press-scale))}
.ll-check input:checked{background:var(--green-500);border-color:var(--green-700);background-image:url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");background-size:15px;background-position:center;background-repeat:no-repeat;box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 1px 2px rgba(39,36,32,.2);transform:scale(1.08) rotate(-3deg)}
.ll-check input:focus-visible{outline:none;box-shadow:var(--ring-focus)}
.ll-check input:disabled{background:var(--surface-inset);border-color:var(--line-rule);cursor:not-allowed}
.ll-check--disabled{color:var(--text-faint);cursor:not-allowed}
.ll-check__desc{display:block;font-size:var(--text-small);color:var(--text-muted)}

/* ---- components/forms/Radio.jsx ---- */
.ll-radiogroup{display:flex;flex-direction:column;gap:var(--space-2)}
.ll-radiogroup--row{flex-direction:row;gap:var(--space-5)}
.ll-radio{display:inline-flex;align-items:flex-start;gap:var(--space-2);font-family:var(--font-ui);font-size:var(--text-body-size);color:var(--text-body);cursor:pointer}
.ll-radio input{appearance:none;margin:0;flex:none;width:18px;height:18px;margin-top:3px;border:var(--border-strong) solid var(--line-strong);border-radius:3px;background:var(--surface-inset);box-shadow:inset 0 2px 3px rgba(39,36,32,.12);transform:rotate(45deg);cursor:pointer;transition:border-color var(--dur-fast) var(--ease-standard),box-shadow var(--dur-base) var(--ease-standard),transform var(--dur-base) var(--ease-bounce)}
.ll-radio input:hover{border-color:var(--brass-400)}
.ll-radio input:active{transform:rotate(45deg) scale(var(--press-scale))}
.ll-radio input:checked{background:var(--surface-card);border-color:var(--brass-500);box-shadow:inset 0 0 0 4px var(--brass-400);transform:rotate(45deg) scale(1.1)}
.ll-radio input:focus-visible{outline:none;box-shadow:inset 0 0 0 4px var(--brass-400),var(--ring-focus)}
.ll-radio input:disabled{border-color:var(--line-rule);cursor:not-allowed}
.ll-radio__desc{display:block;font-size:var(--text-small);color:var(--text-muted)}

/* ---- components/forms/Switch.jsx ---- */
.ll-switch{display:inline-flex;align-items:center;gap:var(--space-3);font-family:var(--font-ui);font-size:var(--text-body-size);color:var(--text-body);cursor:pointer}
.ll-switch__track{position:relative;flex:none;display:inline-block;width:50px;height:28px}
.ll-switch input{appearance:none;margin:0;display:block;width:100%;height:100%;border-radius:var(--radius-sm);border:var(--border-strong) solid var(--line-strong);background:var(--surface-inset);box-shadow:inset 0 2px 3px rgba(39,36,32,.16);box-sizing:border-box;cursor:pointer;transition:background var(--dur-base) var(--ease-standard),border-color var(--dur-base) var(--ease-standard)}
.ll-switch__knob{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:3px;background:var(--brass-200);border:1px solid var(--brass-500);box-sizing:border-box;box-shadow:0 1px 2px rgba(39,36,32,.28),inset 0 1px 0 rgba(255,255,255,.5);pointer-events:none;transition:transform var(--dur-base) var(--ease-bounce),background var(--dur-base) var(--ease-standard)}
.ll-switch input:checked{background:var(--green-600);border-color:var(--green-700)}
.ll-switch input:checked+.ll-switch__knob{transform:translateX(21px);background:var(--brass-400)}
.ll-switch input:active+.ll-switch__knob{transform:scale(.94)}
.ll-switch input:checked:active+.ll-switch__knob{transform:translateX(21px) scale(.94)}
.ll-switch input:disabled+.ll-switch__knob{background:var(--grey-200);border-color:var(--line-rule);box-shadow:none}
.ll-switch input:focus-visible{outline:none;box-shadow:var(--ring-focus)}
.ll-switch input:disabled{background:var(--surface-inset);cursor:not-allowed}
.ll-switch--reverse{flex-direction:row-reverse;justify-content:space-between;width:100%}
.ll-switch__desc{display:block;font-size:var(--text-small);color:var(--text-muted)}

/* ---- components/navigation/Tabs.jsx ---- */
.ll-tabs{display:flex;align-items:center;gap:var(--space-5);border-bottom:var(--border-hair) solid var(--line-hairline)}
.ll-tab{position:relative;display:inline-flex;align-items:center;gap:var(--space-2);border:0;background:none;padding:0 0 10px;font-family:var(--font-ui);font-size:var(--text-body-size);font-weight:var(--weight-medium);color:var(--text-muted);cursor:pointer;transition:color var(--dur-fast) var(--ease-standard)}
.ll-tab:hover{color:var(--text-body)}
.ll-tab::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:transparent;transition:background var(--dur-base) var(--ease-standard)}
.ll-tab--active{color:var(--text-heading);font-family:var(--font-display);font-weight:var(--weight-semibold)}
.ll-tab--active::after{background:var(--brass-500)}
.ll-tab:focus-visible{outline:none;box-shadow:var(--ring-focus);border-radius:var(--radius-sm)}
.ll-tab__count{font:var(--type-numeric);color:var(--text-faint)}
.ll-tabs--pill{border:0;gap:var(--space-1);background:var(--surface-sunken);padding:3px;border-radius:var(--radius-md);display:inline-flex}
.ll-tabs--pill .ll-tab{padding:5px 12px;border-radius:var(--radius-sm)}
.ll-tabs--pill .ll-tab::after{display:none}
.ll-tabs--pill .ll-tab--active{background:var(--surface-card);color:var(--text-heading);box-shadow:var(--shadow-raised);font-family:var(--font-ui)}

/* ---- components/feedback/Dialog.jsx ---- */
.ll-dialog__scrim{position:fixed;inset:0;background:var(--surface-overlay);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:var(--space-6);z-index:60;animation:ll-fade var(--dur-base) var(--ease-standard)}
.ll-dialog{background:var(--surface-card);border-radius:var(--radius-lg);box-shadow:var(--shadow-overlay);width:100%;max-width:460px;overflow:hidden;animation:ll-rise var(--dur-base) var(--ease-standard)}
.ll-dialog--wide{max-width:680px}
.ll-dialog__head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);padding:var(--space-5) var(--space-5) 0}
.ll-dialog__title{font:var(--type-h2);color:var(--text-heading);margin:0}
.ll-dialog__desc{font-size:var(--text-small);color:var(--text-muted);margin:6px 0 0}
.ll-dialog__body{padding:var(--space-5)}
.ll-dialog__foot{display:flex;justify-content:flex-end;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-top:var(--border-hair) solid var(--line-hairline);background:var(--surface-sunken)}
@keyframes ll-fade{from{opacity:0}to{opacity:1}}
@keyframes ll-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* ---- components/feedback/Toast.jsx ---- */
.ll-toast{display:flex;align-items:flex-start;gap:var(--space-3);background:var(--grey-900);color:var(--grey-100);border-radius:var(--radius-md);box-shadow:var(--shadow-overlay);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);min-width:280px;max-width:420px;font-family:var(--font-ui);font-size:var(--text-small);animation:ll-toast-in var(--dur-base) var(--ease-standard)}
.ll-toast__icon{margin-top:1px;flex:none}
.ll-toast--success .ll-toast__icon{color:var(--green-300)}
.ll-toast--danger .ll-toast__icon{color:#E8A19C}
.ll-toast--info .ll-toast__icon{color:var(--brass-200)}
.ll-toast__title{font-weight:var(--weight-semibold);display:block}
.ll-toast__msg{color:var(--grey-400);display:block;margin-top:2px}
.ll-toast .ll-iconbtn{color:var(--grey-400);margin-left:auto}
.ll-toast .ll-iconbtn:hover{background:rgba(255,255,255,.09);color:#fff}
.ll-toast__stack{position:fixed;right:var(--space-6);bottom:var(--space-6);display:flex;flex-direction:column;gap:var(--space-2);z-index:70}
@keyframes ll-toast-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---- components/feedback/Tooltip.jsx ---- */
.ll-tt{position:relative;display:inline-flex}
.ll-tt__bubble{position:absolute;z-index:80;background:var(--grey-900);color:var(--grey-100);font-family:var(--font-ui);font-size:var(--text-micro);line-height:1.4;padding:5px 8px;border-radius:var(--radius-sm);white-space:nowrap;box-shadow:var(--shadow-lifted);opacity:0;pointer-events:none;transition:opacity var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-standard)}
.ll-tt__bubble--shown{opacity:1}
.ll-tt__bubble--top{bottom:calc(100% + 6px);left:50%;transform:translateX(-50%)}
.ll-tt__bubble--bottom{top:calc(100% + 6px);left:50%;transform:translateX(-50%)}
.ll-tt__bubble--right{left:calc(100% + 6px);top:50%;transform:translateY(-50%)}
.ll-tt__kbd{color:var(--grey-400);margin-left:6px;font-family:var(--font-mono)}
