.loom-card{position:relative;border:var(--edge-w) solid transparent;border-radius:var(--r-md);padding:var(--card-pad);min-width:0;background:linear-gradient(var(--surface),var(--surface)) padding-box;box-shadow:inset 0 0 5px -2px var(--fresnel-tight),inset 0 0 26px -8px var(--sheen-amb),var(--shadow-sm)}@supports (transform:rotate(atan2(1,1))){.loom-card{--vy:calc(var(--cy, 400px) - var(--sy));--ang:atan2(calc(var(--lamp-x) - var(--cx, 50vw)),calc(var(--vy) - var(--lamp-y)));background:radial-gradient(var(--pool-size) circle at calc(50% + sin(var(--ang)) * 50%) calc(50% - cos(var(--ang)) * 50%),var(--pool),transparent 72%) padding-box,linear-gradient(var(--surface),var(--surface)) padding-box}}.loom-card:before{content:"";border:var(--edge-w) solid transparent;border-radius:var(--r-md);background-image:conic-gradient(from calc(var(--ang, 0deg) - 120deg) at 50% 50%,var(--edge-stops));background-origin:border-box;background-clip:border-box;-webkit-mask-image:linear-gradient(currentcolor 0 0),linear-gradient(currentcolor 0 0);-webkit-mask-clip:padding-box,border-box;mask-image:linear-gradient(currentcolor 0 0),linear-gradient(currentcolor 0 0);mask-clip:padding-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude}.loom-card:before,.loom-card__glaze{position:absolute;inset:calc(var(--edge-w) * -1);pointer-events:none}.loom-card__glaze{border-radius:calc(var(--r-md) + var(--edge-w));background-image:conic-gradient(from calc(var(--ang, 0deg) - 120deg) at 50% 50%,var(--edge-melt));-webkit-mask-image:linear-gradient(to bottom,currentcolor,transparent var(--melt-reach)),linear-gradient(to top,currentcolor,transparent var(--melt-reach)),linear-gradient(to right,currentcolor,transparent var(--melt-reach)),linear-gradient(to left,currentcolor,transparent var(--melt-reach));mask-image:linear-gradient(to bottom,currentcolor,transparent var(--melt-reach)),linear-gradient(to top,currentcolor,transparent var(--melt-reach)),linear-gradient(to right,currentcolor,transparent var(--melt-reach)),linear-gradient(to left,currentcolor,transparent var(--melt-reach))}@supports (background-clip:border-area){.loom-card__glaze{-webkit-mask-image:none;mask-image:none;border:var(--melt-reach) solid transparent;background-clip:border-area;filter:blur(var(--melt-blur));-webkit-clip-path:inset(0 round calc(var(--r-md) + var(--edge-w)));clip-path:inset(0 round calc(var(--r-md) + var(--edge-w)))}}.loom-card[data-interactive]{cursor:pointer;transition:transform var(--motion-press),box-shadow var(--motion-micro);box-shadow:inset 0 0 0 999px transparent,inset 0 0 5px -2px var(--fresnel-tight),inset 0 0 26px -8px var(--sheen-amb),var(--shadow-md)}.loom-card[data-interactive]:hover{box-shadow:inset 0 0 0 999px color-mix(in srgb,var(--hover-tint) 55%,transparent),inset 0 0 5px -2px var(--fresnel-tight),inset 0 0 26px -8px var(--sheen-amb),var(--shadow-md)}.loom-card[data-interactive]:active{transform:translateY(1px) scale(.995);transition-duration:0s;box-shadow:inset 0 0 0 999px color-mix(in srgb,var(--hover-tint) 55%,transparent),var(--press-depth),inset 0 0 26px -8px var(--sheen-amb),var(--shadow-sm)}.loom-card[data-interactive]:after{content:"";position:absolute;inset:calc(var(--edge-w) * -1);border-radius:calc(var(--r-md) + var(--edge-w));background-image:radial-gradient(190px circle at var(--mx,50%) var(--my,0),var(--edge-spot),transparent 70%),conic-gradient(from calc(var(--ang, 0deg) - 120deg) at 50% 50%,var(--edge-stops-hover));-webkit-mask-image:linear-gradient(to bottom,currentcolor,transparent var(--melt-reach)),linear-gradient(to top,currentcolor,transparent var(--melt-reach)),linear-gradient(to right,currentcolor,transparent var(--melt-reach)),linear-gradient(to left,currentcolor,transparent var(--melt-reach));mask-image:linear-gradient(to bottom,currentcolor,transparent var(--melt-reach)),linear-gradient(to top,currentcolor,transparent var(--melt-reach)),linear-gradient(to right,currentcolor,transparent var(--melt-reach)),linear-gradient(to left,currentcolor,transparent var(--melt-reach));pointer-events:none;opacity:0;transition:opacity var(--motion-micro)}@supports (background-clip:border-area){.loom-card[data-interactive]:after{-webkit-mask-image:none;mask-image:none;border:var(--melt-reach) solid transparent;background-clip:border-area;filter:blur(calc(var(--melt-blur) / 3));-webkit-clip-path:inset(0 round calc(var(--r-md) + var(--edge-w)));clip-path:inset(0 round calc(var(--r-md) + var(--edge-w)))}}.loom-card[data-interactive]:focus-visible:after,.loom-card[data-interactive]:hover:after{opacity:.45}.loom-card[data-selected=true]:before{background-image:conic-gradient(from calc(var(--ang, 0deg) - 120deg) at 50% 50%,var(--edge-stops-active))}.loom-card[data-selected=true]:after{opacity:0}.loom-heading{font-weight:var(--weight-display);line-height:var(--leading-tight);letter-spacing:var(--tracking-tight)}.loom-heading,.loom-t-display{font-family:var(--font-display)}.loom-t-display{font-size:var(--text-display-size);line-height:var(--text-display-line);font-weight:var(--text-display-weight);letter-spacing:var(--text-display-track)}.loom-t-title{font-size:var(--text-title-size);line-height:var(--text-title-line);font-weight:var(--text-title-weight);letter-spacing:var(--text-title-track)}.loom-t-heading,.loom-t-title{font-family:var(--font-display)}.loom-t-heading{font-size:var(--text-heading-size);line-height:var(--text-heading-line);font-weight:var(--text-heading-weight);letter-spacing:var(--text-heading-track)}.loom-t-body{font-size:var(--text-body-size);line-height:var(--text-body-line);font-weight:var(--text-body-weight);letter-spacing:var(--text-body-track)}.loom-t-body,.loom-t-ledger{font-family:var(--font-body)}.loom-t-ledger{font-size:var(--text-ledger-size);line-height:var(--text-ledger-line);font-weight:var(--text-ledger-weight);letter-spacing:var(--text-ledger-track)}.loom-t-label{font-family:var(--font-body);font-size:var(--text-label-size);line-height:var(--text-label-line);font-weight:var(--text-label-weight);letter-spacing:var(--text-label-track)}.loom-t-caption{font-family:var(--font-body);font-size:var(--text-caption-size);line-height:var(--text-caption-line);font-weight:var(--text-caption-weight);letter-spacing:var(--text-caption-track)}.loom-nums{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.loom-measure-blurb{max-width:var(--measure-blurb)}.loom-pill{display:inline-flex;align-items:center;gap:var(--s1);padding:2px var(--s3);border-radius:var(--r-full);font-size:var(--text-label-size);font-weight:var(--text-label-weight);line-height:1.7;background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft);white-space:nowrap}.loom-pill[data-tone=good]{background:color-mix(in srgb,var(--support) 14%,transparent);border-color:color-mix(in srgb,var(--support) 30%,transparent);color:var(--support)}.loom-pill[data-tone=accent]{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 30%,transparent);color:var(--accent)}.loom-pill[data-tone=warn]{background:color-mix(in srgb,var(--warn) 14%,transparent);border-color:color-mix(in srgb,var(--warn) 30%,transparent);color:var(--warn)}.loom-pill[data-tone=danger]{background:color-mix(in srgb,var(--danger) 14%,transparent);border-color:color-mix(in srgb,var(--danger) 30%,transparent);color:var(--danger)}.loom-stat{display:flex;flex-direction:column;gap:var(--s1);min-width:0}.loom-stat__label{font-size:var(--text-label-size);font-weight:var(--text-label-weight);color:var(--ink-soft);text-transform:uppercase;letter-spacing:.04em}.loom-stat__value{font-family:var(--font-display);font-size:var(--text-title-size);font-weight:var(--text-title-weight);line-height:1.1;letter-spacing:var(--text-title-track);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.loom-stat__delta{font-size:var(--text-label-size);font-weight:var(--text-label-weight);color:var(--ink-soft);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.loom-stat__delta[data-tone=up]{color:var(--support)}.loom-stat__delta[data-tone=down]{color:var(--danger)}.loom-sample-badge{display:inline-flex;align-items:center;padding:1px var(--s2);border:1.5px dashed var(--warn);border-radius:var(--r-sm);color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);font-size:var(--text-caption-size);font-weight:700;letter-spacing:.08em;cursor:help}.loom-soon-tag{border-radius:var(--r-full);background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft)}.loom-needs-verb,.loom-soon-tag{display:inline-flex;align-items:center;padding:1px var(--s2);font-size:var(--text-caption-size);font-weight:700;letter-spacing:.06em}.loom-needs-verb{gap:var(--s1);flex:none;border-radius:var(--r-full);border:1.5px dashed var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);color:var(--warn);text-transform:uppercase;white-space:nowrap;cursor:help}.loom-needs-verb__code{font-family:var(--font-mono);font-weight:600;letter-spacing:0;text-transform:none;opacity:.85;max-width:22ch;overflow:hidden;text-overflow:ellipsis}.loom-section-header{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s3);margin:var(--section-gap) 0 var(--s4)}.loom-section-header h2,.loom-section-header h3{margin:0}.loom-section-header__sub{margin:var(--s1) 0 0;color:var(--ink-soft);font-size:var(--text-body-size);line-height:var(--text-body-line)}.loom-empty{text-align:center;padding:var(--s7) var(--s5);color:var(--ink-soft)}.loom-empty__icon{font-size:2rem;margin-bottom:var(--s3)}.loom-empty__icon svg{display:block;margin:0 auto}.loom-empty__title{font-family:var(--font-display);font-size:var(--text-heading-size);line-height:var(--text-heading-line);font-weight:var(--text-heading-weight);letter-spacing:var(--text-heading-track);color:var(--ink);margin:0 0 var(--s2)}.loom-empty__body{max-width:var(--measure-blurb);font-size:var(--text-body-size);line-height:var(--text-body-line);margin:0 auto var(--s4)}.loom-pill:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-tabbar{position:fixed;inset:auto 0 0 0;z-index:var(--z-sticky);display:flex;justify-content:space-around;background:color-mix(in srgb,var(--bg) 92%,var(--ink));border-top:1px solid var(--line);padding:var(--s2) var(--s2) calc(var(--s2) + env(safe-area-inset-bottom));box-shadow:0 -4px 16px color-mix(in srgb,var(--ink) 6%,transparent)}.loom-tabbar__item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex:1 1;min-width:0;min-height:var(--touch-min);padding:var(--s1) var(--s2);border-radius:var(--r-sm);color:var(--ink-soft);font-size:var(--text-caption-size);font-weight:var(--text-label-weight);text-decoration:none;transition:color var(--motion-micro),background var(--motion-micro),transform var(--motion-press)}.loom-tabbar__item:active{transform:scale(.94);transition-duration:0s}.loom-tabbar__item[data-active=true]{color:var(--accent);background:var(--accent-soft)}.loom-tabbar__item[data-active=true] .loom-tabbar__icon{transform:translateY(-1px);transition:transform var(--dur-base) var(--spring-snap)}.loom-tabbar__item:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-tabbar__icon{font-size:1.25rem;line-height:1}.loom-has-tabbar{padding-bottom:calc(var(--s8) + env(safe-area-inset-bottom))}.loom-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);max-width:100%;min-width:0;text-decoration:none;border-radius:var(--r-full);border:1px solid transparent;font-weight:600;cursor:pointer;transition:background var(--motion-micro),border-color var(--motion-micro),opacity var(--motion-micro),transform var(--motion-press),box-shadow var(--motion-micro)}.loom-btn:active:not([disabled]){transform:translateY(1px) scale(.97);box-shadow:var(--press-depth);transition-duration:0s}.loom-btn[data-size=md]{padding:var(--s3) var(--s5);font-size:var(--text-body-size);min-height:var(--control-h)}.loom-btn[data-size=sm]{padding:var(--s2) var(--s4);font-size:var(--text-label-size);min-height:var(--touch-min)}.loom-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-btn[data-tone=primary]{background:var(--accent);color:var(--on-accent)}.loom-btn[data-tone=primary]:hover:not([disabled]){background:color-mix(in srgb,var(--accent) 88%,var(--ink))}.loom-btn[data-tone=quiet]{background:var(--surface);border-color:var(--line);color:var(--ink)}.loom-btn[data-tone=quiet]:hover:not([disabled]){background:color-mix(in srgb,var(--ink) 5%,var(--surface))}.loom-btn[data-tone=ghost]{background:transparent;color:var(--ink-soft)}.loom-btn[data-tone=ghost]:hover:not([disabled]){background:color-mix(in srgb,var(--ink) 6%,transparent);color:var(--ink)}.loom-btn[data-tone=danger]{background:var(--surface);border-color:color-mix(in srgb,var(--danger) 35%,var(--surface));color:var(--danger)}.loom-btn[data-tone=danger]:hover:not([disabled]){background:color-mix(in srgb,var(--danger) 12%,var(--surface))}.loom-btn[disabled]{opacity:.55;cursor:not-allowed}.loom-action-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s2);padding:var(--s3) var(--s5);min-height:var(--control-h);border-radius:var(--r-full);border:1px solid transparent;font-weight:600;font-size:var(--text-body-size);cursor:pointer;transition:background var(--motion-micro),transform var(--motion-press),opacity var(--motion-micro)}.loom-action-btn:active{transform:translateY(1px) scale(.97);box-shadow:var(--press-depth);transition-duration:0s}.loom-action-btn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-action-btn[data-pending=true],.loom-action-btn[disabled]{opacity:.6;cursor:default}.loom-action-btn[data-tone=primary]{background:var(--accent);color:var(--on-accent)}.loom-action-btn[data-tone=primary]:hover:not([disabled]){background:color-mix(in srgb,var(--accent) 88%,var(--ink))}.loom-action-btn[data-tone=quiet]{background:var(--surface);border-color:var(--line);color:var(--ink)}.loom-action-btn[data-tone=quiet]:hover:not([disabled]){background:color-mix(in srgb,var(--ink) 5%,var(--surface))}.loom-action-btn[data-tone=danger]{background:var(--surface);border-color:color-mix(in srgb,var(--danger) 35%,var(--surface));color:var(--danger)}.loom-action-btn[data-tone=danger]:hover:not([disabled]){background:color-mix(in srgb,var(--danger) 12%,var(--surface))}.loom-input{min-width:0;max-width:100%;width:100%;padding:var(--s2) var(--s3);min-height:var(--control-h);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);color:var(--ink);font:inherit;font-size:var(--text-body-size)}.loom-input:focus-visible{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}textarea.loom-input{resize:vertical;line-height:var(--leading-body)}.loom-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.loom-skel{display:block;max-width:100%;min-width:0;background-image:linear-gradient(100deg,color-mix(in srgb,var(--ink) 5%,transparent) 28%,color-mix(in srgb,var(--ink) 9%,transparent) 46%,color-mix(in srgb,var(--accent) 10%,color-mix(in srgb,var(--ink) 6%,transparent)) 50%,color-mix(in srgb,var(--ink) 9%,transparent) 54%,color-mix(in srgb,var(--ink) 5%,transparent) 72%);background-size:220% 100%;background-repeat:no-repeat;animation:loom-skel-shimmer 1.6s ease-in-out infinite;animation-delay:calc(var(--skel-i, 0) * .11s)}@keyframes loom-skel-shimmer{0%{background-position:150% 0}to{background-position:-50% 0}}.loom-skel-card{position:relative;border:var(--edge-w) solid var(--line-strong);border-radius:var(--r-md);padding:var(--card-pad);min-width:0;background:var(--surface);box-shadow:inset 0 0 5px -2px var(--fresnel-tight),inset 0 0 26px -8px var(--sheen-amb),var(--shadow-sm);animation:loom-appear var(--motion-state) both;animation-delay:calc(var(--skel-i, 0) * .05s)}.loom-skel-line{display:flex;align-items:center;font-size:var(--text-body-size);height:calc(1em * var(--text-body-line))}.loom-skel-line[data-role=label]{font-size:var(--text-label-size);height:calc(1em * var(--text-label-line))}.loom-skel-line[data-role=caption]{font-size:var(--text-caption-size);height:calc(1em * var(--text-caption-line))}.loom-skel-line>.loom-skel{height:.64em;border-radius:var(--r-sm)}.loom-appear{animation:loom-appear var(--motion-state) both}@keyframes loom-appear{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.loom-spinner{display:inline-block;flex:none;border-radius:50%;border:2px solid color-mix(in srgb,var(--ink) 15%,transparent);border-top-color:var(--accent);animation:loom-spin .7s linear infinite;vertical-align:-.15em}.loom-spinner__sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@keyframes loom-spin{to{transform:rotate(1turn)}}.loom-toast-stack{position:fixed;left:50%;bottom:calc(var(--s4) + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--s2);width:min(400px,calc(100vw - var(--s6)));pointer-events:none}.loom-toast{--toast-tone:var(--accent);--toast-rail:3px;pointer-events:auto;position:relative;display:flex;align-items:flex-start;gap:var(--s3);padding:var(--s3) var(--s4);color:var(--ink);background:linear-gradient(var(--surface),var(--surface)) padding-box;box-shadow:inset var(--toast-rail) 0 0 0 var(--toast-tone),inset 0 0 5px -2px var(--fresnel-tight),inset 0 0 26px -8px var(--sheen-amb),var(--shadow-lg);animation:loom-toast-in var(--motion-spatial-in) both;transition:transform var(--motion-press),opacity var(--motion-state);touch-action:pan-y}.loom-toast,.loom-toast:before{border:var(--edge-w) solid transparent;border-radius:var(--r-md)}.loom-toast:before{content:"";position:absolute;inset:calc(var(--edge-w) * -1);background-image:conic-gradient(from calc(var(--ang, 0deg) - 120deg) at 50% 50%,var(--edge-stops));background-origin:border-box;background-clip:border-box;-webkit-mask-image:linear-gradient(currentcolor 0 0),linear-gradient(currentcolor 0 0);-webkit-mask-clip:padding-box,border-box;mask-image:linear-gradient(currentcolor 0 0),linear-gradient(currentcolor 0 0);mask-clip:padding-box,border-box;-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}.loom-toast[data-dragging=true]{animation:none;transition:none;cursor:-webkit-grabbing;cursor:grabbing}.loom-toast[data-leaving=true]{animation:none;transition:transform var(--motion-spatial-out),opacity var(--motion-spatial-out);pointer-events:none}.loom-toast[data-tone=success]{--toast-tone:var(--support)}.loom-toast[data-tone=warn]{--toast-tone:var(--warn)}.loom-toast[data-tone=error]{--toast-tone:var(--danger)}.loom-toast__icon{flex:none;display:inline-flex;line-height:1;margin-top:1px;font-size:1.05rem;color:var(--toast-tone)}.loom-toast__body{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:2px}.loom-toast__title{margin:0;font-weight:600;font-size:.9rem;overflow-wrap:anywhere}.loom-toast__msg{margin:0;font-size:.85rem;line-height:1.45;color:var(--ink-soft);overflow-wrap:anywhere}.loom-toast__action{align-self:flex-start;margin-top:var(--s2);min-height:var(--touch-min);display:inline-flex;align-items:center;padding:0 var(--s3);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:var(--r-sm);background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent);font:inherit;font-weight:600;font-size:.85rem;cursor:pointer;transition:transform var(--motion-press),background var(--motion-micro)}.loom-toast__action:hover{background:color-mix(in srgb,var(--accent) 18%,transparent)}.loom-toast__action:active{transform:translateY(1px) scale(.98);transition-duration:0s}.loom-toast__action:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-toast__dismiss{flex:none;width:var(--touch-min);height:var(--touch-min);margin-block:calc(var(--s2) * -1);-webkit-margin-end:calc(var(--s2) * -1);margin-inline-end:calc(var(--s2) * -1);display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:var(--r-sm);background:transparent;color:var(--ink-soft);cursor:pointer;transition:background var(--motion-micro),color var(--motion-micro)}.loom-toast__dismiss:hover{background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--ink)}.loom-toast__dismiss:focus-visible{outline:none;box-shadow:var(--focus-ring)}@keyframes loom-toast-in{0%{opacity:0;transform:translateY(16px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.loom-sheet-scrim{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;align-items:flex-end;justify-content:center;background:color-mix(in srgb,var(--ink) 45%,transparent);animation:loom-fade-in var(--motion-state) both}.loom-sheet-scrim[data-closing=true]{animation:loom-fade-out var(--motion-spatial-out) both;pointer-events:none}.loom-sheet{width:min(520px,100%);max-height:90vh;overflow-y:auto;display:flex;flex-direction:column;gap:var(--s4);padding:var(--card-pad);padding-bottom:calc(var(--card-pad) + env(safe-area-inset-bottom));background:var(--surface);border:1px solid var(--line);border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg);box-shadow:var(--shadow-lg);animation:loom-sheet-in var(--motion-spatial-in) both}.loom-sheet-scrim[data-closing=true] .loom-sheet{animation:loom-sheet-out var(--motion-spatial-out) both}.loom-sheet__title{margin:0;font-family:var(--font-display);font-size:1.15rem;font-weight:var(--weight-display);color:var(--ink)}.loom-sheet__object{margin:0;padding:var(--s3) var(--s4);border-radius:var(--r-sm);background:var(--surface-2);border:1px solid var(--line);font-weight:600;color:var(--ink);overflow-wrap:anywhere}.loom-sheet__body{margin:0;font-size:.9rem;line-height:1.5;color:var(--ink-soft);overflow-wrap:anywhere}.loom-sheet__actions{display:flex;gap:var(--s3);justify-content:flex-end;flex-wrap:wrap}@keyframes loom-fade-in{0%{opacity:0}to{opacity:1}}@keyframes loom-fade-out{0%{opacity:1}to{opacity:0}}@keyframes loom-sheet-in{0%{transform:translateY(100%)}to{transform:translateY(0)}}@keyframes loom-sheet-out{0%{transform:translateY(0)}to{transform:translateY(100%)}}.loom-slide{position:relative;width:100%;height:52px;border:1px solid var(--line);border-radius:var(--r-full);background:var(--surface-2);overflow:hidden}.loom-slide[data-tone=danger]{border-color:color-mix(in srgb,var(--danger) 35%,var(--line))}.loom-slide[data-tone=accent]{border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}.loom-slide[data-disabled=true]{opacity:.5}.loom-slide__fill{position:absolute;inset:0 auto 0 0;border-radius:var(--r-full);pointer-events:none;transition:width var(--motion-micro)}.loom-slide[data-dragging=true] .loom-slide__fill{transition-duration:0s}.loom-slide[data-firing=true] .loom-slide__fill{transition:width var(--motion-ceremony)}.loom-slide[data-tone=danger] .loom-slide__fill{background:color-mix(in srgb,var(--danger) 22%,transparent)}.loom-slide[data-tone=accent] .loom-slide__fill{background:var(--accent-soft)}.loom-slide__label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:var(--s2);padding:0 var(--s6);text-align:center;font-weight:600;font-size:.9rem;color:var(--ink-soft);pointer-events:none}.loom-slide__range{position:absolute;inset:0;width:100%;height:100%;margin:0;background:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:-webkit-grab;cursor:grab;touch-action:none}.loom-slide__range:active{cursor:-webkit-grabbing;cursor:grabbing}.loom-slide__range::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:46px;height:46px;border-radius:var(--r-full);border:3px solid var(--surface);box-shadow:var(--shadow-sm)}.loom-slide__range::-moz-range-thumb{width:46px;height:46px;border-radius:var(--r-full);border:3px solid var(--surface)}.loom-slide[data-tone=danger] .loom-slide__range::-webkit-slider-thumb{background:var(--danger)}.loom-slide[data-tone=danger] .loom-slide__range::-moz-range-thumb{background:var(--danger)}.loom-slide[data-tone=accent] .loom-slide__range::-webkit-slider-thumb{background:var(--accent)}.loom-slide[data-tone=accent] .loom-slide__range::-moz-range-thumb{background:var(--accent)}.loom-slide__range:focus-visible{outline:none;box-shadow:var(--focus-ring)}@media (prefers-reduced-motion:reduce){.loom-appear,.loom-sheet,.loom-sheet-scrim,.loom-sheet-scrim[data-closing=true],.loom-sheet-scrim[data-closing=true] .loom-sheet,.loom-skel,.loom-skel-card,.loom-spinner,.loom-toast,.loom-toast[data-leaving=true]{animation:none}}.loom-dsheet-scrim{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;align-items:flex-end;justify-content:center;background:color-mix(in srgb,var(--ink) 45%,transparent);animation:loom-fade-in var(--motion-state) both}.loom-dsheet-scrim[data-closing=true]{animation:loom-fade-out var(--motion-spatial-out) both;pointer-events:none}.loom-dsheet{width:min(640px,100%);max-height:88dvh;display:flex;flex-direction:column;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-top-left-radius:var(--r-lg);border-top-right-radius:var(--r-lg);box-shadow:var(--shadow-lg);padding:var(--s4) var(--gutter) calc(var(--s5) + env(safe-area-inset-bottom));animation:loom-sheet-in var(--motion-spatial-in) both}.loom-dsheet-scrim[data-closing=true] .loom-dsheet{animation:loom-sheet-out var(--motion-spatial-out) both}.loom-dsheet__grip{flex:none;width:var(--s7);height:var(--s1);margin:0 auto var(--s4);border-radius:var(--r-full);background:var(--line-strong)}.loom-dsheet__head{flex:none;display:flex;align-items:flex-start;justify-content:flex-end;gap:var(--s3);margin-bottom:var(--s2)}.loom-dsheet__close{flex:none}.loom-dsheet__body{min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.loom-dsheet__footer{flex:none;display:flex;gap:var(--s3);justify-content:flex-end;flex-wrap:wrap;margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--line)}.loom-menu{position:relative;display:inline-flex}.loom-menu__list{position:absolute;top:calc(100% + var(--s2));left:0;z-index:var(--z-raised);min-width:190px;max-width:min(280px,90vw);display:flex;flex-direction:column;gap:2px;padding:var(--s1);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);animation:loom-menu-in var(--motion-micro) both}.loom-menu__header{margin:calc(-1 * var(--s1)) calc(-1 * var(--s1)) var(--s1);padding:var(--s3);background:color-mix(in srgb,var(--surface-2) 55%,var(--surface));border-radius:calc(var(--r-md) - 1px) calc(var(--r-md) - 1px) 0 0}.loom-menu__item[data-tone=danger]{margin-top:var(--s2)}.loom-menu__list[data-closing]{animation:loom-fade-out var(--motion-spatial-out) both;pointer-events:none}.loom-menu__list[data-align=end]{left:auto;right:0}.loom-menu__item{display:flex;align-items:center;gap:var(--s2);width:100%;min-height:var(--touch-min);padding:var(--s2) var(--s3);border:0;border-radius:var(--r-sm);background:transparent;color:var(--ink);font:inherit;font-size:var(--text-label-size);text-align:left;cursor:pointer;transition:background var(--motion-micro),color var(--motion-micro)}.loom-menu__item:focus-visible,.loom-menu__item:hover:not([disabled]){background:var(--surface-2)}.loom-menu__item:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-menu__item[data-tone=danger]{color:var(--danger)}.loom-menu__item[data-tone=danger]:focus-visible,.loom-menu__item[data-tone=danger]:hover:not([disabled]){background:color-mix(in srgb,var(--danger) 12%,transparent)}.loom-menu__item[disabled]{opacity:.45;cursor:not-allowed}.loom-menu__icon{flex:none;display:inline-flex;line-height:1;color:var(--ink-soft)}.loom-menu__label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loom-popover{position:relative;display:inline-flex}.loom-popover__panel{position:absolute;top:calc(100% + var(--s2));left:0;z-index:var(--z-raised);min-width:220px;max-width:min(360px,92vw);padding:var(--card-pad);background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-lg);animation:loom-menu-in var(--motion-micro) both}.loom-popover__panel[data-align=end]{left:auto;right:0}.loom-popover__panel:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-tooltip{position:relative}.loom-tooltip,.loom-tooltip__trigger{display:inline-flex}.loom-tooltip__bubble{position:absolute;left:50%;transform:translateX(-50%);z-index:var(--z-raised);max-width:240px;width:max-content;padding:var(--s1) var(--s2);border-radius:var(--r-sm);background:var(--ink);color:var(--bg);font-size:var(--text-caption-size);line-height:var(--text-caption-line);font-weight:var(--text-caption-weight);text-align:center;pointer-events:none;box-shadow:var(--shadow-md);animation:loom-fade-in var(--motion-micro) both}.loom-tooltip__bubble[data-side=top]{bottom:calc(100% + var(--s1))}.loom-tooltip__bubble[data-side=bottom]{top:calc(100% + var(--s1))}.loom-tabs{display:flex;flex-direction:column;gap:var(--s4);min-width:0}.loom-tabs__list{display:flex;gap:var(--s1);border-bottom:1px solid var(--line);overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.loom-tabs__list::-webkit-scrollbar{display:none}.loom-tabs__tab{display:inline-flex;align-items:center;gap:var(--s2);flex:none;min-height:var(--touch-min);padding:var(--s2) var(--s3);border:0;background:transparent;color:var(--ink-soft);font:inherit;font-size:var(--text-label-size);font-weight:var(--text-label-weight);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:color var(--motion-micro),border-color var(--motion-micro)}.loom-tabs__tab:hover:not([disabled]){color:var(--ink)}.loom-tabs__tab[aria-selected=true]{color:var(--accent);border-bottom-color:var(--accent)}.loom-tabs__tab:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)}.loom-tabs__tab[disabled]{opacity:.45;cursor:not-allowed}.loom-tabs__tab-badge{display:inline-flex;align-items:center;justify-content:center;min-width:1.25em;padding:0 var(--s1);border-radius:var(--r-full);background:var(--surface-2);color:var(--ink-soft);font-size:var(--text-caption-size);font-weight:700}.loom-tabs__tab[aria-selected=true] .loom-tabs__tab-badge{background:var(--accent-soft);color:var(--accent)}.loom-tabs__panel{min-width:0}.loom-tabs__panel:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)}.loom-table-scroll{width:100%;min-width:0;overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--r-md)}.loom-table{width:100%;border-collapse:collapse;font-size:var(--text-ledger-size);line-height:var(--text-ledger-line)}.loom-table td,.loom-table th{padding:var(--s2) var(--s3);text-align:left;vertical-align:middle;border-bottom:1px solid var(--line)}.loom-table tbody tr:last-child td{border-bottom:0}.loom-table th{color:var(--ink-soft);font-size:var(--text-label-size);font-weight:var(--text-label-weight);letter-spacing:var(--text-label-track);background:var(--surface)}.loom-table[data-sticky=true] thead th{position:-webkit-sticky;position:sticky;top:0;z-index:var(--z-raised);box-shadow:0 1px 0 var(--line)}.loom-table td[data-align=end],.loom-table th[data-align=end]{text-align:right}.loom-table td[data-align=center],.loom-table th[data-align=center]{text-align:center}.loom-table td[data-numeric=true]{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:var(--text-ledger-weight);color:var(--ink)}.loom-table__empty{padding:var(--s5) var(--s3);text-align:center;color:var(--ink-soft)}.loom-table__row--clickable{cursor:pointer;transition:background var(--motion-micro)}.loom-table__row--clickable:hover{background:var(--surface-2)}.loom-table__row--clickable:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-table[data-density=compact] td,.loom-table[data-density=compact] th{padding:var(--s1) var(--s2)}.loom-table__selcell{width:40px;padding-right:0}.loom-table__check{width:var(--s4);height:var(--s4);accent-color:var(--accent);cursor:pointer;vertical-align:middle}.loom-table tbody tr[data-selected=true],.loom-table__row--clickable[data-selected=true]:hover{background:var(--accent-soft)}.loom-table__sort{display:inline-flex;align-items:center;gap:var(--s1);background:none;border:0;padding:0;margin:0;font:inherit;color:inherit;letter-spacing:inherit;cursor:pointer;text-align:inherit}.loom-table__caret{color:var(--ink-faint);transition:color var(--motion-micro)}.loom-table__sort[data-active=true] .loom-table__caret{color:var(--accent)}.loom-table__sort:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)}.loom-choice{display:flex;flex-direction:column;gap:var(--s1);min-width:0}.loom-choice__row{display:flex;align-items:flex-start;gap:var(--s2);min-height:var(--touch-min);padding:var(--s1) 0;cursor:pointer}.loom-choice__label{min-width:0;display:flex;flex-direction:column;gap:2px;overflow-wrap:anywhere;color:var(--ink);font-size:var(--text-body-size);line-height:var(--text-body-line);padding-top:1px}.loom-choice__opt-hint{color:var(--ink-soft);font-size:var(--text-caption-size);line-height:var(--text-caption-line)}.loom-choice__hint{color:var(--ink-soft)}.loom-choice__error,.loom-choice__hint{margin:0;font-size:var(--text-caption-size);line-height:var(--text-caption-line);overflow-wrap:anywhere}.loom-choice__error{color:var(--danger);font-weight:600}.loom-checkbox,.loom-radio{flex:none;width:18px;height:18px;margin:2px 0 0;accent-color:var(--accent);cursor:pointer}.loom-checkbox:focus-visible,.loom-radio:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:4px}.loom-checkbox[aria-invalid=true]{outline:2px solid var(--danger);outline-offset:1px}.loom-choice__row:has(input[disabled]){cursor:not-allowed;opacity:.55}.loom-radiogroup{border:0;margin:0;padding:0;min-width:0;display:flex;flex-direction:column;gap:var(--s1)}.loom-radiogroup[disabled]{opacity:.55}.loom-radiogroup__legend{padding:0;margin-bottom:var(--s1);color:var(--ink-soft);font-size:var(--text-label-size);font-weight:var(--text-label-weight)}.loom-radiogroup__options,.loom-switch-row{display:flex;flex-direction:column;gap:var(--s1)}.loom-switch-row{min-width:0}.loom-switch{display:inline-flex;align-items:center;gap:var(--s3);min-height:var(--touch-min);padding:var(--s1) 0;border:0;background:transparent;color:var(--ink);font:inherit;cursor:pointer;text-align:left}.loom-switch[disabled]{cursor:not-allowed;opacity:.55}.loom-switch__track{flex:none;position:relative;width:40px;height:24px;border-radius:var(--r-full);background:var(--line-strong);transition:background var(--motion-state)}.loom-switch[data-checked=true] .loom-switch__track{background:var(--accent)}.loom-switch__thumb{position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:var(--r-full);background:var(--on-accent);box-shadow:var(--shadow-sm);transition:transform var(--motion-state)}.loom-switch[data-checked=true] .loom-switch__thumb{transform:translateX(16px)}.loom-switch[data-pending=true] .loom-switch__track{opacity:.7}.loom-switch:focus-visible{outline:none}.loom-switch:focus-visible .loom-switch__track{box-shadow:var(--focus-ring)}.loom-switch__label{display:inline-flex;align-items:center;gap:var(--s2);min-width:0;font-size:var(--text-body-size)}.loom-badge-anchor{position:relative;display:inline-flex}.loom-badge{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:var(--r-full);background:var(--accent);color:var(--on-accent);font-size:var(--text-caption-size);font-weight:700;line-height:1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.loom-badge[data-tone=danger]{background:var(--danger);color:var(--on-accent)}.loom-badge[data-tone=neutral]{background:var(--surface-2);color:var(--ink-soft)}.loom-badge[data-dot=true]{min-width:10px;width:10px;height:10px;padding:0}.loom-badge[data-corner=true]{position:absolute;top:0;right:0;transform:translate(40%,-40%);border:2px solid var(--surface);box-sizing:content-box}@media (prefers-reduced-motion:reduce){.loom-dsheet,.loom-dsheet-scrim,.loom-dsheet-scrim[data-closing=true],.loom-dsheet-scrim[data-closing=true] .loom-dsheet,.loom-menu__list,.loom-peek,.loom-peek-scrim,.loom-peek-scrim[data-closing=true],.loom-peek-scrim[data-closing=true] .loom-peek,.loom-popover__panel,.loom-tooltip__bubble{animation:none}}@keyframes loom-menu-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.loom-listrow{display:flex;align-items:center;gap:var(--s3);padding:var(--s3) var(--s2);min-width:0;text-decoration:none;color:inherit;border-bottom:1px solid var(--line);cursor:pointer;transition:background var(--motion-micro)}.loom-listrow:last-child{border-bottom:0}.loom-listrow:hover{background:var(--surface-2)}.loom-listrow:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-sm)}.loom-listrow[data-selected=true],.loom-listrow[data-selected=true]:hover{background:var(--accent-soft)}.loom-listrow__lead{flex:none;display:inline-flex;align-items:center}.loom-listrow__main{min-width:0;flex:1 1;display:flex;flex-direction:column;gap:2px}.loom-listrow__titlerow{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s2);min-width:0}.loom-listrow__title{min-width:0;font-size:var(--text-ledger-size);font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loom-listrow__trail{flex:none;font-size:var(--text-caption-size);color:var(--ink-faint)}.loom-listrow__sub{color:var(--ink-soft)}.loom-listrow__meta,.loom-listrow__sub{min-width:0;font-size:var(--text-caption-size);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.loom-listrow__meta{color:var(--ink-faint)}.loom-recordhead{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--s3);min-width:0}.loom-recordhead__id{min-width:0;display:flex;flex-direction:column;gap:2px}.loom-recordhead__kicker{font-size:var(--text-caption-size);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-faint);font-weight:var(--text-label-weight)}.loom-recordhead__name{display:flex;align-items:baseline;gap:var(--s2);flex-wrap:wrap;min-width:0}.loom-recordhead__title{font-size:var(--text-title-size);line-height:var(--text-title-line);font-weight:var(--text-title-weight);letter-spacing:var(--text-title-track);color:var(--ink)}.loom-recordhead__sub{font-size:var(--text-label-size);color:var(--ink-faint);min-width:0;overflow-wrap:anywhere}.loom-recordhead__aside{flex:none;display:flex;align-items:center;gap:var(--s2)}.loom-disclosure{border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}.loom-disclosure__summary{display:flex;align-items:center;gap:var(--s2);padding:var(--s3) var(--s4);cursor:pointer;list-style:none;font-size:var(--text-label-size);font-weight:var(--text-label-weight);color:var(--ink)}.loom-disclosure__summary::-webkit-details-marker{display:none}.loom-disclosure__summary:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--r-md)}.loom-disclosure__label{flex:1 1;min-width:0}.loom-disclosure__count{flex:none;font-size:var(--text-caption-size);color:var(--ink-faint);font-weight:500}.loom-disclosure__chev{flex:none;color:var(--ink-faint);transform:rotate(0deg);transition:transform var(--motion-state)}.loom-disclosure[open] .loom-disclosure__chev{transform:rotate(90deg)}.loom-disclosure__body{padding:0 var(--s4) var(--s4)}.loom-filterbar{display:flex;flex-direction:column;gap:var(--s3)}.loom-filterbar__row{display:flex;align-items:center;gap:var(--s3);min-width:0}.loom-filterbar__search{flex:1 1;min-width:0}.loom-filterbar__actions{flex:none;display:flex;align-items:center;gap:var(--s2)}.loom-filterbar__chips{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2)}.loom-filterchip{display:inline-flex;align-items:center;gap:var(--s1);padding:var(--s1) var(--s2);border-radius:var(--r-full);font-size:var(--text-caption-size);background:var(--surface-2);color:var(--ink-soft);border:1px solid var(--line)}.loom-filterchip[data-tone=accent]{background:var(--accent-soft);color:var(--accent);border-color:transparent}.loom-filterchip__clear{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:0;background:none;color:inherit;cursor:pointer;border-radius:var(--r-full);font-size:var(--text-label-size);line-height:1}.loom-filterchip__clear:hover{background:color-mix(in srgb,var(--ink) 12%,transparent)}.loom-filterchip__clear:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-peek-scrim{position:fixed;inset:0;z-index:var(--z-overlay);display:flex;align-items:stretch;justify-content:flex-end;background:color-mix(in srgb,var(--ink) 40%,transparent);animation:loom-fade-in var(--motion-state) both}.loom-peek-scrim[data-closing=true]{animation:loom-fade-out var(--motion-spatial-out) both;pointer-events:none}.loom-peek{width:min(460px,100%);display:flex;flex-direction:column;background:var(--surface);color:var(--ink);border-left:1px solid var(--line);box-shadow:var(--shadow-lg);padding:var(--s4) var(--s5) calc(var(--s5) + env(safe-area-inset-bottom));animation:loom-peek-in var(--motion-spatial-in) both}.loom-peek-scrim[data-closing=true] .loom-peek{animation:loom-peek-out var(--motion-spatial-out) both}.loom-peek__head{flex:none;display:flex;align-items:center;justify-content:space-between;gap:var(--s3);margin-bottom:var(--s3)}.loom-peek__step{display:flex;align-items:center;gap:var(--s2)}.loom-peek__close{flex:none}.loom-peek__body{min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}.loom-peek__footer{flex:none;display:flex;gap:var(--s3);justify-content:flex-end;flex-wrap:wrap;margin-top:var(--s4);padding-top:var(--s3);border-top:1px solid var(--line)}@keyframes loom-peek-in{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes loom-peek-out{0%{transform:translateX(0)}to{transform:translateX(100%)}}.loom-trend{width:100%;min-width:0}.loom-trend svg{display:block;width:100%}.loom-trend__area{fill:var(--accent-soft);stroke:none}.loom-trend__line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.loom-trend--empty{padding:var(--s4);text-align:center;color:var(--ink-faint);font-size:var(--text-caption-size);background:var(--surface-2);border-radius:var(--r-md)}.loom-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:var(--touch-min);height:var(--touch-min);padding:0;border:0;border-radius:var(--r-full);background:transparent;color:var(--ink-soft);font-size:var(--text-heading-size);cursor:pointer;transition:background var(--motion-micro),color var(--motion-micro),transform var(--motion-press)}.loom-iconbtn:hover:not([disabled]){background:var(--hover-tint);color:var(--ink)}.loom-iconbtn:active:not([disabled]){transform:scale(.92);transition-duration:0s}.loom-iconbtn:focus-visible{outline:none;box-shadow:var(--focus-ring)}.loom-iconbtn[disabled]{cursor:default;color:var(--ink-faint)}@media (prefers-reduced-motion:reduce){.loom-iconbtn{transition:none}.loom-iconbtn:active:not([disabled]){transform:none}}