/* Extracted from calm/index.html and audio-ux.css. Scope/provenance: tokens.json and DESIGN.md. */

@font-face{font-family:Book;src:url(../fonts/gentium-book-plus-latin-400-normal.woff2) format("woff2");font-weight:400}
@font-face{font-family:Book;src:url(../fonts/gentium-book-plus-latin-700-normal.woff2) format("woff2");font-weight:700}
@font-face{font-family:Book;src:url(../fonts/gentium-book-plus-cyrillic-400-normal.woff2) format("woff2");font-weight:400;unicode-range:U+0400-04FF}
@font-face{font-family:Uchen;src:url(../fonts/jomolhari-tibetan-400-normal.woff2) format("woff2")}
*{box-sizing:border-box;margin:0;-webkit-tap-highlight-color:transparent}[hidden]{display:none!important}
html,body{background:var(--ground)}
button{all:unset;cursor:pointer;box-sizing:border-box}h1{letter-spacing:-.003em;font:var(--font-weight-regular) var(--type-title-size)/var(--type-title-line) var(--type-title-family);}.titlerow{display:flex;align-items:center;justify-content:space-between;padding:var(--space-inline) var(--space-inline) var(--space-tight) var(--space-screen);min-height:var(--size-row-image)}.plus{width:var(--size-target-min);height:var(--size-target-min);display:grid;place-items:center;color:var(--act-text)}.counter-title h1{font-size:var(--type-pageTitle-size);line-height:var(--type-pageTitle-line);font-family:var(--type-pageTitle-family);}.day{margin:0 var(--space-screen);border:0;padding:0}.day>div{border:0}
/* One grid: figure | ‹ | day | ›. Row 1 shares the figure's and Today's baseline, row 2 the caption's and the date's.
   The trailing target reaches the screen edge so the › glyph ends on the content edge, with the +N buttons. */
.day .dayrow{display:grid;grid-template-columns:minmax(min-content,1fr) var(--size-target-min) minmax(min-content,calc(2 * var(--size-target-min))) var(--size-target-min);grid-template-rows:auto auto;column-gap:0;align-items:baseline;padding-top:var(--space-micro);margin-inline-end:calc(-1 * var(--space-screen))}
.day .dc{grid-column:1;grid-row:1/3;display:grid;grid-template-rows:subgrid;align-items:baseline;justify-items:start;height:auto;padding:0 var(--space-compact) 0 0;text-align:left;color:var(--ink)}
.day .date{grid-column:3;grid-row:1/3;display:grid;grid-template-rows:subgrid;align-items:baseline;justify-items:center;text-align:center;cursor:pointer}
.day .summary-prev{grid-column:2;grid-row:1}
.day .summary-next{grid-column:4;grid-row:1}

/* Arrows as quiet links hugging the day; each keeps a full 44px target. */
/* The 44px target is taller than the figure's line; it overhangs into the empty cells above and below, never the date. */
.day .chev,.day .chev.off{align-self:center;width:var(--size-target-min);height:var(--size-target-min);margin-block:calc((var(--type-pageTitle-line) - var(--size-target-min)) / 2);display:grid;align-items:center;color:var(--ink2);opacity:1}
.day .summary-prev{justify-items:end;padding-inline-end:calc(var(--space-screen) - var(--space-inline))}
.day .summary-next{justify-items:end;padding-inline-end:var(--space-screen)}
.day .chev:disabled{opacity:var(--opacity-disabled)}
.day .chev:active:not(:disabled){color:var(--ink)}
.day .date b{font:var(--font-weight-regular) var(--type-row-size)/var(--type-row-line) var(--type-row-family);color:var(--ink)}
.day .date span{font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family);color:var(--ink2);font-variant-numeric:tabular-nums}

