.d4-btn{height:44px;position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 24px;border:0;border-radius:var(--shape-button);font:var(--type-label-lg);letter-spacing:.1px;cursor:pointer;overflow:hidden;white-space:nowrap;transition:border-radius var(--spring-spatial-dur) var(--spring-spatial),transform var(--spring-spatial-dur) var(--spring-spatial),box-shadow var(--dur-short) var(--ease-standard);font-family:var(--font-body);font-weight:600}
.d4-btn::before{content:'';position:absolute;inset:0;background:currentColor;opacity:0;pointer-events:none;transition:opacity var(--dur-short) var(--ease-standard)}
.d4-btn:hover::before{opacity:var(--state-hover)}.d4-btn:focus-visible::before{opacity:var(--state-focus)}.d4-btn:active::before{opacity:var(--state-pressed)}
.d4-btn:focus-visible{outline:3px solid var(--md-primary);outline-offset:2px}
.d4-btn:active{border-radius:var(--shape-md);transform:scale(.97)}
.d4-btn--sm{height:36px;padding:0 16px;font-size:13px}.d4-btn--lg{height:56px;padding:0 32px;font:var(--type-title-md);font-weight:600}
.d4-btn--primary{background:var(--md-primary);color:var(--md-on-primary)}.d4-btn--secondary{background:var(--md-secondary-container);color:var(--md-on-secondary-container)}
.d4-btn--outline{background:transparent;color:var(--md-primary);box-shadow:inset 0 0 0 1px var(--md-outline)}.d4-btn--ghost{background:transparent;color:var(--md-primary);padding:0 16px}
.d4-btn--danger{background:var(--md-error);color:var(--md-on-error)}
.d4-btn:disabled{background:color-mix(in srgb,var(--md-on-surface) 12%,transparent);color:color-mix(in srgb,var(--md-on-surface) 38%,transparent);box-shadow:none;cursor:not-allowed}.d4-btn:disabled::before{display:none}
.d4-btn .d4-spin{width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:d4-rot .8s linear infinite}
@keyframes d4-rot{to{transform:rotate(360deg)}}
.d4-iconbtn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:0;border-radius:var(--shape-full);background:transparent;color:var(--md-on-surface-variant);cursor:pointer;overflow:hidden;transition:transform var(--spring-spatial-dur) var(--spring-spatial)}
.d4-iconbtn::before{content:'';position:absolute;inset:0;background:currentColor;opacity:0;transition:opacity var(--dur-short) var(--ease-standard)}.d4-iconbtn:hover::before{opacity:var(--state-hover)}.d4-iconbtn:focus-visible::before{opacity:var(--state-focus)}.d4-iconbtn:active::before{opacity:var(--state-pressed)}.d4-iconbtn:active{transform:scale(.92)}
.d4-iconbtn:focus-visible{outline:3px solid var(--md-primary);outline-offset:2px}
.d4-iconbtn--filled{background:var(--md-primary);color:var(--md-on-primary)}.d4-iconbtn--tonal{background:var(--md-secondary-container);color:var(--md-on-secondary-container)}.d4-iconbtn--outline{box-shadow:inset 0 0 0 1px var(--md-outline)}
.d4-badge{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border-radius:var(--shape-full);font:var(--type-label-md);font-size:12px;font-weight:600;letter-spacing:.3px}
.d4-badge--sm{height:22px;padding:0 8px;font-size:11px}
.d4-badge--primary{background:var(--md-primary-container);color:var(--md-on-primary-container)}.d4-badge--secondary{background:var(--md-secondary-container);color:var(--md-on-secondary-container)}
.d4-badge--success{background:var(--md-success-container);color:var(--md-on-success-container)}.d4-badge--warning{background:var(--md-warning-container);color:var(--md-on-warning-container)}
.d4-badge--danger{background:var(--md-error-container);color:var(--md-on-error-container)}.d4-badge--info{background:var(--md-tertiary-container);color:var(--md-on-tertiary-container)}
.d4-card{border-radius:var(--shape-card);background:var(--md-surface-container-low);color:var(--md-on-surface);transition:transform var(--spring-spatial-dur) var(--spring-spatial),box-shadow var(--dur-medium) var(--ease-standard),background var(--dur-short) var(--ease-standard)}
.d4-card--elevated{background:var(--md-surface-container-lowest);box-shadow:var(--elev-1)}.d4-card--outlined{background:var(--md-surface);box-shadow:inset 0 0 0 1px var(--md-outline-variant)}.d4-card--tonal{background:var(--md-primary-container);color:var(--md-on-primary-container)}
.d4-card--hover{cursor:pointer}.d4-card--hover:hover{transform:translateY(-3px);box-shadow:var(--elev-2)}
.d4-pad-none{padding:0}.d4-pad-sm{padding:16px}.d4-pad-md{padding:24px}.d4-pad-lg{padding:32px}
.d4-field{display:flex;flex-direction:column;gap:6px;font-family:var(--font-body)}
.d4-field label{font:var(--type-label-lg);color:var(--md-on-surface-variant)}
.d4-field__box{display:flex;align-items:center;gap:8px;min-height:52px;padding:0 16px;border-radius:var(--shape-field);background:var(--md-surface-container-lowest);box-shadow:inset 0 0 0 1px var(--md-outline);transition:box-shadow var(--dur-short) var(--ease-standard)}
.d4-field__box:hover{box-shadow:inset 0 0 0 1px var(--md-on-surface)}.d4-field__box:focus-within{box-shadow:inset 0 0 0 2px var(--md-primary)}
.d4-field--error .d4-field__box{box-shadow:inset 0 0 0 2px var(--md-error)}.d4-field--error .d4-field__help{color:var(--md-error)}
.d4-field input,.d4-field select,.d4-field textarea{flex:1;min-width:0;border:0;outline:0;background:transparent;font:var(--type-body-lg);letter-spacing:.2px;color:var(--md-on-surface)}
.d4-field textarea{padding:14px 0;resize:vertical;min-height:96px}.d4-field--area .d4-field__box{align-items:flex-start}
.d4-field select{appearance:none;height:52px;cursor:pointer}.d4-field input::placeholder,.d4-field textarea::placeholder{color:var(--md-on-surface-variant);opacity:.7}
.d4-field__box>.material-symbols-outlined{color:var(--md-on-surface-variant);font-size:22px}
.d4-field__help{font:var(--type-body-sm);color:var(--md-on-surface-variant);padding:0 16px}
.d4-field--disabled{opacity:.5;pointer-events:none}
.d4-scrim{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--scrim);animation:d4-fade var(--dur-medium) var(--ease-standard)}.d4-scrim--contained{position:absolute}
.d4-dialog{width:100%;max-width:480px;max-height:90%;display:flex;flex-direction:column;gap:16px;padding:24px;border-radius:var(--shape-dialog);background:var(--md-surface-container-high);color:var(--md-on-surface);box-shadow:var(--elev-3);animation:d4-pop var(--spring-spatial-dur) var(--spring-spatial)}
.d4-dialog__head{display:flex;align-items:center;gap:12px}.d4-dialog__head h2{margin:0;flex:1;font:var(--type-headline-sm)}
.d4-dialog__icon{width:48px;height:48px;border-radius:var(--shape-full);display:flex;align-items:center;justify-content:center;background:var(--md-primary-container);color:var(--md-on-primary-container);font-size:24px}.d4-dialog__icon--danger{background:var(--md-error-container);color:var(--md-on-error-container)}
.d4-dialog__body{overflow:auto;font:var(--type-body-md);letter-spacing:.25px;color:var(--md-on-surface-variant)}
.d4-dialog__actions{display:flex;justify-content:flex-end;gap:8px}
@keyframes d4-fade{from{opacity:0}}@keyframes d4-pop{from{opacity:0;transform:scale(.88) translateY(16px)}}
.d4-snack{display:inline-flex;align-items:center;gap:12px;min-height:52px;padding:6px 8px 6px 20px;border-radius:var(--shape-lg);background:var(--md-inverse-surface);color:var(--md-inverse-on-surface);font:var(--type-body-md);box-shadow:var(--elev-3);animation:d4-pop var(--spring-spatial-dur) var(--spring-spatial)}
.d4-snack__action{border:0;background:transparent;color:var(--md-inverse-primary);font:var(--type-label-lg);font-weight:600;height:40px;padding:0 12px;border-radius:var(--shape-full);cursor:pointer}.d4-snack__action:hover{background:color-mix(in srgb,var(--md-inverse-primary) 12%,transparent)}
.d4-snack--success .material-symbols-outlined{color:var(--md-success-container)}.d4-snack--error .material-symbols-outlined{color:var(--md-error-container)}
.d4-table-wrap{overflow:auto;border-radius:var(--shape-card);background:var(--md-surface-container-lowest);box-shadow:inset 0 0 0 1px var(--md-outline-variant)}
.d4-table{width:100%;border-collapse:collapse;font:var(--type-body-md);color:var(--md-on-surface)}
.d4-table th{position:sticky;top:0;text-align:left;padding:14px 20px;background:var(--md-surface-container-low);color:var(--md-on-surface-variant);font:var(--type-label-md);font-weight:600;letter-spacing:.5px;text-transform:uppercase;white-space:nowrap}
.d4-table td{padding:14px 20px;border-top:1px solid var(--md-outline-variant)}.d4-table tbody tr{transition:background var(--dur-short) var(--ease-standard)}.d4-table tbody tr:hover{background:var(--md-surface-container-low)}
.d4-table .num{text-align:right;font-variant-numeric:tabular-nums}
.d4-pager{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:12px 8px;font:var(--type-body-md);color:var(--md-on-surface-variant)}.d4-pager__ctl{display:flex;align-items:center;gap:8px}
.d4-logo{display:block;height:var(--logo-h,32px);width:auto}
