@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--ease-in:cubic-bezier(.4, 0, 1, 1);--ease-out:cubic-bezier(0, 0, .2, 1);--ease-in-out:cubic-bezier(.4, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1)}}@layer base,components;@layer utilities{.fixed{position:fixed}.relative{position:relative}.block{display:block}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.lowercase{text-transform:lowercase}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}:root{color-scheme:light}*,:before,:after{box-sizing:border-box}body{background:var(--bg);margin:0}img{max-width:100%}[hidden]:not([hidden=until-found i]){display:none!important}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-ext-400-normal-DRk46D-x.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-400-normal-Bbz-b3yf.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/atkinson-hyperlegible-latin-400-normal-BrHNak5F.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-400-normal-BbWidj28.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-ext-700-normal-BoVPHkS0.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-ext-700-normal-CKkU2Dpt.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Atkinson Hyperlegible;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/atkinson-hyperlegible-latin-700-normal-GZI4o3u0.woff2) format("woff2"),url(/assets/atkinson-hyperlegible-latin-700-normal-BK6Glc0m.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}.grownup{margin-left:auto;align-self:center;flex:none;position:relative;isolation:isolate;overflow:hidden;background:transparent;color:var(--muted);border:2px solid var(--tile-border);border-radius:999px;padding:8px 16px;font-weight:800;font-size:.85rem;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none}.grownup .fill{position:absolute;inset:0;background:var(--tile-border);transform:scaleX(0);transform-origin:left;z-index:-1}.grownup span{position:relative}.grownup-modal{border:none;padding:0;background:transparent;width:min(560px,calc(100% - 32px));max-width:none;max-height:calc(100dvh - 32px);overflow:auto;overscroll-behavior:contain;color:inherit}.grownup-modal::backdrop{background:#00000073}:root:has(.character-writing){--paper:#EEF0E9;--surface:#FBFBF7;--ink:#262B33;--muted:#646D66;--soft:#DDE1D6;--rule:#4A78C2;--base:#D04A3C;--go:#2E9A58;--accent:#2F5FAF;--warn:#B8730F;--goSoft:#DCEFE2;--warnSoft:#F6E7CF;--accentSoft:#DFE7F5;--bg:var(--paper);--tile-border:var(--soft);--f-letter:"Kaiti SC","STKaiti","KaiTi","PingFang SC","Hiragino Sans GB","Noto Sans SC","Microsoft YaHei",sans-serif;--f-ui:"Atkinson Hyperlegible",system-ui,-apple-system,"Segoe UI",sans-serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]):has(.character-writing){--paper:#18201C;--surface:#212C26;--ink:#EEF1EA;--muted:#9BA89F;--soft:#2F3D35;--rule:#7FA6E6;--base:#F07F6F;--go:#5CCB8A;--accent:#8DB2F2;--warn:#E3A84A;--goSoft:#20402D;--warnSoft:#463517;--accentSoft:#24324A;color-scheme:dark}}:root[data-theme=dark]:has(.character-writing){--paper:#18201C;--surface:#212C26;--ink:#EEF1EA;--muted:#9BA89F;--soft:#2F3D35;--rule:#7FA6E6;--base:#F07F6F;--go:#5CCB8A;--accent:#8DB2F2;--warn:#E3A84A;--goSoft:#20402D;--warnSoft:#463517;--accentSoft:#24324A;color-scheme:dark}:root:has(.character-writing),:root:has(.character-writing) body{overscroll-behavior:none}.character-writing{height:100dvh;overflow:hidden;background:var(--paper);color:var(--ink);font-family:var(--f-ui);font-size:16px;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}:where(.character-writing) button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}.character-writing button:focus-visible,.character-writing select:focus-visible,.character-writing input:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.character-writing .app{height:100%;display:grid;grid-template-rows:auto auto auto 1fr auto;gap:12px;padding-block:12px;max-width:1100px;margin:0 auto;grid-template-areas:"head" "dots" "prompt" "slate" "ctrl"}.character-writing header{grid-area:head;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.character-writing .brand{display:flex;flex-direction:column;line-height:1.1;min-width:0}.character-writing .brand span{font-size:19px;font-weight:700}.character-writing .set-row{grid-area:dots;display:flex;flex-wrap:wrap;justify-content:center;gap:6px}.character-writing .dot{width:11px;height:11px;border-radius:50%;box-shadow:inset 0 0 0 2px var(--soft);transition:background .2s,box-shadow .2s}.character-writing .dot.done{background:var(--muted);box-shadow:none}.character-writing .prompt{grid-area:prompt;display:flex;align-items:center;gap:14px;min-height:76px}.character-writing .pic{width:76px;height:76px;flex:none;border-radius:18px;background:var(--surface);border:1px solid var(--soft);display:grid;place-items:center;font-size:56px}.character-writing .pic{font-family:var(--f-letter);font-weight:700;color:var(--accent);line-height:1}.character-writing .pic .dots{width:78%;height:auto;color:var(--accent)}.character-writing .say{width:64px;height:64px;flex:none;border-radius:50%;border:none;background:var(--accent);color:var(--surface);display:grid;place-items:center}.character-writing .say svg{width:30px;height:30px}.character-writing .ptext{min-width:0;display:flex;flex-direction:column;gap:2px}.character-writing .ptext small{font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700}.character-writing .ptext strong{font-size:22px;line-height:1.2;text-wrap:balance}.character-writing .ptext strong em{font-style:normal;font-family:var(--f-letter);font-size:30px;color:var(--accent)}.character-writing .slate{grid-area:slate;position:relative;min-height:0;background:var(--surface);border:1px solid var(--soft);border-radius:22px;overflow:hidden}.character-writing .slate.good{box-shadow:0 0 0 4px var(--go) inset}.character-writing .slate.miss{box-shadow:0 0 0 4px var(--warn) inset}.character-writing .slate>canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none;display:block}.character-writing .card,.character-writing .set-done{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center;background:var(--surface)}.character-writing :is(.card,.set-done) h1{margin:0;font-size:30px;text-wrap:balance}.character-writing :is(.card,.set-done) p{margin:0;color:var(--muted);max-width:34ch;line-height:1.45;font-size:17px}.character-writing .card .row{font-family:var(--f-letter);font-size:64px;letter-spacing:.18em;line-height:1}.character-writing .card .row span{color:var(--accent)}.character-writing .set-done .primaryBtn{transition:opacity .4s}.character-writing .set-done .primaryBtn:not(.ready){opacity:0}.character-writing .written{--tw:clamp(52px,15vw,100px);display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:calc(5 * var(--tw) + 32px)}.character-writing .written canvas{width:var(--tw);aspect-ratio:120/126;background:var(--paper);border:1px solid var(--soft);border-radius:10px;opacity:0;animation:character-writing-written .35s ease-out forwards;animation-delay:calc(var(--i) * 90ms)}@keyframes character-writing-written{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.character-writing .controls{grid-area:ctrl;display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:10px}.character-writing .controls button{min-height:60px;border-radius:16px;border:1px solid var(--soft);background:var(--surface);font-size:18px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px}.character-writing .controls button svg{width:24px;height:24px;flex:none}.character-writing .controls .primary{background:var(--go);border-color:var(--go);color:var(--surface)}.character-writing .controls button:disabled{opacity:.4;cursor:default}.character-writing .controls .primary.ready{animation:character-writing-ready 1.2s ease-in-out infinite}@keyframes character-writing-ready{0%,to{transform:scale(1);outline:3px solid transparent;outline-offset:0}50%{transform:scale(1.04);outline:3px solid var(--go);outline-offset:4px}}.character-writing .primaryBtn{min-height:60px;padding:0 34px;border-radius:16px;border:none;background:var(--go);color:var(--surface);font-size:20px;font-weight:700}.character-writing .grownup-modal{width:min(900px,calc(100% - 32px))}.character-writing .pin{background:var(--paper);border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:22px;-webkit-user-select:text;user-select:text}.character-writing .phead{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.character-writing .phead h2{margin:0;font-size:24px}.character-writing .ptabs{display:flex;gap:4px;width:fit-content;background:var(--surface);border:1px solid var(--soft);border-radius:12px;padding:3px}.character-writing .ptabs button{border:none;background:none;color:var(--muted);min-height:40px;padding:0 18px;border-radius:9px;font-weight:700;font-size:15px}.character-writing .ptabs button[aria-selected=true]{background:var(--ink);color:var(--surface)}.character-writing .phead button{margin-left:auto;min-height:44px;padding:0 18px;border-radius:12px;border:1px solid var(--soft);background:var(--surface);font-weight:700}.character-writing .sum{color:var(--muted);margin:0;line-height:1.5}.character-writing .banner{background:var(--warnSoft);border-radius:12px;padding:10px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.character-writing .banner button{border:none;background:none;text-decoration:underline;font-weight:700;padding:4px}.character-writing h3{margin:0 0 8px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.character-writing .tablewrap{overflow-x:auto;background:var(--surface);border:1px solid var(--soft);border-radius:16px}.character-writing table{border-collapse:collapse;width:100%;min-width:620px;font-variant-numeric:tabular-nums}.character-writing th,.character-writing td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--soft);font-size:15px;white-space:nowrap}.character-writing th{font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:700}.character-writing tr:last-child td{border-bottom:none}.character-writing td.L{font-family:var(--f-letter);font-size:30px;line-height:1;width:44px}.character-writing td.L small{font-family:var(--f-ui);font-size:13px;color:var(--muted)}.character-writing .bar{width:90px;height:8px;border-radius:4px;background:var(--soft);overflow:hidden}.character-writing .bar i{display:block;height:100%;background:var(--go)}.character-writing .chip{display:inline-block;padding:3px 10px;border-radius:999px;font-size:13px;font-weight:700;background:var(--soft);color:var(--muted)}.character-writing .chip.solid{background:var(--goSoft);color:var(--go)}.character-writing .chip.watch{background:var(--warnSoft);color:var(--warn)}.character-writing .chip.prac{background:var(--accentSoft);color:var(--accent)}.character-writing .byl{display:flex;flex-direction:column;gap:14px}.character-writing .byl-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}.character-writing .byl-head b{font-family:var(--f-letter);font-size:24px;line-height:1;color:var(--ink)}.character-writing .byl-head small{font-size:13px;color:var(--muted)}.character-writing .strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.character-writing .thumb{background:var(--surface);border:1px solid var(--soft);border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:6px;align-items:center;min-width:0}.character-writing .thumb canvas{width:100%;max-width:80px;height:auto}.character-writing .thumb div{font-size:12px;color:var(--muted);text-align:center;line-height:1.3}.character-writing .empty{background:var(--surface);border:1px dashed var(--soft);border-radius:16px;padding:22px;color:var(--muted);line-height:1.5}.character-writing .empty button{margin-top:10px;min-height:44px;padding:0 16px;border-radius:12px;border:1px solid var(--accent);background:var(--accentSoft);color:var(--accent);font-weight:700}.character-writing .settings{background:var(--surface);border:1px solid var(--soft);border-radius:16px;padding:6px 16px}.character-writing .set{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--soft);flex-wrap:wrap}.character-writing .set:last-child{border-bottom:none}.character-writing .set label{flex:1;min-width:200px;line-height:1.35}.character-writing .set label small{display:block;color:var(--muted);font-size:13px}.character-writing .set select{min-height:40px;border-radius:10px;border:1px solid var(--soft);background:var(--paper);color:var(--ink);padding:0 10px;font:inherit}.character-writing .set input[type=checkbox]{width:24px;height:24px;accent-color:var(--go)}.character-writing .danger{min-height:40px;padding:0 14px;border-radius:10px;border:1px solid var(--base);background:transparent;color:var(--base);font-weight:700}.character-writing .note{font-size:14px;color:var(--muted);line-height:1.5;margin:0}@media(max-width:560px){.character-writing .app{gap:8px;padding-block:8px}.character-writing header{flex-wrap:nowrap;gap:8px}.character-writing .brand{display:none}.character-writing .set-row{gap:5px}.character-writing .dot{width:9px;height:9px}.character-writing .grownup{padding:6px 10px}.character-writing .prompt{min-height:56px;gap:10px}.character-writing .pic{width:56px;height:56px;font-size:42px;border-radius:14px}.character-writing .say{width:52px;height:52px}.character-writing .say svg{width:26px;height:26px}.character-writing .ptext small{font-size:11px}.character-writing .ptext strong{font-size:17px}.character-writing .ptext strong em{font-size:24px}.character-writing .slate{border-radius:18px}.character-writing .controls{gap:8px}.character-writing .controls button{min-height:54px;font-size:15px;gap:6px;border-radius:14px}.character-writing .controls button svg{width:20px;height:20px}.character-writing :is(.card,.set-done){gap:10px;padding:18px}.character-writing :is(.card,.set-done) h1{font-size:24px}.character-writing :is(.card,.set-done) p{font-size:15px}.character-writing .card .row{font-size:42px;letter-spacing:.12em}.character-writing .primaryBtn{min-height:54px;font-size:18px;padding:0 26px}}@media(max-height:520px)and (orientation:landscape){.character-writing .app{grid-template-columns:minmax(200px,34%) 1fr;grid-template-rows:auto auto auto 1fr auto;grid-template-areas:"head slate" "dots slate" "prompt slate" ". slate" "ctrl slate";gap:8px 12px;padding-block:8px}.character-writing header{flex-wrap:wrap;gap:6px}.character-writing .brand{display:none}.character-writing .dot{width:9px;height:9px}.character-writing .grownup{padding:6px 10px}.character-writing .prompt{min-height:0;gap:8px;flex-wrap:wrap}.character-writing .pic{width:48px;height:48px;font-size:36px}.character-writing .say{width:46px;height:46px}.character-writing .ptext strong{font-size:16px}.character-writing .ptext strong em{font-size:22px}.character-writing .controls{grid-template-columns:1fr 1fr}.character-writing .controls .primary{grid-column:1 / -1}.character-writing .controls button{min-height:46px;font-size:15px}.character-writing :is(.card,.set-done){gap:8px;padding:12px}.character-writing :is(.card,.set-done) h1{font-size:22px}.character-writing :is(.card,.set-done) p{font-size:14px}.character-writing .card .row{font-size:40px}.character-writing .written{--tw:clamp(44px,12vh,64px)}.character-writing .primaryBtn{min-height:48px}}@media(prefers-reduced-motion:reduce){.character-writing .dot,.character-writing .set-done .primaryBtn{transition:none}.character-writing .written canvas{animation:none;opacity:1}.character-writing .controls .primary.ready{animation:none;outline:3px solid var(--go);outline-offset:3px}}.character-writing .card .row{font-size:52px;letter-spacing:.1em;text-wrap:balance}@media(max-width:560px){.character-writing .card .row{font-size:34px}}
