.kh {color:var(--kh-ink);font-family:var(--kh-font);font-size:var(--kh-text-base);line-height:var(--kh-leading-body);background:var(--kh-white);}
.kh *, .kh *::before, .kh *::after {box-sizing:border-box;}
.kh button,.kh input,.kh select,.kh textarea {font:inherit;}
.kh button {cursor:pointer;}
.kh button:disabled {cursor:not-allowed;opacity:.45;}
.kh a {color:inherit;}
.kh [hidden] {display:none!important;}
.kh svg {flex-shrink:0;}
.kh-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;}
.kh-button {display:inline-flex;gap:var(--kh-space-2);align-items:center;justify-content:center;min-height:var(--kh-control-height);padding:var(--kh-space-2) var(--kh-space-5);border:var(--kh-stroke) solid transparent;border-radius:var(--kh-radius-pill);font-size:var(--kh-text-sm)!important;font-weight:600!important;line-height:1.4;text-decoration:none;transition:background var(--kh-motion-fast) var(--kh-ease);}
.kh .kh-button--primary {background:var(--kh-lime);color:var(--kh-black);}
.kh .kh-button--secondary {background:var(--kh-white);border-color:var(--kh-black);color:var(--kh-ink);}
.kh .kh-button--inverse {background:var(--kh-black);color:var(--kh-lime);}
.kh .kh-button--ghost {background:transparent;color:var(--kh-ink);}
.kh .kh-button--danger {background:var(--kh-white);color:var(--kh-error);border-color:var(--kh-error);}
.kh-button--sm {min-height:2rem;padding:var(--kh-space-1) var(--kh-space-4);font-size:var(--kh-text-xs)!important;}
.kh-icon-button {width:var(--kh-hit-target);height:var(--kh-hit-target);min-width:var(--kh-hit-target);padding:0;}
.kh-button:active:not(:disabled) {transform:translateY(1px);}
.kh-badge {display:inline-flex;align-items:center;justify-content:center;padding:var(--kh-space-1) var(--kh-space-3);border-radius:var(--kh-radius-pill);font-size:var(--kh-text-sm);font-weight:600;line-height:1.35;text-align:center;overflow-wrap:anywhere;}
.kh-badge--connection {background:var(--kh-lime);color:var(--kh-black);}
.kh-badge--resource {background:var(--kh-purple);color:var(--kh-white);}
.kh-badge--neutral {background:rgba(255,255,255,.75);color:var(--kh-black);}
.kh-badge--warning {background:var(--kh-warning);color:var(--kh-black);}
.kh-filters {border-bottom:var(--kh-stroke) solid var(--kh-black);padding-bottom:var(--kh-space-4);}
.kh-filter-bar {display:flex;align-items:center;justify-content:space-between;min-height:var(--kh-hit-target);margin-bottom:var(--kh-space-2);}
.kh-filter-toggle {display:flex;gap:var(--kh-space-2);align-items:center;border:0;padding:0;background:transparent;color:var(--kh-filter-ink);font-size:var(--kh-text-sm)!important;min-height:var(--kh-hit-target);}
.kh-filter-toggle svg {width:1rem;height:1rem;color:var(--kh-muted);}
.kh-count {font-size:var(--kh-text-xs);background:var(--kh-black);color:var(--kh-white);border-radius:var(--kh-radius-pill);padding:0 var(--kh-space-2);}
.kh-filter-panel {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--kh-space-6);padding:var(--kh-space-4);border:var(--kh-stroke) solid var(--kh-line-soft);border-radius:var(--kh-radius-panel);}
.kh-filter-group {min-width:0;margin:0;padding:0;border:0;}
.kh-filter-group legend {padding:0;margin-bottom:var(--kh-space-2);text-transform:uppercase;font-size:var(--kh-text-xs);font-weight:600;letter-spacing:var(--kh-tracking-label);color:var(--kh-filter-label);}
.kh-filter-options {display:flex;gap:var(--kh-space-1);flex-wrap:wrap;}
.kh-filter-chip {position:relative;isolation:isolate;border:0;background:transparent;border-radius:var(--kh-radius-pill);padding:var(--kh-space-1) .625rem;min-height:1.625rem;color:var(--kh-filter-ink);font-size:var(--kh-text-xs)!important;line-height:1.4;}
.kh-filter-chip::before {content:'';position:absolute;inset:0;z-index:-1;border:var(--kh-stroke) solid var(--kh-line);border-radius:inherit;background:var(--kh-white);}
.kh-filter-chip[aria-pressed=true] {color:var(--kh-white);}
.kh-filter-chip[aria-pressed=true]::before {background:var(--kh-black);border-color:var(--kh-black);}
.kh-radio-group {display:flex;gap:var(--kh-space-6);flex-wrap:wrap;border:0;padding:0;margin:0;}
.kh-radio-label,.kh-checkbox {display:inline-flex;gap:var(--kh-space-2);align-items:center;min-height:var(--kh-hit-target);cursor:pointer;font-size:var(--kh-text-sm);}
.kh input[type=radio],.kh input[type=checkbox] {accent-color:var(--kh-black);width:1rem;height:1rem;margin:0;}
.kh-sort {display:flex;gap:var(--kh-space-3);align-items:center;flex-wrap:wrap;font-size:var(--kh-text-sm);}
.kh-sort>button:not(.kh-switch) {border:0;background:none;padding:0;color:var(--kh-muted);min-height:var(--kh-hit-target);}
.kh-sort>button[aria-pressed=true] {color:var(--kh-black);font-weight:500;}
.kh-switch {width:3.5rem;height:1.75rem;border:var(--kh-stroke) solid var(--kh-black);border-radius:var(--kh-radius-pill);background:var(--kh-white);padding:3px;display:flex;align-items:center;}
.kh-switch span {display:block;width:1.25rem;height:1.25rem;border-radius:50%;background:var(--kh-black);transition:transform var(--kh-motion-fast);}
.kh-switch[aria-checked=true] span {transform:translateX(1.65rem);}
.kh-field {display:flex;flex-direction:column;gap:var(--kh-space-2);margin-bottom:var(--kh-space-6);min-width:0;}
.kh-field label {font-size:var(--kh-text-xs);color:var(--kh-muted);}
.kh-field label>span {color:var(--kh-error);}
.kh-field input,.kh-field select,.kh-field textarea {width:100%;min-height:var(--kh-control-height);border:0;border-bottom:var(--kh-stroke) solid var(--kh-black);border-radius:0;background:transparent;color:var(--kh-ink);padding:var(--kh-space-2) 0;}
.kh-field textarea {resize:vertical;min-height:6rem;}
.kh-field [aria-invalid=true] {border-bottom-color:var(--kh-error);}
.kh-field :disabled {color:var(--kh-muted);opacity:.55;cursor:not-allowed;}
.kh-hint,.kh-error {font-size:var(--kh-text-xs);margin:0;}
.kh-hint {color:var(--kh-muted);}
.kh-error {color:var(--kh-error);}
.kh-search {position:relative;min-width:0;}
.kh-search input {width:100%;min-height:3.5rem;border:var(--kh-stroke) solid var(--kh-line-warm);border-radius:var(--kh-radius-pill);background:var(--kh-white);padding:var(--kh-space-3) var(--kh-space-16) var(--kh-space-3) var(--kh-space-5);font-size:var(--kh-text-sm);}
.kh-search .kh-button {position:absolute;right:6px;top:6px;}
.kh-tabs,.kh-steps {display:flex;gap:var(--kh-space-3);flex-wrap:wrap;}
.kh-tabs [aria-pressed=true] {background:var(--kh-black);color:var(--kh-white);}
.kh-steps [aria-current=step] {background:var(--kh-cream);}
.kh-pagination {display:flex;gap:var(--kh-space-2);align-items:center;flex-wrap:wrap;}
.kh-pagination .kh-button {min-width:var(--kh-hit-target);padding:var(--kh-space-2);}
.kh-notice {display:flex;gap:var(--kh-space-6);align-items:center;justify-content:space-between;padding:var(--kh-space-5) var(--kh-space-6);border-block:var(--kh-stroke) solid var(--kh-black);background:var(--kh-soft-lime);font-size:var(--kh-text-sm);}
.kh-notice strong {display:block;margin-bottom:var(--kh-space-2);}
.kh-notice--error {background:var(--kh-white);border-color:var(--kh-error);color:var(--kh-error);}
.kh-notice--success strong {color:var(--kh-success);}
.kh-empty {padding:var(--kh-space-16) var(--kh-space-6);text-align:center;}
.kh-empty h3 {font-size:var(--kh-text-lg);font-weight:500;margin:0;}
.kh-empty p {color:var(--kh-muted);font-size:var(--kh-text-sm);}
.kh-dialog {max-width:min(36rem,calc(100vw - 2rem));width:100%;padding:0;border:var(--kh-stroke) solid var(--kh-black);border-radius:var(--kh-radius-panel);color:var(--kh-ink);background:var(--kh-white);font:inherit;}
.kh-dialog::backdrop {background:rgba(0,0,0,.6);}
.kh-dialog header {display:flex;align-items:center;justify-content:space-between;padding:var(--kh-space-5) var(--kh-space-6);border-bottom:var(--kh-stroke) solid var(--kh-black);}
.kh-dialog h2 {margin:0;font-size:1.5rem;}
.kh-dialog-content {padding:var(--kh-space-6);}
.kh-spinner {width:1rem;height:1rem;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:kh-spin 800ms linear infinite;}
@keyframes kh-spin {to {transform:rotate(360deg);}}
.kh-card {position:relative;min-width:0;border:var(--kh-stroke) solid var(--kh-line-warm);border-radius:var(--kh-radius-media);padding:var(--kh-space-1);background:transparent;align-self:stretch;}
.kh-card-media {position:relative;aspect-ratio:1;min-width:0;}
.kh-card-link {display:block;width:100%;height:100%;border-radius:var(--kh-radius-media);overflow:hidden;}
.kh-card-link>img {display:block;width:100%;height:100%;object-fit:cover;}
.kh-media-fallback {width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--kh-cream);color:var(--kh-muted);font-size:var(--kh-text-xs);text-align:center;padding:var(--kh-space-2);}
.kh-media-fallback>span {font-size:2rem;font-weight:300;}
.kh-card-save {position:absolute;right:var(--kh-space-2);top:var(--kh-space-2);background:var(--kh-white);color:var(--kh-black);width:2rem;height:2rem;min-width:2rem;min-height:2rem;}
.kh-card-save svg {width:1.25rem;height:1.25rem;}
.kh-card-badge {position:absolute;bottom:var(--kh-space-3);left:var(--kh-space-2);right:var(--kh-space-2);display:flex;justify-content:center;pointer-events:none;}
.kh-card-details {padding:var(--kh-space-3) var(--kh-space-1) var(--kh-space-2);display:flex;flex-direction:column;gap:var(--kh-space-3);min-height:8.75rem;}
.kh-card-copy {visibility:visible;}
.kh-card h3,.kh-card p {font-size:var(--kh-text-sm);margin:0;line-height:1.4;overflow-wrap:anywhere;}
.kh-card h3 {font-weight:700;}
.kh-card p {margin-top:var(--kh-space-2);}
.kh-card-row {display:flex;justify-content:space-between;gap:var(--kh-space-3);font-size:var(--kh-text-sm);margin-top:var(--kh-space-1);}
.kh-card-row>* {min-width:0;overflow-wrap:anywhere;}
.kh-card-row>:last-child:not(:first-child) {text-align:right;}
.kh-card-bottom {display:flex;justify-content:space-between;align-items:flex-end;gap:var(--kh-space-2);margin-top:auto;}
.kh-card-identity {display:flex;gap:var(--kh-space-3);align-items:center;text-decoration:none;min-width:0;}
.kh-avatar {display:flex;width:2.75rem;height:2.75rem;flex-shrink:0;border-radius:50%;overflow:hidden;}
.kh-avatar img {width:100%;height:100%;object-fit:cover;}
.kh-avatar .kh-media-fallback {font-size:var(--kh-text-lg);text-transform:uppercase;}
.kh-avatar .kh-media-fallback>span {display:none;}
.kh-avatar--official {background:var(--kh-lime);}
.kh-avatar--official img {width:10.5rem;max-width:none;height:2.75rem;object-fit:contain;object-position:left;padding:7px 0 7px 6px;}
.kh-identity-copy {visibility:visible;display:flex;flex-direction:column;min-width:0;font-size:var(--kh-text-xs);overflow-wrap:anywhere;}
.kh-card--own .kh-card-details {min-height:3rem;}
.kh-card--own .kh-card-save {display:none;}
.kh-card[data-variant=profile] .kh-card-details {min-height:4rem;}
.kh-card-join {flex-shrink:0;min-height:2rem;padding:var(--kh-space-1) var(--kh-space-4);}
.kh-page-header {display:flex;gap:var(--kh-space-6);align-items:center;justify-content:space-between;padding:var(--kh-space-6) var(--kh-page-gutter);border-bottom:var(--kh-stroke) solid var(--kh-black);}
.kh-page-header>div {min-width:0;}
.kh-page-header h1 {font-size:var(--kh-text-title);line-height:var(--kh-leading-title);letter-spacing:var(--kh-tracking-title);font-weight:700;text-transform:uppercase;overflow-wrap:anywhere;margin:0;}
.kh-page-description {font-size:var(--kh-text-lg);max-width:48rem;margin-top:var(--kh-space-6);}
.kh-page-actions {display:flex;gap:var(--kh-space-3);flex-wrap:wrap;}
.kh-card-grid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--kh-grid-gap);align-items:stretch;}
.kh-split {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-bottom:var(--kh-stroke) solid var(--kh-black);}
.kh-split-media {min-width:0;border-right:var(--kh-stroke) solid var(--kh-black);}
.kh-split-media>img {display:block;width:100%;height:auto;}
.kh-split-content {padding:var(--kh-space-8);min-width:0;}
@media(max-width:1023px){.kh-card-grid{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(hover:hover) and (pointer:fine) and (min-width:768px){
 .kh-button--primary:hover:not(:disabled) {background:var(--kh-lime-hover);}
 .kh-button--secondary:hover:not(:disabled),.kh-button--ghost:hover:not(:disabled) {background:var(--kh-cream);}
 .kh-filter-chip:hover:not(:disabled):not([aria-pressed=true])::before {border-color:var(--kh-black);}
 .kh-card:hover {background:var(--kh-cream);border-color:transparent;}
 .kh-card:hover .kh-card-copy,.kh-card:hover .kh-identity-copy {visibility:visible;}
}
/* Native browser keyboard indicators remain intact. No custom focus rings or focus-driven card expansion. */
@media(max-width:767px){
 .kh-page-header {align-items:flex-start;flex-direction:column;}
 .kh-split {grid-template-columns:1fr;}
 .kh-split-media {border-right:0;}
 .kh-card-grid {grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--kh-grid-mobile-gap);}
 .kh-filter-panel {grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--kh-space-4);}
 .kh-notice {align-items:flex-start;flex-direction:column;gap:var(--kh-space-4);}
 .kh-card--own .kh-card-save {display:flex;}
 .kh-card--official .kh-card-details,.kh-card[data-variant=craftalong] .kh-card-details {display:flex;min-height:0;}
 .kh-card[data-variant=craftalong] .kh-card-bottom {justify-content:flex-end;}
 .kh-card {padding:0;border:var(--kh-stroke) solid var(--kh-card-outline);}
 .kh-card .kh-badge {font-size:var(--kh-text-xs);}
 .kh-card-save {min-width:var(--kh-hit-target);min-height:var(--kh-hit-target);}
 .kh-card-join {min-height:var(--kh-hit-target);}
}
@media(hover:none), (pointer:coarse){
 .kh-card {padding:0;border:var(--kh-stroke) solid var(--kh-card-outline);}
 .kh-button--sm {min-height:var(--kh-hit-target);}
 .kh-filter-chip {min-height:var(--kh-hit-target);}
 .kh-filter-chip::before {inset:8px 0;}
 .kh-switch {height:var(--kh-hit-target);}
 .kh-card--own .kh-card-save {display:flex;}
 .kh-card--official .kh-card-details,.kh-card[data-variant=craftalong] .kh-card-details {display:flex;min-height:0;}
 .kh-card[data-variant=craftalong] .kh-card-bottom {justify-content:flex-end;}
 .kh-card-save,.kh-card-join {min-height:var(--kh-hit-target);min-width:var(--kh-hit-target);}
}
@media(max-width:379px){.kh-filter-panel{grid-template-columns:1fr;}.kh-radio-group{gap:var(--kh-space-4);}}
@media(prefers-reduced-motion:reduce){.kh *,.kh *::before,.kh *::after{transition:none!important;animation:none!important;}}

