Skip to content

moooon

Motir

Vibe your whole project. Bring an idea — Motir's three AI layers plan it, track it, and ship it, end to end. You're looking at Motir, built in Motir.

  • Vibe Project
  • Open Source
  • AI Agent
  • AI Loop
1
requests
0
upvotes
145
planned
1,361
shipped

Motir · Roadmap

MOTIR-4039Done

The base style's shape tokens inherit from the ancestor — a scoped warm-editorial preview wears the ACTIVE style's --shadow-* because the base has no [data-style] block

Opened by Zhu Yue ·

A scoped StyleVignette tile for the BASE style (warm-editorial) renders the ACTIVE style's modal shadow, not its own. This is the data-style (shape/feel) sibling of the palette leak MOTIR-3933 fixed — and it contradicts MOTIR-3947's ADR Q5 table, which asserts the shape/feel tokens are isolated.

Mechanism

The material layer (background / backdrop-filter / border-color, the @scope selector rules) is isolated by MOTIR-3997. But the SHAPE/feel tokens — --shadow-*, --radius-*, --spacing-*, --height-* — are plain custom properties that inherit down the data-style axis. A non-base style isolates them because its own [data-style='<id>'] block declares them on the scoped wrapper. The BASE style has NO [data-style='warm-editorial'] block (it IS the Tier-0 @theme defaults), so a scoped warm-editorial tile inherits every shape token from <html data-style='<ACTIVE>'>.

Concrete: the vignette modal carries shadow-(--shadow-modal)box-shadow: var(--shadow-modal). Under an active glassmorphism, the base tile's modal computes 0 28px 70px -16px rgba(15,15,15,0.34) (glass) instead of the base 0 16px 48px -8px rgba(15,15,15,0.16).

Evidence (from MOTIR-3998's rendered guard, first CI run)

tile warm-editorial under ancestor glassmorphism: modal.box-shadow: … rgba(15,15,15,0.34) 0 28px 70px -16px (own material is … rgba(15,15,15,0.16) 0 16px 48px -8px)
tile warm-editorial under ancestor neumorphism:  modal.box-shadow: … rgba(20,20,30,0.24) 0 22px 50px -18px  (own material is … rgba(15,15,15,0.16) 0 16px 48px -8px)

Only the base tile leaks, and only via --shadow-* — every other style has its own block, so the 2 mismatched cells out of 33 are exactly this defect.

Remedy direction

The data-style analogue of MOTIR-3933's [data-palette='motir'] base block: give the base style its own block that re-declares the full shape/feel token set to the Tier-0 values (mirroring how motir got a base palette block), OR extend data-appearance-scope to re-emit the shape tokens onto the scoped wrapper. The mechanism is a decision for the fix; the requirement is that a scoped base tile resolves its own shape tokens.

Repro

On /tokens, set the active Style to Glassmorphism, then compare the "Warm Editorial" tile's modal shadow against the same tile with Warm Editorial active. The modal drops from the soft base shadow to the deep glass shadow.

Discussion

No comments yet.

Adding to this discussion signs you in on app.motir.co and brings you back to this request.

Add a comment