/* Inoku's shared interface contract, loaded after feature artwork.
   This file owns controls, ordinary card shells and heading roles. Feature
   files own layout, charts, maps, paper, glass and native iPhone previews.
   The deliberate !important rules prevent old page-specific button themes
   from changing the meaning of the same action on a different page. */
:root{
 --ui-primary:#344c39;--ui-primary-hover:#283e2e;--ui-primary-ink:#fff;
 --ui-control-radius:10px;--ui-card-radius:20px;--ui-inset-radius:14px;
 --ui-line:var(--border-soft);--ui-card:var(--surface);
 --ui-soft:var(--surface-hi);--ui-muted:var(--text-dim);
 --ui-selected:#e8eedf;--ui-selected-ink:#364b2e;
 --ui-card-shadow:0 2px 8px #23351b05;
 --ui-title:26px;--ui-section:18px;--ui-label:12px;
}
:root[data-theme=dark]{--ui-primary:#b8d79d;--ui-primary-hover:#cce5b5;--ui-primary-ink:#20311e;--ui-selected:#34472f;--ui-selected-ink:#deebd4;--ui-card-shadow:none}
/* Standard secondary, primary, quiet and destructive roles. Merchant tiles
   are content cards, not ordinary buttons, so retain their visual identity. */
body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) .btn:not(.fc-service){
 font-family:var(--font)!important;font-size:var(--ui-label)!important;font-weight:500!important;line-height:1.35!important;letter-spacing:0!important;
 border-radius:var(--ui-control-radius)!important;border:1px solid var(--ui-line)!important;
 color:var(--text)!important;background:var(--ui-card)!important;box-shadow:0 1px 2px #23351b05!important;
 min-height:34px;padding:7px 12px;gap:7px;align-items:center;justify-content:center;
 transition:background .15s,border-color .15s,box-shadow .15s;
}
body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) .btn:not(.fc-service):hover{background:var(--ui-soft)!important;border-color:var(--border)!important}
body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) :is(.btn-brand,.btn-primary,.btn-accept,.btn.primary,.bp-add-item,.pn-setup-button):not(.fc-service){
 background:var(--ui-primary)!important;color:var(--ui-primary-ink)!important;border-color:var(--ui-primary)!important;box-shadow:inset 0 1px 0 #ffffff20,0 2px 3px #20332212!important;
}
body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) :is(.btn-brand,.btn-primary,.btn-accept,.btn.primary,.bp-add-item,.pn-setup-button):not(.fc-service):hover{background:var(--ui-primary-hover)!important;border-color:var(--ui-primary-hover)!important}
body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) .btn-reject{color:var(--no)!important;background:var(--ui-card)!important;border-color:color-mix(in srgb,var(--no) 35%,var(--ui-card))!important}
body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) .btn-ghost{background:transparent!important;box-shadow:none!important}
body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) .btn>.ti{font-size:16px!important;line-height:1;flex-shrink:0}
/* Icon actions have a square hit area; completion rings and map markers are
   intentionally excluded because their shapes communicate different things. */
body :is(#view,#overlay,.form-dialog) .icon-btn{width:32px;height:32px;border-radius:var(--ui-control-radius);color:var(--ui-muted);display:inline-grid;place-items:center}
body :is(#view,#overlay,.form-dialog) .icon-btn>.ti{font-size:17px;line-height:1}
body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) :is(.btn,.icon-btn,summary,input,select,textarea):focus-visible{outline:2px solid var(--accent)!important;outline-offset:3px!important}
/* All page titles share a role. Editorial hero text, book covers and native
   phone content are not page titles and are not resized by this selector. */
body #view :is(.workspace-page-heading h2,.pm-heading h1),body #command-center #cc-status h1{
 font-family:var(--font)!important;font-size:var(--ui-title)!important;font-weight:500!important;letter-spacing:-.8px!important;line-height:1.25!important;
}
body #view :is(.panel>h3,.panel>header h3,.workspace-panel h3,.fm-section-head h3,.fm-section-head h2,.ba-panel>header h2,.ba-panel>header h3,.profile-card h3,.people-reminder-box>header h3,.pn-editor-head h2,.pn-preview-heading h3,.document-shelf h3,.pm-cloud-review h4,.pm-review-inbox h4){font-family:var(--font)!important;font-size:var(--ui-section)!important;font-weight:550!important;letter-spacing:-.35px!important;line-height:1.35!important}
/* Common container geometry: ordinary sections, inset content and overlays.
   Surface colours are applied only to explicitly neutral containers. */
