/* Shared visual primitives: Web and Hybrid consume this same stylesheet. */
:root { --wh-ink:#343c50; --wh-brand:#a43c5b; --wh-surface:#fffaf6; --wh-line:#dedee6; --wh-radius:16px; }
*, *::before, *::after { box-sizing:border-box; }
html { scroll-padding-top:1.5rem; }
body { line-height:1.6; }
button, input, select, textarea { font:inherit; }
button, a, input, select, textarea { -webkit-tap-highlight-color:transparent; }
:focus-visible { outline:3px solid #a43c5b; outline-offset:3px; }
button:disabled { cursor:wait; opacity:.6; }
.wallet-shell { min-width:0; }
.section-header { margin-block:1rem 1.75rem; }
.section-header h1 { line-height:1.15; letter-spacing:-.035em; font-size:clamp(1.85rem,4vw,2.75rem); }
.entity-editor, .contract-detail>article { min-width:0; padding:clamp(1rem,2.5vw,1.75rem); border:1px solid var(--wh-line); border-radius:var(--wh-radius); background:white; margin-block:1rem; box-shadow:0 4px 24px #343c5005; }
.form-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,250px),1fr)); gap:1rem 1.25rem; }
.form-grid label, .workspace-field { display:flex; flex-direction:column; gap:.4rem; min-width:0; font-weight:500; }
.form-grid input:not([type=checkbox]):not([type=radio]), .form-grid select, .form-grid textarea, .account-form input:not([type=checkbox]) { display:block; width:100%; min-width:0; min-height:46px; padding:.65rem .8rem; border:1px solid #b9bdc8; border-radius:9px; color:var(--wh-ink); background:white; }
.form-grid textarea { min-height:100px; resize:vertical; }
input[type=checkbox], input[type=radio] { width:1.2rem; height:1.2rem; accent-color:var(--wh-brand); }
input[aria-invalid=true], select[aria-invalid=true], textarea[aria-invalid=true], .invalid { border:2px solid #a12d2d !important; background:#fff8f8 !important; }
.primary-action, .secondary-action, .danger-action { display:inline-flex; align-items:center; justify-content:center; gap:.4rem; min-height:44px; padding:.65rem 1rem; border-radius:10px; font-weight:650; text-decoration:none; text-align:center; line-height:1.35; }
.primary-action { background:var(--wh-ink); color:white; border:1px solid var(--wh-ink); }
.secondary-action { background:white; color:var(--wh-ink); border:1px solid #c9cbd3; }
.danger-action { background:#fff2f2; color:#922525; border:1px solid #dbabab; }
.form-actions, .entity-actions { display:flex; flex-wrap:wrap; align-items:center; gap:.65rem; margin-block:.75rem; }
.form-status { border-radius:10px; padding:.85rem 1rem; overflow-wrap:anywhere; }
.form-status.error { background:#fff0f0; color:#852222; border-inline-start:4px solid #a12d2d; }
.form-status.success { background:#edf7f1; color:#22543a; border-inline-start:4px solid #307d52; }
.wh-selector-action { display:flex; gap:.5rem; align-items:stretch; width:100%; }
.wh-selector-value { flex:1; min-width:0; }
.wh-add-related { flex:0 0 46px; padding:.4rem; font-size:1.5rem; }
.visually-hidden { 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; border:0!important; }
.wh-modal { color:var(--wh-ink); border:1px solid var(--wh-line); border-radius:20px; padding:0; width:min(540px,calc(100vw - 2rem)); max-height:calc(100dvh - 2rem); overflow:auto; box-shadow:0 28px 100px #17203355; background:white; }
.wh-modal::backdrop { background:#20283a99; backdrop-filter:blur(3px); }
.wh-modal-content { padding:clamp(1.25rem,4vw,2rem); }
.wh-modal-icon { width:44px; height:44px; display:grid; place-items:center; border-radius:50%; background:#fff1d8; color:#865000; font-size:1.5rem; font-weight:800; margin-bottom:1rem; }
.wh-modal h2 { font-size:1.45rem; line-height:1.3; margin:0 0 .75rem; }
.wh-modal li { margin-block:.5rem; overflow-wrap:anywhere; }
.wh-modal button { margin-top:.5rem; }
.wh-flow-notice { padding:1rem; background:#eff5fa; border:1px solid #c6d6e4; border-radius:12px; margin-bottom:1rem; }
.wallet-shell table { display:block; width:100%; overflow-x:auto; border-collapse:collapse; background:white; }
.wallet-shell th, .wallet-shell td { padding:.85rem; text-align:start; border-bottom:1px solid var(--wh-line); vertical-align:top; }
.wallet-shell th { background:#f5f3f7; font-size:.85rem; }
.wallet-shell dl { overflow-wrap:anywhere; }
.wallet-shell img { max-width:100%; height:auto; }
.wallet-shell h2, .wallet-shell h3, .wallet-shell p { overflow-wrap:anywhere; }
@media(max-width:700px) { .wallet-hero, .contracts-layout, .dashboard-grid { grid-template-columns:minmax(0,1fr)!important; } .contract-form-grid { grid-template-columns:minmax(0,1fr)!important; } .contract-form-grid>label { grid-column:auto!important; } .form-grid { grid-template-columns:1fr; } .entity-editor header { flex-wrap:wrap; } .contracts-list { max-height:280px; overflow:auto; } .wh-modal .form-actions { flex-direction:column; } .wh-modal .form-actions button { width:100%; } }
@media(prefers-reduced-motion:reduce) { *, *::before, *::after { scroll-behavior:auto!important; animation-duration:.01ms!important; transition-duration:.01ms!important; } }
.wh-form-fields { border:0; padding:0; margin:0; min-width:0; }
[hidden] { display:none!important; }
.wh-related-creation .editor-tabs { display:none; }
.wh-private-skip { position:fixed; left:1rem; top:-8rem; z-index:10000; padding:.75rem 1rem; background:white; color:#343c50; border:2px solid #a43c5b; border-radius:8px; }
.wh-private-skip:focus { top:1rem; }
.sidebar { background:#343c50; }
.nav-link.active, .nav-link:hover { background:#505970; }

/* Field requirements and inline privacy notices are shared by Web and Hybrid. */
.wh-required-mark { display:inline !important; color:#b42332; font-weight:750; margin-inline-start:.2em; white-space:nowrap; }
.wh-form-guide { font-size:.95rem; color:var(--wh-ink); margin-block:.5rem 1rem; }
.wh-privacy-notice { display:flex; align-items:flex-start; gap:.75rem; width:100%; min-width:0; padding:1rem; margin-block:1rem; border:1px solid var(--wh-line); border-inline-start:4px solid var(--wh-brand); border-radius:12px; background:var(--wh-surface); color:var(--wh-ink); line-height:1.6; grid-column:1 / -1; }
.wh-privacy-notice>svg { flex:0 0 24px; margin-block-start:.2rem; color:var(--wh-brand); }
.wh-privacy-notice>div { min-width:0; overflow-wrap:anywhere; }
.wh-privacy-notice p { margin:0; }
.wh-privacy-notice small { display:block; margin-block-start:.5rem; font-size:.875rem; }
.wh-privacy-notice a { color:#85334c; text-decoration:underline; }
@media (max-width:480px) { .wh-privacy-notice { padding:.8rem; gap:.6rem; } }

.wh-form-guide { grid-column:1 / -1; flex-basis:100%; }

.wh-person-kind { display:inline-block; margin-inline-end:.3rem; font-size:1.15em; line-height:1; }