/* Day count: figure over caption; the dashed underline is the disclosure. */
.day .dc .summary-num{display:inline-block;white-space:nowrap;color:var(--ink);font:var(--font-weight-regular) var(--type-pageTitle-size)/var(--type-pageTitle-line) var(--type-pageTitle-family)}
.day .dc .summary-num b{font:inherit;color:inherit;white-space:normal}
.day .dc .summary-cap{display:block;white-space:nowrap;color:var(--ink2);font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family)}
.day .dc .summary-link{text-decoration-line:underline;text-decoration-style:dashed;text-decoration-thickness:var(--size-border-outer);text-underline-offset:var(--size-focus-offset);text-decoration-color:var(--ink2);text-decoration-skip-ink:none}
.day .dc:active .summary-link,.day .dc[data-pv-pressed] .summary-link{text-decoration-style:solid;color:var(--ink2)}
.day[data-open] .dc .summary-link{text-decoration-style:solid;text-decoration-color:var(--ink)}
.day .dc:focus-visible,.day .date:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}
/* Empty day: only the dash where the figure stands; no caption, no underline, not a control. */
.day .dc .summary-dash{display:none;font:inherit;color:var(--ink2)}
.day .dc .summary-dash span{display:inline;font:inherit;color:inherit}
.day .summary-hidden{display:inline-block;position:absolute;width:var(--size-border-outer);height:var(--size-border-outer);overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.day[data-day-empty] .dc .summary-num b{display:none}
.day[data-day-empty] .dc .summary-dash{display:inline}
.day[data-day-empty] .dc .summary-link{text-decoration-line:none}
.day[data-day-empty] .dc .summary-cap{visibility:hidden}
.day .dc:disabled{cursor:default;opacity:1}


.day-breakdown{position:relative;display:flex;flex-direction:column;gap:var(--space-ruleGap);align-items:stretch;min-height:0;margin-top:var(--space-compact);padding:var(--space-compact);border:0;border-radius:var(--radius);background:var(--rule)}
/* The small fill-only pointer shares the panel surface and is anchored below the sum. */
.day-breakdown::before{content:"";position:absolute;top:calc(-1 * var(--space-inline));left:var(--space-compact);width:0;height:0;border-left:var(--space-inline) solid transparent;border-right:var(--space-inline) solid transparent;border-bottom:var(--space-inline) solid var(--rule)}
.bd{display:block;flex:1 1 auto;align-self:stretch;min-height:0;margin:0;padding:0;border:0;color:var(--ink2);font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family);overflow-wrap:anywhere}
.day-composition-value{white-space:nowrap}
.day-breakdown-close{align-self:flex-end;flex-shrink:0;display:flex;align-items:center;justify-content:center;gap:var(--space-inline);min-width:var(--size-target-min);min-height:var(--size-target-min);color:var(--ink2);font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family);text-decoration:underline;text-underline-offset:var(--size-focus-offset)}
.day-breakdown-close svg{width:var(--size-icon-standard);height:var(--size-icon-standard);transform:rotate(180deg)}
.day-breakdown-close:active{color:var(--ink)}
.day-breakdown-close:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}
/* The composition uses the remaining practice-screen space; keep its opener and navigation reachable. */
#practice>.day{display:flex;flex-direction:column;min-height:0;flex-shrink:1}
#practice>.day>div{display:flex;flex-direction:column;min-height:0}
#practice>.day .dayrow,#practice>.tabs{flex-shrink:0}
#practice>.day .day-breakdown{min-height:0;flex-shrink:1}
#practice>.day .bd{min-height:0;overflow-y:auto}
.sect{display:flex;align-items:baseline;justify-content:space-between;margin:0 var(--space-screen);padding:var(--space-section) 0 var(--space-inline);border-bottom:var(--size-border-hairline) solid var(--rule);padding-top:var(--space-section);}.sect h2{color:var(--ink2);font:var(--font-weight-regular) var(--type-section-size)/var(--type-section-line) var(--type-section-family);}
.row{display:grid;grid-template-columns:var(--size-row-image) minmax(0,1fr) var(--size-target-min) var(--size-increment-width);column-gap:var(--space-inline);align-items:center;height:var(--size-row-height);margin:0 var(--space-screen);border-bottom:var(--size-border-hairline) solid var(--rule);position:relative}
.practice-day-marker{position:absolute;pointer-events:none;left:calc(-1 * var(--space-tight));top:50%;width:var(--size-border-outer);height:var(--size-row-image);transform:translateY(-50%);background:var(--frame)}
.row.prayer{grid-template-columns:var(--size-row-image) minmax(0,1fr) var(--size-target-min);border:0}.row:has(+.sect){border-bottom:0}.row.prayer .more{justify-self:end;margin-right:-13px}
.row img{width:var(--size-row-image);height:var(--size-row-image);object-fit:contain;display:block;outline:var(--size-border-hairline) solid var(--rule)}
.open{min-width:0;min-height:var(--size-target-min);display:flex;flex-direction:column;justify-content:center;padding-left:var(--space-micro);overflow:hidden}
.name{display:flex;align-items:baseline;gap:9px;white-space:nowrap;min-width:0}.name b{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;font:var(--font-weight-regular) var(--type-row-size)/var(--type-row-line) var(--type-row-family);}.name i{color:var(--ink2);flex:none;font:var(--font-weight-regular) var(--type-tibetanRow-size)/var(--type-tibetanRow-line) var(--type-tibetanRow-family);}.meta{color:var(--ink2);display:flex;flex-wrap:wrap;column-gap:var(--space-tight);font-size:var(--type-meta-size);line-height:var(--type-meta-line);font-family:var(--type-meta-family);}.meta span{white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.meta b{font-weight:var(--font-weight-regular);color:var(--ink2)}
.more{height:var(--size-target-min);width:var(--size-target-min);display:grid;place-items:center;color:var(--ink2)}.step{justify-self:end;width:var(--size-increment-width);display:grid;place-items:center;border:var(--size-border-outer) solid var(--frame);color:var(--ink2);border-radius:var(--radius);font-size:var(--type-action-size);font-weight:var(--font-weight-regular);position:relative;height:var(--size-increment-visualHeight);}
.step:active{background:var(--rule);border-color:var(--ink);color:var(--ink)}
.step::after{content:"";position:absolute;inset:50% 0 auto;height:var(--size-target-min);transform:translateY(-50%)}
.step-long{font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family);text-align:center}.step-long>span{max-width:100%}
.list{flex:1;min-height:0;overflow:auto;scrollbar-width:none}.list::-webkit-scrollbar{display:none}
.tabs{height:83px;border-top:var(--size-border-hairline) solid var(--rule);background:var(--ground);display:grid;grid-template-columns:repeat(3,1fr);padding-top:7px}
.tab{display:grid;justify-items:center;align-content:start;gap:var(--space-ruleGap);font-size:var(--type-micro-size);line-height:var(--type-micro-line);font-weight:var(--font-weight-medium);color:var(--ink2)}
.tab.on{color:var(--act-text)}
.player{height:var(--size-row-image);border-top:var(--size-border-hairline) solid var(--rule);display:none;grid-template-columns:32px 1fr var(--size-target-min);gap:var(--space-tight);align-items:center;padding:0 7px 0 var(--space-screen);background:var(--raised)}.player>div{min-width:0}
[data-audio] .player{display:grid}
.player img{width:32px;height:32px;display:block}
.player b{display:block;font:var(--font-weight-regular) 15px/19px var(--font-book);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.player span{font-size:12px;line-height:15px;color:var(--ink2);display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pause{width:var(--size-target-min);height:var(--size-target-min);display:grid;place-items:center;color:var(--ink)}
.counter-head{padding:var(--space-ruleGap) var(--space-screen) 0}
.back{display:inline-flex;align-items:center;gap:var(--space-ruleGap);height:var(--size-target-min);margin:-3px 0 -3px -6px;color:var(--act-text);font-size:var(--type-action-size)}
.counter-title{display:flex;align-items:baseline;gap:var(--space-tight)}.counter-title h1{padding:0;font-size:var(--type-pageTitle-size);line-height:var(--type-pageTitle-line);font-family:var(--type-pageTitle-family);}
.counter-title i{font:var(--font-weight-regular) 19px/30px var(--font-tibetan);color:var(--ink2)}.sub{color:var(--ink2);font-size:var(--type-meta-size);line-height:var(--type-meta-line);}
.seg{margin:var(--space-group) var(--space-screen) 0;display:grid;grid-template-columns:repeat(3,1fr);height:34px;border:var(--size-border-hairline) solid var(--frame);border-radius:var(--radius)}
.seg button{display:grid;place-items:center;font-size:var(--type-control-size);font-weight:var(--font-weight-medium);color:var(--ink);position:relative}.seg button::after{content:"";position:absolute;inset:-6px 0}.seg button:first-child{border-radius:4px 0 0 4px}.seg button:last-child{border-radius:0 4px 4px 0}
.seg button+button{border-left:var(--size-border-hairline) solid var(--frame)}
.seg .on{background:var(--act);color:var(--on-act)}
.tap{margin:0 var(--space-screen);flex:1;min-height:0;display:flex}
.tap>button{flex:1;display:grid;place-items:center}.leaf{border:var(--size-border-outer) solid var(--frame);width:100%;padding:var(--space-ruleGap);}.leaf>span{display:grid;justify-items:center;gap:var(--space-ruleGap);border:var(--size-border-hairline) solid var(--frame);padding:var(--space-section) 0 var(--space-control)}.big{font:var(--font-weight-regular) var(--type-count-size)/var(--type-count-line) var(--font-book);letter-spacing:-.005em;font-family:var(--type-count-family);}.hint{color:var(--ink2);font-size:var(--type-meta-size);line-height:var(--type-meta-line);}
.cf{margin:0 var(--space-screen);display:flex;justify-content:space-between;align-items:center;height:48px}
.cf span{font-size:var(--type-body-size);color:var(--ink2)}.cf b{font:var(--font-weight-regular) 17px/36px var(--font-book);min-width:96px;height:36px;padding:0 var(--space-tight);border:var(--size-border-hairline) solid var(--frame);border-radius:var(--radius);text-align:right;background:var(--raised)}
.btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-actions);margin:var(--space-compact) var(--inset-container) 0;padding-bottom:calc(var(--size-safeArea-bottom) + var(--space-compact))}
[data-audio] .btns{padding-bottom:var(--space-group)}.btn{min-width:var(--size-target-min);height:var(--size-target-min);display:grid;place-items:center;border-radius:var(--radius);padding:0 var(--inset-control);color:var(--ink2);font-size:var(--type-action-size);line-height:var(--type-action-line);font-family:var(--type-action-family);}
.btn.main{background:var(--act);color:var(--on-act);font-weight:var(--font-weight-semibold)}
.counter-player{padding-bottom:var(--size-safeArea-bottom);height:86px}
.acts{display:flex}.ico{width:var(--size-target-min);height:var(--size-target-min);display:grid;place-items:center;color:var(--ink2)}
.scroll{flex:1;min-height:0;overflow:auto;scrollbar-width:none}.scroll::-webkit-scrollbar{display:none}
.dhead{margin:0 var(--space-screen);padding:var(--space-section) 0 var(--space-inline);font:var(--font-weight-regular) var(--type-body-size)/var(--type-body-line) var(--font-book);color:var(--ink2);border-bottom:var(--size-border-hairline) solid var(--rule)}
.drow{display:grid;grid-template-columns:var(--size-source-imageWidth) minmax(0,1fr) auto var(--size-target-min);column-gap:var(--space-inline);align-items:center;min-height:58px;margin:0 var(--space-screen);border-bottom:var(--size-border-hairline) solid var(--rule)}.drow .diary-entry-label{min-width:0}.drow .n{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font:var(--font-weight-regular) var(--type-row-size)/var(--type-row-line) var(--type-row-family);}
.drow .s{font-size:var(--type-meta-size);line-height:var(--type-meta-line);color:var(--ink2)}
.drow .c{font-size:var(--type-action-size);line-height:var(--type-action-line);color:var(--ink)}
.drow .more{justify-self:end;margin-right:-13px}.drow:has(+.dhead),.drow:last-child,.set:has(+.sect){border-bottom:0}#pback{gap:1px}
.sync{display:flex;align-items:center;justify-content:space-between;gap:var(--space-tight);margin:0 var(--space-screen) var(--space-ruleGap);font-size:var(--type-meta-size);line-height:var(--type-meta-line);color:var(--ink2)}
.link{min-height:var(--size-target-min);min-width:var(--size-target-min);display:inline-grid;align-items:center;justify-items:end;padding:0;color:var(--act-text);font-size:var(--type-body-size);font-weight:var(--font-weight-medium)}
.undo{height:48px;border-top:var(--size-border-hairline) solid var(--rule);background:var(--raised);display:none;align-items:center;justify-content:space-between;padding:0 var(--space-screen);font-size:var(--type-body-size)}
.undo.on{display:flex}
.empty{flex:1;display:grid;align-content:center;justify-items:center;gap:var(--space-inline);padding:0 var(--size-target-min) 40px;text-align:center}
.empty b{font:var(--font-weight-regular) var(--type-heading-size)/var(--type-heading-line) var(--type-heading-family)}.empty p{font-size:var(--type-body-size);line-height:var(--type-body-line);color:var(--ink2);white-space:pre-line}
.empty .btn{margin-top:14px;padding:0 22px;border:var(--size-border-outer) solid var(--act-text);color:var(--act-text);font-weight:var(--font-weight-semibold)}
/* Inline empty states share Diary action styling; the list owns the surrounding scroll. */
.empty.empty-inline{flex:none;justify-items:start;text-align:left;margin:0 var(--space-screen);padding:var(--space-group) 0 var(--space-compact)}
.empty-inline p{text-wrap:pretty}
/* Programmatic page-title destinations are not interactive focus targets. */
.screen h1[tabindex="-1"]:focus{outline:none}
.scrim{position:absolute;inset:0;background:var(--scrim);display:none;align-items:flex-end;padding:0 var(--space-compact) var(--size-safeArea-bottom);z-index:5}.scrim.on{display:flex}
.sheet{width:100%;display:grid;gap:var(--space-compact)}.sheet>div{background:var(--raised);overflow:hidden;border-radius:var(--radius-sheet);}
.sheet h3{font-size:var(--type-meta-size);line-height:var(--type-meta-line);font-weight:var(--font-weight-regular);color:var(--ink2);text-align:center;padding:var(--space-group) var(--inset-control);border-bottom:var(--size-border-hairline) solid var(--rule)}
.sheet button{display:grid;place-items:center;width:100%;height:54px;font-size:18px;color:var(--ink)}
.sheet button+button{border-top:var(--size-border-hairline) solid var(--rule)}.sheet .del{color:var(--danger)}.sheet .can{font-weight:var(--font-weight-semibold)}
.page{padding:0 var(--inset-container)}.page h1{margin-bottom:var(--space-ruleGap);font-size:var(--type-pageTitle-size);line-height:var(--type-pageTitle-line);font-family:var(--type-pageTitle-family);}
.lbl{font-size:var(--type-meta-size);line-height:var(--type-meta-line);color:var(--ink2);margin:var(--space-control) 0 var(--gap-label);display:block}
.pick{display:grid;grid-template-columns:36px minmax(0,1fr) 24px;gap:var(--space-group);align-items:center;min-height:var(--size-row-image);width:100%;border-bottom:var(--size-border-hairline) solid var(--rule)}
.pick img{width:36px;height:36px;display:block}.pick b{font:var(--font-weight-regular) var(--type-row-size)/var(--type-row-line) var(--type-row-family);}.pick svg{visibility:hidden;color:var(--act-text);justify-self:end}.pick img{outline:var(--size-border-hairline) solid var(--rule)}.pick[aria-checked=true] svg{visibility:visible}
.field{width:100%;height:var(--size-target-min);padding:0 var(--inset-field);border:var(--size-border-hairline) solid var(--frame);border-radius:var(--radius);background:var(--raised);color:var(--ink);font:var(--font-weight-regular) var(--type-field-size)/var(--type-field-line) var(--type-field-family);outline:none;-webkit-appearance:none}
.field:focus{border-color:var(--act-text)}.field::placeholder{color:var(--ink2);opacity:1}.field[aria-invalid=true]{border-color:var(--danger)}.fact{color:var(--ink2);margin-top:var(--space-tight);font-size:var(--type-meta-size);line-height:var(--type-meta-line);}.err{color:var(--danger);margin-top:var(--space-inline);font-size:var(--type-meta-size);line-height:var(--type-meta-line);}.err:empty{display:none}
.foot{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-actions);margin:var(--space-compact) var(--inset-container) 0;padding-bottom:calc(var(--size-safeArea-bottom) + var(--space-compact))}
.who{display:grid;grid-template-columns:56px minmax(0,1fr) auto;gap:14px;align-items:center;margin:var(--space-tight) var(--space-screen) 0;min-height:64px}
.av{width:56px;height:56px;border:var(--size-border-outer) solid var(--frame);padding:var(--space-ruleGap)}.av span{display:grid;place-items:center;width:100%;height:100%;border:var(--size-border-hairline) solid var(--frame);font:var(--font-weight-regular) 20px/1 var(--font-book)}
.who b{display:block;font:var(--font-weight-regular) var(--type-heading-size)/var(--type-heading-line) var(--type-heading-family)}.who small{display:block;font-size:var(--type-meta-size);line-height:var(--type-meta-line);color:var(--ink2);overflow:hidden;text-overflow:ellipsis}
.set{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:var(--space-group);align-items:center;min-height:58px;padding:var(--space-compact) 0;margin:0 var(--inset-container);border-bottom:var(--size-border-hairline) solid var(--rule)}
.set b{display:block;font-size:var(--type-source-size);line-height:var(--type-source-line);font-weight:var(--font-weight-regular)}.set small{display:block;font-size:var(--type-meta-size);line-height:var(--type-meta-line);color:var(--ink2)}
/* Retain the extracted 51×31 track / 27px thumb / 20px travel; the real button
   is now the existing 44px target, rather than a 31px box plus a hit-area pseudo. */
