:root{font-family:Inter,-apple-system,BlinkMacSystemFont,'Noto Sans TC','Microsoft JhengHei',sans-serif;color:#203941;background:#f6f7f1;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:560px}button,input,select{font:inherit}button{cursor:pointer}h1,h2,p{margin-top:0}h1{font-size:clamp(1.6rem,3vw,2.6rem);letter-spacing:-.035em}h2{font-size:1.22rem}p{line-height:1.6;color:#647478}.topbar{height:68px;max-width:1260px;margin:auto;padding:0 30px;display:flex;align-items:center;justify-content:space-between}.brand{border:0;background:none;font-weight:900;font-size:1.14rem;color:#25483c}.brand-glyph{color:#5eaa91;font-size:1.65rem;vertical-align:middle;margin-right:4px}.subtitle,.top-right{font-size:.82rem;color:#7b8e8e;font-weight:500}.subtitle{margin-left:10px}.pill{font-size:.78rem;background:#e8efe9;color:#4b7667;padding:7px 11px;border-radius:100px;display:inline-block;margin-left:7px}.shell{width:min(1190px,calc(100% - 46px));margin:12px auto 45px;min-height:calc(100vh - 150px)}.footnote{text-align:center;color:#9aabaa;font-size:.75rem;padding:10px 20px 24px}.hero{text-align:center;padding:52px 10px 33px}.hero p{max-width:520px;margin:0 auto}.kicker,.eyebrow{display:block;text-transform:uppercase;letter-spacing:.14em;font-size:.74rem;color:#5a9e85;font-weight:800;margin-bottom:14px}.home-grid{display:grid;grid-template-columns:1.15fr 1fr 1fr;gap:20px}.tile,.panel{border:1px solid #e3e9e5;background:#fff;border-radius:21px;box-shadow:0 10px 25px #537c7510}.tile{padding:28px;min-height:260px}.tile.prime{background:linear-gradient(145deg,#e6f5ee,#fff)}.tile-icon{font-size:2rem;color:#68a88d;margin-bottom:15px}.tile p{min-height:68px}.btn{border:0;border-radius:12px;padding:12px 17px;font-weight:750;font-size:.91rem;color:#294c41;background:#e9f4ee;margin:3px}.btn.primary{color:#fff;background:#4b9a7c}.btn.outline{background:white;border:1px solid #c8d8d0}.btn.subtle{color:#6e8f83;background:transparent}.btn:hover{filter:brightness(.97)}.page-title{margin:28px 0}.page-title h1{margin-bottom:8px}.panel{padding:27px}.form-panel{max-width:750px;margin:auto}.form-panel label{display:block;margin:13px 0;color:#456057;font-weight:750;font-size:.92rem}select,input[type=number],input[type=text]{background:#fff;border:1px solid #d5e1db;border-radius:12px;padding:13px 15px;color:#213b34;outline-color:#4b9a7c}select{width:100%;display:block;margin-top:7px}input[type=number]{width:100%;display:block;margin-top:7px}.hint,.side-note{color:#8a9c99;font-size:.79rem;margin:13px 0}.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.keys-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.key-line{display:flex;justify-content:space-between;align-items:center;background:#f7faf7;border-radius:11px;padding:10px 12px;font-size:.83rem}.key-chip{padding:8px;border:1px solid #cbdcd3;background:white;border-radius:8px;color:#355b50}.key-chip.capturing{background:#d3f4e0}.error{color:#ac534f}.game-header{display:flex;justify-content:space-between;align-items:center;margin:18px 0}.game-header h1{font-size:1.45rem;margin:0}.game-header p{font-size:.83rem;margin:4px 0}.game-status{display:flex;align-items:center;flex-wrap:wrap}.game-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,1.05fr);gap:17px;align-items:start}.question-panel{min-height:560px;display:flex;flex-direction:column}.question-panel h2{font-size:clamp(1.6rem,3vw,2.4rem);margin:9px 0}.part-of-speech{font-size:.92rem}.reference{border:1px solid #d4e4db;background:#eef7f1;padding:18px;border-radius:14px;margin:14px 0}.reference span{display:block;color:#749086;font-size:.75rem;margin-bottom:7px}.reference strong{word-break:break-word}.input-label{font-weight:700;font-size:.88rem;margin-top:30px;margin-bottom:7px}.question-panel input{width:100%;font-size:1rem}.feedback{color:#b26c53;min-height:45px;font-size:.84rem;padding-top:10px}.question-foot{display:flex;flex-wrap:wrap;gap:12px;color:#8b9e96;font-size:.76rem;border-top:1px solid #e7eee9;margin-top:auto;padding-top:22px}.options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0}.option{background:#f0f6f2;border:1px solid #dae9dd;border-radius:10px;padding:11px 8px;font-size:.86rem;word-break:break-word}.board-panel{text-align:center;padding:17px 12px;display:flex;flex-direction:column;align-items:center}.board-info{display:flex;justify-content:space-between;align-items:center;width:min(100%,352px);padding-bottom:10px;font-size:.87rem}.board-info span{color:#7c9993;font-size:.79rem}.board{width:min(100%,320px);aspect-ratio:1/2;display:grid;grid-template-columns:repeat(10,1fr);grid-template-rows:repeat(20,1fr);background:#20374a;padding:7px;border:4px solid #9db8b3;border-radius:8px;box-shadow:0 9px 22px #20374a26;overflow:hidden}.cell{border:1px solid #ffffff0a;background:#2b4051}.cell-I{background:linear-gradient(135deg,#86d7e4,#43a9c8)}.cell-O{background:linear-gradient(135deg,#f9d98a,#e4ab50)}.cell-T{background:linear-gradient(135deg,#cbb7f1,#986fc7)}.cell-S{background:linear-gradient(135deg,#a9dcb8,#66b38c)}.cell-Z{background:linear-gradient(135deg,#f5b5ae,#d67572)}.cell-J{background:linear-gradient(135deg,#91baf5,#5d85bf)}.cell-L{background:linear-gradient(135deg,#efc491,#dc9b5c)}.control-pad{display:flex;justify-content:center;gap:7px;margin:15px auto 4px;flex-wrap:wrap;max-width:420px}.control-pad button{background:#e5f0ed;border:1px solid #d3e6dd;border-radius:11px;min-width:48px;min-height:46px;color:#477565;font-size:1.15rem;touch-action:none;user-select:none}.control-pad button:last-child{font-size:.83rem;font-weight:800;min-width:64px}.overlay{position:fixed;inset:0;background:#213d42a6;display:grid;place-items:center;z-index:10;padding:20px}.modal{background:#fff;border-radius:20px;padding:33px;text-align:center;width:min(420px,100%);box-shadow:0 20px 70px #142a3533}.modal p{font-size:.92rem}.summary-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:18px}.stat{background:#fff;padding:22px 18px;border:1px solid #e2eae5;border-radius:16px}.stat span{display:block;color:#80938c;font-size:.79rem}.stat strong{display:block;color:#30684f;font-size:1.65rem;margin-top:7px}.result-panel{max-width:740px}.history-list{display:flex;flex-direction:column;gap:10px}.history-row{display:flex;gap:18px;align-items:center;justify-content:space-between;background:#f6f9f6;border-radius:12px;padding:15px;font-size:.84rem}.history-row small{color:#8ca09a}.tabs{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:17px}.tabs button{border:1px solid #e1eae5;background:#fff;border-radius:8px;padding:10px 15px}.tabs button.selected{background:#e4f2e9;color:#3e8e71}.data-scroll{overflow:auto}.data-scroll table{border-collapse:collapse;width:100%;text-align:left}.data-scroll th,.data-scroll td{padding:12px;border-bottom:1px solid #e3ebe5;font-size:.85rem}.db-card{padding:22px;background:#f1f7f2;border-radius:12px;margin:7px 0}@media(max-width:860px){.home-grid{grid-template-columns:1fr 1fr}.home-grid .prime{grid-column:span 2}.shell{width:calc(100% - 24px)}.game-layout{grid-template-columns:minmax(0,1fr) minmax(240px,1fr);gap:10px}.panel{padding:16px}.board{width:min(100%,300px)}.question-panel{min-height:520px}.summary-grid{grid-template-columns:repeat(3,1fr)}}@media(max-width:620px){.topbar{padding:0 12px}.subtitle,.top-right{display:none}.game-layout{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:7px}.question-panel{min-height:445px}.question-panel h2{font-size:1.3rem}.board-info{font-size:.68rem;flex-wrap:wrap;gap:3px}.board-info span{font-size:.67rem}.control-pad{gap:2px}.control-pad button{min-width:32px;min-height:39px;font-size:.83rem;padding:2px}.options{grid-template-columns:1fr}.question-foot{font-size:.67rem}.game-header{align-items:flex-start;gap:10px}.game-status .pill{margin:2px;font-size:.67rem}.keys-grid,.home-grid{grid-template-columns:1fr}.home-grid .prime{grid-column:span 1}.summary-grid{grid-template-columns:repeat(2,1fr)}.footnote{font-size:.68rem}}
/* Milestone 0.2 personal library controls: large touch targets and readable form. */
.library-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:12px 0}
.upload-label{display:inline-flex;align-items:center;gap:8px;border-radius:12px;padding:11px 16px;background:#e8f3ee;color:#2d6d58;font-weight:750;cursor:pointer}
.upload-label input{max-width:220px;width:100%;font-size:.77rem}
.library-editor{margin-top:26px;border-top:1px solid #e3ebe5;padding-top:20px}
.library-editor summary{cursor:pointer;list-style:revert;font-weight:800;color:#347b60;padding:12px 0}
.library-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 16px;max-width:850px}
.library-form label{display:flex;flex-direction:column;gap:7px;font-size:.86rem;color:#50695d;font-weight:700}
.library-form input,.library-form select{width:100%;padding:11px 12px;border:1px solid #cfddd3;border-radius:9px;background:white;color:#233a32}
.library-form .actions{grid-column:1/-1}
.db-sub{display:block;color:#809b8e;margin-top:5px}
.delete-entry{border:1px solid #e9c6c1;color:#a45147;background:#fff;border-radius:8px;padding:7px 10px;cursor:pointer}
@media(max-width:720px){.library-form{grid-template-columns:1fr}.upload-label{flex-wrap:wrap}.upload-label input{max-width:100%}}
.cell-G{background:linear-gradient(135deg,#9ab1bb,#587180);border-color:#adc2c28c}
/* LAN multiplayer: responsive left questions and right own board; compact remote preview. */
.mp-entry-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.mp-label{display:block;font-size:.87rem;font-weight:750;margin:11px 0;color:#436453}
.mp-label input,.mp-label select{width:100%;margin-top:7px;display:block;border:1px solid #d3dfd7;padding:12px;border-radius:12px}
.mp-player-list{display:grid;gap:9px;margin:14px 0}.mp-person{background:#f0f6f2;border-radius:12px;padding:12px 15px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.mp-person span{font-size:.82rem;color:#708d81}
.mp-opponent{border:1px solid #dae6dc;border-radius:12px;padding:10px 14px;margin:10px 0;display:flex;align-items:center;gap:10px;flex-wrap:wrap}.mp-opponent span{font-size:.76rem;color:#77958a}
.mp-mini-board{display:grid;grid-template-columns:repeat(10,1fr);grid-template-rows:repeat(20,1fr);flex:none;width:70px;height:140px;background:#253748;border:2px solid #9fb6b5;padding:2px}.mp-mini-board span{border:1px solid #ffffff04}.mp-mini-board [class^="cell-"]{border-radius:1px}
body{min-width:320px}
@media(max-width:700px){.mp-entry-grid{grid-template-columns:1fr}.mp-opponent{flex-direction:column;align-items:flex-start}.mp-mini-board{width:60px;height:120px}}
