:root{--bg:#f4f1ea;--ink:#1c1916;--muted:#6d665e;--line:#e3dcd2;--card:#fffcf7;--accent:#8f2d1b;--n2:#1f4f4a;--n1:#8a3b12;--chip:#efe8dc}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:Noto Sans,Noto Sans JP,sans-serif;background:#e6e0d6;color:var(--ink);line-height:1.5;-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}button,input{font:inherit}.item,.kanji-card,.level-card,.mark,.tabbar a,button{touch-action:manipulation}.app{width:min(480px,100%);min-height:100dvh;background:var(--bg);position:relative;padding-top:calc(57px + env(safe-area-inset-top))}.app,.wrap{margin:0 auto}.wrap{width:min(480px,calc(100% - 28px))}header.site{position:fixed;top:0;left:50%;z-index:20;width:min(480px,100%);transform:translateX(-50%);border-bottom:1px solid var(--line);background:rgba(255,252,247,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding-top:env(safe-area-inset-top)}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px}.brand{font-weight:700;letter-spacing:.02em;font-size:18px}.brand small{display:block;font-weight:500;color:var(--muted);font-size:11px}.account{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--muted);min-width:0}.account span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}.account a,button.chip{padding:8px 12px;border-radius:999px;background:var(--chip);font-size:14px;color:var(--ink)}button.chip{border:0;cursor:pointer}.chips a.on,button.chip.on{background:var(--ink);color:white}.text-link{color:var(--accent);text-decoration:underline}main{padding:18px 0 12px}h1{font-size:28px;line-height:1.25;margin:0 0 6px;font-weight:700}.lead{color:var(--muted);margin:0 0 18px}.levels{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden}.level-card{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:14px 16px;border-bottom:1px solid var(--line)}.levels .level-card:last-child{border-bottom:0}.level-card strong{font-size:20px}.level-card span,.level-card:after{color:var(--muted)}.level-card:after{content:"›";font-size:22px;line-height:1}.level-card.n2 strong{color:var(--n2)}.level-card.n1 strong{color:var(--n1)}form.search{display:flex;gap:8px;margin:14px 0}form.search input{flex:1 1;min-width:0;border:1px solid var(--line);background:white;border-radius:14px;padding:14px;font-size:16px}.ghost,form.search button{border:0;background:var(--ink);color:white;border-radius:14px;padding:14px 16px;cursor:pointer;min-height:48px}.chips{display:flex;gap:8px;margin:0 -14px 14px;padding:0 14px 2px;overflow-x:auto;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}.chips a,button.chip{flex:0 0 auto;background:var(--chip);border-radius:999px;padding:8px 12px;font-size:14px}.chips a.on{background:var(--ink);color:white}.list{display:grid;grid-gap:10px;gap:10px}.item{display:block;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:14px 16px;min-height:72px}.item .top{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.pattern{font-size:20px;font-weight:650}.reading{color:var(--muted);font-size:13px}.meaning{margin:4px 0 0}.tag{font-size:12px;color:var(--muted);background:var(--chip);border-radius:999px;padding:2px 8px;white-space:nowrap}article.detail{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:24px}.kicker{color:var(--accent);font-size:13px;font-weight:700;letter-spacing:.04em}.detail h1{font-size:36px}.detail .reading{font-size:15px;margin-bottom:12px}.meaning-lg{font-size:18px;margin:0 0 20px}section.block{margin-top:22px}section.block h2{font-size:14px;margin:0;color:var(--muted);font-weight:700}.section-head{display:flex;align-items:center;justify-content:space-between;margin:0 0 8px}.section-head a{color:var(--accent);font-size:14px;font-weight:600}pre.form{white-space:pre-wrap;font-family:Noto Sans JP,Noto Sans,sans-serif;background:#f7f3ec;border-radius:12px;padding:12px 14px;margin:0}.example{border-top:1px solid var(--line);padding:12px 0}.example .jp{font-size:18px}.kanji-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:10px;gap:10px}.kanji-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;min-height:132px}.kanji-card .ch{font-size:40px;line-height:1.1;font-weight:650}.entry{display:flex;gap:8px;align-items:stretch}.entry .item,.entry .kanji-card{flex:1 1}.mark{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:72px;background:var(--card);border:1px solid var(--line);border-radius:14px;font-size:12px;color:var(--muted);padding:8px}.mark input{width:22px;height:22px;margin:0}article.detail .mark{flex-direction:row;width:-moz-fit-content;width:fit-content;margin-bottom:12px}.kanji-card>a{display:block;color:inherit}.kanji-card .mark{flex-direction:row;min-width:0;border:0;background:transparent;padding:0 0 8px}button.quiz-card{width:100%;text-align:left;color:inherit;cursor:pointer}.quiz-kanji{font-size:40px;line-height:1.1}.quiz-hidden{color:var(--muted)}.example-line{font-size:16px;line-height:1.45;color:var(--ink)}.ghost.next{display:block;width:100%;margin-top:10px}.kanji-hero{font-size:72px;line-height:1}.site-foot{color:var(--muted);font-size:12px;line-height:1.45;padding:8px 0 calc(84px + env(safe-area-inset-bottom))}.pager{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:16px}.pager a{color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px;min-height:44px}.empty{color:var(--muted)}.tabbar{position:fixed;z-index:30;left:50%;bottom:0;width:min(480px,100%);transform:translateX(-50%);display:grid;grid-template-columns:repeat(5,1fr);background:rgba(255,252,247,.96);border-top:1px solid var(--line);padding:6px 4px calc(6px + env(safe-area-inset-bottom));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.tabbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:52px;border-radius:12px;color:var(--muted);font-size:11px;font-weight:600}.tabbar a.on{color:var(--accent);background:#f6ebe4}.tabbar svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}@media (min-width:520px){body{padding:16px 0}.app{min-height:calc(100dvh - 32px);border-radius:28px;box-shadow:0 18px 50px rgba(40,30,16,.12)}header.site{top:16px;border-radius:28px 28px 0 0}.tabbar{bottom:16px;border-radius:0 0 28px 28px}}