.sw{width:51px;height:var(--size-target-min);position:relative;flex:none;touch-action:manipulation}
.sw::before,.sw::after{box-sizing:border-box}
.sw::before{content:"";position:absolute;left:0;right:0;top:50%;height:31px;transform:translateY(-50%);border-radius:16px;background:var(--rule);border:var(--size-border-outer) solid var(--ink2);transition:background var(--motion-controlDuration) var(--motion-controlEasing),border-color var(--motion-controlDuration) var(--motion-controlEasing)}
.sw::after{content:"";position:absolute;left:2px;top:50%;width:27px;height:27px;transform:translateY(-50%);border-radius:50%;background:var(--color-control-thumb);border:var(--size-border-outer) solid var(--ink2);box-shadow:var(--shadow-thumb);transition:transform var(--motion-controlDuration) var(--motion-controlEasing),border-color var(--motion-controlDuration) var(--motion-controlEasing)}
.sw[aria-checked=true]::before{background:var(--act);border-color:var(--act)}.sw[aria-checked=true]::after{transform:translate(20px,-50%);border-color:transparent}
.wrap{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-inline);margin:var(--space-compact) var(--inset-container) 0}
.chip{height:38px;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-tight);border:var(--size-border-hairline) solid var(--rule);border-radius:var(--radius);color:var(--ink);font-size:var(--type-control-size);position:relative}.chip::after{content:"";position:absolute;inset:50% 0 auto;height:var(--size-target-min);transform:translateY(-50%)}
.chip svg{visibility:hidden}.chip[aria-checked=true]{border-color:var(--act-text);color:var(--ink)}.chip[aria-checked=true] svg{visibility:visible}
.quiet{display:flex;align-items:center;min-height:48px;margin:0 var(--space-screen);font-size:var(--type-action-size);color:var(--ink);border-bottom:var(--size-border-hairline) solid var(--rule)}.quiet.d{color:var(--danger)}
.note2{font-size:var(--type-control-size);line-height:var(--type-control-line);color:var(--ink2);margin:var(--space-compact) var(--space-screen) 0}
.stack{display:grid;gap:var(--space-inline);margin:14px var(--space-screen) 0;padding-bottom:calc(var(--size-safeArea-bottom) + var(--space-compact))}
.stack .btn{width:100%;font-size:var(--type-action-size)}.stack .btn.line{border:var(--size-border-outer) solid var(--frame);color:var(--ink)}.stack .btn.main+.btn.line{margin-top:var(--space-inline)}
.pv{margin:0 var(--space-screen);padding:9px 0;border-bottom:var(--size-border-hairline) solid var(--rule)}.pv b{display:block;font:var(--font-weight-regular) var(--type-row-size)/var(--type-row-line) var(--type-row-family);}.pv span{font-size:var(--type-meta-size);line-height:var(--type-meta-line);color:var(--ink2);display:block}
.inp{margin:0 var(--space-screen)}.inp .lbl{margin-top:var(--gap-form)}
.open{cursor:pointer}
.mplain{margin:var(--space-compact) var(--space-screen) 0}#material .page{padding-top:var(--space-ruleGap)}.mtot{display:flex;align-items:baseline;justify-content:space-between}.mtot span{font-size:var(--type-body-size);color:var(--ink2)}.mtot b{font:var(--font-weight-regular) var(--type-sheetTitle-size)/var(--type-sheetTitle-line) var(--type-sheetTitle-family)}.mday{margin-top:1px;color:var(--ink2);font-size:var(--type-meta-size);line-height:var(--type-meta-line);}
.mbtns{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-tight);margin:var(--space-group) var(--space-screen) 0}.mbtns .step{width:100%;height:var(--size-target-min);}.mbtns .step::after{display:none}
.mbtns .btn{border:var(--size-border-hairline) solid var(--frame);color:var(--ink);font-weight:var(--font-weight-medium);font-size:var(--type-action-size)}
.mset{margin:var(--space-inline) var(--space-screen) 0;justify-items:start;min-height:var(--size-target-min)}
.aup{display:grid;column-gap:var(--space-group);margin:var(--space-compact) var(--space-screen) 0;padding-bottom:var(--space-micro)}
.apic:has(img){outline:0}.apic{grid-area:pic;aspect-ratio:333/475;align-self:start;background:var(--raised);outline:var(--size-border-hairline) solid var(--frame);display:grid;place-items:center;overflow:hidden;text-align:center;font-size:var(--type-micro-size);line-height:var(--type-micro-line);color:var(--ink2)}.apic img{width:100%;height:100%;object-fit:contain;display:block}.apic span{padding:var(--space-micro)}
.ameta{grid-area:meta;min-width:0;align-self:center}.ameta b{display:block;font:var(--font-weight-regular) 18px/23px var(--font-book);overflow-wrap:anywhere}.ameta span{display:block;font-size:var(--type-meta-size);line-height:var(--type-meta-line);color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.actl{grid-area:ctl;display:flex;align-self:center;justify-self:end;margin-right:calc(-1 * var(--space-tight))}.ctl,.aup .x{width:var(--size-target-min);height:var(--size-target-min);display:grid;place-items:center}.ctl{color:var(--act-text)}.aup .x{color:var(--ink2)}.aup .x[hidden]{display:none}
.aseek{grid-area:seek;min-width:0}.tm{display:flex;justify-content:space-between;font-size:12px;line-height:14px;color:var(--ink2);margin-top:calc(-1 * var(--space-compact))}
.avol{grid-area:vol;display:grid;grid-template-columns:22px minmax(0,1fr);gap:var(--space-compact);align-items:center;color:var(--ink2)}
.spd{grid-area:spd;display:grid;grid-template-columns:auto repeat(4,1fr);gap:var(--space-inline);margin-top:var(--space-ruleGap)}.spd button{height:34px;display:grid;place-items:center;font-size:var(--type-control-size);border:var(--size-border-hairline) solid var(--rule);border-radius:var(--radius);padding:0 var(--space-compact);position:relative;white-space:nowrap}.spd button::after{content:"";position:absolute;inset:-5px 0}
.spd button[aria-pressed=true]{background:var(--act);border-color:var(--act);color:var(--on-act)}#auloop{margin-right:var(--space-inline)}
input[type=range]{-webkit-appearance:none;appearance:none;display:block;width:100%;height:var(--size-target-min);margin:0;background:none;cursor:pointer;--p:0%}
input[type=range]::-webkit-slider-runnable-track{height:2px;background:linear-gradient(to right,var(--act-text) var(--p),var(--frame) var(--p))}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;margin-top:calc(-1 * var(--space-compact));border-radius:50%;background:var(--ground);border:var(--size-border-thumb) solid var(--act-text)}
input[type=range]:focus-visible{outline:var(--size-border-thumb) solid var(--act-text);outline-offset:-6px}
#material[data-al=a] .aup{grid-template-columns:70px minmax(0,1fr) auto;grid-template-areas:"pic meta ctl" "seek seek seek" "vol vol vol" "spd spd spd"}#material[data-al=a] .apic{width:70px}
#material[data-al=b] .aup{grid-template-columns:140px minmax(0,1fr) auto;grid-template-rows:auto auto 1fr auto;grid-template-areas:"pic meta ctl" "pic seek seek" "pic vol vol" "spd spd spd"}#material[data-al=b] .avol{align-self:end;margin-bottom:var(--space-compact)}#material[data-al=b] .apic{width:140px;margin-bottom:var(--space-compact)}#material[data-al=b] .ameta{align-self:start}#material[data-al=b] .actl{align-self:start}
#material[data-al=c] .mdock .aup{margin:0;padding:8px 20px 38px;border-top:var(--size-border-hairline) solid var(--rule);background:var(--raised);grid-template-columns:50px minmax(0,1fr) auto;grid-template-areas:"pic meta ctl" "seek seek seek" "vol vol vol" "spd spd spd"}#material[data-al=c] .apic{width:50px;background:var(--ground)}#material[data-al=c] .ameta b{font-size:var(--type-source-size);line-height:var(--type-source-line)}.rframe{margin:var(--space-control) var(--space-screen) 0;border:var(--size-border-outer) solid var(--frame);padding:var(--space-ruleGap);}.rframe>div{border:var(--size-border-hairline) solid var(--frame);padding:14px 8px 18px 14px}
.aa{flex:none;width:var(--size-target-min);height:var(--size-target-min);margin:0 calc(-1 * var(--space-tight)) 0 auto;display:grid;place-items:center;font:var(--font-weight-regular) 20px/1 var(--font-book);color:var(--act-text);border-radius:var(--radius)}
.rpanel{flex:none;padding:var(--space-inline) var(--space-screen) var(--space-tight);border-bottom:var(--size-border-hairline) solid var(--rule)}
.rlayers{display:flex;flex-wrap:wrap;gap:var(--space-compact) var(--space-inline)}.rl{position:relative;flex:1 1 auto;justify-content:center;display:inline-flex;align-items:center;gap:5px;min-height:36px;padding:0 9px;border:var(--size-border-hairline) solid var(--frame);border-radius:var(--radius);font-size:var(--type-control-size);color:var(--ink2)}.rl::after{content:"";position:absolute;inset:-4px 0}
.rl svg{display:none;color:currentColor}.rl[aria-pressed=true]{border-color:var(--act-text);color:var(--act-text)}.rl[aria-pressed=true] svg{display:block}
.rsize{display:flex;align-items:center;justify-content:space-between;margin-top:var(--space-compact);font-size:var(--type-control-size);color:var(--ink2)}.rzs{display:grid;grid-template-columns:var(--size-target-min) var(--size-target-min);border:var(--size-border-hairline) solid var(--frame);border-radius:var(--radius)}.rz{position:relative;height:36px;display:grid;place-items:center;font-family:var(--font-book);color:var(--ink)}.rz+.rz{border-left:var(--size-border-hairline) solid var(--frame)}.rz::after{content:"";position:absolute;inset:-4px 0}.rz:disabled{color:color-mix(in srgb,var(--ink) 65%,var(--ground));cursor:default}
.rempty{font-size:var(--type-body-size);line-height:var(--type-body-line);color:var(--ink2);margin:var(--space-control) var(--space-screen) 0}
.mnav{min-width:0;text-align:center;padding:0 var(--space-inline);font:var(--font-weight-regular) var(--type-body-size)/var(--type-body-line) var(--font-book);color:var(--ink2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#mhead{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto) minmax(0,1fr);align-items:center;flex:none}#mhead .back{justify-self:start;grid-column:1}#mhead .mnav{grid-column:2}#mhead .aa{grid-column:3;justify-self:end;margin:0 calc(-1 * var(--space-tight)) 0 0}.mdock{flex:none}.mdock:empty{display:none}
.mtext{--ru:var(--reading-level0-bookSize);--rul:var(--reading-level0-bookLine);--tb:var(--reading-level0-tibetanSize);--tbl:var(--reading-level0-tibetanLine);margin:var(--space-micro) var(--space-inline) 0 0;-webkit-user-select:none;user-select:none;overflow-wrap:anywhere}
.mtext[data-size="1"]{--ru:var(--reading-level1-bookSize);--rul:var(--reading-level1-bookLine);--tb:var(--reading-level1-tibetanSize);--tbl:var(--reading-level1-tibetanLine)}.mtext[data-size="2"]{--ru:var(--reading-level2-bookSize);--rul:var(--reading-level2-bookLine);--tb:var(--reading-level2-tibetanSize);--tbl:var(--reading-level2-tibetanLine)}.mtext[data-size="3"]{--ru:var(--reading-level3-bookSize);--rul:var(--reading-level3-bookLine);--tb:var(--reading-level3-tibetanSize);--tbl:var(--reading-level3-tibetanLine)}
.mtext p{white-space:pre-wrap}.tib{font:var(--font-weight-regular) var(--tb)/var(--tbl) var(--font-tibetan);color:var(--ink)}.ru{font:var(--font-weight-regular) var(--ru)/var(--rul) var(--font-book);color:var(--ink)}.tib+.ru{margin-top:var(--space-ruleGap)}.rs{color:var(--ink2)}.syl{margin-top:var(--space-group)}.cr{font:var(--font-weight-regular) var(--type-control-size)/var(--type-control-line) var(--type-control-family);color:var(--ink2);margin-top:var(--space-inline)}.gap{height:14px}.gap:has(+.tib){height:28px}.mtext p:first-child{margin-top:0}.ru{text-wrap:pretty}#mscroll{-webkit-mask-image:linear-gradient(#000 calc(100% - 34px),transparent);mask-image:linear-gradient(#000 calc(100% - 34px),transparent)}#material[data-docked] #mscroll{-webkit-mask-image:linear-gradient(#000 calc(100% - 12px),transparent);mask-image:linear-gradient(#000 calc(100% - 12px),transparent)}
.nt{font-size:var(--type-control-size);line-height:var(--type-control-line);color:var(--ink2);margin:var(--space-tight) var(--space-screen) 0}
.mart{display:block;width:calc(100% - 40px);height:auto;aspect-ratio:1;margin:var(--space-section) var(--space-screen) 34px;outline:var(--size-border-hairline) solid var(--rule)}
.chk{display:flex;align-items:center;gap:var(--space-tight);min-height:var(--size-target-min);margin-top:var(--space-compact);font-size:var(--type-action-size)}.box{width:22px;height:22px;border:var(--size-border-outer) solid var(--frame);border-radius:4px;display:grid;place-items:center;color:var(--act-text)}.box svg{visibility:hidden}.chk[aria-checked=true] .box svg{visibility:visible}
.mhead{border-bottom:var(--size-border-hairline) solid transparent}.mhead.sc{border-bottom-color:var(--rule)}
.mstat:empty{display:none}.mstat{margin:var(--space-inline) var(--space-screen) 0;color:var(--ink2);font-size:var(--type-meta-size);line-height:var(--type-meta-line);}.hint{display:block;font-size:var(--type-meta-size);line-height:var(--type-meta-line);}
/* Compact hierarchy from the owner's 01.11 request; var(--size-target-min) targets follow PRODUCT accessibility. */
.player.axslot{height:auto;min-height:0;display:none;padding:0;gap:0;background:var(--raised)}
[data-audio] .player.axslot{display:block}.counter-player.axslot{padding-bottom:26px}
.axcompact{border-top:var(--size-border-hairline) solid var(--rule);background:var(--raised);padding:var(--space-compact) var(--space-control) 9px;flex:none}
#mdock .axcompact{padding-bottom:var(--size-safeArea-bottom)}.player .axcompact{border-top:0}
.axline{display:grid;grid-template-columns:minmax(0,1fr) var(--size-target-min) var(--size-target-min);gap:var(--space-micro);align-items:center}
.axidentity{min-height:54px;display:flex;gap:var(--space-tight);align-items:center;min-width:0;width:100%;text-align:left}.axidentity .axportrait{flex:none;width:var(--size-source-imageWidth);height:var(--size-source-imageHeight);}.axportrait{display:grid;place-items:center;background:var(--ground);font:var(--font-weight-regular) var(--type-field-size)/var(--type-field-line) var(--type-field-family);color:var(--ink2);overflow:hidden;aspect-ratio:333/475}
.axportrait img{width:100%;height:100%;object-fit:contain;display:block}.axnames{min-width:0;flex:1}.axnames strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:var(--font-weight-regular) var(--type-source-size)/var(--type-source-line) var(--type-source-family);}.axnames small{display:block;color:var(--ink2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--type-caption-size);line-height:var(--type-caption-line);font-family:var(--type-caption-family);}.axchev{color:var(--ink2);flex:none}
.axcontrol{width:var(--size-target-min);height:var(--size-target-min);display:grid;place-items:center;color:var(--act-text);border-radius:var(--radius);position:relative}.axcontrol[aria-pressed=true]{background:var(--act);color:var(--on-act)}.axcontrol[aria-pressed=true]::after{content:"";width:4px;height:4px;border-radius:50%;background:currentColor;position:absolute;bottom:5px}.axcontrol:disabled{color:var(--ink2);opacity:var(--opacity-disabled);cursor:default}
.axprogress{display:grid;grid-template-columns:34px minmax(0,1fr) 34px;align-items:center;gap:var(--space-compact);font-size:var(--type-micro-size);line-height:var(--type-micro-line);color:var(--ink2);height:36px}.axprogress input[type=range]{height:36px}.axprogress span:last-child{text-align:right}.axprogress input::-webkit-slider-thumb{width:12px;height:12px;margin-top:-5px;border-width:var(--size-border-outer)}
.axstatus{font-size:var(--type-caption-size);line-height:var(--type-caption-line);color:var(--ink2);padding:0 0 2px 46px}.axlisten{margin:var(--space-group) var(--space-screen) 0;display:flex;align-items:center;justify-content:space-between;gap:var(--space-compact);border-bottom:var(--size-border-hairline) solid var(--rule);padding-bottom:5px}.axlisten button{color:var(--act-text);min-height:var(--size-target-min);display:flex;align-items:center;gap:var(--space-compact);font-size:var(--type-body-size)}.axlisten span{font-size:var(--type-caption-size);color:var(--ink2)}
.axoverlay{display:none;position:absolute;inset:0;z-index:12;background:var(--scrim);align-items:flex-end}.axoverlay.on{display:flex}.axsheet{width:100%;max-height:calc(100% - 70px);overflow:auto;background:var(--ground);padding:0 var(--space-screen) 32px;border-radius:var(--radius-panel) var(--radius-panel) 0 0;box-shadow:var(--shadow-panel);}
.axhandle{height:4px;width:32px;background:var(--frame);border-radius:4px;margin:9px auto var(--space-micro)}.axhead{display:grid;grid-template-columns:var(--size-target-min) minmax(0,1fr) var(--size-target-min);align-items:center;border-bottom:var(--size-border-hairline) solid var(--rule);padding-bottom:var(--space-micro)}.axhead h2{font:var(--font-weight-regular) var(--type-sheetTitle-size)/var(--type-sheetTitle-line) var(--type-sheetTitle-family);text-align:center}.axhead button{width:var(--size-target-min);height:var(--size-target-min);display:grid;place-items:center;color:var(--act-text)}
.axhero{display:flex;align-items:center;gap:var(--space-control);margin-top:var(--space-screen)}.axhero .axportrait{width:72px;height:103px;flex:none}.axhero>div:last-child{min-width:0}.axhero h3{font:var(--font-weight-regular) 23px/28px var(--font-book);overflow-wrap:anywhere}.axhero p{font-size:13px;line-height:19px;color:var(--ink2);margin-top:3px}.axmaterial{font:var(--font-weight-regular) 18px/24px var(--font-book);margin:var(--space-section) 0 0}.axtrack{font-size:13px;line-height:19px;color:var(--ink2);margin:3px 0 var(--space-micro)}.axtransport{display:flex;justify-content:center;align-items:center;gap:24px;margin:var(--space-tight) 0 var(--space-group)}.axtransport .axcontrol:first-child{width:56px;height:56px;border:var(--size-border-outer) solid var(--act-text);border-radius:50%}.axtransport .axcontrol:first-child[aria-pressed=true]::after{display:none}
.axnavrow{display:flex;align-items:center;justify-content:space-between;gap:var(--space-group);min-height:54px;width:100%;border-top:var(--size-border-hairline) solid var(--rule);font-size:var(--type-action-size);color:var(--ink);text-align:left}.axnavrow>span:last-child{color:var(--ink2);font-size:var(--type-control-size)}.axnavrow.danger{color:var(--danger)}
.axintro{font-size:var(--type-control-size);line-height:var(--type-control-line);color:var(--ink2);margin:14px 0 var(--space-group)}.axnotice{font-size:var(--type-control-size);line-height:var(--type-control-line);color:var(--ink2);padding:var(--space-group) 0;margin-top:var(--space-compact);border-top:var(--size-border-hairline) solid var(--rule)}.axnotice.error{color:var(--danger)}.axnotice p+p{margin-top:5px}.axnotice button{min-height:var(--size-target-min);color:var(--act-text);font-weight:var(--font-weight-medium);padding-right:var(--space-screen)}
.axrecord{display:grid;grid-template-columns:42px minmax(0,1fr) 24px;gap:var(--space-group);align-items:center;width:100%;text-align:left;min-height:85px;padding:var(--space-tight) 0;border-bottom:var(--size-border-hairline) solid var(--rule)}.axrecord .axportrait{width:42px;height:60px}.axrecord strong{display:block;font:var(--font-weight-regular) 18px/23px var(--font-book);overflow-wrap:anywhere}.axrecord small{display:block;font-size:var(--type-caption-size);line-height:var(--type-caption-line);color:var(--ink2);margin-top:var(--space-ruleGap)}.axradio{width:20px;height:20px;display:grid;place-items:center;border:var(--size-border-hairline) solid var(--frame);border-radius:50%;color:var(--act-text)}[aria-checked=true]>.axradio{border-color:var(--act-text)}.axradio svg{display:none}[aria-checked=true]>.axradio svg{display:block}.axcommit{width:100%;min-height:var(--size-target-min);display:grid;place-items:center;background:var(--act);color:var(--on-act);border-radius:var(--radius);font-weight:var(--font-weight-semibold);font-size:var(--type-action-size);margin-top:var(--space-section);padding:var(--space-compact)}.axcommit:disabled{background:var(--rule);color:var(--ink2);cursor:default}
.axsetting{display:flex;justify-content:space-between;align-items:center;gap:var(--space-group);min-height:64px;border-bottom:var(--size-border-hairline) solid var(--rule);font-size:var(--type-action-size)}.axsetting select{font:inherit;font-size:16px;line-height:22px;background:var(--raised);border:var(--size-border-hairline) solid var(--frame);border-radius:var(--radius);color:var(--ink);height:var(--size-target-min);padding:0 var(--space-tight);max-width:48%}.axvolume{display:flex;align-items:center;gap:3px}.axvolume button{width:var(--size-target-min);height:var(--size-target-min);display:grid;place-items:center;font-size:24px;color:var(--act-text)}.axvolume output{min-width:40px;text-align:center;font-size:var(--type-control-size);color:var(--ink2)}
.axoverlay :focus-visible,.axcompact :focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}.axhintlink{display:block;font-size:var(--type-control-size);line-height:var(--type-control-line);color:var(--ink2);padding:var(--space-tight) 0 0}
@media(prefers-reduced-motion:reduce){.axoverlay *{scroll-behavior:auto}}

