/* UI01 | semantic components shared by all Django templates */
.ds-hero{position:relative;overflow:hidden;border-radius:var(--ds-radius-xl);color:#fff;background:linear-gradient(117deg,#123b50 0%,#0b576b 67%,#0c7182 100%);padding:clamp(25px,3vw,44px);box-shadow:var(--ds-shadow-sm)}
.ds-hero::after{content:"";position:absolute;width:340px;height:340px;border:1px solid rgb(255 255 255 / 12%);border-radius:50%;top:-180px;left:-110px;box-shadow:0 0 0 55px rgb(255 255 255 / 3%),0 0 0 105px rgb(255 255 255 / 2%);pointer-events:none}
.ds-hero>*,.ds-hero .ds-hero-content{position:relative;z-index:1}.ds-hero h1,.ds-hero h2{color:#fff;font-size:clamp(1.45rem,2.5vw,2.1rem);margin:8px 0 10px;line-height:1.6}
.ds-hero p{color:#d7ebf2;font-size:.88rem;max-width:680px;line-height:2;margin:0}
.ds-hero .ds-kicker{color:#a3e5e5}.ds-hero .btn-light{background:#fff;border-color:#fff;color:#0f4559;font-weight:800}
.ds-hero .btn-outline-light{color:#fff;border-color:rgb(255 255 255 / 60%)}
.ds-hero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:23px}
.ds-section{margin-block:29px}.ds-section-heading{display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-bottom:15px}
.ds-section-heading h2{font-size:1.12rem;margin:0}.ds-section-heading p{font-size:.81rem;color:var(--ds-muted);margin:5px 0 0}
.ds-work-card{display:flex;flex-direction:column;gap:11px;background:var(--ds-surface);border:1px solid var(--ds-border);border-radius:var(--ds-radius-lg);padding:24px;text-decoration:none;color:var(--ds-ink);min-height:212px;height:100%;transition:transform .2s var(--ds-ease),box-shadow .2s var(--ds-ease),border-color .2s var(--ds-ease)}
.ds-work-card:hover,.ds-work-card:focus-visible{transform:translateY(-3px);box-shadow:var(--ds-shadow-md);border-color:#a0cbd4;color:var(--ds-ink)}
.ds-work-icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;background:#e7f4f5;color:#09677b}.ds-work-icon .ui-icon{width:24px;height:24px}
.ds-work-card h3{font-size:1rem;margin:0}.ds-work-card p{font-size:.78rem;line-height:1.95;color:var(--ds-muted);margin:0;flex:1}
.ds-work-cta{display:inline-flex;align-items:center;gap:6px;color:var(--ds-teal-700);font-size:.8rem;font-weight:800}
.ds-metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.ds-metric{position:relative;border:1px solid var(--ds-border);background:#fff;border-radius:var(--ds-radius-lg);padding:18px 20px;overflow:hidden;min-width:0;box-shadow:var(--ds-shadow-xs)}
.ds-metric:before{content:"";position:absolute;top:0;right:0;height:3px;width:50%;background:linear-gradient(270deg,var(--ds-teal-700),transparent)}
.ds-metric-label{font-size:.8rem;font-weight:650;color:var(--ds-muted)}.ds-metric-value{font-size:2.05rem;font-weight:850;line-height:1.5;color:var(--ds-navy-900);letter-spacing:-.05em}.ds-metric-meta{font-size:.72rem;color:var(--ds-muted)}
.ds-panel{background:#fff;border:1px solid var(--ds-border);box-shadow:var(--ds-shadow-xs);border-radius:var(--ds-radius-lg);overflow:hidden}
.ds-panel-head{padding:19px 22px;border-bottom:1px solid var(--ds-border);display:flex;align-items:center;justify-content:space-between;gap:12px}
.ds-panel-head h2,.ds-panel-head h3{font-size:1.05rem;margin:0}.ds-panel-body{padding:22px}.ds-panel-footer{padding:14px 22px;background:var(--ds-soft);border-top:1px solid var(--ds-border)}
.ds-tag{display:inline-flex;align-items:center;gap:6px;font-size:.73rem;line-height:1.5;font-weight:800;border-radius:7px;padding:5px 9px;background:var(--ds-surface-alt);color:var(--ds-ink-soft)}
.ds-tag[data-tone="success"]{background:var(--ds-success-soft);color:var(--ds-success)}.ds-tag[data-tone="warning"]{background:var(--ds-warning-soft);color:var(--ds-warning)}
.ds-tag[data-tone="danger"]{background:var(--ds-danger-soft);color:var(--ds-danger)}.ds-tag[data-tone="info"]{background:var(--ds-info-soft);color:var(--ds-info)}
.ds-tag-dot{width:7px;height:7px;border-radius:50%;background:currentColor}
.ds-empty{padding:38px 22px;background:#fbfcfe;border:1px dashed var(--ds-border-strong);border-radius:var(--ds-radius-lg);text-align:center}
.ds-empty-icon{width:56px;height:56px;margin:0 auto 15px;background:#eaf2f6;display:grid;place-items:center;border-radius:17px;color:var(--ds-teal-700)}
.ds-empty h2,.ds-empty h3{font-size:1rem}.ds-empty p{max-width:460px;color:var(--ds-muted);font-size:.82rem;margin:9px auto 20px}
.ds-callout{display:flex;gap:12px;padding:15px 16px;border-radius:12px;background:#edf6f8;border:1px solid #d2e7ec;color:#31546a;font-size:.78rem;line-height:1.9}
.ds-callout .ui-icon{color:var(--ds-teal-700);margin-top:2px;flex-shrink:0}.ds-callout strong{display:block;color:var(--ds-ink);font-size:.82rem}
.ds-steps{display:flex;align-items:stretch;gap:0;counter-reset:step;list-style:none;padding:0;margin:0}
.ds-steps li{flex:1;position:relative;padding:4px 0 6px 13px;color:var(--ds-muted);font-size:.74rem;font-weight:650;display:flex;align-items:center;gap:9px}
.ds-steps li:not(:last-child)::after{content:"";position:absolute;left:5px;top:20px;width:calc(100% - 102px);border-top:1px dashed var(--ds-border-strong)}
.ds-step-number{width:32px;height:32px;display:grid;place-items:center;border-radius:10px;background:#e9f0f3;color:var(--ds-teal-700);font-weight:800}
.ds-steps li[data-done="true"] .ds-step-number{background:var(--ds-success-soft);color:var(--ds-success)}
.ds-account-tip{font-size:.78rem;color:var(--ds-muted);padding:13px 16px;border:1px solid var(--ds-border);border-radius:12px;background:#fff;display:flex;align-items:center;gap:11px}
.ds-account-tip a{font-weight:750}
.ds-command-modal .modal-content{border:1px solid var(--ds-border);border-radius:18px;box-shadow:var(--ds-shadow-lg);overflow:hidden}
.ds-command-modal .modal-header{border:0;padding:16px 20px 10px}.ds-command-search{border:0!important;box-shadow:none!important;font-size:1rem;min-height:52px}
.ds-command-list{max-height:55vh;overflow-y:auto;padding:8px 12px 17px}.ds-command-row{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ds-ink);padding:12px;border-radius:10px;font-size:.88rem}
.ds-command-row:hover,.ds-command-row:focus-visible{background:#edf6f8;color:var(--ds-teal-700)}
.ds-command-row .ui-icon{color:var(--ds-teal-700)}.ds-command-row small{display:block;font-size:.68rem;color:var(--ds-muted)}
.ds-command-empty{padding:24px;color:var(--ds-muted);text-align:center}
.portal-notices{display:grid;gap:10px;margin-bottom:18px}.portal-notices .portal-notice{border-width:1px;box-shadow:var(--ds-shadow-xs);padding:13px 14px}
.portal-main .modal-content{border:1px solid var(--ds-border);border-radius:18px;box-shadow:var(--ds-shadow-lg)}
.portal-main .modal-header{border-bottom-color:var(--ds-border)}
.portal-main .modal-footer{border-top-color:var(--ds-border)}
.portal-main .pagination .page-link{border-color:var(--ds-border);color:var(--ds-teal-800);padding:9px 13px;min-width:42px;text-align:center}
.portal-main .pagination .page-item.active .page-link{background:var(--ds-teal-700);border-color:var(--ds-teal-700);color:white}
.portal-main .portal-empty{background:var(--ds-soft);border-color:var(--ds-border-strong)}
.portal-main .portal-kpi{border-radius:var(--ds-radius-lg);box-shadow:var(--ds-shadow-xs)}
.portal-main .portal-kpi strong{color:var(--ds-teal-800)}
