body{
    font-family:var(--hw-font-family-base);
    background:var(--hw-color-bg);
    color:var(--hw-color-text);
}

/*
 * Shared primitive foundation
 * This file should converge proven module surfaces gradually.
 * Preserve compact sizing by default and avoid forcing risky layout changes.
 * Visual reference anchor:
 * Community + Dashboard + Budget.
 */

.hw-card,
.hw-panel,
.hw-surface{
    background:var(--hw-app-surface);
    border:1px solid var(--hw-app-line);
    border-radius:var(--hw-radius-xl);
    box-shadow:var(--hw-app-shadow);
}

.hw-surface-soft{
    background:var(--hw-app-surface-soft);
}

.hw-sheet,
.hw-modal-sheet{
    background:var(--hw-app-surface);
    border:1px solid var(--hw-app-line);
    box-shadow:var(--hw-shadow-lg);
}

#hw-global-modal.hw-modal{
    position:fixed;
    inset:0;
    z-index:100000;
    display:none;
    align-items:flex-end;
    justify-content:center;
}

#hw-global-modal.hw-modal.active{
    display:flex;
}

#hw-global-modal .hw-modal-backdrop{
    position:absolute;
    inset:0;
    background:rgba(15,23,42,.42);
}

#hw-global-modal .hw-modal-box{
    position:relative;
    z-index:2;
    width:100%;
    max-width:100%;
    margin:0;
    background:var(--hw-app-surface);
    border:1px solid var(--hw-app-line);
    box-shadow:var(--hw-app-shadow-strong);
}

#hw-global-modal .hw-modal-close{
    position:absolute;
    top:10px;
    right:10px;
    width:34px;
    height:34px;
    border:none;
    border-radius:999px;
    background:rgba(255,255,255,.96);
    color:var(--hw-color-muted);
    display:inline-flex;
    align-items:center;
    justify-content:center;
    cursor:pointer;
    box-shadow:var(--hw-app-shadow);
    transition:background var(--hw-transition-fast),color var(--hw-transition-fast),transform var(--hw-transition-fast);
}

#hw-global-modal .hw-modal-close:hover{
    background:#fff;
    color:var(--hw-color-text-strong);
    transform:scale(1.03);
}

@media (min-width:768px){
    #hw-global-modal.hw-modal{
        align-items:center;
    }

    #hw-global-modal .hw-modal-box{
        max-width:min(92vw,640px);
        border-radius:18px;
    }
}

.hw-button,
.hw-btn{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:var(--hw-space-2);
    min-height:44px;
    padding:0 var(--hw-space-5);
    border-radius:var(--hw-radius-pill);
    border:1px solid transparent;
    background:var(--hw-color-primary);
    color:#fff;
    font-size:var(--hw-font-sm);
    font-weight:700;
    text-decoration:none;
    transition:transform var(--hw-transition-fast),box-shadow var(--hw-transition-fast),background var(--hw-transition-fast),border-color var(--hw-transition-fast);
    box-shadow:var(--hw-shadow-sm);
}

.hw-button:hover,
.hw-btn:hover{
    background:var(--hw-color-primary-strong);
    color:#fff;
    transform:translateY(-1px);
    box-shadow:var(--hw-shadow-md);
}

.hw-button-secondary,
.hw-btn-secondary{
    background:var(--hw-color-bg-alt);
    color:var(--hw-color-primary);
    border-color:rgba(136,60,166,.2);
    box-shadow:none;
}

.hw-button-secondary:hover,
.hw-btn-secondary:hover{
    background:var(--hw-color-primary-soft);
    color:var(--hw-color-primary-strong);
}

.hw-button-accent,
.hw-btn-accent{
    background:var(--hw-color-secondary);
}

.hw-button-accent:hover,
.hw-btn-accent:hover{
    background:var(--hw-color-secondary-strong);
}

.hw-button-quiet,
.hw-btn-quiet{
    background:transparent;
    color:var(--hw-color-primary);
    border-color:transparent;
    box-shadow:none;
    min-height:auto;
    padding:0;
}

.hw-button-quiet:hover,
.hw-btn-quiet:hover{
    background:transparent;
    color:var(--hw-color-primary-strong);
    transform:none;
    box-shadow:none;
}