/* Group labels separate teacher recitations from song versions; reuse the existing panel type scale. */
.axgroupname{font:var(--font-weight-regular) 18px/24px var(--font-book);margin:var(--space-screen) 0 var(--space-ruleGap);color:var(--ink)}

/* Direct speed target uses the existing 44pt minimum; timeline retains its full-width identity row. */
.axspeed{width:var(--size-target-min);height:var(--size-target-min);flex:none;display:grid;place-items:center;color:var(--act-text);font:var(--font-weight-regular) var(--type-control-size)/var(--type-control-line) var(--type-control-family);border:0;border-radius:var(--radius)}
.axspeed:active{background:var(--act);color:var(--on-act)}
.axprogress.has-speed{grid-template-columns:34px minmax(0,1fr) 34px var(--size-target-min);height:var(--size-target-min)}
.axspeed:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}

/* Accessible states use existing action, error and disabled values; no new theme colours. */
:where(button,input,select,a,.open):focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}
.btn.main:active{background:var(--press)}
.btn:disabled{cursor:default;color:var(--ink2);opacity:var(--opacity-disabled)}.btn.main:disabled{background:var(--rule)}
.field:disabled{color:var(--ink2);opacity:var(--opacity-disabled)}
input,select{caret-color:var(--act-text)}
::selection{color:var(--on-act);background:var(--act)}
@media(prefers-reduced-motion:reduce){.dc svg,.sw,.sw::before,.sw::after{transition:none}}
select.field{font:var(--font-weight-regular) var(--type-field-size)/var(--type-field-line) var(--type-field-family);padding-right:calc(var(--inset-field) + var(--size-icon-standard))}.calm-select{display:block;position:relative}.calm-select>svg{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--ink2);pointer-events:none}


