/* Shared components; existing public layouts remain page-specific. */
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
span[data-i18n]{pointer-events:none}
.ds-page{margin:0;background:var(--ds-bg);color:var(--ds-text);font-family:var(--ds-font-body);line-height:var(--ds-leading)}
.ds-container{width:min(100% - 2rem,1200px);margin-inline:auto;padding-block:var(--ds-space-8)}
.ds-page h1,.ds-page h2,.ds-page h3{font-family:var(--ds-font-heading);color:var(--ds-secondary);line-height:var(--ds-leading-heading)}
.ds-page h1{font-size:var(--ds-h1)}.ds-page h2{font-size:var(--ds-h2)}
.ds-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:var(--ds-space-4)}
.ds-card{padding:var(--ds-space-6);border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);background:var(--ds-surface);box-shadow:var(--ds-shadow)}
.ds-stack{display:grid;gap:var(--ds-space-4)}.ds-actions{display:flex;align-items:center;gap:var(--ds-space-2);flex-wrap:wrap}
.ds-button{display:inline-flex;align-items:center;justify-content:center;gap:var(--ds-space-2);min-height:var(--ds-control-height);padding:.625rem 1rem;border:1px solid transparent;border-radius:var(--ds-radius-sm);background:var(--ds-primary);color:var(--ds-surface);font:700 1rem var(--ds-font-body);text-decoration:none;cursor:pointer}
.ds-button.secondary{background:var(--ds-surface);color:var(--ds-secondary);border-color:var(--ds-border)}
.ds-button.danger{background:var(--ds-error)}.ds-button:disabled{opacity:.55;cursor:not-allowed}
.ds-field{display:grid;gap:var(--ds-space-2);font-weight:700}
.ds-input,.ds-select,.ds-textarea{min-height:var(--ds-control-height);width:100%;padding:.625rem .75rem;border:1px solid var(--ds-control-border);border-radius:var(--ds-radius-sm);background:var(--ds-surface);color:var(--ds-text);font:400 1rem var(--ds-font-body)}
.ds-textarea{resize:vertical;min-height:7rem}.ds-help{color:var(--ds-muted);font-size:var(--ds-text-sm);font-weight:400}
:where(a,button,input,select,textarea,summary):focus-visible{outline:3px solid var(--ds-primary);outline-offset:3px}
.ds-table-wrap{max-width:100%;overflow:auto;border:1px solid var(--ds-border);border-radius:var(--ds-radius)}
.ds-table{border-collapse:collapse;width:100%;text-align:start}.ds-table th,.ds-table td{padding:.875rem;border-block-end:1px solid var(--ds-border);text-align:start}.ds-table th{background:var(--ds-bg)}
.ds-alert{padding:1rem;border-radius:var(--ds-radius-sm);background:var(--ds-info-bg);color:var(--ds-info)}
.ds-alert.success{background:var(--ds-success-bg);color:var(--ds-success)}.ds-alert.warning{background:var(--ds-warning-bg);color:var(--ds-warning)}.ds-alert.error{background:var(--ds-error-bg);color:var(--ds-error)}
.ds-badge{display:inline-flex;padding:.25rem .625rem;border-radius:99rem;background:var(--ds-info-bg);color:var(--ds-info);font-size:var(--ds-text-sm);font-weight:700}
.ds-dialog{width:min(40rem,calc(100% - 2rem));max-height:calc(100dvh - 2rem);overflow:auto;border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);background:var(--ds-surface);color:var(--ds-text);padding:var(--ds-space-6)}
.ds-dialog::backdrop{background:rgba(6,39,70,.55)}
.ds-tabs{display:flex;gap:var(--ds-space-2);overflow:auto}.ds-tabs [aria-selected=true]{background:var(--ds-secondary);color:var(--ds-surface)}
.ds-empty,.ds-loading,.ds-error{padding:var(--ds-space-8);text-align:center;border:1px dashed var(--ds-border);border-radius:var(--ds-radius);color:var(--ds-muted)}.ds-error{color:var(--ds-error)}
.ds-logo{height:auto;aspect-ratio:809/551;object-fit:contain;width:8rem;max-width:100%;border:0;box-shadow:none;filter:none}
.ds-logo-space{padding:1rem;display:inline-flex;align-items:center;justify-content:center}.ds-dark{background:var(--ds-secondary);color:var(--ds-surface);border-radius:var(--ds-radius)}
.ds-language{font:700 .875rem var(--ds-font-body);min-width:44px;min-height:44px;border:1px solid var(--ds-border);border-radius:99rem;background:var(--ds-surface);color:var(--ds-secondary);padding:.5rem .75rem;cursor:pointer}
.ds-skip{position:fixed;inset-block-start:-10rem;inset-inline-start:1rem;z-index:10000;background:var(--ds-surface);color:var(--ds-secondary);padding:1rem}.ds-skip:focus{inset-block-start:1rem}
.ds-directional{display:inline-block}[dir=ltr] .ds-directional{transform:scaleX(-1)}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media print{.ds-language,.ds-skip,.ds-screen-only{display:none!important}}