.hw-field,
.hw-input,
.hw-select,
.hw-textarea{
    width:100%;
    min-height:44px;
    padding:0 var(--hw-space-4);
    border:1px solid var(--hw-color-line);
    border-radius:var(--hw-radius-lg);
    background:var(--hw-color-bg-alt);
    color:var(--hw-color-text);
    transition:border-color var(--hw-transition-fast),box-shadow var(--hw-transition-fast),background var(--hw-transition-fast);
}

.hw-textarea{
    min-height:120px;
    padding:var(--hw-space-4);
}

.hw-field:focus,
.hw-input:focus,
.hw-select:focus,
.hw-textarea:focus{
    outline:none;
    border-color:rgba(136,60,166,.45);
    box-shadow:0 0 0 3px rgba(136,60,166,.12);
}

.hw-heading-xl{
    font-family:var(--hw-font-family-display);
    font-size:clamp(32px,4vw,var(--hw-font-3xl));
    line-height:1.02;
    color:var(--hw-color-text-strong);
}

.hw-heading-lg{
    font-size:var(--hw-font-xl);
    line-height:1.1;
    color:var(--hw-color-text-strong);
}

.hw-heading-md{
    font-size:var(--hw-font-lg);
    line-height:1.2;
    color:var(--hw-color-text-strong);
}

.hw-text-muted{
    color:var(--hw-color-muted);
}

.hw-stack-xs > * + *{margin-top:var(--hw-space-2);}
.hw-stack-sm > * + *{margin-top:var(--hw-space-3);}
.hw-stack-md > * + *{margin-top:var(--hw-space-4);}
.hw-stack-lg > * + *{margin-top:var(--hw-space-6);}

.hw-badge{
    display:inline-flex;
    align-items:center;
    min-height:28px;
    padding:0 var(--hw-space-3);
    border-radius:var(--hw-radius-pill);
    background:var(--hw-color-primary-soft);
    color:var(--hw-color-primary-strong);
    font-size:var(--hw-font-xs);
    font-weight:700;
}

.hw-pill-ui{
    display:inline-flex;
    align-items:center;
    min-height:24px;
    padding:0 var(--hw-space-2);
    border-radius:var(--hw-radius-pill);
    background:var(--hw-app-surface-soft);
    border:1px solid var(--hw-app-line);
    color:var(--hw-color-text);
    font-size:var(--hw-font-xs);
    font-weight:700;
}

.hw-dashboard-shell{
    background:var(--hw-dashboard-bg);
}

.hw-dashboard-card{
    background:var(--hw-dashboard-panel);
    border:1px solid var(--hw-dashboard-line);
    border-radius:var(--hw-radius-xl);
    box-shadow:var(--hw-dashboard-shadow);
}

.hw-dashboard-card--strong{
    background:var(--hw-dashboard-panel-strong);
    box-shadow:var(--hw-dashboard-shadow-strong);
}

.hw-divider{
    border:0;
    border-top:1px solid var(--hw-color-line);
    margin:0;
}

/*
 * Primitive convergence wave 1
 * Safe modules only: admin, dashboard, profile, path, goals, household, protocol.
 * Budget is intentionally excluded from grouped overrides here.
 */

:is(
    .hwce-email-panel,
    .hw-next-best-actions__mini,
    .hw-momentum-app,
    .hw-vault-card,
    .hw-goal-card,
    .hw-household-card,
    .hw-profile-page .hw-ai-profile .hw-card,
    .hw-path-card,
    .hw-protocol__panel
){
    border-color:var(--hw-color-line);
}

:is(
    .hwce-email-template-card,
    .hwce-email-template-summary,
    .hw-next-best-actions__mini,
    .hw-momentum-app,
    .hw-goal-card,
    .hw-household-card,
    .hw-profile-page .profile-cap,
    .hw-profile-page .hw-ai-profile .hw-card,
    .hw-path-card,
    .hw-protocol__panel,
    .hw-protocol__insight,
    .hw-protocol__badge
){
    box-shadow:var(--hw-shadow-sm);
}

:is(
    .hw-menu-link,
    .hw-goals-edit-btn,
    .hw-roadmap-hero__pill,
    .hw-next-best-actions__momentum
){
    font-size:var(--hw-font-xs);
}

:is(
    .hw-path-card .hw-path-btn,
    .hw-profile-page .hw-btn-primary,
    .hw-household-primary,
    .hw-household-action,
    .hw-ai-btn
){
    font-size:var(--hw-font-sm);
}

:is(
    .hw-profile-dropdown,
    .hw-modal-box
){
    border:1px solid var(--hw-color-line);
}