/* Owner, 08.11: all PracticeRow cards retain size.row.height. Names can truncate; the full name stays in title/accessible name and material detail. */
/* RecordingLaunch reuses SourcePortrait, the shared type scale and 44px minimum target. */
.recording-launch{display:grid;grid-template-columns:var(--size-source-imageWidth) minmax(0,1fr) max-content;gap:var(--space-compact);align-items:center;padding:var(--space-group) 0;border-bottom:var(--size-border-hairline) solid var(--rule)}
.recording-launch .axportrait{width:var(--size-source-imageWidth);height:var(--size-source-imageHeight)}
.recording-launch-copy{min-width:0;overflow-wrap:anywhere}
.recording-launch-copy strong{display:block;color:var(--ink);font:var(--font-weight-regular) var(--type-source-size)/var(--type-source-line) var(--type-source-family)}
.recording-launch-copy small{display:block;color:var(--ink2);font:var(--font-weight-regular) var(--type-caption-size)/var(--type-caption-line) var(--type-caption-family)}
.recording-launch-copy .recording-launch-status{color:var(--act-text)}
.recording-launch-control{display:inline-flex;justify-content:center;align-items:center;gap:var(--space-compact);padding:0 var(--space-compact);min-width:var(--size-increment-width);min-height:var(--size-target-min);border:var(--size-border-outer) solid var(--frame);border-radius:var(--radius);color:var(--act-text);font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family)}
.recording-launch-control:active{background:var(--act);color:var(--on-act)}
.recording-launch-control:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}
.recording-launch-control:disabled{cursor:default;opacity:var(--opacity-disabled)}
.recording-launch[data-phase=playing] .recording-launch-control{border-color:var(--act-text)}
.material-recordings{margin:var(--space-section) var(--space-screen) var(--space-section)}
.material-recordings h2{font:var(--font-weight-regular) var(--type-row-size)/var(--type-row-line) var(--type-row-family);color:var(--ink)}
.material-recordings h3{font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family);color:var(--ink2);margin-top:var(--space-section)}
.material-recordings h2+h3{margin-top:var(--space-compact)}
.material-recordings .material-source-feedback{font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family);color:var(--act-text);margin-top:var(--space-compact)}
.material-source-feedback:empty{display:none}

