:root{--text:#9c9184;--text-h:#2e2a26;--text-faint:#a89e90;--bg:#fbf6ee;--bg-page:#f3eee6;--surface:#fff;--border:#e3d5c4;--code-bg:#fbf6ee;--placeholder:#c4baac;--coral:#ff7a6b;--coral-tint:#ffe7e2;--coral-hover:#e85f4f;--teal:#23b5a6;--teal-tint:#d6f3ef;--amber:#ffc24b;--cheek:#ffc7bf;--track:#efe7dc;--accent:var(--coral);--accent-bg:var(--coral-tint);--accent-border:#ff7a6b80;--shadow-card:0 18px 38px #785a3c1f;--shadow-frame:0 30px 60px #785a5033;--shadow-small:0 4px 12px #785a3c1a;--shadow-tile:0 8px 16px #785a3c24;--display:"Fredoka", sans-serif;--kana-font:"Zen Maru Gothic", sans-serif;--sans:"Nunito Sans", sans-serif;--heading:"Fredoka", sans-serif;--mono:ui-monospace, Consolas, monospace;font:16px/145% var(--sans);letter-spacing:.18px;color:var(--text);background:var(--bg-page);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{box-sizing:border-box;flex-direction:column;min-height:100svh;display:flex}body{margin:0}h1,h2{font-family:var(--heading);color:var(--text-h);font-weight:600}p{margin:0}code{font-family:var(--mono);color:var(--text-h);background:var(--code-bg);border-radius:4px;padding:4px 8px;font-size:15px;line-height:135%;display:inline-flex}@keyframes home-floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.home-page{background:radial-gradient(circle at 1px 1px, #785a3c17 1px, transparent 0) 0 0 / 26px 26px, var(--bg-page);box-sizing:border-box;flex-direction:column;flex:1;align-items:center;padding:44px 24px 64px;display:flex}.home-header{align-items:center;gap:18px;width:100%;max-width:880px;margin-bottom:34px;display:flex}.home-mascot{background:var(--coral);border-radius:52% 48% 50% 50%/60% 60% 40% 40%;flex-shrink:0;width:66px;height:60px;animation:3.4s ease-in-out infinite home-floaty;position:relative;box-shadow:0 10px 22px #ff7a6b66}.home-mascot-eye{background:var(--text-h);border-radius:50%;width:9px;height:11px;position:absolute;top:24px}.home-mascot-eye--left{left:19px}.home-mascot-eye--right{right:19px}.home-mascot-cheek{background:var(--cheek);border-radius:50%;width:12px;height:6px;position:absolute;top:37px}.home-mascot-cheek--left{left:11px}.home-mascot-cheek--right{right:11px}.home-page h1{font-family:var(--display);color:var(--text-h);margin:0;font-size:34px;font-weight:700}.home-subtitle{color:var(--text);margin:4px 0 0;font-size:16px}.home-font-picker{background:var(--surface);box-sizing:border-box;width:100%;max-width:880px;box-shadow:var(--shadow-card);text-align:left;border-radius:20px;margin-bottom:24px;padding:18px 22px}.home-font-picker .home-label{margin-bottom:10px}.home-font-picker-row{flex-wrap:wrap;align-items:stretch;gap:12px;display:flex}.home-font-picker select{font:inherit;background:var(--bg);color:var(--text-h);box-sizing:border-box;cursor:pointer;border:none;border-radius:14px;flex:220px;padding:13px 16px;font-size:16px}.home-font-preview{background:var(--bg);color:var(--text-h);box-sizing:border-box;white-space:nowrap;text-overflow:ellipsis;border-radius:14px;flex:220px;justify-content:center;align-items:center;padding:13px 16px;font-size:20px;display:flex;overflow:hidden}.home-sections{flex-wrap:wrap;gap:24px;width:100%;max-width:880px;display:flex}.home-sections+.home-sections{margin-top:24px}.home-card{background:var(--surface);box-sizing:border-box;box-shadow:var(--shadow-card);text-align:left;border-radius:26px;flex:320px;padding:26px}.home-card-head{align-items:center;gap:14px;margin-bottom:22px;display:flex}.home-card-icon{width:62px;height:62px;font-family:var(--kana-font);border-radius:20px;flex-shrink:0;justify-content:center;align-items:center;font-size:34px;font-weight:900;display:flex}.home-card--coral .home-card-icon{background:var(--coral-tint);color:var(--coral)}.home-card--teal .home-card-icon{background:var(--teal-tint);color:var(--teal)}.home-card--wide{flex:100%}.home-card--wide .home-card-icon{font-family:var(--display);font-size:24px}.home-select{min-width:0;font:inherit;background:var(--bg);color:var(--text-h);box-sizing:border-box;cursor:pointer;border:none;border-radius:14px;flex:1;padding:13px 16px;font-size:16px}.home-card-title{font-family:var(--display);color:var(--text-h);font-size:21px;font-weight:600}.home-card-subtitle{color:var(--text-faint);font-size:14px}.home-label{text-transform:uppercase;letter-spacing:.04em;color:var(--text);margin-bottom:8px;font-size:13px;font-weight:700;display:block}.home-option-row{align-items:stretch;gap:10px;margin-bottom:18px;display:flex}.home-option-row:last-child{margin-bottom:0}.home-hint{color:var(--text-faint);margin:10px 0 0;font-size:13px;line-height:1.5}.home-option-row .home-hint{flex:1;align-self:center;min-width:0;margin:0}.home-option-row input,.home-option-row textarea{min-width:0;font:inherit;background:var(--bg);color:var(--text-h);box-sizing:border-box;resize:none;border:none;border-radius:14px;flex:1;padding:13px 16px;font-size:16px}.home-option-row textarea{font-family:var(--kana-font)}.home-option-row textarea.home-csv{font-family:var(--mono);line-height:1.5}.home-option-row input::placeholder,.home-option-row textarea::placeholder{color:var(--placeholder);font-family:var(--kana-font)}.home-option-row button{min-height:50px;font-family:var(--display);cursor:pointer;border:none;border-radius:14px;flex-shrink:0;padding:0 22px;font-size:16px;font-weight:600}.home-card--coral .home-btn-primary{background:var(--coral);color:#fff;box-shadow:0 8px 16px #ff7a6b59}.home-card--coral .home-btn-secondary{background:var(--coral-tint);color:var(--coral)}.home-card--teal .home-btn-primary{background:var(--teal);color:#fff;box-shadow:0 8px 16px #23b5a652}.home-card--teal .home-btn-secondary{background:var(--teal-tint);color:var(--teal)}@keyframes kana-floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes kana-pulse-ring{0%,to{box-shadow:0 0 #ff7a6b59}50%{box-shadow:0 0 0 6px #ff7a6b00}}.kana-page{background:var(--bg);box-sizing:border-box;flex-direction:column;flex:1;display:flex;position:relative}.kana-header{align-items:center;gap:16px;padding:22px 40px 4px;display:flex}.kana-back-btn{background:var(--surface);width:40px;height:40px;color:var(--text);box-shadow:var(--shadow-small);cursor:pointer;border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;font-size:22px;text-decoration:none;display:flex}.kana-header-info{flex:1;min-width:0}.kana-header-title{font-family:var(--display);color:var(--text-h);font-size:19px;font-weight:600}.kana-progress-row{align-items:center;gap:12px;margin-top:8px;display:flex}.kana-progress-track{background:var(--track);border-radius:999px;flex:1;max-width:320px;height:12px;overflow:hidden}.kana-progress-fill{background:var(--coral);border-radius:999px;height:100%;transition:width .3s}.kana-progress-label{font-family:var(--display);color:var(--text);white-space:nowrap;font-size:14px;font-weight:600}.kana-mascot{background:var(--coral);border-radius:52% 48% 50% 50%/60% 60% 40% 40%;flex-shrink:0;width:52px;height:48px;animation:3.4s ease-in-out infinite kana-floaty;position:relative;box-shadow:0 8px 18px #ff7a6b5c}.kana-mascot-eye{background:var(--text-h);border-radius:50%;width:7px;height:9px;position:absolute;top:19px}.kana-mascot-eye--left{left:15px}.kana-mascot-eye--right{right:15px}.kana-mascot-cheek{background:var(--cheek);border-radius:50%;width:9px;height:5px;position:absolute;top:29px}.kana-mascot-cheek--left{left:9px}.kana-mascot-cheek--right{right:9px}.kana-split{flex:1;padding:14px 40px 40px;display:flex;position:relative}.kana-left{box-sizing:border-box;flex:none;padding-right:34px}.kana-right{border-left:1px dashed var(--border);box-sizing:border-box;flex:1;min-width:0;padding-left:34px;position:relative}.kana-target{align-items:center;gap:9px;display:grid}.kana-target-cell--n{opacity:.7;border-style:solid}.kana-target-cell--just-placed{color:var(--coral);animation:1.6s ease-in-out infinite kana-pulse-ring;background:var(--coral-tint)!important;border-color:var(--coral)!important;border-style:solid!important}.kana-target-corner{visibility:hidden}.kana-target-header{font-family:var(--display);color:#c0b5a5;justify-content:center;align-items:center;font-size:14px;display:flex}.kana-target-cell{border:2px dashed var(--border);box-sizing:border-box;background:#ff7a6b0d;border-radius:14px;width:58px;height:58px}.kana-target-cell--empty{background:0 0;border:none}.kana-tiles-label{color:var(--text);margin-bottom:6px;font-size:13px;font-weight:700}.kana-pile{aspect-ratio:480/430;width:100%;max-width:480px;position:relative}.kana-card{font-family:var(--kana-font);color:var(--text-h);-webkit-user-select:none;user-select:none;border-radius:14px;justify-content:center;align-items:center;font-size:26px;font-weight:700;display:flex}.kana-card--pile{width:58px;height:58px;box-shadow:var(--shadow-tile);cursor:grab;touch-action:none;border-radius:16px;position:absolute}.kana-card--pile:active{cursor:grabbing}.kana-card--placed{box-shadow:var(--shadow-small)}.kana-card--preplaced{background:var(--surface);color:var(--text-faint);box-shadow:var(--shadow-small);cursor:default}.kana-card--shake{animation:.3s kana-shake}@keyframes kana-shake{0%,to{translate:0}20%{translate:-6px}40%{translate:6px}60%{translate:-4px}80%{translate:4px}}.kana-confetti{pointer-events:none;z-index:1000;position:fixed;inset:0;overflow:hidden}.kana-confetti-piece{opacity:.9;width:8px;height:14px;animation-name:kana-confetti-fall;animation-timing-function:ease-in;animation-fill-mode:forwards;position:absolute;top:-20px}@keyframes kana-confetti-fall{0%{opacity:1;transform:translate(0)rotate(0)}to{transform:translate(var(--drift), 110vh) rotate(540deg);opacity:.8}}.kana-dialog-backdrop{z-index:1001;background:#2e2a2673;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.kana-dialog{background:var(--surface);text-align:center;min-width:280px;box-shadow:var(--shadow-frame);border-radius:26px;padding:32px}.kana-dialog h2{font-family:var(--display);margin:0 0 12px;font-size:22px}.kana-dialog p{color:var(--text);margin:0 0 24px}.kana-dialog-actions{flex-direction:column;gap:10px;display:flex}.kana-dialog-actions button{font-family:var(--display);background:var(--coral);color:#fff;cursor:pointer;border:none;border-radius:14px;padding:12px 20px;font-size:16px;font-weight:600;box-shadow:0 8px 16px #ff7a6b59}.kana-dialog-actions .kana-dialog-secondary{background:var(--coral-tint);color:var(--coral);box-shadow:none}@keyframes fc-floaty{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}@keyframes fc-pop{0%{opacity:0;transform:scale(.6)}70%{transform:scale(1.08)}to{opacity:1;transform:scale(1)}}.fc-page{background:var(--bg);box-sizing:border-box;flex-direction:column;flex:1;display:flex;position:relative}.fc-header{align-items:center;gap:16px;padding:22px 40px 4px;display:flex}.fc-back-btn{background:var(--surface);width:40px;height:40px;color:var(--text);box-shadow:var(--shadow-small);cursor:pointer;border-radius:14px;flex-shrink:0;justify-content:center;align-items:center;font-size:22px;text-decoration:none;display:flex}.fc-header-info{flex:1;min-width:0}.fc-header-title{font-family:var(--display);color:var(--text-h);font-size:19px;font-weight:600}.fc-progress-row{align-items:center;gap:12px;margin-top:8px;display:flex}.fc-progress-track{background:var(--track);border-radius:999px;flex:1;max-width:320px;height:12px;overflow:hidden}.fc-progress-fill{background:var(--teal);border-radius:999px;height:100%;transition:width .3s}.fc-progress-label{font-family:var(--display);color:var(--text);white-space:nowrap;font-size:14px;font-weight:600}.fc-mascot{background:var(--teal);border-radius:52% 48% 50% 50%/60% 60% 40% 40%;flex-shrink:0;width:52px;height:48px;animation:3.4s ease-in-out infinite fc-floaty;position:relative;box-shadow:0 8px 18px #23b5a65c}.fc-mascot-eye{background:var(--text-h);border-radius:50%;width:7px;height:9px;position:absolute;top:19px}.fc-mascot-eye--left{left:15px}.fc-mascot-eye--right{right:15px}.fc-mascot-cheek{background:var(--cheek);border-radius:50%;width:9px;height:5px;position:absolute;top:29px}.fc-mascot-cheek--left{left:9px}.fc-mascot-cheek--right{right:9px}.fc-stage{box-sizing:border-box;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:28px;padding:24px 24px 48px;display:flex}.fc-card{aspect-ratio:3/2;cursor:pointer;perspective:1600px;width:min(560px,100%);max-height:60vh;font:inherit;background:0 0;border:none;padding:0}.fc-card-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .5s cubic-bezier(.4,.15,.2,1);position:relative}.fc-card--flipped .fc-card-inner{transform:rotateY(180deg)}.fc-card-face{box-sizing:border-box;background:var(--surface);box-shadow:var(--shadow-card);backface-visibility:hidden;border-radius:28px;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:28px 28px 48px;display:flex;position:absolute;inset:0;overflow:hidden}.fc-card-face--front{border-top:6px solid var(--teal)}.fc-card-face--back{border-top:6px solid var(--coral);transform:rotateY(180deg)}.fc-card-word{font-family:var(--kana-font);color:var(--text-h);text-align:center;white-space:pre-line;overflow-wrap:anywhere;max-width:100%;font-weight:700;line-height:1.15}.fc-card-reading{font-family:var(--kana-font);color:var(--teal);text-align:center;overflow-wrap:anywhere;max-width:100%}.fc-card-meaning{font-family:var(--kana-font);color:var(--text-h);text-align:center;white-space:pre-line;overflow-wrap:anywhere;max-width:100%;font-weight:700;line-height:1.3}.fc-card-hint{text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);font-size:12px;font-weight:700;position:absolute;bottom:16px}.fc-controls{gap:12px;width:min(440px,100%);display:flex}.fc-controls button{font-family:var(--display);cursor:pointer;background:var(--surface);color:var(--text-h);box-shadow:var(--shadow-small);border:none;border-radius:16px;flex:1;padding:14px 16px;font-size:16px;font-weight:600}.fc-controls button:disabled{opacity:.45;cursor:default}.fc-flip-btn{background:var(--teal-tint)!important;color:var(--teal)!important}.fc-nav-btn--primary{background:var(--teal)!important;color:#fff!important;box-shadow:0 8px 16px #23b5a652!important}.fc-dialog-backdrop{z-index:1001;box-sizing:border-box;background:#2e2a2673;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.fc-dialog{background:var(--surface);text-align:center;min-width:280px;max-width:360px;box-shadow:var(--shadow-frame);border-radius:26px;padding:32px}.fc-dialog-badge{font-size:44px;animation:.4s both fc-pop}.fc-dialog h2{font-family:var(--display);margin:8px 0 12px;font-size:22px}.fc-dialog p{color:var(--text);margin:0 0 24px}.fc-dialog-actions{flex-direction:column;gap:10px;display:flex}.fc-dialog-btn{font-family:var(--display);background:var(--teal);color:#fff;cursor:pointer;border:none;border-radius:14px;padding:12px 20px;font-size:16px;font-weight:600;text-decoration:none;display:block;box-shadow:0 8px 16px #23b5a652}.fc-dialog-btn--ghost{background:var(--teal-tint);color:var(--teal);box-shadow:none}.fc-missing-note{color:var(--coral);margin-top:8px;font-size:13px;line-height:1.4}.fc-empty{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:40px 24px;display:flex}.fc-empty-title{font-family:var(--display);color:var(--text-h);margin:0;font-size:20px;font-weight:600}.fc-empty-text{color:var(--text-faint);max-width:340px;margin:0;font-size:15px;line-height:1.5}@media (width<=560px){.fc-header{padding:18px 20px 4px}}
