/* Tsundoku Reading Nook — theme-native semantic reading workspace */
.tsu-page{--grammar-subject:#6f42c1;--grammar-object:#1677c8;--grammar-verb:#c9362b;--grammar-particle:#d36b18;--grammar-technical:#008a83;--grammar-connector:#56606b;--grammar-adjective:#2f8f46;--grammar-adverb:#b12f7a;--grammar-time:#9a6a16;max-width:1500px;margin:0 auto;display:grid;gap:16px}
.tsu-header,.tsu-bookshelf,.tsu-reader{background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow)}
.tsu-header{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px 22px;border-radius:22px;background:linear-gradient(135deg,var(--surface),var(--surface2))}.tsu-header h1{margin:4px 0;font-size:clamp(1.8rem,3vw,2.8rem)}.tsu-header p{margin:0;color:var(--muted)}.tsu-header-badge{display:grid;grid-template-columns:46px auto;align-items:center;column-gap:10px}.tsu-header-badge>span{grid-row:1/3;width:46px;height:46px;display:grid;place-items:center;border-radius:13px;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;font-size:1.45rem;font-weight:900}.tsu-header-badge small{color:var(--muted)}
.tsu-layout{display:grid;grid-template-columns:270px minmax(0,1fr);gap:14px;align-items:start}.tsu-bookshelf{border-radius:18px;padding:15px;position:sticky;top:82px;max-height:calc(100vh - 104px);overflow:auto}.tsu-shelf-head{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding-bottom:12px}.tsu-shelf-head h2{margin:3px 0 0;font-size:1.05rem}.tsu-count{min-width:32px;height:32px;border-radius:999px;background:var(--surface2);display:grid;place-items:center;color:var(--primary);font-weight:900}.tsu-book-list{display:grid;gap:10px;padding:12px 0}.tsu-book-card{width:100%;display:grid;grid-template-columns:58px 1fr;gap:10px;text-align:left;padding:9px;border:1px solid var(--line);border-radius:14px;background:var(--surface);color:var(--ink);cursor:pointer;transition:.16s}.tsu-book-card:hover,.tsu-book-card.active{border-color:color-mix(in srgb,var(--primary) 55%,var(--line));background:color-mix(in srgb,var(--primary) 8%,var(--surface));transform:translateY(-1px)}.tsu-book-cover{width:58px;min-height:76px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(145deg,color-mix(in srgb,var(--primary) 82%,var(--surface)),color-mix(in srgb,var(--secondary) 76%,var(--surface2)));color:#fff;font-size:1.5rem;font-weight:950;box-shadow:inset -7px 0 0 rgba(0,0,0,.08)}.tsu-book-card b,.tsu-book-card small{display:block}.tsu-book-card .jp-title{font-family:var(--mk-font-jp);font-size:.83rem}.tsu-book-card small{color:var(--muted);font-size:.68rem;margin-top:2px}.tsu-book-meta{display:flex;gap:7px;flex-wrap:wrap;margin-top:7px;font-size:.62rem;color:var(--muted)}.tsu-book-progress{display:block;width:100%;height:4px;background:var(--surface2);border-radius:999px;margin-top:7px;overflow:hidden}.tsu-book-progress i{display:block;width:0;max-width:100%;height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary))}.tsu-coming-soon{display:grid;gap:5px;padding:12px;border:1px dashed var(--line);border-radius:13px;color:var(--muted);font-size:.69rem}.tsu-coming-soon b{color:var(--ink)}
.tsu-reader{border-radius:18px;overflow:hidden;min-width:0}.tsu-reader-top{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--surface2)}.tsu-title-block{display:flex;align-items:center;gap:10px;min-width:220px}.tsu-reader-icon{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;background:var(--surface);border:1px solid var(--line);color:var(--primary);font-weight:950}.tsu-title-block h2{margin:0;font-size:1.05rem}.tsu-title-block p{margin:2px 0 0;color:var(--muted);font-size:.74rem}.tsu-controls{display:flex;align-items:end;justify-content:flex-end;gap:8px;flex-wrap:wrap}.tsu-controls fieldset{border:0;padding:0;margin:0}.tsu-controls legend{width:100%;text-align:center;color:var(--muted);font-size:.58rem;font-weight:850;margin-bottom:3px}.tsu-segment{display:flex;border:1px solid var(--line);border-radius:10px;padding:3px;background:var(--surface)}.tsu-segment button,.tsu-toggle{border:0;background:transparent;color:var(--ink);padding:7px 10px;border-radius:7px;cursor:pointer;font-size:.7rem;font-weight:850}.tsu-segment button.active,.tsu-toggle.active{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}.tsu-toggle{height:34px;border:1px solid var(--line);background:var(--surface)}.tsu-toggle span{font-size:.6rem;margin-left:3px}
.tsu-reading-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);min-height:510px}.tsu-pane{display:flex;flex-direction:column;min-width:0;background:var(--surface)}.tsu-pane>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px;background:color-mix(in srgb,var(--primary) 8%,var(--surface2));border-bottom:1px solid var(--line);font-weight:900}.tsu-pane>header small{font-weight:700;color:var(--muted)}.tsu-pane-status{font-size:.62rem;color:var(--muted);font-weight:750}.tsu-sentences{height:510px;overflow:auto;scrollbar-gutter:stable;overscroll-behavior:contain}.tsu-sentence{display:grid;grid-template-columns:34px minmax(0,1fr);gap:11px;align-items:center;min-height:78px;padding:12px 14px;border-bottom:1px solid var(--line);cursor:pointer;transition:.15s}.tsu-sentence:hover{background:color-mix(in srgb,var(--primary) 5%,var(--surface))}.tsu-sentence.active{background:color-mix(in srgb,var(--primary) 12%,var(--surface));box-shadow:inset 3px 0 var(--primary)}.tsu-line-number{width:28px;height:28px;display:grid;place-items:center;border:1px solid var(--line);border-radius:8px;background:var(--surface2);color:var(--muted);font-size:.7rem;font-weight:900}.tsu-sentence-text{font-size:1.08rem;line-height:2.05}.tsu-pane[data-pane=ja] .tsu-sentence-text{font-family:var(--mk-font-jp);font-size:1.17rem}.tsu-token{position:relative;border-radius:4px;transition:background .12s,box-shadow .12s}.tsu-token[data-role=subject]{color:var(--grammar-subject)}.tsu-token[data-role=object]{color:var(--grammar-object)}.tsu-token[data-role=verb]{color:var(--grammar-verb)}.tsu-token[data-role=particle]{color:var(--grammar-particle)}.tsu-token[data-role=technical]{color:var(--grammar-technical)}.tsu-token[data-role=connector]{color:var(--grammar-connector)}.tsu-token[data-role=adjective]{color:var(--grammar-adjective)}.tsu-token[data-role=adverb]{color:var(--grammar-adverb)}.tsu-token[data-role=time],.tsu-token[data-role=place]{color:var(--grammar-time)}.tsu-token[data-role=expression]{color:var(--grammar-subject)}.tsu-token.is-related{background:color-mix(in srgb,currentColor 13%,transparent);box-shadow:0 2px 0 currentColor}.tsu-page.colors-off .tsu-token{color:var(--ink)!important}.tsu-page.colors-off .tsu-token.is-related{background:var(--surface2)}ruby rt{font-size:.55em;color:var(--muted);font-weight:700}.tsu-literal-text{color:var(--ink);font-size:1rem;line-height:1.7}
.tsu-lower-grid{display:grid;grid-template-columns:1fr 1.4fr .8fr;border-top:1px solid var(--line)}.tsu-panel{padding:13px 15px;min-height:142px;border-right:1px solid var(--line)}.tsu-panel:last-child{border:0}.tsu-legend-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px;margin-top:9px}.tsu-legend-grid span{font-size:.67rem;font-weight:800;display:flex;align-items:center;gap:6px}.tsu-legend-grid span::before{content:"";width:12px;height:12px;border-radius:3px;background:var(--muted);box-shadow:0 0 0 1px color-mix(in srgb,var(--ink) 18%,transparent)}.tsu-legend-grid [data-role=subject]::before{background:var(--grammar-subject)}.tsu-legend-grid [data-role=object]::before{background:var(--grammar-object)}.tsu-legend-grid [data-role=verb]::before{background:var(--grammar-verb)}.tsu-legend-grid [data-role=particle]::before{background:var(--grammar-particle)}.tsu-legend-grid [data-role=technical]::before{background:var(--grammar-technical)}.tsu-legend-grid [data-role=connector]::before{background:var(--grammar-connector)}.tsu-legend-grid [data-role=adjective]::before{background:var(--grammar-adjective)}.tsu-legend-grid [data-role=time]::before{background:var(--grammar-time)}.tsu-insight-main{font-family:var(--mk-font-jp);font-size:1rem;margin:9px 0 7px;line-height:1.8}.tsu-insight-note{margin:0;color:var(--muted);font-size:.72rem;line-height:1.5}.tsu-role-chips{display:flex;gap:5px;flex-wrap:wrap}.tsu-role-chip{padding:4px 7px;border-radius:7px;background:var(--surface2);border:1px solid var(--line);font-size:.62rem}.tsu-tools{display:grid;gap:7px;align-content:start}.tsu-tools button{padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface2);color:var(--ink);font-weight:800;cursor:pointer}.tsu-tools button:hover{border-color:var(--primary);color:var(--primary)}.tsu-progress{display:grid;grid-template-columns:auto minmax(120px,1fr) auto auto;align-items:center;gap:12px;padding:10px 15px;background:var(--surface2);border-top:1px solid var(--line);font-size:.7rem}.tsu-progress-track{height:7px;border-radius:999px;background:color-mix(in srgb,var(--muted) 16%,var(--surface));overflow:hidden}.tsu-progress-track i{display:block;width:0;height:100%;background:linear-gradient(90deg,var(--primary),var(--secondary));transition:width .2s}.tsu-progress b{color:var(--primary)}
@media(max-width:1150px){.tsu-layout{grid-template-columns:220px minmax(0,1fr)}.tsu-reader-top{align-items:flex-start;flex-direction:column}.tsu-controls{justify-content:flex-start}.tsu-lower-grid{grid-template-columns:1fr 1fr}.tsu-tools{grid-column:1/-1;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line)}}
@media(max-width:850px){.tsu-layout{grid-template-columns:1fr}.tsu-bookshelf{position:static;max-height:none}.tsu-book-list{grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}.tsu-reading-grid{grid-template-columns:1fr}.tsu-sentences{height:390px}.tsu-lower-grid{grid-template-columns:1fr}.tsu-panel{border-right:0;border-bottom:1px solid var(--line)}.tsu-tools{grid-column:auto}.tsu-progress{grid-template-columns:1fr auto}.tsu-progress-track{grid-column:1/-1;grid-row:2}.tsu-progress-count{display:none}}
@media(max-width:600px){.tsu-header{align-items:flex-start}.tsu-header-badge{display:none}.tsu-reader-top{padding:10px}.tsu-controls{width:100%}.tsu-controls fieldset{flex:1 1 145px}.tsu-segment button{flex:1}.tsu-segment{width:100%}.tsu-toggle{flex:1}.tsu-sentence{padding:10px;grid-template-columns:28px minmax(0,1fr)}.tsu-sentence-text{font-size:.98rem}.tsu-pane[data-pane=ja] .tsu-sentence-text{font-size:1.06rem}.tsu-tools{grid-template-columns:1fr}.tsu-legend-grid{grid-template-columns:1fr 1fr}}
/* Reading-group control: 1–10 source sentences per comparison row. */
.tsu-count-control{min-width:138px}.tsu-count-control input{width:100%;height:34px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font:inherit;font-size:.75rem;font-weight:850;text-align:center;padding:4px 8px;outline:none}.tsu-count-control input:focus{border-color:var(--primary);box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 16%,transparent)}
.tsu-reading-group{display:grid;gap:8px}.tsu-group-sentence{display:block}.tsu-group-sentence+.tsu-group-sentence{padding-top:7px;border-top:1px dashed color-mix(in srgb,var(--line) 72%,transparent)}
.tsu-line-number{width:auto;min-width:28px;padding:0 5px}
@media(max-width:600px){.tsu-count-control{flex:1 1 180px}}