/* Song artwork: 3 × the existing 52px row-image token = 156px, leaving reading in view. */
.axartwork{display:grid;place-items:center;flex:none;width:calc(var(--size-row-image) * 3);aspect-ratio:1;background:var(--raised);color:var(--ink2);font:var(--font-weight-regular) var(--type-caption-size)/var(--type-caption-line) var(--type-caption-family)}
.axartwork img{display:block;width:100%;height:100%;min-width:0;object-fit:contain}
.axidentity .axartwork{width:var(--size-source-imageWidth);height:var(--size-source-imageWidth)}
.axrecord .axartwork{width:42px;height:42px}
.axhero:has(.axartwork){flex-direction:column;align-items:flex-start;gap:var(--space-group)}
.song-recording{display:block;padding:var(--space-group) 0}
.song-recording>.axartwork{max-width:100%;margin-bottom:var(--space-group)}
.song-recording figcaption{display:grid;grid-template-columns:minmax(0,1fr) max-content;gap:var(--space-group);align-items:center}

/* MaterialChoice preserves the existing 36px choice thumbnail and full-width text column. */
.material-choice{display:grid;grid-template-columns:var(--size-source-imageWidth) minmax(0,1fr) var(--size-icon-standard);align-items:center;gap:var(--space-group);min-height:var(--size-row-image);width:100%;padding:var(--space-compact) 0;border-bottom:var(--size-border-hairline) solid var(--rule);color:var(--ink);text-align:left}
.material-choice img{display:block;width:var(--size-source-imageWidth);height:var(--size-source-imageWidth);object-fit:contain;background:var(--raised)}
.material-choice-label{min-width:0;font:var(--font-weight-regular) var(--type-row-size)/var(--type-row-line) var(--type-row-family);overflow-wrap:anywhere}
.material-choice[aria-selected=true]{color:var(--act-text)}
.material-choice:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}

/* Partial-height sheets reserve a target + screen inset above them; no fixed device height. */
.bottom-sheet-overlay{position:absolute;inset:0;display:flex;justify-content:flex-end;flex-direction:column;background:var(--scrim);z-index:10}
.bottom-sheet{display:flex;flex-direction:column;min-height:0;max-height:calc(100% - var(--size-target-min) - var(--space-screen));padding:0;overflow:hidden;box-sizing:border-box}
.bottom-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-group);padding:var(--space-group) var(--inset-container);flex:none}
.bottom-sheet-head h1,.bottom-sheet-head h2{font:var(--font-weight-regular) var(--type-pageTitle-size)/var(--type-pageTitle-line) var(--type-pageTitle-family)}
.bottom-sheet-body{padding:0 var(--inset-container);overflow:auto;min-height:0;overscroll-behavior:contain}
.bottom-sheet-foot{padding:var(--space-section) var(--inset-container) max(var(--inset-container),env(safe-area-inset-bottom));flex:none}
@keyframes calm-sheet-enter{from{transform:translateY(100%)}to{transform:translateY(0)}}
@media(prefers-reduced-motion:no-preference){.bottom-sheet-overlay>.bottom-sheet{animation:calm-sheet-enter var(--motion-controlDuration) var(--motion-controlEasing)}}
/* Programmatic dialog focus is a reading anchor; actual controls retain their visible focus. */
.bottom-sheet[tabindex="-1"]:focus{outline:none}
/* Native calendar glyph follows the sheet theme rather than a black browser default. */
.bottom-sheet input[type=date]{color-scheme:light}
[data-theme=dark] .bottom-sheet input[type=date]{color-scheme:dark}

