.history{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px 30px 28px}.history__bar{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:16px;display:flex}.history__title{color:var(--ink-1);margin:0;font-size:15px;font-weight:800}.history__controls{flex-wrap:wrap;align-items:center;gap:16px;min-width:0;display:flex}.history__select{align-items:center;gap:8px;min-width:0;display:inline-flex}.history__select>.label{flex-shrink:0}.history__select select{background:var(--surface-sunken);border:2px solid var(--line-soft);border-radius:var(--radius-pill);color:var(--ink-1);font:inherit;field-sizing:content;text-overflow:ellipsis;white-space:nowrap;max-width:min(320px,100%);padding:6px 12px;font-size:12px;font-weight:700;overflow:hidden}.history__clear{border-radius:var(--radius-pill);border:2px solid var(--line-soft);min-height:40px;color:var(--ink-3);padding:6px 14px;font-size:12px;font-weight:700;transition:border-color .14s,color .14s}@media (hover:hover){.history__clear:hover{border-color:var(--pop-1);color:var(--pop-1)}}.history__legend{color:var(--ink-2);flex-wrap:wrap;gap:8px;margin:16px 0 8px;padding:0;font-size:12px;font-weight:700;list-style:none;display:flex}.history__legend li{border-radius:var(--radius-pill);background:var(--surface-sunken);align-items:center;gap:7px;padding:4px 12px 4px 9px;display:inline-flex}.history__swatch{border-radius:var(--radius-pill);vertical-align:middle;width:11px;height:4px;display:inline-block}.history__plot{position:relative}.history__grid{stroke:var(--line-soft);stroke-width:1.5px}.history__grid.is-mid{stroke:var(--ink-3);stroke-dasharray:2 6;stroke-linecap:round}.history__crosshair{stroke:var(--ink-3);stroke-width:1.5px;stroke-dasharray:2 5;stroke-linecap:round}.history__tick,.history__axis,.history__direct{font-family:var(--font-ui);fill:var(--ink-3);font-size:10px;font-weight:700}.history__tick{text-anchor:end}.history__direct{fill:var(--ink-2)}.history__empty{color:var(--ink-3);margin:26px 0 20px;font-size:13px}.history__tooltip{z-index:2;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);white-space:nowrap;pointer-events:none;margin-top:-12px;padding:10px 14px;font-size:12px;font-weight:700;line-height:1.7;position:absolute;transform:translate(-50%,-100%)}.history__tooltip p{margin:0}.history__tooltip-head{color:var(--ink-3);font-weight:400}.history__tooltip-script{font-family:var(--font-round);color:var(--ink-1);font-weight:800;margin-bottom:4px!important}@media (width<=720px){.history{padding:16px 14px 18px}.history__tooltip{white-space:normal;max-width:calc(100vw - 60px)}}.meter{align-items:flex-end;gap:3px;max-width:100%;height:34px;display:flex}.meter__tick{border-radius:var(--radius-pill);background:var(--line-soft);flex:0 5px;width:5px;min-width:2px;height:13px;transition:background 70ms linear,height 70ms linear}.meter__tick:nth-child(4n+1){height:22px}.meter__tick.is-lit{background:var(--pop-2)}.meter__tick.is-clip.is-lit{background:var(--pop-1)}@media (prefers-reduced-motion:reduce){.meter__tick{transition:none}}.recorder{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.recorder__script{text-align:center;background:radial-gradient(circle at 12% 18%, color-mix(in oklab, var(--pop-3) 9%, transparent), transparent 42%), radial-gradient(circle at 88% 82%, color-mix(in oklab, var(--pop-1) 9%, transparent), transparent 42%);padding:46px 40px 40px;scroll-margin-top:12px}.recorder__text{font-family:var(--font-round);letter-spacing:.01em;color:var(--ink-1);margin:0;font-size:clamp(16px,1.4vw + 11px,30px);font-weight:800;line-height:1.9}.recorder__text rt{color:var(--ink-3);font-size:.4em;font-weight:700}.recorder__panel{border-top:2px dashed var(--line-soft);flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:28px;padding:24px 34px 28px;display:flex}.recorder__gauges{flex-wrap:wrap;align-items:flex-end;gap:24px 36px;min-width:0;max-width:100%;display:flex}.recorder__gauges>div{min-width:0;max-width:100%}.recorder__gauges .label{margin:0 0 8px}.recorder__timer{min-width:96px}.recorder__elapsed{color:var(--ink-1);margin:0;font-size:32px;font-weight:800;line-height:1}.recorder__unit{color:var(--ink-3);margin-left:4px;font-size:12px;font-weight:700}.recorder__elapsed.is-warning{color:var(--pop-1)}.recorder__button{border:2px solid var(--line);border-radius:var(--radius-pill);background:var(--pop-1);color:#fff;box-shadow:var(--shadow);align-items:center;gap:11px;padding:16px 32px;font-size:15px;font-weight:800;transition:transform .12s cubic-bezier(.22,1.4,.4,1),box-shadow .12s,background .16s;display:inline-flex}@media (hover:hover){.recorder__button:hover:not(:disabled){box-shadow:5px 7px 0 var(--line);transform:translate(-1px,-2px)}}.recorder__button:active:not(:disabled){box-shadow:0 0 0 var(--line);transform:translate(3px,4px)}.recorder__button:disabled{background:var(--surface-sunken);color:var(--ink-3);box-shadow:var(--shadow-sm);cursor:progress}.recorder__button.is-recording{background:var(--ink-1)}.recorder__dot{background:currentColor;border-radius:50%;width:11px;height:11px}.recorder__button.is-recording .recorder__dot{background:var(--pop-1);animation:1.05s ease-in-out infinite blink}@keyframes blink{50%{opacity:.2;transform:scale(.72)}}.recorder__error{color:var(--pop-1);margin:0;padding:0 34px 24px;font-size:13px;font-weight:700}.recorder__bar{display:none}@media (width<=720px){.recorder__script{padding:26px 18px 22px}.recorder__panel{gap:18px;padding:18px 18px 20px}.recorder__error{padding:0 18px 18px}.recorder__panel .recorder__button{display:none}.recorder__bar{z-index:100;padding:10px 16px calc(10px + env(safe-area-inset-bottom));background:var(--surface);border-top:2px solid var(--line);align-items:center;gap:14px;display:flex;position:fixed;bottom:0;left:0;right:0}.recorder__bar .recorder__button{flex:1;justify-content:center;min-height:54px}.recorder__bar-elapsed{color:var(--ink-1);white-space:nowrap;margin:0;font-size:15px;font-weight:800;line-height:1}.recorder__bar-elapsed.is-warning{color:var(--pop-1)}.recorder__button--jump{background:var(--surface);color:var(--ink-1)}}@media (prefers-reduced-motion:reduce){.recorder__button,.recorder__button.is-recording .recorder__dot{transition:none;animation:none}}.collapsible{border-top:2px dashed var(--line-soft);padding:16px 34px 24px}.collapsible[open]{padding-bottom:32px}.collapsible>.collapsible__summary{border:2px solid var(--line-soft);border-radius:var(--radius-pill);cursor:pointer;min-height:44px;color:var(--ink-2);align-items:center;gap:8px;padding:7px 18px;font-size:12px;font-weight:700;list-style:none;display:inline-flex}.collapsible__summary::-webkit-details-marker{display:none}.collapsible__summary:before{content:"▶";font-size:9px;transition:transform .18s;display:inline-block}.collapsible[open]>.collapsible__summary:before{transform:rotate(90deg)}@media (hover:hover){.collapsible__summary:hover{border-color:var(--line);color:var(--ink-1)}}.collapsible__body{margin-top:18px}@media (width<=720px){.collapsible{padding:12px 18px 18px}.collapsible[open]{padding-bottom:24px}}@media (prefers-reduced-motion:reduce){.collapsible__summary:before{transition:none}}.tooltip{z-index:9998;background:var(--surface);border:2px solid var(--line);border-radius:var(--radius-sm);max-width:min(300px,100vw - 24px);box-shadow:var(--shadow-sm);color:var(--ink-1);pointer-events:none;padding:9px 14px;font-size:12px;font-weight:700;line-height:1.7;position:fixed;transform:translate(-50%,calc(-100% - 12px))}.tooltip--below{transform:translate(-50%,12px)}.tooltip__hint{color:var(--ink-2);font-weight:400}.term{font:inherit;letter-spacing:inherit;color:inherit;-webkit-text-decoration:underline dotted var(--ink-3) 1.5px;text-decoration:underline dotted var(--ink-3) 1.5px;text-underline-offset:3px;cursor:help;padding:0;display:inline;position:relative}.term:after{content:"";position:absolute;inset:-12px -8px}.share{padding:0 34px 6px;display:flex}.share__button{border:2px solid var(--line);border-radius:var(--radius-pill);background:var(--surface);box-shadow:var(--shadow-sm);color:var(--ink-1);align-items:center;gap:8px;padding:9px 18px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.share__button:active{box-shadow:none;translate:2px 2px}.share__logo{width:14px;height:14px}@media (width<=720px){.share{padding-left:18px;padding-right:18px}}.bars__title{margin:0 0 4px}.bars__note{color:var(--ink-3);margin:0 0 16px;font-size:12px;line-height:1.6}.bars__list{flex-direction:column;gap:9px;margin:0;padding:0;list-style:none;display:flex}.bars__row{cursor:default;grid-template-columns:6.5em 1fr 2.4em;align-items:center;gap:12px;display:grid}.bars__label{color:var(--ink-2);font-size:13px;font-weight:700}.bars__track{border-radius:var(--radius-pill);background:var(--surface-sunken);height:12px}.bars__fill{border-radius:var(--radius-pill);height:100%;transition:width .52s cubic-bezier(.22,1.2,.4,1);display:block}.bars__value{text-align:right;color:var(--ink-2);font-size:13px}@media (prefers-reduced-motion:reduce){.bars__fill{transition:none}}.heatmap__cells{flex-wrap:wrap;gap:6px;display:flex}.heatmap__cell{border-radius:var(--radius-sm);cursor:default;flex-direction:column;align-items:center;gap:1px;min-width:50px;padding:11px 8px 14px;transition:transform .16s cubic-bezier(.22,1.4,.4,1);display:flex;position:relative}@media (hover:hover){.heatmap__cell:hover{transform:translateY(-4px)rotate(-2deg)}}.heatmap__cell:focus-visible{transform:translateY(-4px)rotate(-2deg)}.heatmap__kana{font-family:var(--font-round);color:var(--ink-1);font-size:25px;font-weight:800;line-height:1.15}.heatmap__value{color:var(--ink-2);font-size:11px}.heatmap__bar{border-radius:var(--radius-pill);height:4px;position:absolute;inset:auto 10px 6px}.heatmap__legend{flex-wrap:wrap;align-items:center;gap:12px;margin-top:20px;display:flex}.heatmap__scale{gap:3px;display:inline-flex}.heatmap__scale span{border-radius:var(--radius-pill);width:28px;height:8px}.heatmap__ends{color:var(--ink-3);font-size:11px;font-weight:700}@media (width<=480px){.heatmap__cells{gap:4px}.heatmap__cell{min-width:42px;padding:8px 6px 12px}.heatmap__kana{font-size:20px}.heatmap__bar{inset:auto 8px 5px}}@media (prefers-reduced-motion:reduce){.heatmap__cell{transition:none}}.result{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.result__head{flex-wrap:wrap;align-items:center;gap:34px;padding:32px 34px 20px;display:flex}.result__heroblock{flex-direction:column;align-items:center;gap:12px;display:flex}.result__hero{border:2px solid var(--line);background:var(--surface-sunken);width:168px;height:168px;box-shadow:var(--shadow);border-radius:50%;flex-direction:column;justify-content:center;align-items:center;display:flex}.result__hero .label{color:var(--ink-2);margin:0 0 -4px}.result__total{font-family:var(--font-round);letter-spacing:-.02em;margin:0;font-size:66px;font-weight:800;line-height:1.05}.result__verdict{border-radius:var(--radius-pill);white-space:nowrap;margin:0;padding:5px 15px;font-size:12px;font-weight:700}.result__tiles{flex:340px;grid-template-columns:repeat(3,minmax(96px,1fr));gap:14px;margin:0;display:grid}.result__tile{background:var(--surface-sunken);border-radius:var(--radius-sm);padding:12px 14px 11px}.result__tile dt{color:var(--ink-2);margin:0 0 3px}.result__tile dd{color:var(--ink-1);margin:0;font-size:26px;font-weight:800;line-height:1.1}.result__tile-unit{color:var(--ink-3);margin-left:5px;font-size:11px;font-weight:700}.result__highlights{flex-wrap:wrap;gap:8px;margin:0;padding:0 34px 6px;list-style:none;display:flex}.result__highlight{border-radius:var(--radius-pill);padding:7px 14px;font-size:13px;font-weight:700}.result__highlight.is-good{background:color-mix(in oklab, var(--score-4) 14%, var(--surface));color:var(--score-4)}.result__highlight.is-warn{background:color-mix(in oklab, var(--pop-4) 14%, var(--surface));color:var(--pop-4)}.result__audio{padding:14px 34px 26px}.result__audio-title{color:var(--ink-2);margin:0 0 10px}.result__audio audio{width:100%;max-width:480px;display:block}.result__note{color:var(--ink-2);margin:0 0 14px;font-size:12px;line-height:1.8}.result__grid{grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:30px 34px;display:grid}.result__weakest,.result__misreadings{flex-direction:column;gap:7px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.result__weakest li,.result__misreadings li{background:var(--surface-sunken);border-radius:var(--radius-pill);justify-content:space-between;align-items:center;gap:12px;padding:7px 12px;display:flex}.result__weakest-phone{color:var(--ink-1);font-weight:700}.result__weakest-score{font-size:14px}.result__misreading-kind{color:var(--ink-3);font-size:11px;font-weight:700}.result__arrow{color:var(--ink-3);margin:0 7px}.result__empty{border-radius:var(--radius-pill);background:color-mix(in oklab, var(--score-4) 14%, var(--surface));color:var(--score-4);margin:0;padding:9px 14px;font-size:13px;font-weight:700}.result__table-scroll{-webkit-overflow-scrolling:touch;overflow-x:auto}.result__table table{border-collapse:collapse;width:100%;min-width:480px;font-family:var(--font-mono);font-size:11px}.result__table caption{text-align:left;color:var(--ink-3);margin-bottom:10px;font-size:12px}.result__table th,.result__table td{text-align:left;border-bottom:1px solid var(--line-soft);color:var(--ink-2);padding:6px 10px 6px 0}.result__table th{color:var(--ink-3);font-weight:700}.result__recognized{font-family:var(--font-mono);color:var(--ink-2);word-break:break-all;flex-direction:column;gap:6px;margin:18px 0 0;font-size:11px;display:flex}@media (width<=720px){.result__head{gap:22px;padding:24px 18px 16px}.result__highlights,.result__audio{padding-left:18px;padding-right:18px}.result__grid{gap:22px}}@media (width<=480px){.result__head{flex-direction:column;align-items:center}.result__hero{width:128px;height:128px}.result__total{font-size:50px}.result__tiles{grid-template-columns:repeat(2,minmax(96px,1fr));width:100%}.result__highlights{justify-content:center}}.picker__tabs{gap:8px;margin:0 0 14px;display:flex}.picker__tab{min-height:44px;color:var(--ink-3);border:2px solid var(--line-soft);border-radius:var(--radius-pill);background:0 0;padding:9px 18px;font-size:13px;font-weight:700;transition:border-color .15s,color .15s}@media (hover:hover){.picker__tab:hover{border-color:var(--line);color:var(--ink-1)}}.picker__tab.is-active{color:var(--pop-1);border-color:var(--pop-1)}.picker__list{grid-template-columns:repeat(auto-fill,minmax(208px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.picker__card{text-align:left;background:var(--surface);border:2px solid var(--line-soft);border-radius:var(--radius-sm);flex-direction:column;gap:7px;width:100%;height:100%;padding:14px 16px 13px;transition:transform .15s cubic-bezier(.22,1.4,.4,1),border-color .15s,box-shadow .15s;display:flex}@media (hover:hover){.picker__card:hover:not(:disabled){border-color:var(--line);box-shadow:var(--shadow-sm);transform:translate(-1px,-2px)}}.picker__card:disabled{opacity:.55;cursor:not-allowed}.picker__card.is-selected{border-color:var(--line);box-shadow:var(--shadow);transform:translate(-2px,-3px)}.picker__text{font-family:var(--font-round);color:var(--ink-1);font-size:clamp(13px,1vw + 7px,15px);font-weight:700;line-height:1.9}.picker__text rt{color:var(--ink-3);font-size:.55em;font-weight:700}.picker__meta{color:var(--ink-3);align-items:center;gap:10px;margin-top:auto;font-size:11px;display:flex}.picker__difficulty{gap:3px;display:inline-flex}.picker__difficulty span{border-radius:var(--radius-pill);background:var(--line-soft);width:13px;height:5px}.picker__difficulty span.is-on{background:var(--pop-4)}@media (width<=480px){.picker__tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;flex-wrap:nowrap;margin-left:-16px;margin-right:-16px;padding:2px 16px;overflow-x:auto}.picker__tabs::-webkit-scrollbar{display:none}.picker__tab{white-space:nowrap;flex:none}}@media (prefers-reduced-motion:reduce){.picker__card{transition:none}}.app{max-width:1040px;margin:0 auto;padding:0 24px 96px}.app__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;padding:56px 0 28px;display:flex}.app__title{font-family:var(--font-round);letter-spacing:.02em;color:var(--ink-1);margin:0;font-size:clamp(30px,4.6vw,44px);font-weight:800;line-height:1.15}.app__title:after{content:"";border-radius:var(--radius-pill);background:var(--pop-1);width:74px;height:7px;margin-top:10px;display:block}.app__privacy{background:var(--surface);border:2px solid var(--line-soft);border-radius:var(--radius-pill);color:var(--ink-2);align-items:center;gap:8px;margin:0;padding:9px 18px;line-height:1.6;display:inline-flex}.app__privacy:before{content:"";background:var(--pop-2);border-radius:50%;flex:none;width:9px;height:9px}@media (width<=720px){.app{padding:0 16px calc(96px + env(safe-area-inset-bottom))}.app__header{padding:28px 0 20px}.app__privacy{border-radius:var(--radius-sm);align-items:flex-start}.app__privacy:before{margin-top:7px}}.app__main{flex-direction:column;gap:34px;padding-top:8px;display:flex}.app__result-anchor{scroll-margin-top:16px}@media (width<=720px){.app__main{gap:22px}}.app__error{background:color-mix(in oklab, var(--pop-1) 12%, var(--surface));border:2px solid var(--pop-1);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);color:var(--ink-1);margin:0;padding:15px 20px;font-size:14px;font-weight:700}:root{--bg:#fff6ec;--surface:#fff;--surface-sunken:#fdf0e2;--line:#221c1a;--line-soft:#ecdfd1;--ink-1:#221c1a;--ink-2:#6d605a;--ink-3:#a4948b;--pop-1:#f2385a;--pop-2:#00968f;--pop-3:#6d4aff;--pop-4:#c96a10;--series-total:var(--pop-1);--series-accuracy:var(--pop-2);--series-speed:var(--pop-3);--series-fluency:var(--pop-4);--score-0:#dd1f58;--score-1:#cf6e08;--score-2:#978d84;--score-3:#0b9670;--score-4:#00805e;--font-round:"Hiragino Maru Gothic ProN", "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", YuGothic, "Noto Sans JP", sans-serif;--font-ui:"Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", YuGothic, "Noto Sans JP", sans-serif;--font-mono:ui-monospace, "SF Mono", Menlo, Monaco, monospace;--radius:22px;--radius-sm:14px;--radius-pill:999px;--shadow:4px 5px 0 var(--line);--shadow-sm:3px 3px 0 var(--line)}*,:before,:after{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink-1);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.7}body:before{content:"";z-index:-1;pointer-events:none;background-image:radial-gradient(var(--line-soft) 1.5px, transparent 1.5px);background-size:22px 22px;position:fixed;inset:0}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:none}button:focus-visible,[tabindex]:focus-visible,summary:focus-visible{outline:3px solid var(--pop-3);outline-offset:3px;border-radius:6px}.card{background:var(--surface);border:2px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.rule{border-top:2px dashed var(--line-soft);height:0}.label{letter-spacing:.04em;color:var(--ink-2);font-size:11px;font-weight:700;display:inline-block}.readout{font-variant-numeric:tabular-nums;font-weight:700}@keyframes pop-in{0%{opacity:0;transform:translateY(14px)scale(.97)}to{opacity:1;transform:none}}.rise{animation:.46s cubic-bezier(.22,1.4,.4,1) both pop-in}@media (prefers-reduced-motion:reduce){.rise{animation:none}}