.tsu-references{padding:14px 15px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--surface2) 55%,var(--surface));display:grid;gap:9px}.tsu-references[hidden]{display:none}.tsu-references>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}.tsu-reference-link{display:grid;gap:3px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);text-decoration:none;font-size:.72rem;line-height:1.35}.tsu-reference-link:hover{border-color:var(--primary);color:var(--primary)}.tsu-reference-link small{color:var(--muted);font-size:.63rem}

/* 2026-08-17 bookshelf scaling + mobile reading wrap */
.tsu-library-controls{display:grid;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}
.tsu-control-label,.tsu-load-control span{display:block;color:var(--muted);font-size:.61rem;font-weight:850;margin-bottom:5px;text-transform:uppercase;letter-spacing:.05em}
.tsu-category-filters{display:flex;gap:5px;flex-wrap:wrap}
.tsu-category-chip,.tsu-template-actions button,.tsu-load-more{border:1px solid var(--line);border-radius:9px;background:var(--surface2);color:var(--ink);font:inherit;font-size:.65rem;font-weight:850;cursor:pointer;padding:7px 9px}
.tsu-category-chip.active{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;border-color:transparent}
.tsu-load-control input{width:100%;height:34px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);font:inherit;font-size:.75rem;font-weight:850;text-align:center;padding:4px 8px;outline:none}
.tsu-template-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.tsu-template-actions button:hover,.tsu-load-more:hover{border-color:var(--primary);color:var(--primary)}
.tsu-library-message{min-height:1em;color:var(--muted);font-size:.62rem;line-height:1.35}.tsu-library-message.is-error{color:var(--grammar-verb)}
.tsu-category-badge{display:inline-flex;align-items:center;max-width:100%;padding:2px 6px;border:1px solid var(--line);border-radius:999px;background:var(--surface2);font-size:.58rem;white-space:normal}
.tsu-shelf-footer{position:sticky;bottom:-15px;z-index:2;display:grid;gap:5px;padding:10px 0 15px;background:linear-gradient(to bottom,color-mix(in srgb,var(--surface) 75%,transparent),var(--surface) 22%)}
.tsu-load-more{width:100%;padding:10px}.tsu-load-more[hidden]{display:none}.tsu-shelf-footer small{text-align:center;color:var(--muted);font-size:.61rem}
.tsu-sentences{overflow-x:hidden}.tsu-sentence,.tsu-sentence-text,.tsu-reading-group,.tsu-group-sentence{min-width:0;max-width:100%}.tsu-sentence-text{overflow-wrap:anywhere;word-break:normal}.tsu-token{overflow-wrap:anywhere;word-break:break-word;white-space:normal}
@media(max-width:850px){.tsu-shelf-footer{bottom:0}.tsu-bookshelf{overflow:visible}.tsu-library-controls{grid-template-columns:minmax(0,1fr) 120px}.tsu-template-actions,.tsu-library-message{grid-column:1/-1}}
@media(max-width:600px){.tsu-library-controls{grid-template-columns:1fr}.tsu-load-control,.tsu-template-actions,.tsu-library-message{grid-column:auto}.tsu-book-list{grid-template-columns:1fr}.tsu-sentence{overflow:hidden}.tsu-sentence-text{line-height:1.8}.tsu-token{max-width:100%}}

