/* Shared component foundations. Colors inherit from theme.css tokens. */
:where(.nc-field,.nc-dropdown-search){display:grid;gap:6px;min-width:0;color:var(--text-muted);font-size:13px}
.nc-control,.nc-dropdown-search input,.nc-date-popover,.nc-popover,.nc-dropdown-popover,.nc-user-menu{color:var(--text);background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--control-radius)}
.nc-control{display:flex;align-items:center;justify-content:flex-start;gap:9px;min-height:var(--control-height);padding:0 11px;color:var(--text);font-size:14px;text-align:left;cursor:pointer}
.nc-control>span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nc-control svg{width:16px;height:16px;flex:none;color:var(--text-muted)}.nc-control:focus-visible,:where(.nc-dropdown-search input,.nc-option,.nc-date-popover button,.nc-date-footer button,.nc-file button,.nc-toast button,.nc-user-menu button,.nw-breadcrumb button):focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.nc-dropdown-search input{width:100%;min-width:0;padding:9px 10px;font-size:14px}.nc-options{max-height:min(300px,55vh);overflow:auto;padding:5px}.nc-option{display:flex;align-items:center;gap:9px;width:100%;min-height:36px;padding:7px 9px;border:0;border-radius:6px;background:transparent;color:var(--text);text-align:left;font-size:14px;cursor:pointer}.nc-option>span{min-width:0;flex:1}.nc-option svg{width:15px;height:15px;color:var(--accent)}.nc-option:hover,.nc-option-active{background:var(--surface-3)}.nc-no-results{margin:0;padding:12px;color:var(--text-muted);font-size:13px}.nc-field-error{color:var(--red);font-size:12px}.nc-field-error[hidden],.nc-backing[hidden]{display:none!important}.nc-invalid{border-color:var(--red)!important}
.nc-popover,.nc-dropdown-popover,.nc-date-popover,.nc-user-menu{position:fixed;z-index:1000;max-width:min(360px,calc(100vw - 24px));padding:8px;box-shadow:var(--shadow)}
.nc-checkbox{appearance:none;width:16px;height:16px;flex:none;margin:0;border:1px solid var(--border-strong);border-radius:4px;background:var(--surface-1);display:inline-block;vertical-align:middle;cursor:pointer}.nc-checkbox:checked{background-color:var(--accent);border-color:var(--accent);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m5 12 4 4L19 6'/%3E%3C/svg%3E");background-size:12px;background-position:center;background-repeat:no-repeat}.nc-switch{appearance:none;width:30px;height:18px;flex:none;margin:0;border:1px solid var(--border-strong);border-radius:999px;background:var(--surface-3);position:relative;cursor:pointer;transition:background .16s,border-color .16s}.nc-switch:before{content:"";position:absolute;left:1px;top:1px;width:14px;height:14px;border-radius:50%;background:var(--text-muted);transition:transform .16s,background .16s}.nc-switch:checked{background:var(--accent);border-color:var(--accent)}.nc-switch:checked:before{transform:translateX(12px);background:white}
.nc-file{display:grid;gap:9px}.nc-file.drag-over .nc-dropzone{border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.nc-dropzone{display:grid;place-items:center;gap:7px;min-height:112px;padding:18px;border:1px dashed var(--border-strong);border-radius:10px;background:var(--surface-1);text-align:center;color:var(--text-muted);font-size:13px;cursor:pointer}.nc-dropzone:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--text)}.nc-file-chip{display:flex;align-items:center;gap:8px;min-width:0;padding:7px 9px;border:1px solid var(--border);border-radius:8px;background:var(--surface-1);font-size:13px}.nc-file-chip>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nc-file-chip svg{width:16px;height:16px;flex:none}.nc-file-remove{margin-left:auto;border:0;background:transparent;color:var(--text-muted);cursor:pointer}.nc-file-input{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;clip-path:inset(50%)!important}
.nc-date-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px}.nc-date-heading button,.nc-date-footer button,.nc-date-popover>button{min-width:34px;min-height:34px;border:0;border-radius:6px;background:transparent;color:var(--text);cursor:pointer}.nc-date-heading button:hover,.nc-date-footer button:hover,.nc-date-popover>button:hover{background:var(--surface-3)}.nc-calendar{display:grid;grid-template-columns:repeat(7,minmax(32px,1fr));gap:2px;text-align:center}.nc-calendar>span{padding:7px 0;color:var(--text-muted);font-size:12px}.nc-calendar button{min-height:34px;border:0;border-radius:7px;background:transparent;color:var(--text);font-size:13px;cursor:pointer}.nc-calendar button:hover{background:var(--surface-3)}.nc-calendar button[aria-pressed="true"]{background:var(--accent);color:var(--on-accent)}.nc-calendar button[aria-current="date"]:not([aria-pressed="true"]){box-shadow:inset 0 0 0 1px var(--accent);color:var(--accent)}.nc-calendar button:disabled{opacity:.45;cursor:not-allowed}.nc-date-footer button{padding:6px 8px;font-size:13px}
.nc-empty{display:grid;justify-items:center;gap:8px;padding:clamp(22px,5vw,44px) 18px;text-align:center}.nc-empty-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:13px;background:var(--accent-soft);color:var(--accent)}.nc-empty-icon svg{width:22px;height:22px}.nc-empty h2{margin:0;color:var(--text);font-size:16px}.nc-empty p{max-width:48ch;margin:0;color:var(--text-muted);font-size:13px}.nc-empty-action{margin-top:5px}
.nc-toast-region{position:fixed;z-index:1200;left:16px;bottom:16px;display:flex;flex-direction:column;gap:9px;width:min(390px,calc(100vw - 32px));pointer-events:none}.nc-toast{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface-2);box-shadow:var(--shadow);color:var(--text);font-size:13px;pointer-events:auto;animation:nc-toast-in .2s ease-out both}.nc-toast-icon{display:grid;place-items:center;flex:none;color:var(--accent)}.nc-toast-success .nc-toast-icon{color:var(--green)}.nc-toast-error .nc-toast-icon{color:var(--red)}.nc-toast-text{min-width:0;flex:1}.nc-toast button{border:0;border-radius:6px;background:transparent;color:var(--accent);padding:5px;font-size:13px;cursor:pointer}.nc-toast-icon svg{width:17px;height:17px}.nc-spinner{width:16px;height:16px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:50%;animation:nc-spin .8s linear infinite}@keyframes nc-toast-in{from{opacity:0;transform:translateX(-16px)}to{opacity:1;transform:translateX(0)}}@keyframes nc-spin{to{transform:rotate(360deg)}}
.nc-skeleton{position:relative;overflow:hidden;border-radius:6px;background:var(--surface-3)}.nc-skeleton:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--text) 7%,transparent),transparent);animation:nc-shimmer 1.4s infinite}.nc-skeleton-rows{display:grid;gap:10px;background:transparent}.nc-skeleton-rows:after{display:none}.nc-skeleton-item{display:block;position:relative;overflow:hidden;height:13px;border-radius:6px;background:var(--surface-3)}.nc-skeleton-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;background:transparent}.nc-skeleton-cards:after{display:none}.nc-skeleton-cards .nc-skeleton-item{height:130px;border-radius:10px}.nc-skeleton-hero{height:180px;border-radius:12px}.nc-skeleton-hero .nc-skeleton-item{display:none}@keyframes nc-shimmer{to{transform:translateX(100%)}}
.nc-tooltip{position:fixed;z-index:1300;max-width:min(260px,calc(100vw - 24px));padding:6px 9px;border:1px solid var(--border-strong);border-radius:7px;background:var(--surface-3);color:var(--text);font-size:12px;line-height:1.4;box-shadow:var(--shadow);pointer-events:none}
.nc-badge{display:inline-flex;align-items:center;gap:5px;max-width:100%;padding:3px 8px;border:1px solid var(--border);border-radius:999px;background:var(--surface-3);color:var(--text-muted);font-size:12px;line-height:1.35;white-space:nowrap}.nc-badge-success{color:var(--green);background:color-mix(in srgb,var(--green) 10%,var(--surface-2))}.nc-badge-warning{color:var(--yellow);background:color-mix(in srgb,var(--yellow) 10%,var(--surface-2))}.nc-badge-error{color:var(--red);background:color-mix(in srgb,var(--red) 10%,var(--surface-2))}.nc-badge-accent{color:var(--accent);background:var(--accent-soft)}.nc-avatar{display:inline-grid;place-items:center;flex:none;width:var(--avatar-size,28px);height:var(--avatar-size,28px);overflow:hidden;border-radius:50%;background:var(--accent-soft);color:var(--accent-hover);font-size:12px;font-weight:600}.nc-avatar-stack{display:flex;align-items:center}.nc-avatar-stack .nc-avatar{border:2px solid var(--surface-1);margin-left:-8px}.nc-avatar-stack .nc-avatar:first-child{margin-left:0}
.nc-tabs{position:relative}.nc-tab-indicator{position:absolute;bottom:0;height:2px;border-radius:2px;background:var(--accent);transition:transform .18s,width .18s}.nc-user-menu{min-width:220px}.nc-user-profile{display:flex;align-items:center;gap:10px;padding:9px 10px 12px;border-bottom:1px solid var(--border);margin-bottom:5px}.nc-user-profile>div{min-width:0}.nc-user-profile strong,.nc-user-profile small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nc-user-profile strong{font-size:13px}.nc-user-profile small{color:var(--text-muted);font-size:12px}.nc-menu-row{display:flex;align-items:center;gap:9px;width:100%;min-height:38px;padding:7px 9px;border:0;border-radius:6px;background:transparent;color:var(--text);text-align:left;font-size:13px;cursor:pointer}.nc-menu-row:hover{background:var(--surface-3)}.nc-menu-row svg{width:16px;height:16px;color:var(--text-muted)}
.nw-breadcrumb ol{display:flex;align-items:center;gap:7px;min-width:0;margin:0;padding:0;list-style:none;font-size:13px}.nw-breadcrumb li{display:flex;align-items:center;gap:7px;min-width:0;color:var(--text-muted)}.nw-breadcrumb li:last-child{color:var(--text)}.nw-breadcrumb li.nc-crumb-separator{flex:none;color:var(--text-faint)}.nw-breadcrumb li:not(.nc-crumb-separator) button{max-width:220px;overflow:hidden;padding:2px 0;border:0;background:none;color:inherit;font:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.nw-breadcrumb button:hover{color:var(--accent)}
@media(max-width:420px){.nc-toast-region{left:12px;bottom:12px;width:calc(100vw - 24px)}.nc-calendar{grid-template-columns:repeat(7,minmax(30px,1fr))}.nw-breadcrumb ol{gap:5px;font-size:12px}.nw-breadcrumb li{gap:5px}.nw-breadcrumb button{max-width:110px}}
@media(prefers-reduced-motion:reduce){.nc-skeleton:after,.nc-spinner,.nc-toast{animation:none!important;transition:none!important}}
:root[data-reduce-motion="true"] .nc-skeleton:after,:root[data-reduce-motion="true"] .nc-spinner,:root[data-reduce-motion="true"] .nc-toast{animation:none!important;transition:none!important}
.nc-user-menu{position:static;width:260px;max-width:100%;padding:0;border:0;border-radius:0;box-shadow:none}.nc-menu-row>span{flex:1}.nc-menu-row .nc-switch{margin-left:auto}.nc-user-profile .nc-avatar{flex:none}
.nc-invalid>.nc-control{border-color:var(--red)!important}
.nc-file-chip[hidden]{display:none!important}
.nc-modal-toast-region{position:absolute;z-index:1200;left:12px;right:12px;bottom:12px;width:auto;max-height:calc(100% - 24px);overflow-y:auto}
.nc-modal-toast-region .nc-toast{flex:none}
@media(prefers-reduced-motion:reduce){.nc-switch,.nc-switch:before,.nc-tab-indicator{transition:none!important}}
:root[data-reduce-motion="true"] .nc-switch,:root[data-reduce-motion="true"] .nc-switch:before,:root[data-reduce-motion="true"] .nc-tab-indicator{transition:none!important}
.nc-control:hover:not(:disabled){border-color:color-mix(in srgb,var(--text-muted) 55%,var(--border-strong))}.nc-control:disabled{opacity:.55;cursor:not-allowed}.nc-calendar button.outside:not([aria-pressed="true"]){color:var(--text-muted);opacity:.65}.nc-skeleton-item:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--text) 7%,transparent),transparent);animation:nc-shimmer 1.4s infinite}
@media(prefers-reduced-motion:reduce){.nc-skeleton-item:after{animation:none!important}}
:root[data-reduce-motion="true"] .nc-skeleton-item:after{animation:none!important}
