/*! tailwindcss v4.2.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--spacing:.25rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.fixed{position:fixed}.static{position:static}.start{inset-inline-start:var(--spacing)}.contents{display:contents}.inline{display:inline}.table{display:table}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}}:root{--forest:#0f5d50;--forest-deep:#073f37;--forest-soft:#dcece5;--orange:#f07a37;--orange-soft:#fff0e6;--cream:#f7f3e9;--paper:#fffef9;--ink:#17312d;--muted:#62736f;--line:#d7dfd9;--blue:#3767b1;--shadow:0 20px 50px #193f371a;--font-kai:"KaiTi","Kaiti SC","STKaiti","FZKai-Z03","楷体",serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:radial-gradient(circle at 8% 12%,#f07a3717,transparent 24rem),radial-gradient(circle at 92% 14%,#0f5d501a,transparent 28rem),var(--cream);color:var(--ink);min-width:320px;margin:0;font-family:Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif}a,button{-webkit-tap-highlight-color:transparent}button{font:inherit}.sr-only{clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}a:focus-visible,button:focus-visible{outline-offset:3px;outline:4px solid #3767b152}.app-shell{max-width:1540px;min-height:100vh;margin:0 auto;padding:28px 42px 36px}.topbar{justify-content:space-between;gap:24px}.topbar,.topbar-actions{align-items:center;display:flex}.topbar-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px}.portal-home-link{z-index:90;background:var(--forest);color:#fff;white-space:nowrap;border:2px solid #ffffffeb;border-radius:999px;min-height:48px;padding:12px 17px;font-size:13px;font-weight:800;text-decoration:none;position:fixed;bottom:18px;left:18px;box-shadow:0 10px 28px #073f3747}.portal-home-link:hover{background:var(--forest-deep);border-color:#fff;transform:translateY(-1px)}.brand{color:inherit;align-items:center;gap:13px;text-decoration:none;display:inline-flex}.brand-button{cursor:pointer;text-align:left;background:0 0;border:0;padding:0}.brand-logo-image{object-fit:contain;width:132px;height:52px;display:block}.brand small,.brand strong{display:block}.brand strong{letter-spacing:.08em;font-size:20px}.brand small{color:var(--muted);letter-spacing:.08em;margin-top:3px;font-size:11px;font-weight:600}.term-control{background:#fffef9c7;border:1px solid #0f5d5024;border-radius:16px;align-items:center;gap:6px;padding:6px;display:flex}.term-control>span{color:var(--forest);padding:0 9px;font-size:12px;font-weight:800}.term-control button{border:0;border-radius:11px;padding:10px 14px;font-size:12px;font-weight:700}.term-active{background:var(--forest);color:#fff}.term-switch{color:var(--forest);cursor:pointer;background:0 0}.term-switch:hover{background:var(--forest-soft)}.home-shell{max-width:1440px}.home-edition-pill{color:var(--forest);letter-spacing:.05em;background:#fffef9cc;border:1px solid #0f5d5029;border-radius:999px;padding:11px 16px;font-size:12px;font-weight:800}.home-hero{grid-template-columns:minmax(0,1.05fr) minmax(360px,.7fr);align-items:center;gap:clamp(40px,7vw,110px);margin:72px 0 62px;display:grid}.home-hero-copy h1{color:var(--forest-deep);font-family:var(--font-kai);letter-spacing:-.065em;margin:0;font-size:clamp(52px,6vw,82px);line-height:1.04}.home-hero-copy p{color:var(--muted);max-width:650px;margin:22px 0 0;font-size:16px;line-height:1.85}.home-demo{box-shadow:var(--shadow);background:linear-gradient(#fffef9d1,#fffef9d1),repeating-linear-gradient(0deg,#0000,#0000 29px,#0f5d5012 30px);border:1px solid #0f5d5029;border-radius:30px;min-height:300px;padding:28px;position:relative;overflow:hidden;transform:rotate(1.2deg)}.home-demo:after{border:20px solid var(--orange-soft);content:"";border-radius:50%;width:155px;height:155px;position:absolute;top:-76px;right:-84px}.demo-note{color:var(--forest);letter-spacing:.12em;z-index:1;font-size:12px;font-weight:900;position:relative}.demo-parts{font-family:var(--font-kai);gap:13px;margin:32px 0 26px}.demo-parts,.demo-parts span,.demo-parts strong{justify-content:center;align-items:center;display:flex}.demo-parts span,.demo-parts strong{background:#fff;border:2px solid;border-radius:16px;width:70px;height:82px;font-size:48px;box-shadow:0 7px #0f5d5014}.demo-parts .demo-part-1{color:var(--forest)}.demo-parts .demo-part-2{color:var(--orange)}.demo-parts .demo-part-3{color:var(--blue)}.demo-part-wrap{align-items:center;gap:10px;display:flex}.demo-parts strong{background:var(--forest);border-color:var(--forest-deep);color:#fff;width:96px;height:96px}.demo-parts i{color:#97a8a2;font-family:sans-serif;font-size:20px;font-style:normal}.demo-word-row{gap:9px}.demo-word-row,.demo-word-row span{justify-content:center;display:flex}.demo-word-row span{background:var(--orange-soft);color:var(--orange);font-family:var(--font-kai);border-radius:10px;align-items:center;width:auto;min-width:58px;height:37px;padding:0 10px;font-size:20px}.semester-section{scroll-margin-top:24px}.section-heading{justify-content:space-between;align-items:end;gap:28px;margin-bottom:22px;display:flex}.section-heading span{color:var(--orange);letter-spacing:.16em;font-size:11px;font-weight:900}.section-heading h2{color:var(--forest-deep);font-family:var(--font-kai);margin:7px 0 0;font-size:clamp(28px,3vw,39px)}.section-heading p{color:var(--muted);margin:0 0 6px;font-size:13px}.semester-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.semester-card{--card-accent:var(--orange);--card-soft:var(--orange-soft);color:var(--ink);cursor:pointer;text-align:left;background:#fffef9f0;border:1px solid #0f5d5021;border-radius:24px;min-height:350px;padding:24px;transition:border-color .18s,box-shadow .18s,transform .18s;position:relative;overflow:hidden;box-shadow:0 13px 35px #193f3714}.semester-card:hover{border-color:var(--card-accent);transform:translateY(-5px);box-shadow:0 19px 42px #193f3724}.semester-card:before{background:var(--card-accent);content:"";height:6px;position:absolute;inset:0 0 auto}.semester-forest{--card-accent:var(--forest);--card-soft:var(--forest-soft)}.semester-blue{--card-accent:#4778bd;--card-soft:#e7eef9}.semester-berry{--card-accent:#a44f6b;--card-soft:#f7e8ed}.semester-index{color:var(--card-accent);font-family:Georgia,serif;font-size:12px;font-weight:700;position:absolute;top:22px;right:22px}.semester-card-head{align-items:center;gap:9px;display:flex}.semester-card-head span{background:var(--card-soft);color:var(--card-accent);border-radius:999px;padding:7px 10px;font-size:11px;font-weight:900}.semester-card-head small{color:var(--muted);font-size:10px;font-weight:700}.semester-card h3{color:var(--forest-deep);font-family:var(--font-kai);margin:20px 0 10px;font-size:32px;font-weight:700;line-height:1.18}.semester-card h3 strong{color:var(--card-accent);margin-top:3px;font-size:20px;display:block}.semester-card>p{color:var(--muted);min-height:40px;margin:0;font-size:12px;line-height:1.65}.semester-samples{gap:7px;margin:18px 0;display:flex}.semester-samples span{background:var(--card-soft);color:var(--card-accent);font-family:var(--font-kai);border-radius:10px;justify-content:center;align-items:center;width:38px;height:38px;font-size:20px;display:flex}.semester-progress{color:var(--muted);font-size:10px;font-weight:700}.semester-progress i{background:#e3e8e4;border-radius:999px;height:5px;margin-top:7px;display:block;overflow:hidden}.semester-progress b{background:var(--card-accent);border-radius:inherit;height:100%;display:block}.semester-enter{color:var(--card-accent);margin-top:20px;font-size:12px;font-weight:900;display:inline-block}.selection-workbench{box-shadow:var(--shadow);background:#fffef9f0;border:1px solid #0f5d5024;border-radius:28px;grid-template-columns:minmax(0,1.35fr) minmax(310px,.65fr);gap:24px;padding:20px;display:grid}.selector-groups{gap:12px;display:grid}.selector-group{background:#f7f9f5;border:1px solid #0f5d5017;border-radius:20px;padding:17px 18px}.selector-label{align-items:center;gap:9px;margin-bottom:12px;display:flex}.selector-label span{background:var(--forest-soft);color:var(--forest);border-radius:8px;justify-content:center;align-items:center;width:29px;height:24px;font-size:10px;font-weight:900;display:flex}.selector-label strong{color:var(--forest-deep);letter-spacing:.06em;font-size:14px}.selector-options{grid-auto-columns:minmax(90px,1fr);grid-auto-flow:column;gap:9px;display:grid}.selector-options button{background:var(--paper);color:var(--muted);cursor:pointer;border:2px solid #0f5d501f;border-radius:13px;min-height:48px;padding:10px 14px;font-size:14px;font-weight:800;transition:background .16s,border-color .16s,color .16s,transform .16s}.selector-options button:hover{color:var(--forest);border-color:#0f5d5066;transform:translateY(-1px)}.selector-options .option-active{background:var(--forest);border-color:var(--forest);box-shadow:0 4px 0 var(--forest-deep);color:#fff}.practice-mode-options button{text-align:left;flex-direction:column;align-items:flex-start;gap:4px;display:flex}.practice-mode-options button strong{font-size:14px}.practice-mode-options button small{opacity:.78;font-size:11px;font-weight:700;line-height:1.45}.lesson-selector-group{grid-template-columns:86px minmax(0,1fr);gap:10px;display:grid}.lesson-selector-group .selector-label{margin:0}.lesson-select-wrap select{appearance:none;background:linear-gradient(45deg,transparent 50%,var(--forest) 50%) calc(100% - 18px) 50% /6px 6px no-repeat,linear-gradient(135deg,var(--forest) 50%,transparent 50%) calc(100% - 12px) 50% /6px 6px no-repeat,var(--paper);color:var(--forest-deep);cursor:pointer;border:2px solid #0f5d5026;border-radius:13px;width:100%;min-height:48px;padding:10px 38px 10px 14px;font-size:14px;font-weight:800}.lesson-select-wrap select:focus-visible{outline-offset:2px;outline:4px solid #3767b140}.selector-help{color:var(--muted);margin-top:11px;font-size:11px;line-height:1.55;display:block}.selection-summary{--summary-accent:var(--orange);--summary-soft:var(--orange-soft);background:radial-gradient(circle at 100% 0,var(--summary-soft),transparent 58%),var(--paper);border:1px solid var(--summary-accent)}@supports (color:color-mix(in lab,red,red)){.selection-summary{border:1px solid color-mix(in srgb,var(--summary-accent) 28%,transparent)}}.selection-summary{border-radius:22px;flex-direction:column;min-height:100%;padding:24px;display:flex}.summary-forest{--summary-accent:var(--forest);--summary-soft:var(--forest-soft)}.summary-blue{--summary-accent:var(--blue);--summary-soft:#e7eef9}.summary-berry,.summary-violet{--summary-accent:#a44f6b;--summary-soft:#f7e8ed}.summary-gold{--summary-accent:#b2791f;--summary-soft:#fbf0d7}.summary-level{background:var(--summary-soft);color:var(--summary-accent);border-radius:999px;align-self:flex-start;padding:7px 11px;font-size:11px;font-weight:900}.selection-summary h3{color:var(--forest-deep);font-family:var(--font-kai);margin:20px 0 10px;font-size:36px;line-height:1.15}.selection-summary h3 strong{color:var(--summary-accent);margin-top:4px;font-size:21px;display:block}.selection-summary>p{color:var(--muted);margin:0;font-size:12px;line-height:1.65}.summary-parts{background:var(--summary-soft);color:var(--summary-accent);border-radius:13px;margin-top:17px;padding:11px 13px;font-size:12px;font-weight:800}.summary-parts strong{font-family:Georgia,serif;font-size:20px}.summary-samples{flex-wrap:wrap;gap:7px;margin:18px 0;display:flex}.summary-samples span{border:1px solid var(--summary-accent);background:#fff;align-items:center}@supports (color:color-mix(in lab,red,red)){.summary-samples span{border:1px solid color-mix(in srgb,var(--summary-accent) 24%,transparent)}}.summary-samples span{color:var(--summary-accent);font-family:var(--font-kai);border-radius:9px;justify-content:center;width:36px;height:36px;font-size:19px;display:flex}.summary-progress{color:var(--muted);margin-top:auto;font-size:10px;font-weight:700}.summary-progress i{background:#e4e9e5;border-radius:999px;height:5px;margin-top:8px;display:block;overflow:hidden}.summary-progress b{background:var(--summary-accent);border-radius:inherit;height:100%;display:block}.start-practice-button{background:var(--summary-accent);box-shadow:0 5px 0 var(--summary-accent);border:0;border-radius:14px;align-items:center}@supports (color:color-mix(in lab,red,red)){.start-practice-button{box-shadow:0 5px 0 color-mix(in srgb,var(--summary-accent) 65%,#172f2a)}}.start-practice-button{color:#fff;cursor:pointer;justify-content:space-between;min-height:52px;margin-top:19px;padding:12px 16px;font-size:14px;font-weight:900;display:flex}.start-practice-button span{font-size:20px}.start-practice-button:disabled{cursor:not-allowed;background:#9da9a5;box-shadow:0 5px #74807c}.hero{justify-content:space-between;align-items:end;margin:54px 0 30px;display:flex}.hero-copy{max-width:720px}.eyebrow{color:var(--orange);letter-spacing:.16em;margin-bottom:15px;font-size:13px;font-weight:900;display:inline-block}.hero h1{color:var(--forest-deep);font-family:var(--font-kai);letter-spacing:-.055em;margin:0;font-size:clamp(42px,5vw,68px);line-height:1.08}.hero p{color:var(--muted);max-width:620px;margin:17px 0 0;font-size:16px;line-height:1.8}.progress-card{color:var(--muted);grid-template-columns:auto auto auto;align-items:baseline;min-width:176px;font-size:18px;display:grid}.progress-number{color:var(--forest);font-family:Georgia,serif;font-size:48px;font-weight:700}.progress-divider{color:#b2beb9;padding:0 8px}.progress-track{background:#dbe2dc;border-radius:999px;grid-column:1/-1;height:5px;margin-top:7px;overflow:hidden}.progress-track span{background:linear-gradient(90deg,var(--forest),var(--orange));border-radius:inherit;height:100%;transition:width .32s;display:block}.practice-grid{grid-template-columns:.78fr .9fr 1.55fr;gap:15px;display:grid}.panel{box-shadow:var(--shadow);background:#fffef9f0;border:1px solid #0f5d5024;border-radius:28px;min-height:498px;padding:25px;position:relative;overflow:hidden}.panel-label{color:var(--forest);letter-spacing:.08em;align-items:center;gap:9px;font-size:13px;font-weight:900;display:flex}.panel-label span{background:var(--forest-soft);letter-spacing:0;border-radius:8px;width:29px;height:24px;font-size:10px}.panel-label span,.picture-cue{justify-content:center;align-items:center;display:flex}.picture-cue{aspect-ratio:1/.88;background:radial-gradient(circle at 15% 12%,#f4a62033,#0000 28%),radial-gradient(circle at 88% 86%,#5cb85c2e,#0000 30%),#fff8f0;border:2px solid #2d6a4f3d;border-radius:24px;margin:25px 0 22px;position:relative;overflow:hidden}.picture-cue:after,.picture-cue:before{content:"";border:1px solid #f4872b38;border-radius:50%;width:170px;height:170px;position:absolute}.picture-cue:before{top:-92px;left:-102px}.picture-cue:after{bottom:-108px;right:-85px}.semantic-cue-image{z-index:1;background-repeat:no-repeat;background-size:400% 300%;border:1px solid #7b4a2a1f;border-radius:18px;position:absolute;inset:12px;box-shadow:0 12px 25px #2d6a4f1c}.picture-cue-word{color:#5f351f;font-family:var(--font-kai);text-overflow:ellipsis;white-space:nowrap;z-index:3;background:#fff8f0f0;border:1px solid #2d6a4f2e;border-radius:999px;max-width:calc(100% - 48px);padding:9px 18px 8px;font-size:clamp(22px,2.2vw,30px);font-weight:600;line-height:1;position:absolute;bottom:22px;left:50%;overflow:hidden;transform:translate(-50%);box-shadow:0 6px 16px #2d6a4f1f}.cue-word-card{z-index:1;background:#ffffffb8;border:2px dashed #2d6a4f3d;border-radius:18px;flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex;position:absolute;inset:34px}.cue-word-card strong{color:#7b4a2a;font-family:var(--font-kai);font-size:clamp(42px,5vw,72px);font-weight:500}.cue-word-card span{color:#7a6a5a;font-size:13px;font-weight:800}.pronunciation{justify-content:space-between;align-items:center;display:flex}.pronunciation>div{flex-direction:column;gap:7px;display:flex}.pinyin{color:var(--orange);font-family:Georgia,serif;font-size:27px;font-weight:700}.example-word{align-items:baseline;flex-direction:row!important;gap:7px!important;display:flex!important}.example-word small{color:var(--muted);font-size:15px;font-weight:800}.pronunciation .example-word strong{color:var(--forest-deep);font-size:29px;line-height:1.2}.sound-button{background:var(--forest-soft);color:var(--forest);cursor:pointer;border:0;border-radius:12px;align-items:center;gap:7px;padding:11px 13px;font-size:12px;font-weight:800;display:inline-flex}.sound-button span{font-size:10px}.model-card{text-align:center}.hint-toggle{color:var(--muted);cursor:pointer;background:0 0;border:0;top:29px;right:22px}.hint-toggle,.part-count-note{font-size:11px;position:absolute}.part-count-note{color:var(--orange);font-weight:800;top:31px;right:116px}.reference-wrap{flex-direction:column;justify-content:center;align-items:center;min-height:286px;margin:30px 0 18px;transition:opacity .22s,filter .22s;display:flex}.reference-wrap.hint-hidden{filter:blur(9px);opacity:.12}.character-grid{font-family:var(--font-kai);width:230px;height:230px;display:block;position:relative}.reference-character{justify-content:center;align-items:center;width:250px;height:250px;display:flex;position:relative}.reference-canvas{image-rendering:auto;width:250px;max-width:100%;height:250px;max-height:100%;display:block}.layout-left-right{grid-template-rows:1fr;grid-template-columns:1fr 1.16fr}.layout-top-bottom{grid-template-rows:.82fr 1.18fr;grid-template-columns:1fr}.layout-surround{display:block}.part-legend{flex-wrap:wrap;justify-content:center;gap:8px;display:flex}.part-legend span{color:var(--muted);background:#f2f5f1;border-radius:999px;align-items:center;gap:6px;padding:7px 10px;font-size:11px;font-weight:700;display:inline-flex}.part-legend i{border-radius:50%;width:8px;height:8px}.puzzle-card{background:linear-gradient(135deg,#fffffff2,#f8fcf9f5),var(--paper)}.puzzle-stage{justify-content:center;align-items:center;min-height:244px;margin:10px 0 9px;display:flex;position:relative}.puzzle-grid{background:linear-gradient(90deg,#0000 49.5%,#0f5d5014 50%,#0000 50.5%),linear-gradient(#0000 49.5%,#0f5d5014 50%,#0000 50.5%),#fbfcf9;border:2px solid #0f5d5038;border-radius:18px;width:220px;height:220px;padding:9px;transition:border-color .22s,box-shadow .22s}.puzzle-complete{border-color:var(--forest);box-shadow:0 0 0 9px var(--forest-soft)}.puzzle-complete,.puzzle-grid.parts-1{background:#fbfcf9}.completed-character{color:var(--ink);font-family:var(--font-kai);-webkit-user-select:none;user-select:none;font-size:172px;font-weight:400;line-height:1;animation:completed-character-in .36s cubic-bezier(.16,1.15,.3,1);inset:0}.completed-character,.drop-slot{justify-content:center;align-items:center;display:flex;position:absolute}.drop-slot{color:#0f5d504d;cursor:pointer;background:#dcece561;border:1.5px dashed #0f5d503d;min-width:0;min-height:0;font-family:inherit;transition:background .18s,transform .18s;overflow:visible}.zone-frame{z-index:0}.zone-rect{z-index:1}.layout-left-right .drop-slot:first-child{border-radius:11px 0 0 11px}.layout-left-right .drop-slot:last-child{border-radius:0 11px 11px 0}.layout-top-bottom .drop-slot:first-child{border-radius:11px 11px 0 0}.layout-top-bottom .drop-slot:last-child{border-radius:0 0 11px 11px}.layout-surround .drop-slot:first-child,.layout-surround .drop-slot:last-child{border-radius:11px;position:absolute;inset:9px}.layout-surround .drop-slot:last-child{z-index:1;inset:78px 61px 38px}.drop-slot:hover{background:#dcece5b3}.drop-slot>span:not(.slot-dots){font-size:86px;font-weight:700;line-height:1}.part-slice{pointer-events:none;display:block;overflow:hidden}.drop-slot>.part-slice{width:100%;height:100%}.parts-3 .drop-slot>span:not(.slot-dots){font-size:66px}.parts-4 .drop-slot>span:not(.slot-dots){font-size:53px}.drop-slot.zone-frame>span:not(.slot-dots){font-size:166px}.layout-left-right .drop-slot:first-child>span:not(.slot-dots){transform:scaleX(.82)}.layout-top-bottom .drop-slot>span:not(.slot-dots){font-size:78px}.layout-surround .drop-slot:first-child>span:not(.slot-dots){font-size:168px}.layout-surround .drop-slot:last-child>span:not(.slot-dots){font-size:72px}.slot-filled{cursor:default;background:0 0;border-color:#0000}.slot-dots{letter-spacing:4px;font-family:sans-serif;font-size:18px;transform:rotate(90deg)}.slot-wrong{background:#fff0ec;border-color:#df6b55;animation:wrong-shake .42s}.success-stamp{background:var(--orange);border:5px solid var(--paper);color:#fff;z-index:4;border-radius:50%;justify-content:center;align-items:center;width:58px;height:58px;margin-top:-180px;margin-left:-30px;font-size:26px;font-weight:900;animation:stamp-in .43s cubic-bezier(.16,1.25,.3,1);display:flex;position:absolute;box-shadow:0 8px 20px #7e421e3d}@keyframes completed-character-in{0%{opacity:0;transform:scale(.88)}to{opacity:1;transform:scale(1)}}.piece-tray{background:#eef3ef;border-radius:18px;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:11px;display:grid}.piece-tray.tray-1{grid-template-columns:1fr}.piece-tray.tray-3{grid-template-columns:repeat(3,minmax(0,1fr))}.piece-tray.tray-4{grid-template-columns:repeat(2,minmax(0,1fr))}.piece{background:var(--paper);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;border:2px solid #0f5d501f;border-radius:13px;justify-content:center;align-items:center;gap:8px;min-height:70px;transition:transform .15s,border-color .15s,opacity .15s;display:flex;box-shadow:0 4px #0f5d501c}.piece:hover{transform:translateY(-2px)}.piece:active{cursor:grabbing}.piece>span{font-family:var(--font-kai);font-size:40px;font-weight:700;line-height:1}.piece>.part-slice{flex:0 0 54px;width:54px;height:54px}.tray-3 .piece>.part-slice{flex-basis:46px;width:46px;height:46px}.tray-3 .piece>span,.tray-4 .piece>span{font-size:34px}.piece small{color:var(--muted);font-size:10px;font-weight:700}.piece-selected{border-color:var(--blue);box-shadow:0 0 0 4px #3767b129}.piece-used{box-shadow:none;opacity:.18}.feedback{color:var(--muted);text-align:center;justify-content:center;align-items:center;gap:11px;min-height:48px;padding-top:12px;font-size:18px;font-weight:800;display:flex}.feedback>span{color:var(--orange);font-size:16px}.feedback-success{color:var(--forest)}.feedback-success>span{font-size:24px}.practice-nav{grid-template-columns:170px 1fr 170px;align-items:center;gap:20px;margin-top:20px;display:grid}.nav-button{cursor:pointer;border-radius:14px;min-height:50px;padding:12px 18px;font-size:13px;font-weight:800}.nav-secondary{color:var(--forest);background:#fffef9bf;border:1px solid #0f5d502e}.nav-primary{background:var(--forest);border:1px solid var(--forest);box-shadow:0 6px 0 var(--forest-deep);color:#fff}.word-browser{min-width:0}.word-browser-heading{color:var(--muted);justify-content:space-between;align-items:center;max-width:430px;margin:0 auto 8px;font-size:11px;font-weight:700;display:flex}.word-browser-actions{align-items:center;gap:9px;display:flex}.refresh-questions-button{background:var(--orange-soft);color:#a64d1f;cursor:pointer;border:1px solid #f07a3759;border-radius:9px;min-height:32px;padding:5px 10px;font-size:12px;font-weight:900}.refresh-questions-button:hover{background:var(--orange);border-color:var(--orange);color:#fff}.refresh-questions-button:focus-visible{outline-offset:2px;outline:4px solid #f07a373d}.word-jump{align-items:center;gap:7px;display:inline-flex}.word-jump select{background:var(--paper);color:var(--forest);font-family:var(--font-kai);border:1px solid #0f5d502e;border-radius:8px;min-width:72px;padding:5px 7px;font-size:13px}.word-dots{flex-wrap:wrap;justify-content:center;gap:7px;max-width:430px;margin:0 auto;display:flex}.word-dots button{color:#91a09b;cursor:pointer;font-family:var(--font-kai);background:0 0;border:1px solid #0000;border-radius:9px;width:34px;height:34px;font-size:16px;position:relative}.word-dots button:hover{background:var(--forest-soft);color:var(--forest)}.word-dots .dot-current{background:var(--forest);color:#fff}.word-dots .dot-completed:after{background:var(--orange);border:2px solid var(--cream);content:"";border-radius:50%;width:8px;height:8px;position:absolute;top:-2px;right:-2px}.prototype-note{color:var(--muted);border-top:1px solid #0f5d5026;align-items:center;gap:14px;margin-top:27px;padding:20px 3px 0;font-size:11px;line-height:1.65;display:flex}.prototype-note strong{color:var(--forest);flex:none}.drag-ghost{font-family:var(--font-kai);pointer-events:none;z-index:999;background:#fff;border:3px solid;border-radius:16px;justify-content:center;align-items:center;width:82px;height:82px;font-size:54px;font-weight:700;display:flex;position:fixed;transform:translate(-50%,-58%)rotate(-4deg);box-shadow:0 16px 35px #17312d3d}.drag-ghost .part-slice{width:68px;height:68px}@keyframes wrong-shake{0%,to{transform:translate(0)}25%{transform:translate(-7px)}55%{transform:translate(7px)}80%{transform:translate(-4px)}}@keyframes stamp-in{0%{opacity:0;transform:scale(.2)rotate(-22deg)}to{opacity:1;transform:scale(1)rotate(7deg)}}@media (max-width:1120px){.app-shell{padding:25px 28px 34px}.practice-grid{grid-template-columns:1fr 1fr}.home-hero{grid-template-columns:minmax(0,1fr) minmax(330px,.75fr);gap:42px}.semester-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.selection-workbench{grid-template-columns:1fr}.selection-summary{min-height:390px}.puzzle-card{grid-column:1/-1}.panel{min-height:470px}.puzzle-card{grid-template-columns:minmax(260px,.9fr) 1.1fr;gap:12px 28px;display:grid}.puzzle-card .panel-label{grid-column:1/-1}.puzzle-stage{grid-row:2/span 2}.piece-tray{align-self:end}}@media (max-width:760px){.app-shell{padding:20px 16px 28px}.topbar{align-items:flex-start}.topbar-actions{flex-direction:column;align-items:flex-end}.portal-home-link{min-height:44px;padding:10px 13px;font-size:12px;bottom:12px;left:12px}.brand small,.term-control>span{display:none}.home-edition-pill{padding:9px 11px;font-size:10px}.home-hero{flex-direction:column;gap:32px;margin:48px 0 46px;display:flex}.home-hero-copy h1{font-size:clamp(45px,14vw,62px)}.home-hero-copy p{font-size:14px}.home-demo{width:100%;min-height:274px;padding:23px 18px;transform:none}.demo-parts{gap:6px;margin-top:29px}.demo-part-wrap{gap:5px}.demo-parts span{width:52px;height:61px;font-size:34px}.demo-parts strong{width:74px;height:74px;font-size:40px}.demo-parts i{font-size:15px}.section-heading{flex-direction:column;align-items:flex-start;gap:7px}.section-heading p{font-size:12px}.semester-grid{grid-template-columns:1fr}.semester-card{min-height:330px}.selection-workbench{gap:14px;padding:12px}.selector-group{padding:15px 13px}.selector-options{grid-auto-columns:minmax(0,1fr);gap:7px}.selector-options button{padding:9px 7px;font-size:12px}.lesson-selector-group{grid-template-columns:1fr}.lesson-select-wrap select{font-size:12px}.selection-summary{min-height:380px;padding:21px}.term-control button{padding:10px 12px}.hero{flex-direction:column;align-items:flex-start;margin:38px 0 24px}.hero h1{font-size:clamp(38px,11vw,52px)}.hero p{font-size:14px}.progress-card{min-width:140px;margin-top:18px}.progress-number{font-size:36px}.practice-grid{flex-direction:column;display:flex}.panel{min-height:auto;padding:22px}.picture-cue{aspect-ratio:1.4}.model-card{min-height:430px}.part-count-note{text-align:left;margin:10px 0 -8px;display:block;position:static}.puzzle-card{display:block}.character-grid{width:210px;height:210px}.reference-wrap{min-height:252px}.practice-nav{grid-template-columns:1fr 1fr}.word-browser{grid-area:1/1/auto/-1}.word-browser-heading{flex-direction:column;align-items:flex-start;gap:8px}.word-browser-actions{justify-content:space-between;width:100%}.prototype-note{align-items:flex-start}.term-active{max-width:146px;padding:9px 10px!important;font-size:10px!important}.term-switch{padding:9px 8px!important;font-size:10px!important}.feedback{font-size:16px}}@media (prefers-reduced-motion:reduce){*,:after,:before{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!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}