/* The same 36px reserved preview is used by a choice and its collapsed selected value. */
.material-preview{display:grid;place-items:center;width:var(--size-source-imageWidth);height:var(--size-source-imageWidth);background:var(--raised);overflow:hidden;flex:none}
.material-preview img{display:block;width:100%;height:100%;object-fit:contain}
.material-preview img[data-image-failed=true]{visibility:hidden}
.material-select{display:grid;grid-template-columns:minmax(0,1fr) var(--size-icon-standard);align-items:center;gap:var(--space-group);text-align:left;height:auto;min-height:var(--size-target-min);padding:var(--space-compact) var(--inset-field)}
.material-select.has-material{grid-template-columns:var(--size-source-imageWidth) minmax(0,1fr) var(--size-icon-standard);min-height:var(--size-row-image)}
.material-select svg{justify-self:end}
.material-select:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}

/* Selection rows are plain options, with a check only on the current value. */
.material-choice-mark{display:grid;place-items:center;color:var(--act-text)}

/* Keep native date selection and semantics, with the same visible English format in every locale. */
.date-field{position:relative;display:inline-flex;align-items:center;justify-content:space-between;gap:var(--space-group);font:var(--font-weight-regular) var(--type-row-size)/var(--type-row-line) var(--type-row-family)}
.date-field-value{white-space:nowrap;min-width:0}.date-field>svg{flex:none;color:var(--ink2)}
.date-field-trigger{display:flex;align-items:center;justify-content:space-between;gap:var(--space-group);width:100%;height:100%;font:inherit;color:inherit;text-align:left}
.date-field-trigger>svg{flex:none;color:var(--ink2)}
.date-field-native{position:absolute;inset:0;width:100%;height:100%;box-sizing:border-box;margin:0;padding:0;border:0;opacity:0;pointer-events:none}
.date-field-native.date-field-fallback{position:static!important;inset:auto!important;width:100%!important;height:100%!important;opacity:1;pointer-events:auto;background:transparent;color:inherit;font:inherit}
.date-field:focus-within{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}
.date-field:has(input[aria-invalid=true]){border-color:var(--danger)}
.date-field:has(input:disabled){opacity:var(--opacity-disabled)}

/* All field-fill chips share a light contour and the existing target/theme tokens. */
.quick-values{display:flex;flex-wrap:wrap;gap:var(--gap-suggestion);margin-top:var(--gap-suggestion)}
/* Chips keep neutral text in every selection state; fill, contour and checks carry selection. */
/* Preserve the12px horizontal inset:1px contour+11px padding, without growing the chip. */
.quick-value{min-width:var(--size-target-min);min-height:var(--size-target-min);padding:0 calc(var(--inset-chip) - var(--size-border-outer));border:var(--size-border-outer) solid var(--rule);border-radius:var(--radius);color:var(--ink);font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family)}
.quick-value[aria-pressed=true]{color:var(--ink);background:var(--rule);border-color:var(--frame)}
.quick-value:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}
@media(hover:hover){.quick-value:hover:not([aria-pressed=true]):not(:disabled):not(:active){background:var(--raised)}}
.quick-value:active{background:var(--rule);color:var(--ink)}
.quick-value:disabled{color:var(--ink2);opacity:var(--opacity-disabled);cursor:default}
/* Content sets the chip width: short names share a row; a long name uses the available row.
   The existing44px target and8px padding leave28px for a single18px line.
   Additional lines grow naturally; only the sheet body scrolls, with Save fixed outside it. */
.material-suggestions{display:flex;flex-wrap:wrap;align-items:flex-start;gap:var(--space-inline)}
.material-suggestion{display:flex;align-items:center;flex:0 1 auto;gap:var(--space-inline);max-width:100%;min-width:0;min-height:var(--size-target-min);padding:calc(var(--inset-chipMedia) - var(--size-border-outer));text-align:left}
/* The1px outline uses the existing8px inset budget:1px border+7px padding. */
.material-suggestion .material-preview{width:var(--size-icon-standard);height:var(--size-icon-standard);background:transparent}
.material-suggestion-label{min-width:0;white-space:normal;overflow-wrap:anywhere}
.material-picker-dialog{position:fixed;inset:auto;margin:0;border:0;border-radius:var(--radius-sheet);padding:var(--space-group);background:var(--raised);color:var(--ink);box-shadow:var(--shadow-panel);overflow:hidden}
.material-picker-dialog[open]{display:flex;flex-direction:column;gap:var(--space-compact)}
.material-picker-dialog::backdrop{background:transparent}
.material-picker-head{display:flex;align-items:center;justify-content:space-between;flex:none;font:var(--font-weight-regular) var(--type-source-size)/var(--type-source-line) var(--font-book)}
.material-picker-head .ico{margin-inline-end:calc(-1 * var(--space-compact))}
.material-picker-dialog>input{width:100%;flex:none}
.material-picker-options{min-height:0;overflow:auto;overscroll-behavior:contain}
.material-picker-options .entry-group{font:var(--font-weight-regular) var(--type-caption-size)/var(--type-caption-line) var(--font-ui);color:var(--ink2);padding-top:var(--space-compact)}
.material-picker-options .entry-empty{font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--font-ui);color:var(--ink2)}

/* Owner-approved StepField: a 44px column holds two 22px half-target arrows; input keyboard and 44px presets remain alternatives. */
/* The optional spinner splits the existing field height; the editable input stays full-height. */
.step-field{height:auto;min-height:var(--size-target-min);display:grid;grid-template-columns:minmax(0,1fr) var(--size-target-min);grid-template-rows:repeat(2,calc(var(--size-target-min) / 2));padding:0;overflow:visible}
.step-field-input{grid-column:1;grid-row:1 / span 2;width:100%;height:100%;min-width:0;border:0;outline:0;background:transparent;color:inherit;font:inherit;padding:0 var(--space-group);appearance:textfield;-moz-appearance:textfield}
.step-field-input::-webkit-inner-spin-button,.step-field-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.step-adjust{grid-column:2;width:var(--size-target-min);height:calc(var(--size-target-min) / 2);min-height:0;display:grid;place-items:center;color:var(--act-text)}
.step-adjust[data-step-adjust="1"]{grid-row:1}.step-adjust[data-step-adjust="-1"]{grid-row:2}
.step-adjust[data-step-adjust="1"] svg{transform:rotate(180deg)}
.step-adjust:active{background:var(--rule)}.step-adjust:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:calc(-1 * var(--size-focus-width))}
.step-field:focus-within{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}
.step-field:has(input[aria-invalid=true]){border-color:var(--danger)}
.step-field:has(input:disabled){opacity:var(--opacity-disabled)}
.linked-fixed{display:flex;align-items:center;gap:var(--space-group);margin-top:var(--space-compact);font:var(--font-weight-regular) var(--type-row-size)/var(--type-row-line) var(--type-row-family)}

/* Context actions fit their labels and sit by the opener; forms keep the BottomSheet shell. */
.scrim.context-menu-overlay{position:fixed;padding:0;background:transparent;z-index:10}.scrim.context-menu-overlay.on{display:block}
.context-menu{position:absolute;width:max-content;max-width:calc(100% - var(--space-screen) * 2);max-height:calc(100dvh - var(--space-screen) * 2);overflow:auto;background:var(--raised);border-radius:var(--radius-sheet);padding:var(--space-compact) 0;box-shadow:var(--shadow-panel);overscroll-behavior:contain}
.context-menu h3{font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--type-meta-family);color:var(--ink2);padding:var(--space-compact) var(--space-group);overflow-wrap:anywhere}
.context-menu .entry-menu-meta{display:block;font:inherit;margin-top:var(--space-ruleGap)}
.context-menu button{display:flex;align-items:center;width:100%;min-height:var(--size-target-min);padding:0 var(--inset-menu);font:var(--font-weight-regular) var(--type-body-size)/var(--type-body-line) var(--type-body-family);color:var(--ink);text-align:left;white-space:nowrap}
.context-menu button:active{background:var(--rule)}.context-menu button:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:calc(-1 * var(--size-focus-width))}
.context-menu .del{color:var(--danger)}.context-menu>.context-cancel{display:none}.context-menu.context-confirm>.context-cancel{display:block}