/* Descriptions and attribution are persistent on every device. */
@media(max-width:767px), (hover:none), (pointer:coarse){
 .kh-card-details {display:flex;min-height:0;}
 .kh-card-bottom {flex-wrap:wrap;align-items:flex-start;}
 .kh-card-identity {flex:1 1 100%;}
 .kh-card-join {margin-left:auto;}
 .kh-card-row {flex-wrap:wrap;}
}

/* Shared workspace navigation: selected styling is separate from native focus. */
.kh .kh-workspace-tablist { display:flex; gap:var(--kh-tab-gap); border-bottom:var(--kh-stroke) solid var(--kh-tab-border); align-items:stretch; }
.kh .kh-workspace-tablist > :is(button,a) { font:inherit; font-weight:600; color:var(--kh-black); background:var(--kh-white); border:var(--kh-stroke) solid var(--kh-tab-border); border-bottom:0; border-radius:var(--kh-tab-radius) var(--kh-tab-radius) 0 0; min-height:var(--kh-tab-min-height); padding:12px 24px; text-decoration:none; display:flex; justify-content:center; align-items:center; cursor:pointer; text-align:center; overflow-wrap:anywhere; }
.kh .kh-workspace-tablist > :is(button,a):hover { background:var(--kh-tab-hover); }
.kh .kh-workspace-tablist > :is(button,a):is([aria-selected="true"],[aria-current="page"]) { background:var(--kh-tab-active); }
.kh .kh-workspace-tablist > button:disabled { color:var(--kh-muted); background:var(--kh-cream); cursor:not-allowed; }
.kh .kh-workspace-panel { padding:32px 0; }
.kh .kh-workspace-panel[hidden] { display:none; }
@media(max-width:767px) { .kh .kh-workspace-tablist > :is(button,a) { flex:1 1 0; min-width:0; padding:12px 8px; font-size:14px; } .kh .kh-workspace-panel { padding:24px 0; } }

/* Square image bottoms and divider apply to mobile widths only. */
@media(max-width:767px){ .kh-card-media {border-bottom:var(--kh-stroke) solid var(--kh-card-outline);} .kh-card-link {border-radius:var(--kh-radius-media) var(--kh-radius-media) 0 0;} }