body #view :is(.panel,.today-lane,.calendar-month-panel,.calendar-day-detail,.health-metric,.admin-card,.people-reminder-box,.document-shelf,.ba-panel,.ba-stat,.fc-chart,.pm-cloud-review,.pm-review-inbox,.pm-collection){border-radius:var(--ui-card-radius)!important}
body #view :is(.pm-cloud-review,.pm-review-inbox,.pm-collection,.calendar-day-detail,.calendar-month-panel,.people-reminder-box,.document-shelf){background:var(--ui-card)!important;border:1px solid var(--ui-line)!important;box-shadow:var(--ui-card-shadow)!important}
body #view :is(.pm-arrival-card,.property-doc-tile,.calendar-entry){border-radius:var(--ui-inset-radius)!important}
body #view .pm-arrival-card{background:var(--ui-soft)!important;border-color:var(--ui-line)!important;box-shadow:none!important}
body #view .pm-arrival-copy>p{color:var(--text)}
body #view :is(.pm-review-eyebrow,.pm-review-kind,.pm-review-intro,.pm-review-learning,.pm-cloud-kept){color:var(--ui-muted)}
body #view .pm-arrival-copy details[open]{background:var(--ui-card);color:var(--text-dim)}
body #view .pm-arrival-actions{border-color:var(--ui-line)}
body :is(.overlay-card,.form-dialog){border-radius:var(--ui-card-radius);border:1px solid var(--ui-line);background:var(--ui-card)}
body :is(.overlay-head,.form-heading) h2{font:550 20px/1.35 var(--font);letter-spacing:-.4px}
body :is(#view,#overlay,.form-dialog) :is(input.input,select.input,textarea.input){border-radius:var(--ui-control-radius);border-color:var(--ui-line);background:var(--ui-card);color:var(--text)}
/* Dashboard density is an explicit compact variant of the same controls. */
body #command-center .cc-panel{border-radius:var(--ui-card-radius);border:1px solid var(--ui-line);box-shadow:var(--ui-card-shadow)}
body #command-center .cc-head{border-radius:19px 19px 0 0;background:var(--ui-soft);border-color:var(--ui-line)}
body #command-center .cc-head h2{font:550 13px/1.35 var(--font)}
body #command-center :is(.cc-actions,.cc-foot,.cc-compose) button:not(.cc-check){border-radius:var(--ui-control-radius);border-color:var(--ui-line);background:var(--ui-card);font:500 11px/1.35 var(--font);color:var(--text);min-height:28px}
body #command-center .cc-compose button[type=submit]{background:var(--ui-primary);color:var(--ui-primary-ink);border-color:var(--ui-primary)}
@media(max-width:700px){body :is(#view,#overlay,.form-dialog) .btn:not(.fc-service){min-height:40px}body #view .pm-cloud-review>header{gap:12px}}
@media(prefers-reduced-motion:reduce){body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) .btn{transition:none}}
body #view :is(.document-person-heading h2,.document-browser>header h3,.ba-panel h3,.pn-preview-head h3,.rl-shelf-section>header h3,.pm-tree-copy h3){font-family:var(--font)!important;font-size:var(--ui-section)!important;font-weight:550!important;line-height:1.35!important;letter-spacing:-.35px!important}
/* Public pages use the inverse (light-on-dark) primary role. Their marketing
   headlines stay larger, but button geometry and type match the workspace. */
body :is(.public-header .public-header-action,.welcome-actions .primary,#waitlist-form .primary){border-radius:var(--ui-control-radius)!important;font-size:12px!important;font-weight:500!important;line-height:1.35!important;min-height:40px}
/* Custom dashboard actions use the same primary role, in compact density. */
body #command-center .cc-ahead-controls>button:first-child{background:var(--ui-primary);color:var(--ui-primary-ink);border:1px solid var(--ui-primary);border-radius:var(--ui-control-radius);font:500 11px/1.35 var(--font);min-height:28px;padding:5px 10px}
body #command-center .cc-ahead-controls>button:first-child:hover{background:var(--ui-primary-hover)}
body #view .pm-growth-copy>strong{font:550 var(--ui-section)/1.35 var(--font);letter-spacing:-.35px}
body #view :is(.pn-finish,.ik-overview){border-radius:var(--ui-card-radius);border-color:var(--ui-line)}
body.nx-page :is(.nx-cta,.nx-open-feature,.nx-personal-explore,.nx-snapshot-open,.nx-question-options>button,.nx-stack-controls>button){border-radius:var(--ui-control-radius)!important;font-size:12px!important;font-weight:500!important;line-height:1.35!important}
body.nx-page .nx-cta{background:linear-gradient(180deg,#e1fbbb,#c7ee94);border:1px solid #dfffb2;color:#182311;box-shadow:inset 0 1px 0 #fff9}
/* Match the primary role's specificity: old combined classes must not turn
   selected tabs into primary actions or disabled actions into enabled ones. */
body :is(#view,#overlay,.form-dialog) .btn:not(.fc-service):not(:disabled):is([aria-pressed=true],[aria-selected=true],.btn-brand[data-command=period],.btn-brand[data-command=folder],.workspace-tabs .btn-brand,.rl-shelf-toolbar .btn-brand,.seg .btn-brand,.pf-periods .btn-brand){background:var(--ui-selected)!important;color:var(--ui-selected-ink)!important;border-color:var(--ui-line)!important;box-shadow:none!important}
body :is(#view,#dashboard,#overlay,.form-dialog,.first-run,.fr-guide-dock) .btn.btn:disabled:not(.fc-service){background:var(--ui-soft)!important;color:var(--ui-muted)!important;border-color:var(--ui-line)!important;box-shadow:none!important;opacity:.65;cursor:not-allowed}
/* Secondary sweep: custom card components use the same outer/inset scale. */
body #view :is(.goal-index-item,.property-home,.property-stat,.document-people,.rl-shelf-section,.fc-totals>article,.pn-settings){border-radius:var(--ui-card-radius)!important}
body #view :is(.ik-next-row,.ik-guidance,.property-overview-docs){border-radius:var(--ui-inset-radius)!important}