/* v1.3.0 — Anki deck-as-book intake */
.tsu-template-actions{display:flex;flex-wrap:wrap;gap:.45rem}
.tsu-template-actions button{min-height:38px}
.tsu-danger-action{border-color:color-mix(in srgb,var(--danger,#b6331f) 55%,var(--border));color:var(--danger,#b6331f)}
.tsu-danger-action:disabled{opacity:.45;cursor:not-allowed}
.tsu-anki-dialog{width:min(920px,calc(100vw - 2rem));max-height:88vh;border:0;border-radius:20px;padding:0;background:transparent;color:inherit}
.tsu-anki-dialog::backdrop{background:rgba(12,17,20,.58);backdrop-filter:blur(3px)}
.tsu-anki-card{background:var(--panel,#fffdf8);color:var(--ink,#142027);border:1px solid var(--border,#d9d0c2);border-radius:20px;padding:1.4rem;box-shadow:0 24px 70px rgba(0,0,0,.22);max-height:88vh;overflow:auto}
.tsu-anki-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}
.tsu-anki-head h2{margin:.2rem 0 .4rem}
.tsu-anki-head>button{width:42px;height:42px;border-radius:12px;border:1px solid var(--border,#d9d0c2);background:var(--surface,#f7f2e9);color:inherit;font-size:1.35rem}
.tsu-anki-status{margin:1rem 0;padding:.75rem .85rem;border-radius:12px;background:var(--surface,#f7f2e9);border:1px solid var(--border,#d9d0c2);min-height:1rem}
.tsu-anki-status.is-error{background:#fff0ed;border-color:#d99a8f;color:#8f2818}
.tsu-anki-status.is-success{background:#eef8f0;border-color:#a7cfad;color:#245f31}
.tsu-anki-fields{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;margin:1rem 0}
.tsu-anki-fields label{display:grid;gap:.35rem;font-weight:700}
.tsu-anki-fields select{width:100%;min-height:42px;border:1px solid var(--border,#d9d0c2);border-radius:10px;background:var(--surface,#fff);color:var(--ink,#142027);padding:.55rem .65rem}
.tsu-anki-preview{display:grid;gap:.65rem}
.tsu-anki-preview-row{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--border,#d9d0c2);border-radius:14px;overflow:hidden;background:var(--surface,#fff)}
.tsu-anki-preview-row>div{padding:.8rem;min-width:0}
.tsu-anki-preview-row>div+div{border-left:1px solid var(--border,#d9d0c2)}
.tsu-anki-preview-row small{display:block;color:var(--muted,#67757d);text-transform:uppercase;letter-spacing:.08em;font-weight:800;margin-bottom:.3rem}
.tsu-anki-preview-row b,.tsu-anki-preview-row span{display:block;white-space:normal;overflow-wrap:anywhere}
.tsu-anki-actions{display:flex;justify-content:flex-end;gap:.65rem;margin-top:1rem}
.tsu-page.is-anki-book .tsu-legend{opacity:.48}
.tsu-page.is-anki-book [data-translation-mode],.tsu-page.is-anki-book [data-translation-language]{opacity:.45;pointer-events:none}

@media (max-width:720px){
  .tsu-anki-fields,.tsu-anki-preview-row{grid-template-columns:1fr}
  .tsu-anki-preview-row>div+div{border-left:0;border-top:1px solid var(--border,#d9d0c2)}
  .tsu-anki-actions{flex-direction:column-reverse}
  .tsu-anki-actions button{width:100%}
}

/* 2026-09-01 — Reading Nook header CTA contrast fix.
   app.css intentionally gives .secondary-button a white-on-transparent hero style.
   Inside the light Reading Nook header that made the Adaptive Recall CTA nearly invisible. */
.tsu-header .secondary-button{
  margin-top:12px;
  background:var(--surface);
  color:var(--ink);
  border-color:var(--line);
  box-shadow:0 5px 14px color-mix(in srgb,var(--ink) 7%,transparent);
}
.tsu-header .secondary-button:hover{
  background:color-mix(in srgb,var(--primary) 8%,var(--surface));
  color:var(--primary);
  border-color:color-mix(in srgb,var(--primary) 45%,var(--line));
}
html[data-theme="night"] .tsu-header .secondary-button{
  background:var(--surface2);
  color:var(--ink);
  border-color:var(--line);
}
