@font-face{font-family:JP;src:url(assets/NotoSansJP-Regular.ttf);font-display:swap}
*{box-sizing:border-box}body{margin:0;background:#f5f4ed;color:#213c34;font:14px/1.55 Arial,JP,sans-serif}button,input,select,textarea{font:inherit}a{color:inherit;text-underline-offset:3px}button,.button,select{background:#fffef8;border:1px solid #c6d0c1;border-radius:5px;color:inherit;padding:8px 12px;min-height:36px;cursor:pointer}button:hover,.button:hover{background:#e7eddf}button:disabled{opacity:.35;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #3e8290;outline-offset:3px}.quiet{font-size:12px;color:#65775b;line-height:1.75}.jp{font-family:JP,sans-serif}.romaji{font:11px Arial;color:#95632e;white-space:nowrap}.field-label{font:10px/1.6 Arial;text-transform:uppercase;letter-spacing:.6px;color:#79846d}.tab-panel[hidden],*[hidden]{display:none!important}
header{max-width:1120px;margin:auto;padding:14px 26px;display:flex;justify-content:space-between;gap:16px;align-items:center;border-bottom:1px solid #d6ddce}.brand{text-decoration:none;font:9px Arial;letter-spacing:1.2px}.brand span{font:15px Georgia,serif;letter-spacing:0;margin-left:12px}header nav{display:flex;gap:18px;font-size:11px}main{max-width:1050px;margin:auto;padding:10px 26px 35px}.tabs{display:flex;gap:4px;border-bottom:1px solid #c4cfbc;margin:0 0 10px}.tabs button{border:0;border-radius:4px 4px 0 0;background:transparent;font-size:12px;padding:8px 17px}.tabs button.active{background:#254d3b;color:#fff}.route-top{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:11px;margin:5px 0 8px;color:#6d7c60}.route-top button{font-size:10px;min-height:30px;padding:5px 9px}.settings{padding:16px;background:#e9eddf;border:1px solid #cad4bf;border-radius:5px;margin:10px 0 15px;display:grid;grid-template-columns:1fr 1fr;gap:12px}.settings label{font-size:12px;display:block}.settings select{display:block;width:100%;margin-top:6px}.settings p{grid-column:1/-1;margin:0}.budget-label input{display:block;width:100%;margin-top:12px;accent-color:#366846}.slide-nav{display:flex;gap:7px}.slide-nav select{flex:1;min-width:0;font-size:13px}.slide-nav>button{min-width:38px}.slide-meta{font:10px Arial;color:#7a876b;margin:8px 0}.slide-shell{background:#fffef9;border:1px solid #d0dac8;border-radius:7px;padding:22px 25px}.slide-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;margin:0 0 6px}.slide-heading h2{font:35px/1.12 Georgia,serif;font-weight:400;margin:0}.badge{font:9px Arial;letter-spacing:.6px;padding:5px 8px;border:1px solid #bfccbb;border-radius:15px;background:#edf2e6;white-space:nowrap}.badge.pattern{background:#e4edf1;border-color:#bacfd4}.badge.support{background:#f1e9db;border-color:#d2c5ad}.component-images{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;color:#86508e;font-size:12px;margin:5px 0 10px}.component-images>span{font-size:10px;color:#927a98}.component-images>button{font-size:12px;color:#86508e;border:0;padding:2px 0;min-height:26px;background:transparent;text-decoration:underline;text-decoration-color:#d7c1dc;text-underline-offset:4px}.component-images>button:not(:last-child):after{content:' ·';margin-left:8px;color:#cab2d0}.recognition{display:grid;grid-template-columns:190px minmax(0,1fr);gap:25px;align-items:center;margin-top:12px}.model-area{background:#f4f4eb;border:1px solid #e0e3d5;border-radius:5px;padding:9px}.glyph{display:block;fill:none;stroke:#273d34;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;overflow:visible}.big-glyph{width:165px;height:165px;margin:auto;max-width:100%}.model-tools{display:flex;gap:3px;align-items:center;margin-top:3px}.model-tools button{font-size:10px;padding:5px 8px;min-height:29px}.model-tools button.active{background:#e1e9d9;border-color:#a9bea1}.standard-form{font:28px/1.1 JP,sans-serif;margin-left:auto;color:#5f6d58}.study-facts{min-width:0}.meaning{font-size:17px;line-height:1.6;margin:0 0 13px}.meaning>.field-label{display:block;margin-bottom:3px}.meaning.component-kind{font-size:13px;color:#74816a}.readings{display:grid;gap:9px}.readings>div{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:baseline;gap:7px}.readings p{font:17px/1.65 JP,Arial,sans-serif;margin:0}.reading{display:inline-block}.reading .romaji{margin-left:3px}.reading-separator{font:11px Arial;color:#b6bea8;margin:0 4px}.shape-reading{font-size:12px;color:#74816a;margin:8px 0}.piece-list{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 0}.piece-button{display:flex;gap:6px;align-items:center;text-align:left;border-left:3px solid var(--piece);padding:4px 9px 4px 6px;min-height:38px;font-size:12px;color:var(--piece)}.piece-button .glyph{width:26px;height:26px;flex:none}.piece-button .glyph path[stroke="#176d88"]{stroke:var(--piece)}.changed-mark{font:12px Arial;color:#a47e47;margin-left:2px}.new-shape-label{font:8px/1.3 Arial;letter-spacing:.2px;color:#9d5f16;background:#fff1d7;border:1px solid #e9c992;border-radius:3px;padding:3px 4px;white-space:nowrap}.new-shape{background:#fff9eb;border-style:dashed;border-color:#d9b578}.writing{border-top:1px solid #e0e5d7;padding-top:11px;margin-top:15px;display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 12px}.writing h3{font:12px Arial;color:#6d7d61;font-weight:400;margin:0}.stroke-key{font-size:9px;color:#8b957f;display:flex;align-items:center;gap:4px}.stroke-key i{width:5px;height:5px;border-radius:50%;background:#00849a;display:inline-block}.stroke-key i:last-child{background:transparent;border:1px solid #b33b32;margin-left:5px}.steps{display:flex;flex-wrap:wrap;gap:4px;width:100%}.step{width:55px;border:1px solid #e1e6d8;border-radius:3px;padding:3px;background:#fffefb}.step>b{display:block;font:9px Arial;text-align:center;color:#8c977d;margin-bottom:1px}.step .glyph{width:47px;height:47px}.memory-box{background:#edf2f5;border:1px solid #cedde2;border-radius:5px;padding:12px 14px;margin-top:15px}.memory-heading{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-bottom:7px}.memory-heading h3{font:15px Georgia,serif;font-weight:400;color:#3f6573;margin:0}.memory-heading .source-link{margin-left:auto}.source-link,.grouping-label{border:0;background:transparent;font-size:10px;padding:2px 0;min-height:26px;color:#68828b}.grouping-label{font-size:9px;color:#8b6a38}.memory-recipe{display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin:6px 0}.recipe-label{font-size:10px;color:#7d9199;min-width:25px}.plus{font-size:12px;color:#9aadb2}.memory-chip{display:flex;gap:6px;align-items:center;padding:4px 7px;min-height:34px;font-size:12px;background:#fffefbcc;border:1px solid #cfdbdc;border-bottom:2px solid var(--piece);color:var(--piece);text-align:left;max-width:100%}.memory-chip>span{min-width:0;overflow-wrap:anywhere}.memory-chip .source-symbol{width:23px;height:23px;flex:none;color:var(--piece)}.source-symbol>svg,.source-symbol .glyph,.source-symbol img{width:100%;height:100%;display:block;object-fit:contain}.source-symbol .printed{font:24px JP,sans-serif}.memory-text{font-size:13px;line-height:1.65;margin:8px 0 0;color:#365663}.memory-links{display:flex;flex-wrap:wrap;gap:3px 14px;margin-top:6px}.memory-links>button{border:0;border-bottom:1px solid #c7d6db;border-radius:0;padding:3px 0;font-size:11px;min-height:28px;background:transparent;color:#6e7e80}.words{margin-top:15px}.words h3{font:12px Arial;color:#6d7d61;font-weight:400;margin:0 0 7px}.word-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.word{font-size:12px;border-left:2px solid #e3e8d9;padding:3px 10px;min-width:0}.word>b{font:21px JP,sans-serif}.word>span{font:13px/1.6 JP,sans-serif;display:block;margin-top:1px}.word .romaji{font-size:10px;margin-left:4px}.word p{line-height:1.5;margin:4px 0 0;font-size:11px;overflow-wrap:anywhere}.compare-strip{display:flex;flex-wrap:wrap;align-items:center;gap:5px 8px;margin-top:14px}.compare-strip button{display:flex;align-items:center;gap:5px;font-size:11px;padding:4px 7px;min-height:33px}.compare-strip .glyph{width:23px;height:23px}.slide-foot{display:flex;flex-wrap:wrap;gap:5px 16px;border-top:1px solid #e4e9dc;margin-top:14px;padding-top:6px}.slide-foot>button{font-size:10px;min-height:29px;border:0;background:transparent;padding:2px 0;color:#8a957c}.slide-foot .jp{font-size:15px}.note-box{margin-top:13px;border:1px solid #d1dbc8;background:#edf1e5;border-radius:5px;padding:12px 15px}.note-box>label{font:17px Georgia,serif;display:block;margin-bottom:6px}textarea{width:100%;background:#fffef9;border:1px solid #c4d1b8;border-radius:4px;padding:9px;font:14px/1.6 Arial,JP,sans-serif;color:#274132;resize:vertical}.note-box>p{font-size:9px;color:#7c8b6f;margin:3px 0}.actions,.downloads{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.actions button,.actions .button{font-size:11px}.button{display:inline-block}.note-box .actions{margin-top:5px}.note-box .actions>button,.note-box .actions>.button{font-size:10px;min-height:29px;padding:5px 9px}.downloads a{border:1px solid #bdcbb3;border-radius:5px;padding:9px 12px;font-size:12px;text-decoration:none;background:#fffef9}.route-list{padding:16px 0;font-size:12px}.route-list summary{cursor:pointer;color:#78886a}.route-list ol{columns:3;column-gap:25px;padding-left:25px}.route-list li{break-inside:avoid;margin:4px 0}.route-list button{border:0;min-height:30px;padding:3px;font-size:12px;background:transparent;text-align:left}footer{max-width:1050px;margin:auto;padding:20px 26px;border-top:1px solid #cdd8c3;color:#859277;font-size:9px;line-height:1.8}
/* Library and research remain separate from the compact study card. */
.section-title h2{font:32px Georgia,serif;font-weight:400;margin:20px 0 12px}.section-title p{max-width:800px;color:#64765b}.search{font-size:12px;display:block;margin:20px 0}.search input{display:block;width:100%;border:1px solid #bfcdb3;background:#fffef9;border-radius:5px;padding:11px;color:#244333;margin-top:6px}.library-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:15px}.library-filters button{font-size:12px}.library-filters button.active{background:#284f3e;color:white}#libraryGrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.library-node{padding:12px 9px;text-align:left}.library-node .glyph{width:62px;height:62px;margin:0 auto 9px}.library-node b{font-size:12px;display:block}.library-node small{font:10px/1.7 Arial;color:#6d7e5d;display:block;margin-top:5px}#familyDetail{margin-top:25px}.family-shell{border:1px solid #c4d2b9;padding:22px;background:#fffef9;border-radius:6px}.family-shell h3{font:26px Georgia,serif;font-weight:400;margin:0 0 9px}.family-title{display:flex;gap:18px;align-items:center}.family-title .glyph{width:85px;height:85px;flex:none}.family-shell p{font-size:13px}.variants{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.variant{border:1px solid #d5e0cb;padding:8px;max-width:150px;font-size:10px}.variant .glyph{width:62px;height:62px}.variant p{font-size:10px;line-height:1.6}.family-uses{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:9px}.family-use{padding:8px;text-align:left;font-size:11px}.family-use .glyph{width:65px;height:65px;margin:auto}.family-use small{font-size:9px;display:block;color:#6e7e62}.research-block{border-top:1px solid #ced9c4;margin-top:27px;padding-top:20px}.research-block h3{font:25px Georgia,serif;font-weight:400;margin:0 0 12px}.research-block p{font-size:14px;line-height:1.85;max-width:900px}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:22px 0}.stat{background:#e9efdf;border:1px solid #c7d4b9;border-radius:6px;padding:16px}.stat strong{font:32px Georgia,serif;display:block}.stat span{font-size:12px}table{border-collapse:collapse;width:100%;font-size:12px;margin:12px 0}th,td{border-bottom:1px solid #d3ddc9;padding:9px;text-align:left}th{font-weight:500;color:#587047}#frontierChart svg{width:100%;max-width:800px;height:auto}#sourceLinks a{display:block;font-size:12px;margin:9px 0}#referenceBanner{background:#efe8d7;border-left:3px solid #b8a16d;padding:10px;font-size:12px;margin:10px 0}
/* Source text, conditions and detailed stroke annotations live in the modal. */
.book-shape{display:inline-block;vertical-align:-.12em;margin:0 .1em}.book-symbol{font-family:JP,sans-serif}.source-inline{display:inline-block;vertical-align:-.2em;height:1.2em}.source-inline>svg{height:1.2em;width:auto;max-width:2.5em}#heisigRefDialog{border:1px solid #b6c9a9;border-radius:8px;background:#fffef8;color:#244333;width:min(700px,calc(100% - 30px));max-height:85vh;padding:25px;overscroll-behavior:contain}#heisigRefDialog::backdrop{background:#17312780}#closeHeisigRef{position:sticky;float:right;top:0;margin:-12px -5px 0 0;border:0;font-size:24px;background:#fffef8;z-index:2;padding:0 7px}#heisigRefTitle{font:27px Georgia,serif;font-weight:400;margin:12px 28px 15px 0}#heisigRefBody{overflow-wrap:anywhere}#heisigRefBody>.glyph{width:100px;height:100px}#heisigRefBody .source-symbol{width:90px;height:90px;margin:15px 0}#heisigRefBody p{font-size:13px;line-height:1.85}#heisigRefBody blockquote{font:14px/1.9 Arial,JP,sans-serif;border-left:3px solid #b8cba5;padding-left:15px;margin:18px 0}#heisigRefBody .quiet{font-size:11px}#heisigRefBody h3{font:19px Georgia,serif;margin:24px 0 12px}#heisigRefBody details>summary{font-size:12px;cursor:pointer}#heisigRefBody .actions a{font-size:12px}.heisig-role-table td{vertical-align:top;font-size:12px}.heisig-role-table td:first-child{width:40%;font-weight:600;color:#86508e}.alignment-models{display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:center;margin:22px 0}.alignment-models>div{text-align:center}.alignment-models small{display:block;font:11px/1.6 Arial}.alignment-models .glyph,.alignment-models .source-symbol,#heisigRefBody .alignment-models .source-symbol{width:145px;height:145px;margin:12px auto}.alignment-status{background:#edf2e5;border-radius:4px;padding:9px 11px;font:11px/1.8 Arial!important}.stroke-pairs{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.stroke-pairs button{font-size:12px;padding:6px 10px;min-height:36px}.comparison-pieces{display:flex;flex-wrap:wrap;gap:15px}.comparison-pieces>div{width:100px;font-size:12px;text-align:center}.comparison-pieces .glyph{width:85px;height:85px;margin:auto auto 8px}.radical-model{font-size:70px!important;margin:0!important}.pad{width:65mm;min-height:113mm;max-width:100%;padding:5mm;border:1px solid #c5d3bb;background:white;margin:15px 0;font-size:10px}.pad>b{font-size:17px}.pad .glyph{width:70px;height:70px;margin:10px auto}.pad p{font-size:11px!important;line-height:1.7!important}
@media(max-width:750px){header{padding:12px 16px}.brand span{margin-left:0;display:block;margin-top:2px}header nav{font-size:10px;gap:12px}main{padding:8px 14px 25px}.slide-shell{padding:18px}.recognition{grid-template-columns:150px minmax(0,1fr);gap:18px}.big-glyph{width:128px;height:128px}.meaning{font-size:15px}.readings p{font-size:15px}.readings>div{grid-template-columns:26px minmax(0,1fr);gap:4px}.reading{display:block}.reading-separator{display:none}.reading .romaji{font-size:10px}.word-grid{gap:7px}.word{padding:2px 7px}.word>b{font-size:19px}.word>span{font-size:12px}.word .romaji{display:block;margin-left:0}.settings{grid-template-columns:1fr}.settings>*{grid-column:1}.route-list ol{columns:2}#libraryGrid{grid-template-columns:repeat(3,minmax(0,1fr))}.family-uses{grid-template-columns:repeat(3,minmax(0,1fr))}.family-shell{padding:17px}.stats{grid-template-columns:1fr 1fr}.stat:last-child{grid-column:1/-1}.section-title h2{font-size:28px}.research-block h3{font-size:23px}}
@media(max-width:450px){main{padding:7px 10px 22px}.slide-shell{padding:15px}.slide-heading h2{font-size:30px}.recognition{grid-template-columns:132px minmax(0,1fr);gap:13px;margin-top:10px}.big-glyph{width:112px;height:112px}.model-area{padding:8px}.model-tools{gap:2px}.model-tools button{padding:3px 5px;font-size:9px;min-height:28px}.standard-form{font-size:23px}.meaning{font-size:14px;margin-bottom:9px}.readings{gap:6px}.readings>div{display:block}.readings .field-label{font-size:9px}.readings p{font-size:14px;line-height:1.6}.reading .romaji{font-size:10px}.reading{display:inline-block;margin-right:6px}.component-images{font-size:11px;gap:2px 7px;margin-bottom:5px}.component-images>button{font-size:11px;min-height:25px}.piece-list{gap:5px;margin-top:11px}.piece-button{padding:4px 6px;gap:5px;font-size:11px}.piece-button .glyph{width:23px;height:23px}.writing{margin-top:12px}.step{width:49px;padding:2px}.step .glyph{width:43px;height:43px}.memory-box{padding:10px 11px;margin-top:12px}.memory-heading{margin-bottom:4px}.memory-chip{font-size:11px;padding:4px 6px;gap:5px}.memory-chip .source-symbol{width:21px;height:21px}.memory-text{font-size:12px;line-height:1.65}.new-shape-label{font-size:8px}.word-grid{grid-template-columns:1fr;gap:5px}.word{display:grid;grid-template-columns:83px minmax(0,1fr);column-gap:9px;padding:4px 9px}.word>b{grid-column:1;grid-row:1/3;align-self:center;font-size:21px}.word>span{grid-column:2;font-size:13px}.word .romaji{display:inline;margin-left:5px;font-size:10px}.word p{grid-column:2;margin:1px 0 0;font-size:11px}.compare-strip{gap:4px 6px}.compare-strip button{font-size:10px}.slide-foot{gap:2px 12px}.route-top{font-size:10px;gap:8px}.route-top button{font-size:9px;white-space:nowrap}.slide-nav select{font-size:12px;padding:8px}#libraryGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.family-uses{grid-template-columns:repeat(2,minmax(0,1fr))}.route-list ol{columns:1}#heisigRefDialog{padding:19px}.alignment-models{gap:10px}.alignment-models .glyph,.alignment-models .source-symbol,#heisigRefBody .alignment-models .source-symbol{width:110px;height:110px}.heisig-role-table td{font-size:11px;padding:8px}.notebook-preview .pad{font-size:10px}footer{padding:17px}}
@page{size:A4;margin:12mm}#printArea{display:none}@media print{header,main,footer,dialog{display:none!important}#printArea{display:block}#printArea .slide-shell{border:0;padding:0}#printArea .glyph,#printArea .memory-box{print-color-adjust:exact;-webkit-print-color-adjust:exact}#printArea .slide-foot,#printArea .model-tools button{display:none}#printArea .recognition{grid-template-columns:170px 1fr}#printArea .big-glyph{width:145px;height:145px}#printArea .slide-heading h2{font-size:26pt}#printArea .memory-box{break-inside:avoid}#printArea button{cursor:default}#printArea .words{break-inside:avoid}}
