:root{--bg:#F5F5F0;--paper:#FCFCF9;--text:#27332F;--muted:#52615B;--primary:#326B5A;--deep:#245143;--line:#DFE4DA;--soft:#E8EDE5;--light:#EEF3EA;--orange:#A56833;--orange-bg:#F7EEE2;--red:#9E493F;--red-bg:#F9EBE7;--blue:#506F82;--blue-bg:#ECF1F3;--radius:18px;--sidebar:218px;font-family:"Noto Sans CJK SC",system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--text);font-synthesis:none}
*{box-sizing:border-box}body{margin:0;background:var(--bg);font-size:16px;line-height:1.65}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}button,a,input,select,textarea{touch-action:manipulation}button{color:inherit}a{color:var(--primary)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #9EBDAD;outline-offset:3px}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.35;letter-spacing:-.035em}h1{font-size:34px;font-weight:650}h2{font-size:23px;font-weight:650}h3{font-size:20px;font-weight:650}svg{width:24px;height:24px;flex-shrink:0;vertical-align:middle}svg.icon{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}input,select,textarea{color:var(--text);background:#FFF;border:1px solid #CBD3C8;border-radius:10px;min-height:46px;padding:10px 12px;max-width:100%}textarea{resize:vertical;min-height:150px;line-height:1.8}input[type=checkbox]{width:18px;min-height:18px;accent-color:var(--primary)}input[type=number]{width:100%}input[type=file]{background:var(--light);width:100%;padding:16px}select{cursor:pointer}label{display:block;font-size:14px;color:var(--muted);font-weight:500}label input,label select,label textarea{display:block;width:100%;margin-top:7px}label.check{display:flex;align-items:center;gap:9px;min-height:40px;font-size:15px}label.check input{width:18px;margin:0}summary{cursor:pointer;min-height:40px;padding:7px 0}details p{margin-top:8px}.muted{color:var(--muted)}.small{font-size:14px}.tinycaps{font-size:12px;letter-spacing:.15em;font-weight:600;text-transform:uppercase}.eyebrow{color:var(--primary);font-size:13px;font-weight:600;letter-spacing:.12em}.row{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.stack{display:grid;gap:18px}.spacer{flex:1}.hidden{display:none!important}.nowrap{white-space:nowrap}.boot{padding:20vh 24px;text-align:center}.boot strong{font-size:36px}.boot p{color:var(--muted)}.skip-link{position:fixed;top:-80px;left:20px;background:var(--paper);z-index:200;padding:12px}.skip-link:focus{top:10px}.button{display:inline-flex;gap:8px;align-items:center;justify-content:center;min-height:46px;padding:10px 20px;border:1px solid transparent;border-radius:10px;text-decoration:none;font-weight:550;background:var(--primary);color:white;line-height:1.4;transition:background .15s,transform .15s}.button:hover{background:var(--deep)}.button:active{transform:translateY(1px)}.button.secondary{background:var(--paper);color:var(--text);border-color:var(--line)}.button.secondary:hover{background:var(--soft)}.button.ghost{background:transparent;color:var(--primary);border-color:transparent}.button.ghost:hover{background:var(--soft)}.button.danger{background:var(--red)}.button.compact{font-size:14px;padding:8px 13px;min-height:44px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;min-width:44px;padding:0;border:1px solid var(--line);border-radius:11px;background:var(--paper);color:var(--muted)}.icon-button:hover{color:var(--primary);background:var(--light)}.pill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--soft);border:1px solid transparent;border-radius:100px;font-size:12px;line-height:1.5;font-weight:550;white-space:nowrap}.pill.green{color:var(--deep);background:#E7EFE6}.pill.orange{color:#805025;background:var(--orange-bg)}.pill.red{color:var(--red);background:var(--red-bg)}.pill.blue{color:var(--blue);background:var(--blue-bg)}.dot{display:inline-block;width:6px;height:6px;background:var(--primary);border-radius:50%}.sidebar{position:fixed;top:0;bottom:0;left:0;width:var(--sidebar);background:#F0F1EB;border-right:1px solid var(--line);padding:33px 18px;z-index:20;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:0 14px;text-decoration:none;color:var(--text);background:none;border:0;text-align:left}.brand-mark{width:43px;height:43px;background:var(--primary);color:#fff;display:grid;place-items:center;border-radius:13px}.brand-mark svg{width:29px;height:29px}.brand-name{font-size:24px;font-weight:650;line-height:1.3;letter-spacing:.03em}.brand-en{font-size:9px;letter-spacing:.21em;color:var(--muted);margin-top:4px}.nav-label{font-size:12px;color:#69766F;letter-spacing:.1em;margin:47px 17px 13px}.side-nav{display:grid;gap:8px}.nav-item{display:flex;gap:14px;align-items:center;border:0;background:transparent;border-radius:11px;min-height:51px;text-align:left;padding:12px 16px;color:var(--muted);font-weight:500}.nav-item:hover{background:#E6EBE2}.nav-item.active{background:#DDE8DD;color:var(--deep)}.nav-item.active:after{content:'';width:5px;height:5px;border-radius:50%;background:var(--primary);margin-left:auto}.sidebar-note{margin-top:auto;padding:18px 14px 0;border-top:1px solid var(--line);color:var(--muted);font-size:13px;line-height:1.9}.sidebar-note svg{width:18px;height:18px}.page-area{margin-left:var(--sidebar);min-height:100vh}.topbar{height:84px;display:flex;align-items:center;justify-content:space-between;padding:0 42px;border-bottom:1px solid var(--line);background:rgba(245,245,240,.9)}.breadcrumb{font-size:14px;color:var(--muted);display:flex;gap:12px;align-items:center}.breadcrumb strong{color:var(--text);font-weight:500}.breadcrumb .slash{color:#AFB9B0}.topbar-tools{display:flex;align-items:center;gap:17px}.local-label{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:7px}.avatar{height:35px;width:35px;display:grid;place-items:center;background:#E7EADD;border:1px solid #D6DDCD;border-radius:50%;color:var(--primary);font-size:14px}.content{max-width:1270px;margin:auto;padding:33px 42px 30px}.page-title{margin-bottom:25px}.page-title p{margin-top:9px;color:var(--muted)}.hero{position:relative;background:#E7EDE2;border:1px solid #DBE3D5;border-radius:20px;display:grid;grid-template-columns:1.35fr 1fr;overflow:hidden;min-height:213px;padding:32px 36px;margin-bottom:24px}.hero h1{font-size:36px;line-height:1.48;font-weight:620;letter-spacing:-.045em;margin:10px 0 12px}.hero h1 em{font-style:normal;color:var(--primary)}.hero p{font-size:14px;color:var(--muted)}.hero-tag{font-size:12px;display:flex;gap:7px;align-items:center;font-weight:600;color:var(--primary);letter-spacing:.06em}.hero-art{position:relative;min-height:160px;display:flex;align-items:center;justify-content:center}.orbit{position:absolute;width:250px;height:250px;border:1px dashed #C5D1BC;border-radius:50%;opacity:.8;transform:rotate(-20deg)}.orbit:after{content:'';position:absolute;width:205px;height:205px;border:1px solid #D3DDCA;border-radius:50%;inset:22px}.art-word-card{width:119px;height:139px;background:#FAFCF6;border:1px solid #C9D6C2;border-radius:12px;position:absolute;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:4px;box-shadow:0 5px 12px #27332f08}.art-word-card:first-of-type{transform:translate(-47px,4px) rotate(-10deg)}.art-word-card.second{transform:translate(61px,-6px) rotate(9deg);background:var(--primary);border-color:var(--primary);color:#fff}.art-word-card strong{font-size:26px;font-weight:550;letter-spacing:-.02em}.art-word-card span{font-size:12px;opacity:.7}.art-card-corner{position:absolute;top:9px;left:12px;font-size:13px!important;opacity:.8!important}.art-check{position:absolute;right:14%;bottom:1%;width:32px;height:32px;background:#FCFCF9;color:var(--primary);border:1px solid #C7D6C0;border-radius:50%;display:grid;place-items:center;transform:rotate(-10deg)}.art-dots{position:absolute;width:4px;height:4px;border-radius:50%;background:#79936C;left:18%;top:13%;box-shadow:210px 45px 0 #79936C,30px 130px 0 #79936C}.stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:14px;background:var(--paper);margin-bottom:29px;overflow:hidden}.stat{padding:16px 22px;display:flex;align-items:center;gap:14px;position:relative}.stat+.stat:before{content:'';position:absolute;left:0;top:20px;bottom:20px;width:1px;background:var(--line)}.stat-icon{width:38px;height:38px;display:grid;place-items:center;color:var(--primary);background:var(--light);border-radius:11px}.stat p{font-size:12px;color:var(--muted)}.stat strong{font-size:25px;font-weight:600;letter-spacing:-.04em}.stat strong span{font-size:12px;font-weight:400;margin-left:6px;letter-spacing:0;color:var(--muted)}.section-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:15px}.section-heading p{font-size:13px;color:var(--muted);margin-top:5px}.book-strip{display:flex;align-items:center;gap:13px;padding:16px 20px;border-radius:13px;background:var(--paper);border:1px solid var(--line);margin-bottom:18px}.book-strip .book-mark{width:39px;height:43px;border-radius:6px;background:#E9EEE3;color:var(--primary);display:grid;place-items:center;border-left:4px solid #ADC3A5}.book-strip h3{font-size:15px;letter-spacing:0;margin:0 0 2px}.book-strip p{font-size:12px;color:var(--muted)}.game-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.game-card{display:flex;flex-direction:column;background:var(--paper);border:1px solid var(--line);border-radius:16px;text-align:left;padding:21px 22px;min-height:218px;position:relative;color:var(--text);transition:border-color .18s,transform .18s,box-shadow .18s}.game-card:hover{border-color:#A9BDA2;transform:translateY(-3px);box-shadow:0 6px 18px #2a493c07}.game-card-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.game-number{font-size:11px;color:#66736B;letter-spacing:.1em;font-variant-numeric:tabular-nums}.game-icon{height:44px;width:44px;display:grid;place-items:center;border-radius:12px;background:var(--light);color:var(--primary)}.game-icon svg{height:26px;width:26px}.game-icon.orange{color:var(--orange);background:var(--orange-bg)}.game-icon.blue{color:var(--blue);background:var(--blue-bg)}.game-card h3{font-size:21px;margin:15px 0 7px}.game-card p{font-size:13px;color:var(--muted);line-height:1.7;min-height:42px}.game-card-footer{display:flex;align-items:center;justify-content:space-between;margin-top:auto;padding-top:17px}.game-card-footer .tag{font-size:11px;color:var(--muted);padding:2px 8px;background:#F0F2EB;border-radius:5px}.game-card-footer svg{height:20px;width:20px;color:var(--primary)}.game-card.import-card{border-style:dashed;background:transparent;justify-content:center}.import-card .game-icon{background:#E9EDE3;color:#65785B}.import-card h3{font-size:19px}.page-footer{margin-top:26px;color:#657068;font-size:12px;display:flex;justify-content:center;align-items:center;gap:7px;flex-wrap:wrap}.page-footer svg{width:14px;height:14px}.bottom-nav{display:none}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:24px}.notice{display:flex;align-items:flex-start;gap:10px;border:1px solid #DFE4D4;border-radius:11px;padding:13px 16px;background:#EFF2E8;font-size:13px;color:var(--muted);line-height:1.75}.notice svg{width:19px;height:19px;margin-top:2px}.notice.warn{background:var(--orange-bg);border-color:#E6D9C7;color:#79552F}.notice.error{background:var(--red-bg);border-color:#E9CBC4;color:var(--red)}.notice p{margin:0}.storage-banner{padding:12px 24px;background:var(--red-bg);color:var(--red);font-size:14px;border-bottom:1px solid #E9CBC4}.filter-chips{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:20px 0}.chip{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:6px 15px;background:transparent;border:1px solid var(--line);border-radius:100px;font-size:14px;color:var(--muted)}.chip.active{background:var(--primary);border-color:var(--primary);color:white}.chip:hover:not(.active){background:var(--soft)}.book-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-bottom:27px}.book-card{background:var(--paper);border:1px solid var(--line);border-radius:13px;padding:17px;text-align:left;display:grid;grid-template-columns:42px 1fr;gap:12px;position:relative;min-height:111px}.book-card.selected{border-color:var(--primary);background:#EDF2E8}.book-spine{width:36px;height:48px;background:#E4EBDD;border:1px solid #CFDBC6;border-left:4px solid #97AE8A;border-radius:3px 7px 7px 3px;display:grid;place-items:center;color:var(--primary);font-size:13px;font-weight:600;letter-spacing:.03em}.book-card h3{font-size:15px;letter-spacing:0;margin-bottom:7px;line-height:1.55;padding-right:13px}.book-card .small{font-size:12px}.book-card .selected-check{position:absolute;right:10px;top:10px;color:var(--primary)}.selected-check svg{width:17px;height:17px}.filters-grid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:12px;margin:18px 0}.search-box{position:relative}.search-box svg{position:absolute;top:15px;left:13px;width:19px;height:19px;color:var(--muted)}.search-box input{padding-left:42px;width:100%}.word-list{border-top:1px solid var(--line)}.word-row{display:grid;grid-template-columns:minmax(150px,.9fr) minmax(0,1.65fr) 100px;align-items:center;gap:24px;padding:19px 3px;border-bottom:1px solid var(--line)}.word-row h3{font-size:21px;font-weight:560;letter-spacing:0;overflow-wrap:anywhere;line-height:1.4}.phonetic{font-size:13px;color:var(--muted);font-family:"Noto Sans CJK SC",system-ui,sans-serif;font-weight:400;margin-top:4px}.definition{font-size:17px;white-space:pre-line;overflow-wrap:anywhere;line-height:1.7}.definition details summary{font-size:14px;color:var(--primary)}.definition .excerpt{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.word-actions{display:flex;gap:5px;justify-content:flex-end}.pager{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:20px;font-size:14px;color:var(--muted)}.empty{text-align:center;padding:48px 18px;color:var(--muted)}.empty .empty-icon{height:68px;width:68px;margin:0 auto 16px;display:grid;place-items:center;background:var(--light);border:1px solid var(--line);border-radius:20px;color:var(--primary)}.empty .empty-icon svg{height:31px;width:31px}.empty h3{color:var(--text);margin-bottom:10px}.empty p{font-size:14px;max-width:430px;margin:0 auto 18px}.settings-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings-grid .wide{grid-column:1/-1}.settings-title{display:flex;align-items:center;gap:10px;margin-bottom:20px}.settings-title svg{color:var(--primary)}.settings-row{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:15px 0;border-bottom:1px solid var(--line)}.settings-row:last-child{border:0}.settings-row strong{font-size:15px;font-weight:550;display:block}.settings-row p{font-size:13px;color:var(--muted);margin-top:5px}.settings-row select{font-size:14px;max-width:165px}.switch{height:28px;width:48px;min-width:48px;padding:3px;border:1px solid #BFCABE;border-radius:20px;background:#DAE0D6;position:relative}.switch:before{content:'';display:block;width:20px;height:20px;border-radius:50%;background:white;transition:transform .15s}.switch[aria-checked=true]{background:var(--primary);border-color:var(--primary)}.switch[aria-checked=true]:before{transform:translateX(18px)}.source-table{width:100%;border-collapse:collapse;font-size:13px}.source-table th,.source-table td{padding:11px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.source-table th{font-weight:550;color:var(--muted);background:var(--light)}.table-scroll{overflow-x:auto}.source-table td:first-child{min-width:200px}.backup-info{display:flex;gap:28px;padding:16px 0}.backup-info strong{display:block;font-size:25px;font-weight:550}.backup-info span{font-size:13px;color:var(--muted)}.filter-panel{margin-bottom:20px}.filter-section{display:grid;grid-template-columns:80px 1fr;gap:12px;padding:9px 0;align-items:start}.filter-section>span{font-size:13px;color:var(--muted);padding-top:8px}.checks-inline{display:flex;flex-wrap:wrap;gap:4px 17px}.checks-inline label{font-size:14px}.filter-section select[multiple]{min-height:110px;max-width:100%;width:100%;font-size:14px}.date-filter{display:grid;grid-template-columns:1fr 1fr 100px;gap:12px}.wrong-row{display:grid;grid-template-columns:1fr auto;gap:14px;padding:20px 0;border-bottom:1px solid var(--line)}.wrong-row h3{letter-spacing:0;font-size:21px}.wrong-meta{display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:12px;color:var(--muted);margin-top:10px}.wrong-row .definition{margin-top:5px;font-size:16px}.wrong-row details{font-size:13px;color:var(--muted)}.event-log{display:grid;gap:7px;padding:8px 0 6px 14px;border-left:2px solid var(--line)}.event-log p{font-size:13px}.modal-backdrop{position:fixed;inset:0;z-index:100;background:#1D2B2470;backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px;overflow:auto}.modal{background:var(--paper);border:1px solid var(--line);border-radius:22px;max-width:570px;width:100%;max-height:calc(100dvh - 40px);overflow-y:auto;box-shadow:0 20px 80px #12251816;padding:27px 30px;position:relative}.modal.wide{max-width:780px}.modal-title-row{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:15px}.modal-title-row h2{font-size:24px}.modal-title-row .icon-button{border:0;background:transparent}.modal-subtitle{color:var(--muted);font-size:14px;margin-bottom:22px}.modal form{display:grid;gap:18px}.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.segmented{display:flex;gap:5px;padding:4px;background:#ECEFE7;border-radius:11px}.segmented button{flex:1;min-height:41px;background:transparent;border:1px solid transparent;color:var(--muted);border-radius:8px;font-size:14px}.segmented button.active{background:var(--paper);color:var(--primary);border-color:#D6DFCF}.form-label{font-size:14px;color:var(--muted);margin-bottom:7px}.quantity{display:flex;gap:7px}.quantity button{padding:6px 14px;min-height:44px;border:1px solid var(--line);border-radius:9px;background:var(--paper);font-size:14px}.quantity button.active{background:#E3EDDE;color:var(--primary);border-color:#AFC2A2}.quantity input{width:110px;margin:0;padding:8px 12px;min-height:44px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:22px}.modal-actions .button{flex:1}.config-rules{font-size:13px;color:var(--muted);background:#F0F2EB;border-radius:10px;padding:12px 14px;line-height:1.8}.config-count{font-size:14px;color:var(--primary);min-height:24px}.correction{text-align:center;padding:12px 0 4px}.correction-symbol{height:56px;width:56px;border-radius:18px;margin:0 auto 15px;display:grid;place-items:center;background:var(--orange-bg);color:var(--orange)}.correction .answer{font-size:38px;line-height:1.25;overflow-wrap:anywhere;letter-spacing:0;margin:19px 0 4px;font-weight:550}.correction .definition{font-size:18px;text-align:left;max-height:200px;overflow:auto;margin-top:17px;padding:15px;background:#F0F2EB;border-radius:10px}.correction .reason{font-size:14px;color:var(--red)}.toast{position:fixed;bottom:27px;left:calc(50% + var(--sidebar)/2);transform:translateX(-50%);z-index:150;background:var(--text);color:white;border-radius:11px;padding:13px 20px;max-width:min(600px,calc(100vw - 30px));font-size:14px;line-height:1.7;box-shadow:0 4px 15px #0001;pointer-events:none}.play-content{padding-top:22px;padding-bottom:16px;max-width:1200px}.play-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.play-title{display:flex;align-items:center;gap:12px}.play-title h1{font-size:23px;letter-spacing:-.02em}.play-title p{font-size:12px;color:var(--muted);margin-top:3px}.play-progress{display:flex;align-items:center;gap:12px;font-size:13px}.progress-track{height:6px;background:#E3E8DE;border-radius:100px;width:140px;overflow:hidden}.progress-fill{height:100%;background:var(--primary);border-radius:100px;transition:width .2s}.game-shell{border:1px solid var(--line);background:var(--paper);border-radius:18px;overflow:hidden;display:flex;flex-direction:column}.game-prompt{padding:16px 24px;min-height:86px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:18px;background:#F8FAF3}.prompt-label{font-size:12px;color:var(--muted);margin-bottom:3px}.prompt-main{font-size:21px;font-weight:550;line-height:1.5;max-height:100px;overflow-y:auto;overflow-wrap:anywhere}.prompt-secondary{font-size:13px;color:var(--primary);white-space:nowrap}.game-stage{height:calc(100dvh - 324px);min-height:260px;max-height:720px;position:relative;overflow:hidden;isolation:isolate}.game-footer{padding:11px 19px;border-top:1px solid var(--line);background:#F8FAF3;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:51px;color:var(--muted);font-size:13px}.game-footer kbd{border:1px solid #CCD6C7;border-bottom-width:2px;padding:2px 6px;border-radius:5px;font:12px system-ui;background:var(--paper)}.play-instructions{font-size:12px;color:var(--muted);margin-top:12px;text-align:center}.paused .game-stage{visibility:hidden}.lives{color:var(--red);font-size:20px;white-space:nowrap;letter-spacing:2px}.pair-board{width:100%;height:100%;padding:16px;display:grid;gap:9px;position:relative}.pair-cell{position:relative;min-width:0;min-height:0;perspective:600px}.pair-card{width:100%;height:100%;min-width:0;border:1px solid #D1DCCE;border-radius:10px;background:#EBF0E5;padding:10px 8px;color:var(--primary);display:flex;align-items:center;justify-content:center;overflow:hidden;transition:background .13s,transform .13s}.pair-card:hover{border-color:#89A77C}.pair-card .card-back{font-weight:600;font-size:25px;color:#91A588;transform:rotate(-8deg);letter-spacing:.04em}.pair-card .card-text{font-size:18px;line-height:1.35;overflow-wrap:anywhere;word-break:break-word;text-align:center;display:block}.pair-card.face-up{background:var(--paper);color:var(--text)}.pair-card.chinese{background:#EEF2E7}.pair-card.selected{border:2px solid var(--primary);background:#E4EFDE;transform:translateY(-1px)}.pair-card.matched{background:#E3EBDA;color:#567546;border-color:#D4DFC9;opacity:.57}.pair-card.failed{border-color:var(--red);background:#FAEDE7}.pair-card[disabled]{opacity:1}.pair-card.matched[disabled]{opacity:.57}.pair-cell.has-unknown .pair-card .card-text{padding-bottom:23px}.unknown-word{position:absolute;bottom:1px;left:1px;right:1px;width:calc(100% - 2px);height:32px;min-height:32px;border:0;border-top:1px solid #E2E7DC;border-radius:0 0 9px 9px;background:#F0F3EA;font-size:12px;color:#5D6C54;z-index:1}.unknown-word:disabled{opacity:.65}.link-svg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:3;overflow:visible}.link-svg polyline{fill:none;stroke:var(--primary);stroke-width:3.5;stroke-linejoin:round;stroke-linecap:round}.preview-tag{display:inline-flex;align-items:center;gap:6px;font-size:15px;color:var(--primary);font-weight:550}.timer-bar{height:5px;width:100%;background:#DFE7D8;position:absolute;top:0;left:0;z-index:2}.timer-bar>div{height:100%;background:#80A66B;transition:width .07s linear}.mole-field{height:100%;width:100%;padding:28px max(28px,8%);background:#F1F4EB;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:repeat(3,1fr);gap:16px 22px}.mole-hole{position:relative;min-width:0;display:flex;align-items:center;justify-content:center}.mole-hole:after{content:'';position:absolute;bottom:6%;left:10%;right:10%;height:27%;background:#DCE5D3;border:1px solid #C6D2BB;border-radius:50%;z-index:0}.mole-word{position:relative;z-index:1;background:#FDFDF9;border:1px solid #BACBB0;border-radius:13px 13px 10px 10px;width:100%;min-height:66px;max-height:100%;padding:11px 8px;color:var(--text);font-size:20px;font-weight:500;line-height:1.25;overflow-wrap:anywhere;box-shadow:0 3px 0 #CDD9C2;animation:pop-in .15s ease-out}.mole-word:hover{background:#E6EFDD;border-color:var(--primary)}.mole-word.correct{background:#DDEDD3;border-color:var(--primary)}@keyframes pop-in{from{transform:translateY(9px);opacity:.3}to{transform:translateY(0);opacity:1}}.canvas-stage{display:block;width:100%;height:100%;touch-action:none;background:#F2F5ED}.controls{display:flex;align-items:center;justify-content:center;gap:7px;padding:10px;background:#F8FAF3;border-top:1px solid var(--line)}.control-button{min-width:51px;height:44px;border:1px solid #C5D2BF;background:var(--paper);border-radius:10px;font-size:21px;color:var(--primary);user-select:none;touch-action:none}.control-button:active{background:#DAE9D0}.control-label{font-size:12px;color:var(--muted);margin:0 10px}.game-shell.has-controls .game-stage{height:calc(100dvh - 390px);min-height:230px}.session-tag{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--primary)}.result-hero{text-align:center;padding:30px 24px;background:#E8EEE2;border:1px solid #D6E0CF;border-radius:18px;margin-bottom:22px}.result-icon{width:54px;height:54px;border:1px solid #C4D4B9;background:#F6F9EF;border-radius:17px;margin:0 auto 15px;display:grid;place-items:center;color:var(--primary)}.result-icon svg{width:29px;height:29px}.result-hero h1{font-size:30px;margin-bottom:9px}.result-hero p{font-size:14px;color:var(--muted)}.result-stats{display:flex;justify-content:center;gap:60px;margin-top:25px}.result-stats strong{font-size:31px;font-weight:580;display:block;line-height:1.2}.result-stats span{font-size:13px;color:var(--muted)}.result-tabs{margin-top:23px}.result-status{font-size:12px;font-weight:500;display:flex;gap:6px;align-items:center;margin-top:8px}.result-list .word-row{grid-template-columns:minmax(180px,1fr) minmax(0,1.6fr) 44px}.game-choice{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-top:18px}.game-choice button{border:1px solid var(--line);background:var(--paper);border-radius:11px;min-height:93px;padding:10px 4px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font-size:13px}.game-choice button:hover{background:var(--light);border-color:var(--primary)}.game-choice svg{color:var(--primary)}.inline-error{color:var(--red);font-size:14px;line-height:1.6}.import-preview{max-height:190px;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:12px;margin-top:10px;font-size:14px}.import-preview p{padding:5px 0;border-bottom:1px solid var(--line)}.import-preview p:last-child{border:0}.progress-history{display:grid;gap:10px;margin-top:18px}.history-item{display:flex;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:10px;padding:12px 16px;background:var(--paper);gap:16px;font-size:14px;text-align:left}.history-item span{font-size:12px;color:var(--muted)}
@media(min-width:1550px){.content{padding-top:40px}.hero{min-height:244px}.game-card{min-height:232px}.hero h1{font-size:41px}}
@media(max-width:1150px){:root{--sidebar:185px}.sidebar{padding:28px 13px}.brand{padding:0 5px;gap:8px}.brand-name{font-size:23px}.content{padding:26px 26px 25px}.topbar{padding:0 26px;height:76px}.hero{padding:28px}.hero h1{font-size:32px}.game-card{padding:19px;min-height:219px}.game-grid{gap:12px}.game-card p{font-size:13px}.book-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{padding:14px 15px;gap:10px}.hero-art .orbit{width:211px;height:211px}.hero-art .orbit:after{width:170px;height:170px;inset:20px}.art-word-card{width:104px;height:126px}.hero-art .art-word-card:first-of-type{transform:translate(-38px,7px) rotate(-10deg)}.hero-art .art-word-card.second{transform:translate(48px,-5px) rotate(9deg)}.settings-grid{gap:16px}.panel{padding:21px}.game-stage{height:calc(100dvh - 310px)}.game-shell.has-controls .game-stage{height:calc(100dvh - 377px)}}
@media(max-width:900px){.game-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero{grid-template-columns:1fr .7fr;padding:25px}.hero h1{font-size:29px}.hero-art .art-word-card{width:91px;height:116px}.art-word-card strong{font-size:23px}.art-word-card span{font-size:10px}.hero-art .orbit{width:173px;height:173px}.hero-art .orbit:after{width:141px;height:141px;inset:15px}.hero-art .art-word-card:first-of-type{transform:translate(-30px,7px) rotate(-10deg)}.hero-art .art-word-card.second{transform:translate(40px,-4px) rotate(9deg)}.art-check{right:0}.stats{margin-bottom:23px}.stat{padding:16px 13px}.stat-icon{display:none}.stat strong{font-size:24px}.hero-tag{font-size:11px}.hero p{font-size:12px}.settings-grid{grid-template-columns:1fr}.settings-grid .wide{grid-column:auto}.filters-grid{grid-template-columns:1fr 1fr}.filters-grid .search-box{grid-column:1/-1}.word-row{grid-template-columns:1fr 1.1fr 44px;gap:13px}.word-actions{flex-direction:column;align-items:flex-end}.result-list .word-row{grid-template-columns:1fr 1.2fr 44px}.play-progress .progress-track{width:80px}.game-prompt{padding:13px 18px}.prompt-main{font-size:20px}.mole-field{padding:25px;gap:17px}.mole-word{font-size:18px}.result-stats{gap:40px}.date-filter{grid-template-columns:1fr 1fr}.date-filter label:last-child{grid-column:1/-1}.book-strip .pill{display:none}}
@media(max-width:700px){:root{--sidebar:0px}.sidebar{display:none}.page-area{margin-left:0}.topbar{height:66px;padding:0 20px}.breadcrumb{font-size:13px}.topbar-tools{gap:10px}.local-label{font-size:12px}.local-label svg{width:17px;height:17px}.content{padding:22px 19px 92px;max-width:640px}.topbar .mobile-brand{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:600;color:var(--primary)}.mobile-brand svg{width:25px;height:25px}.topbar .breadcrumb{display:none}.bottom-nav{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;bottom:0;left:0;right:0;border-top:1px solid var(--line);background:#FCFCF9F5;backdrop-filter:blur(12px);padding:7px 13px calc(8px + env(safe-area-inset-bottom));z-index:40}.bottom-nav button{border:0;background:transparent;padding:4px 0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:3px;color:#637268;font-size:11px;min-height:49px}.bottom-nav button svg{width:23px;height:23px}.bottom-nav button.active{color:var(--primary);font-weight:650}.bottom-nav button.active svg{background:#E3ECDC;border-radius:7px;outline:5px solid #E3ECDC}.bottom-nav button.active span{margin-top:2px}.hero{min-height:196px;padding:24px;grid-template-columns:1fr .7fr;margin-bottom:18px}.hero h1{font-size:29px;letter-spacing:-.07em}.hero p{font-size:12px}.hero-art{min-height:137px}.hero-art .art-word-card{width:88px;height:111px}.hero-art .art-word-card:first-of-type{transform:translate(-23px,8px) rotate(-10deg)}.hero-art .art-word-card.second{transform:translate(39px,-4px) rotate(9deg)}.hero-art .orbit{width:165px;height:165px}.hero-art .orbit:after{width:137px;height:137px;inset:13px}.art-check{right:-3%;bottom:0%;height:29px;width:29px}.art-dots{left:6%;top:2%;box-shadow:122px 125px 0 #79936C}.stats{border-radius:12px;margin-bottom:24px}.stat{padding:15px 14px;gap:8px}.stat-icon{display:grid;width:33px;height:33px}.stat-icon svg{width:19px;height:19px}.stat strong{font-size:22px}.stat strong span{font-size:10px;margin-left:4px}.stat p{font-size:11px}.game-grid{gap:12px}.game-card{min-height:204px;padding:17px}.game-card h3{font-size:20px;margin-top:13px}.game-card p{font-size:12px}.game-card-footer{padding-top:14px}.game-icon{width:39px;height:39px;border-radius:10px}.game-icon svg{width:24px;height:24px}.game-card-footer .tag{font-size:10px;padding:2px 6px}.game-number{font-size:10px}.section-heading h2{font-size:21px}.section-heading p{font-size:12px}.book-strip{padding:13px 15px;gap:10px}.book-strip h3{font-size:14px}.book-strip p{font-size:11px}.book-strip .button{padding:7px 9px;font-size:12px;min-height:44px}.book-strip .book-mark{width:32px;min-width:32px;height:39px}.book-strip .book-mark svg{width:20px;height:20px}.page-footer{font-size:11px;gap:5px}.page-title h1{font-size:29px}.page-title .row{gap:8px}.page-title p{font-size:14px}.page-title .button{padding:9px 12px;font-size:13px}.book-grid{gap:10px}.book-card{padding:14px 12px;gap:10px;grid-template-columns:32px 1fr}.book-card h3{font-size:14px;padding-right:3px}.book-spine{height:43px;width:29px;font-size:11px}.book-card .small{font-size:11px}.panel{padding:19px;border-radius:14px}.panel h2{font-size:20px}.panel .notice{margin-top:14px}.filter-chips{gap:7px;margin:17px 0}.chip{font-size:12px;padding:6px 12px;min-height:37px}.word-row{grid-template-columns:1fr 44px;gap:8px;padding:17px 0}.word-row>div:first-child{grid-column:1}.word-row>.definition{grid-column:1;grid-row:2}.word-row>.word-actions{grid-column:2;grid-row:1/3;gap:7px}.word-row h3{font-size:21px}.definition{font-size:17px}.word-actions .icon-button{border-color:transparent;background:#F0F3EA}.filters-grid{gap:9px}.filters-grid select{font-size:13px}.pager{font-size:12px}.pager .button{font-size:12px;padding:8px 11px}.toast{left:50%;bottom:91px;font-size:13px;width:max-content}.modal-backdrop{padding:13px;align-items:center}.modal{padding:23px 21px;max-height:calc(100dvh - 26px);border-radius:18px}.modal-title-row h2{font-size:22px}.modal-subtitle{font-size:13px;margin-bottom:18px}.modal form{gap:16px}.modal-actions{margin-top:18px}.game-choice{gap:6px}.game-choice button{font-size:11px;min-height:84px}.play-content{padding:17px 13px 80px;max-width:700px}.play-top{gap:8px;margin-bottom:12px}.play-title{gap:8px}.play-title h1{font-size:20px}.play-title p{font-size:10px;max-width:200px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.play-title .icon-button{height:40px;min-width:40px;width:40px}.play-progress{font-size:12px;gap:7px}.play-progress .progress-track{display:none}.play-progress .button{padding:8px 11px;min-height:42px;font-size:12px}.play-progress .button svg{width:17px;height:17px}.game-stage{height:calc(100dvh - 327px);min-height:215px;max-height:690px}.game-shell.has-controls .game-stage{height:calc(100dvh - 382px);min-height:195px}.game-prompt{min-height:79px;padding:12px 15px;gap:10px}.prompt-label{font-size:11px}.prompt-main{font-size:18px;max-height:67px;line-height:1.5}.prompt-secondary{font-size:12px}.game-footer{padding:9px 12px;min-height:44px;font-size:11px;gap:5px}.game-footer .keyboard-tip{display:none}.game-shell{border-radius:14px}.game-instructions{font-size:11px}.play-instructions{font-size:11px;margin-top:8px}.pair-board{padding:13px;gap:7px}.pair-card{border-radius:8px;padding:7px}.pair-card .card-text{font-size:18px;line-height:1.28}.unknown-word{font-size:11px;line-height:1;height:30px;min-height:30px;border-radius:0 0 7px 7px}.pair-cell.has-unknown .pair-card .card-text{padding-bottom:23px}.pair-card .card-back{font-size:23px}.mole-field{padding:23px 15px;gap:17px 12px}.mole-word{font-size:18px;min-height:60px;padding:9px 6px;border-radius:11px}.controls{gap:6px;padding:8px}.control-button{min-width:48px;height:43px}.control-label{font-size:11px;margin:0 6px}.lives{font-size:17px;letter-spacing:1px}.preview-tag{font-size:13px}.filter-section{grid-template-columns:1fr;gap:3px}.filter-section>span{padding:0}.checks-inline{gap:1px 13px}.checks-inline label{font-size:13px}.wrong-row .definition{font-size:16px}.wrong-row{gap:10px}.settings-row{gap:13px}.settings-row select{max-width:140px;font-size:13px}.result-hero{padding:25px 16px}.result-hero h1{font-size:26px}.result-stats{gap:33px}.result-stats strong{font-size:28px}.result-stats span{font-size:12px}.result-list .word-row{grid-template-columns:1fr 44px}.result-list .word-row>.definition{grid-column:1;grid-row:2}.result-list .word-row>button{grid-column:2;grid-row:1/3}.result-tabs{margin-top:15px}.correction .answer{font-size:32px}.source-table{font-size:12px}.storage-banner{font-size:12px;padding:10px 16px}}
@media(min-width:701px){.mobile-brand{display:none}}
@media(max-width:400px){.content{padding-left:14px;padding-right:14px}.hero{padding:20px 17px;grid-template-columns:1fr .7fr;min-height:186px}.hero h1{font-size:26px}.hero-art .art-word-card{width:76px;height:101px}.hero-art .art-word-card:first-of-type{transform:translate(-23px,9px) rotate(-10deg)}.hero-art .art-word-card.second{transform:translate(30px,-3px) rotate(9deg)}.art-word-card strong{font-size:21px}.hero-art .orbit{width:146px;height:146px}.hero-art .orbit:after{width:120px;height:120px;inset:12px}.hero-art .art-check{display:none}.hero-tag{font-size:10px}.hero p{font-size:11px}.stat{padding:13px 13px}.stat-icon{display:none}.game-card{padding:16px 14px;min-height:213px}.game-card h3{font-size:19px}.game-card p{font-size:12px}.game-card-footer .tag{font-size:10px}.book-strip{padding:12px;gap:8px}.book-strip h3{font-size:13px}.book-strip .book-mark{display:none}.book-card{grid-template-columns:1fr}.book-spine{display:none}.game-choice{grid-template-columns:repeat(3,1fr)}.game-choice button{font-size:13px;min-height:79px}.field-grid{gap:10px}.quantity{gap:5px}.quantity button{padding:6px 11px}.quantity input{width:90px}.modal{padding:20px 17px}.play-content{padding-left:9px;padding-right:9px}.play-title h1{font-size:18px}.play-title p{max-width:160px}.play-progress .button{padding:8px}.play-progress>span{font-size:11px}.play-title .icon-button{min-width:35px;width:35px}.pair-board{padding:12px 10px;gap:6px}.pair-card .card-text{font-size:18px}.prompt-main{font-size:18px}.mole-word{font-size:18px}.mole-field{padding:21px 10px;gap:13px 8px}.page-title h1{font-size:27px}.result-stats{gap:27px}.control-label{display:none}.book-grid{gap:9px}.game-stage{min-height:195px}.game-shell.has-controls .game-stage{min-height:180px}}
@media(max-height:620px) and (max-width:700px){.play-content{padding-top:10px}.play-top{margin-bottom:8px}.play-title p{display:none}.game-prompt{min-height:64px;padding:8px 12px}.game-stage{height:calc(100dvh - 290px);min-height:180px}.game-shell.has-controls .game-stage{height:calc(100dvh - 345px);min-height:155px}.play-instructions{display:none}.game-footer{min-height:36px;padding:6px 10px}.controls{padding:5px}.control-button{height:41px}.mole-word{min-height:44px;font-size:18px}.mole-field{padding:14px 12px;gap:10px}.game-prompt .prompt-main{max-height:50px}.mole-hole:after{bottom:0}.pair-board{gap:6px;padding:10px}.modal{max-height:calc(100dvh - 20px)}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* Functional labels remain readable; decorative card marks may be smaller. */
.game-card p,.hero p,.section-heading p,.book-strip p,.book-card .small,.stat p,.sidebar-note,.notice,.config-rules,.page-footer,.game-footer,.play-instructions,.prompt-label,.prompt-secondary,.game-card-footer .tag,.control-label,.phonetic{font-size:14px}
.stat strong span,.book-strip .button{font-size:14px}.definition,.wrong-row .definition{font-size:18px}.unknown-word{height:44px;min-height:44px;font-size:14px}.pair-cell.has-unknown .pair-card .card-text{padding-bottom:38px}.game-card{min-height:224px}.control-button{min-height:44px}.game-footer .keyboard-tip{white-space:nowrap}.game-footer>span:first-child{min-width:0}.sidebar-note{padding-left:5px;padding-right:5px}
/* Fit the entire round above mobile navigation, without scrolling the board. */
.play-content{padding-top:22px;padding-bottom:16px}#play-screen{display:flex;flex-direction:column;height:calc(100dvh - 122px);min-height:330px}.play-top{flex-shrink:0}.game-shell{flex:1;min-height:0}.game-prompt,.game-footer,.controls{flex-shrink:0}.game-stage,.game-shell.has-controls .game-stage{height:auto;min-height:0;max-height:none;flex:1}.play-instructions{flex-shrink:0}.game-prompt .prompt-main{max-height:90px}
@media(max-width:1150px){#play-screen{height:calc(100dvh - 114px)}}
@media(max-width:700px){.play-content{padding-top:17px;padding-bottom:80px}#play-screen{height:calc(100dvh - 166px - env(safe-area-inset-bottom));min-height:310px}.game-card{min-height:233px}.game-card p,.hero p,.section-heading p,.book-strip p,.book-card .small,.stat p,.notice,.config-rules,.page-footer,.game-footer,.play-instructions,.prompt-label,.prompt-secondary,.game-card-footer .tag,.control-label,.phonetic{font-size:14px}.hero h1{font-size:28px}.hero p{max-width:198px}.game-card-footer .tag{font-size:12px}.game-footer .button{flex-shrink:0}.game-prompt .prompt-main{max-height:67px}.control-label{font-size:12px}.page-footer{font-size:12px}.book-strip h3{font-size:15px}.book-strip p{font-size:13px}.book-card .small{font-size:13px}.play-instructions{font-size:13px}.game-footer{font-size:13px}.unknown-word{height:44px;min-height:44px;font-size:13px}.stat strong span{font-size:12px}}
@media(max-width:400px){.hero h1{font-size:26px}.hero p{font-size:13px}.game-card h3{font-size:19px}.game-card{min-height:246px}.game-card-footer .tag{font-size:12px}.book-card h3{font-size:15px}.book-card .small{font-size:13px}.game-card p{font-size:14px}.book-strip .button{font-size:13px}.play-progress .button{font-size:13px}.pair-card .card-text{font-size:18px}}
@media(max-height:620px) and (max-width:700px){.play-content{padding-top:10px}#play-screen{height:calc(100dvh - 156px - env(safe-area-inset-bottom));min-height:270px}.play-instructions{display:none}.game-prompt{padding:8px 12px;min-height:64px}.game-prompt .prompt-main{max-height:50px}.control-button{height:44px}.controls{padding:5px}.game-footer{font-size:12px}.prompt-label,.prompt-secondary{font-size:13px}}
@keyframes pop-in{from{transform:translateY(6px)}to{transform:translateY(0)}}

/* Twenty-word pairing rounds: 40 cards stay in a fixed grid on every screen. */
.pair-board-dense{padding:10px;gap:6px}
.pair-board-dense .pair-card{padding:5px;border-radius:8px}
.pair-board-dense .card-text{font-size:16px;line-height:1.22;max-height:100%;overflow:hidden}
.pair-play .game-footer{height:64px;min-height:64px;max-height:64px;flex-shrink:0}
.pair-detail{display:flex;align-items:center;gap:10px;width:100%;min-width:0;height:100%}
.pair-detail-text{flex:1;min-width:0;font-size:18px;line-height:1.3;overflow:auto;overflow-wrap:anywhere;max-height:100%}
.pair-detail .button{flex-shrink:0;min-height:44px;padding:8px 12px}
.has-pair-detail>span{display:none}
.pair-play .play-instructions{display:none}
@media(max-width:700px){
  #play-screen.pair-play{position:fixed;inset:0;z-index:45;height:auto;min-height:0;padding:12px 10px calc(12px + env(safe-area-inset-bottom));padding-top:max(12px,env(safe-area-inset-top));background:var(--bg)}
  .pair-play .play-top{min-height:44px;margin-bottom:8px}
  .pair-play .game-prompt{min-height:64px;height:64px;padding:8px 10px}
  .pair-play .prompt-main{font-size:16px;line-height:1.25}
  .pair-play .prompt-label,.pair-play .prompt-secondary{font-size:12px;line-height:1.4}
  .pair-play .prompt-label{white-space:nowrap}
  .pair-play .game-footer{height:64px;min-height:64px;max-height:64px;padding:6px 10px;font-size:12px}
  .pair-board-dense{padding:8px;gap:4px}
  .pair-board-dense .pair-card{padding:4px}
  .pair-board-dense .card-text{font-size:14px;line-height:1.2}
  .pair-play .pair-detail{gap:6px}
}
@media(max-height:650px) and (max-width:700px){
  #play-screen.pair-play{padding:6px;padding-top:max(6px,env(safe-area-inset-top));padding-bottom:max(6px,env(safe-area-inset-bottom))}
  .pair-play .play-top{margin-bottom:4px}
  .pair-play .play-title p{display:none}
  .pair-play .game-prompt{min-height:52px;height:52px;padding:5px 8px}
  .pair-play .game-footer{height:56px;min-height:56px;max-height:56px;padding:5px 8px}
  .pair-board-dense{padding:6px;gap:3px}
  .pair-board-dense .pair-card{padding:3px}
  .pair-board-dense .card-text{font-size:13px;line-height:1.15}
}

/* v1.2 — calmer 10-pair memory board and purpose-built arcade layouts. */
.pair-board-memory.pair-board-dense{gap:9px;padding:14px}
.pair-board-memory.pair-board-dense .card-text{font-size:18px;line-height:1.3}
#play-screen.arcade-play{margin-left:auto;margin-right:auto;max-width:920px}
#play-screen.catch-play{max-width:800px}
.arcade-play .play-instructions{display:none}
.arcade-play .game-prompt{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;padding:14px 22px 16px;min-height:108px;background:#FCFCF9}
.arcade-play .game-prompt>div:first-child{display:contents}
.arcade-play .prompt-label{grid-column:1;grid-row:1;font-size:13px;line-height:1.4}
.arcade-play .prompt-secondary{grid-column:2;grid-row:1;font-size:12px;line-height:1.4;padding:4px 9px;border:1px solid #DFE5D7;border-radius:20px;white-space:nowrap;background:#F2F5EC}
.arcade-play .game-prompt .prompt-main{grid-column:1 / -1;grid-row:2;font-size:25px;font-weight:650;line-height:1.4;text-align:center;max-height:72px;min-height:35px;margin-top:5px;scrollbar-width:thin}
.arcade-play .game-footer{padding:10px 18px;min-height:43px;font-size:13px;justify-content:center;background:#FCFCF9}
.arcade-play .keyboard-tip{display:none}
.catch-play .game-stage{touch-action:none}
.catch-play .canvas-stage{cursor:grab;touch-action:none}
.catch-play .canvas-stage:active{cursor:grabbing}
.catch-play .catch-controls{display:grid;grid-template-columns:68px minmax(0,1fr) 68px;gap:14px;padding:12px 20px;background:#FCFCF9}
.catch-controls .control-button{height:54px;min-height:48px;font-size:24px;border-radius:14px;background:#EEF3E8;border:1px solid #CDD9C5;box-shadow:0 3px 0 #E0E7D9;color:#326B5A}
.catch-controls .control-button:active{background:#DDE9D2;box-shadow:none;transform:translateY(2px)}
.catch-controls .control-label{display:flex;flex-direction:column;text-align:center;gap:2px;margin:0;line-height:1.5}
.catch-controls .control-label strong{font-size:15px;font-weight:550;color:#334B3E}
.catch-controls .control-label span{font-size:12px;color:#657260}

/* Hole masks, a rising animal, a held word sign, and a foreground earthen rim. */
.mole-play .mole-garden{height:100%;min-height:0;display:flex;flex-direction:column;background:#EEF2E5}
.mole-play .mole-round-meter{flex:0 0 40px;display:flex;align-items:center;gap:12px;padding:0 24px;font-size:13px;color:#606F50;background:#F5F6EF}
.mole-play .mole-meter-label{min-width:5em}
.mole-play .mole-meter-track{height:5px;flex:1;background:#DCE5CF;border-radius:5px;overflow:hidden}
.mole-play #mole-timer{height:100%;width:100%;background:#70925A;transform-origin:left center;border-radius:5px}
.mole-play #mole-seconds{font-variant-numeric:tabular-nums;min-width:3.4em;text-align:right}
.mole-play .mole-field{flex:1;min-height:0;height:auto;width:100%;padding:15px clamp(12px,4%,34px) 22px;gap:12px clamp(10px,4%,34px);background:radial-gradient(ellipse at 50% 100%,#E3EACF 0,transparent 65%),#EEF2E5}
.mole-play .mole-hole{position:relative;min-width:0;min-height:0;display:block;isolation:isolate}
.mole-play .mole-hole:after{display:none}
.mole-play .hole-shadow{position:absolute;bottom:13px;left:4%;width:92%;height:25%;border-radius:50%;background:#4E4738;box-shadow:inset 0 7px 7px #363326;border:5px solid #B2A17D;z-index:0}
.mole-play .mole-clip{position:absolute;inset:0 0 20px;overflow:hidden;z-index:1;border-radius:0 0 42% 42% / 0 0 13% 13%}
.mole-play .mole-word{position:absolute;inset:0;width:100%;height:100%;min-height:0;max-height:none;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:#423C2B;animation:none;font-size:18px;line-height:1.18;opacity:1;overflow:visible;transform:translateY(calc((1 - var(--rise,0)) * 112%));transition:none;touch-action:manipulation}
.mole-play .mole-word:disabled{opacity:1;cursor:default}
.mole-play .mole-word:hover{background:transparent;border-color:transparent}
.mole-play .mole-word:focus-visible{outline:none}
.mole-play .mole-word:focus-visible .mole-sign{outline:3px solid #326B5A;outline-offset:-3px}
.mole-play .mole-body{height:100%;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;transform-origin:50% 100%}
.mole-play .mole-animal{width:74%;max-width:146px;height:auto;min-height:0;max-height:calc(100% - 24px);flex:0 1 auto;display:block;margin-bottom:-19px;overflow:visible}
.mole-play .mole-closed-eyes{display:none}
.mole-play .mole-sign{position:relative;z-index:2;flex:0 0 auto;max-width:96%;min-width:70%;min-height:39px;display:flex;align-items:center;justify-content:center;padding:8px 12px 9px;border:1.5px solid #B59B6E;border-radius:9px;background:#FFF5DC;box-shadow:0 3px 0 #AC9068;text-align:center;letter-spacing:0;font-size:20px;font-weight:600;overflow-wrap:anywhere}
.mole-play .mole-word:hover:not(:disabled) .mole-sign{border-color:#715F3E;background:#FFF9E9}
.mole-play .mole-paw{position:absolute;top:-5px;width:20px;height:11px;border:1px solid #977554;border-radius:7px;background:#B69A75;z-index:3}
.mole-play .mole-paw.left{left:8px;transform:rotate(-9deg)}
.mole-play .mole-paw.right{right:8px;transform:rotate(9deg)}
.mole-play .hole-rim{position:absolute;bottom:12px;left:4%;width:92%;height:22%;border:6px solid #B1A17B;border-top:0;border-radius:0 0 50% 50%;clip-path:inset(53% -3px -3px);z-index:2;pointer-events:none}
.mole-play .hole-tuft{position:absolute;bottom:13px;right:1%;height:13px;width:13px;border-left:2px solid #92A472;border-right:2px solid #92A472;transform:skew(-17deg);z-index:3;pointer-events:none}
.mole-play .hole-number{position:absolute;bottom:-7px;left:0;right:0;text-align:center;font-size:11px;line-height:1;color:#788265;letter-spacing:.05em;pointer-events:none}
.mole-play .mole-word.correct .mole-body{transform:scale(.96,.91)}
.mole-play .mole-word.correct .mole-sign{background:#E4EFD6;border-color:#6F8D55;color:#365633}
.mole-play .mole-word.incorrect .mole-sign{background:#F9E9DA;border-color:#AD7060}
.mole-play .mole-word.correct .mole-eyes{display:none}
.mole-play .mole-word.correct .mole-closed-eyes{display:block}
.mole-play .mole-impact{position:absolute;inset:0;z-index:8;pointer-events:none;--hit-progress:0}
.mole-play .mole-hammer{position:absolute;width:70px;height:79px;top:0;left:calc(50% - 7px);transform-origin:80% 85%;transform:rotate(calc(-34deg + var(--hit-progress) * 42deg));filter:drop-shadow(0 2px 0 #D5D9CB)}
.mole-play .impact-rays{position:absolute;top:28%;left:calc(50% - 22px);font-size:34px;color:#B5892F;text-shadow:0 1px #FFF}
.mole-play .impact-result{position:absolute;top:0;left:50%;transform:translate(-50%,calc(-2px - var(--hit-progress) * 12px));border-radius:20px;background:#326B5A;color:white;padding:3px 10px;font-size:13px;white-space:nowrap}
.mole-play .mole-impact.wrong .impact-result{background:#9E493F}
.mole-play .mole-impact.empty .impact-result{background:#6F765D}
@media(hover:hover){
  .mole-play .mole-field,.mole-play .mole-word:not(:disabled){cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='36' height='36' viewBox='0 0 36 36'%3E%3Cpath d='m15 15 5-4 14 19-6 4z' fill='%23BF8D52' stroke='%237C5D3C'/%3E%3Crect x='2' y='4' width='25' height='13' rx='4' fill='%23427562' stroke='%23285241' stroke-width='2' transform='rotate(-20 14 10)'/%3E%3C/svg%3E") 8 12,crosshair}
}
@media(max-width:700px){
  #play-screen.arcade-play{position:fixed;inset:0;z-index:45;height:auto;min-height:0;max-width:none;padding:10px 10px calc(10px + env(safe-area-inset-bottom));padding-top:max(10px,env(safe-area-inset-top));background:var(--bg)}
  .arcade-play .play-top{min-height:46px;margin-bottom:9px;gap:8px}
  .arcade-play .play-title h1{font-size:19px}
  .arcade-play .play-title .icon-button{min-width:42px;width:42px;height:44px}
  .arcade-play .play-title p{font-size:11px;max-width:138px}
  .arcade-play .play-progress{gap:10px}
  .arcade-play .play-progress .button{min-height:44px;font-size:13px;padding:8px 10px}
  .arcade-play .game-prompt{padding:12px 14px 13px;min-height:98px}
  .arcade-play .game-prompt .prompt-main{font-size:23px;max-height:65px}
  .arcade-play .prompt-label{font-size:12px}
  .arcade-play .prompt-secondary{font-size:12px;padding:3px 7px}
  .arcade-play .game-footer{font-size:12px;padding:9px 10px;min-height:36px}
  .catch-play .catch-controls{grid-template-columns:58px minmax(0,1fr) 58px;gap:8px;padding:11px 14px}
  .catch-controls .control-button{height:50px}
  .catch-controls .control-label strong{font-size:14px}
  .catch-controls .control-label span{font-size:11px}
  .mole-play .mole-round-meter{padding:0 15px;gap:9px;flex-basis:34px;font-size:12px}
  .mole-play .mole-field{padding:13px 16px 24px;gap:14px 20px}
  .mole-play .mole-sign{font-size:18px;padding:7px 10px 8px}
  .pair-board-memory.pair-board-dense{gap:6px;padding:9px}
  .pair-board-memory.pair-board-dense .card-text{font-size:18px;line-height:1.28}
}
@media(max-height:650px) and (max-width:700px){
  #play-screen.arcade-play{padding:6px;padding-top:max(6px,env(safe-area-inset-top));padding-bottom:max(6px,env(safe-area-inset-bottom))}
  .arcade-play .play-top{margin-bottom:5px}
  .arcade-play .play-title p{display:none}
  .arcade-play .game-prompt{min-height:83px;padding:7px 11px 9px}
  .arcade-play .game-prompt .prompt-main{font-size:21px;max-height:56px;margin-top:2px}
  .arcade-play .game-footer{font-size:12px;min-height:32px;padding:6px 9px}
  .catch-play .catch-controls{padding:7px 12px;grid-template-columns:52px minmax(0,1fr) 52px}
  .catch-controls .control-button{height:46px;min-height:46px}
  .mole-play .mole-field{gap:8px 16px;padding:8px 13px 20px}
  .mole-play .mole-animal{margin-bottom:-22px}
  .mole-play .mole-sign{padding:5px 8px 7px;font-size:18px}
  .pair-board-memory.pair-board-dense .card-text{font-size:18px}
}
@media(max-height:480px) and (min-width:560px){
  #play-screen.arcade-play{position:fixed;inset:0;z-index:45;height:auto;max-width:none;min-height:0;padding:6px max(10px,env(safe-area-inset-left));background:var(--bg)}
  .arcade-play .play-top{min-height:44px;margin-bottom:5px}
  .arcade-play .play-title p{display:none}
  .arcade-play .game-shell{display:grid;grid-template-columns:180px minmax(0,1fr);grid-template-rows:minmax(0,1fr) 61px}
  .arcade-play .game-prompt{grid-column:1;grid-row:1;display:flex;flex-direction:column;justify-content:center;border-bottom:none;border-right:1px solid var(--line);min-height:0;padding:12px}
  .arcade-play .game-prompt .prompt-main{max-height:130px;font-size:21px;order:2}
  .arcade-play .prompt-secondary{order:3;margin-top:8px}
  .arcade-play .game-stage{grid-column:2;grid-row:1;min-height:0;height:100%}
  .arcade-play .game-footer{grid-column:1;grid-row:2;font-size:12px;border-right:1px solid var(--line);text-align:center}
  .catch-play .catch-controls{grid-column:2;grid-row:2;padding:6px 15px}
  .mole-play .game-stage{grid-row:1 / -1}
  .mole-play .mole-field{padding:6px 18px 18px;gap:7px 20px}
  .mole-play .mole-round-meter{flex-basis:30px}
}

@media(max-width:700px){
  body:has(.arcade-play) .bottom-nav,body:has(.arcade-play) .topbar{display:none}
  body:has(.arcade-play){overflow:hidden}
}
@media(max-height:480px) and (min-width:701px){
  #play-screen.memory-play{position:fixed;inset:0;z-index:45;height:auto;min-height:0;padding:6px 10px;background:var(--bg)}
  .memory-play .play-top{min-height:44px;margin-bottom:4px}
  .memory-play .play-title p{display:none}
  .memory-play .game-prompt{height:52px;min-height:52px;padding:5px 12px}
  .memory-play .prompt-main{font-size:17px}
  .memory-play .prompt-label,.memory-play .prompt-secondary{font-size:12px}
  .memory-play .game-footer{height:50px;min-height:50px;max-height:50px;padding:5px 10px;font-size:12px}
  .memory-play .pair-board-memory{gap:5px;padding:6px}
}

.mole-play .mole-animal{transform:translateY(var(--bob,0px))}