/* Direct section controls use the existing target, space and four reading-size tokens. */
/* Approved row:6×44px targets+24px neutral value+6px gap=294px;320px leaves13px each side. */
.reading-toolbar,.text-size-stepper{--reading-number-width:calc(var(--size-icon-standard) + var(--space-ruleGap)*2)}
.reading-toolbar{--reading-row-width:calc(var(--size-target-min)*6 + var(--reading-number-width) + var(--space-inline));--reading-inset:clamp(var(--space-group),calc((100% - var(--reading-row-width))/2),var(--space-screen));position:sticky;top:0;z-index:1;padding:0 var(--reading-inset);background:var(--ground)}
.reading-section-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-inline)}
.reading-section-head .reading-controls-title{margin:0;font:var(--font-weight-regular) var(--type-section-size)/var(--type-section-line) var(--font-book);color:var(--ink);transition:opacity var(--motion-controlDuration) var(--motion-controlEasing)}
.reading-toolbar.reading-open .reading-controls-title{opacity:0}
.reading-settings{display:grid;place-items:center;width:var(--size-target-min);height:var(--size-target-min);color:var(--ink2)}
.reading-settings svg{width:var(--size-icon-standard);height:var(--size-icon-standard)}
.reading-settings[aria-expanded=true]{color:var(--act-text)}
.reading-settings:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:calc(-1 * var(--size-focus-width))}
/* The overlay consumes no layout space; the trigger stays at the right edge. */
.reading-drawer{position:absolute;right:calc(var(--reading-inset,var(--space-screen)) + var(--size-target-min));top:0;width:max-content;height:var(--size-target-min);background:var(--ground);clip-path:inset(0 0 0 100%);opacity:0;transform:translateX(var(--space-compact));visibility:hidden;pointer-events:none;transition:clip-path var(--motion-controlDuration) var(--motion-controlEasing),transform var(--motion-controlDuration) var(--motion-controlEasing),opacity var(--motion-controlDuration) var(--motion-controlEasing)}
.reading-drawer.is-open{clip-path:inset(0);opacity:1;transform:translateX(0);visibility:visible;pointer-events:auto}.reading-drawer-inner{height:100%}
@media(prefers-reduced-motion:reduce){.reading-drawer,.reading-section-head .reading-controls-title{transition:none}.reading-drawer{transform:none}}
/*44px transparent targets retain touch access; visible marks are44-2×8=28px. */
.reading-controls{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-inline);min-width:0}
.reading-language-buttons{display:flex;align-items:center;gap:0;min-width:0}
.text-layer-inline{display:grid;place-items:center;width:var(--size-target-min);min-width:var(--size-target-min);height:var(--size-target-min);padding:0;border:0;color:var(--ink2);background:transparent}
.reading-layer-mark{display:grid;place-items:center;width:calc(var(--size-target-min) - var(--space-compact) * 2);height:calc(var(--size-target-min) - var(--space-compact) * 2);border-radius:var(--radius);position:relative}
.text-layer-inline[aria-pressed=true]{color:var(--act-text)}
.text-layer-inline[aria-pressed=true] .reading-layer-mark{background:var(--act);color:var(--on-act)}
.text-layer-inline svg{flex:none;width:var(--size-icon-standard);height:var(--size-icon-standard)}
@media(hover:hover){.text-layer-inline[aria-pressed=false]:hover .reading-layer-mark{background:var(--rule)}}
.text-layer-inline:active .reading-layer-mark{background:var(--press);color:var(--on-act)}
.text-layer-inline:focus-visible{outline:0}.text-layer-inline:focus-visible .reading-layer-mark{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}
/* The value's24px slot fits the measured widest two-digit UI16px number19.53125px. */
.text-size-stepper{display:flex;align-items:center;flex:none;width:calc(var(--size-target-min)*2 + var(--reading-number-width));height:var(--size-target-min);color:var(--act-text)}
.reading-size-value{display:grid;place-items:center;width:var(--reading-number-width);height:var(--size-target-min);flex:none;font:var(--font-weight-regular) var(--type-action-size)/var(--type-action-line) var(--font-ui);font-variant-numeric:tabular-nums;color:var(--ink);cursor:default}
.text-size-adjust{display:grid;place-items:center;flex:none;width:var(--size-target-min);height:var(--size-target-min);padding:0;color:var(--act-text);background:transparent;border:0}
.reading-size-mark{display:grid;place-items:center;width:calc(var(--size-target-min) - var(--space-compact)*2);height:calc(var(--size-target-min) - var(--space-compact)*2);border-radius:var(--radius);background:var(--rule)}
.reading-size-mark svg{width:var(--size-icon-standard);height:var(--size-icon-standard);flex:none}
.text-size-adjust:disabled{color:var(--ink2);cursor:default;opacity:var(--opacity-disabled)}
.text-size-adjust:disabled .reading-size-mark{background:transparent}
.text-size-adjust:not(:disabled):active .reading-size-mark{background:var(--press);color:var(--on-act)}
@media(hover:hover){.text-size-adjust:not(:disabled):hover .reading-size-mark{background:var(--act);color:var(--on-act)}}
.text-size-adjust:focus-visible{outline:0}.text-size-adjust:focus-visible .reading-size-mark,.text-size-stepper:focus-visible{outline:var(--size-focus-width) solid var(--act-text);outline-offset:var(--size-focus-offset)}
.text-size-stepper:focus-visible{outline-offset:calc(-1 * var(--size-focus-width))}
.reading-section .rframe{margin-top:var(--space-inline)}.reading-controls .original-text-label{font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--font-ui);color:var(--ink2)}

/* Disabled transport keeps the shared disabled tone; it has no drag affordance. */
.axcontrol:disabled{cursor:default;opacity:var(--opacity-disabled)}

/* Error copy sits with its field. Service failures use quiet, action-led feedback. */
.calm-feedback{padding-block:var(--space-compact);font:var(--font-weight-regular) var(--type-meta-size)/var(--type-meta-line) var(--font-ui);color:var(--ink2);overflow-wrap:anywhere}
.calm-feedback>strong{display:block;color:var(--ink);font:var(--font-weight-medium) var(--type-body-size)/var(--type-body-line) var(--font-ui)}
.calm-feedback>p{margin-top:var(--space-inline);color:var(--ink2)}
.feedback-actions{display:flex;flex-wrap:wrap;gap:0 var(--space-group)}
.feedback-actions>button{min-height:var(--size-target-min);padding:0;color:var(--act-text);font:var(--font-weight-medium) var(--type-meta-size)/var(--type-meta-line) var(--font-ui);text-align:left}





/* A form owns label rhythm; its container owns screen/safe-area insets.
   Compact sheets retain12px group /6px label /8px suggestion gaps. */
.calm-form .lbl{margin:var(--gap-form) 0 var(--gap-label)}
.calm-form>.lbl:first-child,.calm-form>:first-child>.lbl:first-child{margin-top:0}
/* Equal action columns; a wrapped label grows both buttons in the same row. */
.form-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-actions)}
.form-actions>.btn,.foot>.btn,.btns>.btn{min-width:0;min-height:var(--size-target-min);height:auto;align-self:stretch;box-sizing:border-box;padding:var(--space-compact) var(--inset-control);border:var(--size-border-outer) solid transparent;font:var(--font-weight-semibold) var(--type-action-size)/var(--type-action-line) var(--type-action-family);text-align:center;white-space:normal;overflow-wrap:anywhere}
.form-actions>.btn:not(.main),.foot>.btn:not(.main),.btns>.btn:not(.main){border-color:var(--frame)}

.form-actions:has(>:only-child){grid-template-columns:1fr}

/* CoverImage: width is owned by its host; intrinsic dimensions reserve the source ratio. */
.calm-cover[data-cover-layout=full]{display:block;width:100%;max-width:100%;height:auto;object-fit:contain}
.calm-cover[data-cover-layout=thumbnail]{object-fit:contain}
.song-recording>.axartwork{width:100%;aspect-ratio:auto}

button:disabled{cursor:default}

/* PracticeSkeleton: static, decorative placeholders; three rows illustrate shape, not item count. */
.skel-text{color:transparent;background:linear-gradient(var(--rule),var(--rule)) left center/100% var(--space-group) no-repeat;user-select:none}
.skel-row{display:grid;grid-template-columns:var(--size-row-image) minmax(0,1fr) var(--size-target-min) var(--size-increment-width);column-gap:var(--space-inline);align-items:center;height:var(--size-row-height);margin:0 var(--space-screen)}
.skel-img{display:block;width:var(--size-row-image);height:var(--size-row-image);background:var(--rule)}
.skel-lines{display:grid;gap:var(--space-compact);padding-left:var(--space-micro)}
.skel-bar{display:block;height:var(--space-group);width:60%;background:var(--rule)}
.skel-bar.skel-meta{height:var(--space-tight);width:40%}
.skel-row:nth-child(3) .skel-bar{width:45%}
.skel-row:nth-child(3) .skel-meta{width:30%}
.skel-row:nth-child(4) .skel-bar{width:70%}
.skel-row:nth-child(4) .skel-meta{width:50%}
