:root{--paper:#f8f7f1;--ink:#243f36;--green:#245c49;--muted:#6c7a72;--line:#dce3d8}*{box-sizing:border-box}html{background:var(--paper);scroll-behavior:smooth}body{margin:0;color:var(--ink);font:15px/1.75 -apple-system,BlinkMacSystemFont,'Hiragino Kaku Gothic ProN',Meiryo,sans-serif}button,input,textarea,select{font:inherit}button,.button{cursor:pointer;border:1px solid var(--line);border-radius:8px;padding:9px 15px;background:#fff;color:var(--ink);text-decoration:none;display:inline-block}button:hover,.button:hover{background:#eaf0e6}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #c78132;outline-offset:3px}[hidden]{display:none!important}header{max-width:1240px;margin:auto;padding:25px 32px;display:flex;align-items:center;gap:25px}.brand{font-weight:800;letter-spacing:.04em;text-decoration:none;color:var(--ink);font-size:17px}.brand span{display:inline-block;background:var(--green);color:white;font:italic 23px Georgia;padding:5px 9px;border-radius:7px;margin-right:8px}.header-note{font-size:12px;color:var(--muted);flex:1}.local-badge{font-size:11px;border:1px solid var(--line);border-radius:25px;padding:5px 12px;color:var(--muted)}nav{max-width:1176px;margin:auto;display:flex;gap:8px;border-bottom:1px solid var(--line);padding:0 0 14px}nav button{border:0;background:transparent;color:var(--muted);padding:9px 22px}nav button[aria-current=page]{background:var(--green);color:#fff}main{max-width:1240px;margin:auto;padding:42px 32px 70px}.hero{display:grid;grid-template-columns:1.4fr 1fr;gap:65px;align-items:center;padding:10px 0 65px}.eyebrow,.kicker{color:var(--green);font-size:11px;font-weight:750;letter-spacing:.13em}h1{font-size:clamp(27px,3.4vw,43px);letter-spacing:.015em;line-height:1.5;margin:12px 0 18px}p{margin:0 0 17px}.hero p:not(.eyebrow){font-size:14px;color:var(--muted);line-height:2}.primary{background:var(--green);color:white;border-color:var(--green);font-weight:700;padding:12px 22px}.primary:hover{background:#164b38;color:white}.hero .primary{margin-top:8px;display:flex;gap:50px}.hero-art{position:relative;background:#e6ecdd;border:1px solid #ccd7c4;border-radius:15px;transform:rotate(3deg);padding:35px 35px 45px;box-shadow:9px 12px 0 #e5e8dc}.art-top{font-size:10px;letter-spacing:.18em;border-bottom:1px solid #c8d4c0;padding-bottom:12px}.abc{font:76px/1.6 Georgia;color:var(--green);border-bottom:1px solid #c8d4c0;white-space:nowrap}.abc i{font-weight:400;font-style:normal;color:#9ba871}.art-line{font-size:13px;padding-top:16px}.sticker{position:absolute;right:-15px;bottom:10px;background:#f3d67c;border-radius:50%;padding:26px 12px;font:italic 19px Georgia;transform:rotate(-12deg)}.section-title{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.section-title h2{font-size:18px;margin:0}.section-title>span{font-size:12px;color:var(--muted)}.section-title p:not(.eyebrow){color:var(--muted);font-size:13px}.tool-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:17px}.tool{border-radius:14px;text-align:left;display:flex;flex-direction:column;padding:22px;min-height:282px}.tool:hover{transform:translateY(-3px)}.tool-icon{font:30px Georgia;display:block;margin-bottom:20px}.tool h3{font-size:19px;margin:10px 0}.tool p{font-size:12px;color:#526359;line-height:1.9}.tool-foot{border-top:1px solid #0001;padding-top:15px;margin-top:auto;font-size:12px;font-weight:700}.card-green{background:#e8efdf}.card-yellow{background:#f5ecd1}.card-purple{background:#eee8f2}.card-blue{background:#e5edf0}.today-tip{margin-top:28px;padding:22px 25px;background:#fff;border:1px solid var(--line);border-radius:12px;display:grid;grid-template-columns:150px 1fr;gap:5px 20px}.today-tip>span{font-size:12px;font-weight:700}.today-tip p{font-size:12px;margin:0}.today-tip button{grid-column:2;border:0;padding:0;background:none;width:fit-content;color:var(--green);font-size:12px;font-weight:700}.storage-note{font-size:11px;color:var(--muted);margin:16px 0 0}.panel{background:white;border:1px solid var(--line);border-radius:13px;padding:25px}.panel h2{font-size:17px;margin:0 0 18px}.actions,.editor-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.actions button,.actions .button{font-size:12px}.plan-layout{display:grid;grid-template-columns:250px 1fr;gap:22px}label{display:block;font-size:12px;font-weight:700;margin-bottom:18px}input,select,textarea{width:100%;display:block;border:1px solid var(--line);padding:10px 12px;border-radius:7px;background:#fafbf8;color:var(--ink);margin-top:7px;font-size:13px}textarea{resize:vertical;line-height:1.8}.form-grid{display:grid;grid-template-columns:2fr 1fr;gap:0 20px}.flow-label,.flow-row{display:grid;grid-template-columns:65px 1fr 1fr 30px;gap:8px}.flow-label{font-size:11px;color:var(--muted)}.flow-row{margin:8px 0}.flow-row textarea,.flow-row input{margin:0}.flow-row button{padding:0;height:35px;border:0;color:#9b4f3e}.editor #add-row{font-size:12px;margin:8px 0 25px}.editor-actions button{font-size:12px}.danger{color:#a14c3c}#plan-list{margin-top:17px}.saved-plan{padding:13px 0;border-bottom:1px solid var(--line)}.saved-plan button{border:0;padding:0;text-align:left;display:block;width:100%;font-size:13px}.saved-plan small{display:block;font-size:10px;color:var(--muted)}.saved-plan.active{border-left:3px solid var(--green);padding-left:10px}.upload{max-width:900px}.drop-zone{border:2px dashed #c7d4bf;border-radius:12px;background:#f6f8f1;padding:28px;text-align:center}.drop-zone span{display:block;font-size:36px}.drop-zone small{display:block;font-weight:400;color:var(--muted);margin:8px}.drop-zone input{background:white;max-width:600px;margin:15px auto 0}.drop-zone.drag{background:#e1edda}.file-filter{display:flex;align-items:center;gap:15px;margin:25px 0}.file-filter input{max-width:400px;margin:0}.file-filter label{margin:0;font-size:12px}.file-list{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.file-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;overflow:hidden}.file-card h3{font-size:16px;overflow-wrap:anywhere;margin:10px 0}.file-card p{font-size:11px;color:var(--muted);overflow-wrap:anywhere}.file-card .actions button{padding:6px 10px}.tag{font-size:10px;padding:4px 8px;border-radius:4px;background:#e9efdf}.empty{color:var(--muted);font-size:13px;padding:30px 0}#resources-frame{width:100%;height:2350px;border:0;border-radius:15px;background:var(--paper)}footer{max-width:1176px;margin:auto;border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:20px 0 30px;font-size:11px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);border-radius:8px;background:var(--ink);color:#fff;padding:10px 20px;font-size:13px;z-index:999;display:none}.game-menu{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.game-choice{text-align:left;padding:28px;border-radius:14px}.game-choice .icon{font-size:40px}.game-choice h2{font-size:23px;margin:12px 0}.game-choice p{color:#526359;font-size:13px}.game-choice small{display:block;font-size:11px}.game-toolbar{display:flex;gap:15px;align-items:center;margin-bottom:20px}.game-toolbar b{flex:1}#game-stage{background:var(--paper);padding:20px;border-radius:15px}#game-stage:fullscreen{overflow:auto;padding:30px}#play-content{min-height:380px;text-align:center;background:white;border:1px solid var(--line);border-radius:15px;padding:30px}.game-big{font:clamp(40px,7vw,80px)/1.3 Georgia;margin:22px 0;color:var(--green)}.game-rule{font-size:15px;color:var(--muted)}.hint-line{font-size:clamp(20px,3vw,35px);margin:14px 0}.game-answer{font-size:30px;background:#eff4e8;border-radius:10px;padding:15px;margin:20px auto;max-width:650px}.play-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.play-actions button{font-size:17px}.choices{display:flex;justify-content:center;gap:20px;flex-wrap:wrap}.choice{font-size:26px;padding:25px;min-width:200px}.choice span{display:block;font-size:65px}.lucky-grid{max-width:700px;margin:25px auto;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.lucky-grid button{padding:25px;font-size:30px;background:#f5ecd1}.scoreboard{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:20px}.team{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px;text-align:center}.team b{display:block;font-size:12px}.team strong{font-size:28px;margin:0 15px}.team button{padding:3px 12px}.timer{font-size:25px;margin:20px}.bingo-draws{font-size:23px;letter-spacing:8px;margin:20px}.bingo-card{display:grid;grid-template-columns:repeat(3,1fr);width:240px;margin:20px auto;gap:5px}.bingo-card span{border:1px solid var(--line);font-size:25px;padding:10px}.bingo-card span.mark{background:#f5d779}dialog{border:1px solid var(--line);border-radius:15px;width:min(950px,95vw);max-height:95vh;padding:25px;color:var(--ink)}dialog::backdrop{background:#132e25aa}dialog h2{font-size:17px;flex:1}dialog iframe{width:100%;height:70vh;border:0}dialog img{display:block;max-width:100%;max-height:70vh;margin:auto}dialog pre{white-space:pre-wrap;overflow-wrap:anywhere}#print-sheet{display:none}
@media(max-width:850px){.tool-grid{grid-template-columns:repeat(2,1fr)}.hero{gap:35px}.abc{font-size:55px}.hero-art{padding:25px}.plan-layout{grid-template-columns:1fr}.plan-layout aside{max-height:270px;overflow:auto}.file-list{grid-template-columns:repeat(2,1fr)}.header-note{display:none}.local-badge{margin-left:auto}nav{margin:0 25px;overflow:auto;white-space:nowrap}nav button{padding:8px 14px;flex-shrink:0}footer{margin:0 25px}.section-title{flex-wrap:wrap}.scoreboard{grid-template-columns:repeat(2,1fr)}}@media(max-width:580px){header{padding:18px}.brand{font-size:13px}.local-badge{font-size:9px;padding:4px 6px}main{padding:26px 18px 45px}.hero{grid-template-columns:1fr;padding-bottom:35px}.hero-art{display:none}.tool-grid{gap:10px}.tool{padding:17px;min-height:270px}.tool h3{font-size:16px}.today-tip{display:block;padding:18px}.today-tip button{margin-top:10px}.form-grid{grid-template-columns:1fr}.flow-label,.flow-row{grid-template-columns:50px 1fr 1fr 25px;gap:5px}.flow-row textarea{padding:7px}.panel{padding:17px}.game-menu,.file-list{grid-template-columns:1fr}.game-toolbar{flex-wrap:wrap}.game-toolbar b{order:-1;flex-basis:100%}#game-stage{padding:0}#play-content{padding:20px 12px}.lucky-grid{gap:6px}.lucky-grid button{padding:17px 7px}.choice{min-width:120px;font-size:20px}.file-filter{flex-wrap:wrap}#resources-frame{height:4200px}footer{gap:15px;flex-wrap:wrap}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;transform:none!important}}@media print{@page{size:A4;margin:15mm}body{background:white;font-size:11pt;color:#111}body>*{display:none!important}#print-sheet{display:block!important}#print-sheet h1{font-size:20pt;margin:0 0 15px}#print-sheet h2{font-size:12pt;margin-top:20px}#print-sheet p{white-space:pre-wrap;overflow-wrap:anywhere}#print-sheet table{border-collapse:collapse;width:100%;margin:15px 0;font-size:10pt}#print-sheet th,#print-sheet td{border:1px solid #888;padding:8px;text-align:left;white-space:pre-wrap;overflow-wrap:anywhere}#print-sheet tr{break-inside:avoid}#print-sheet .print-meta{color:#444;font-size:10pt}}

.preview-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;background:white;padding:12px 0;z-index:1}.pdf-page{display:block;max-width:100%;height:auto;margin:12px auto;border:1px solid var(--line)}.preview-note{font-size:12px;color:var(--muted);padding:12px;background:#f3f5ed;border-radius:8px}.document-content{background:#fff;padding:20px;line-height:1.9;overflow:auto;overflow-wrap:anywhere}.document-content table,.sheet-content table{border-collapse:collapse;min-width:100%;font-size:13px}.document-content td,.document-content th,.sheet-content td{border:1px solid #cbd5c5;padding:9px;white-space:pre-wrap;min-width:90px}.sheet-content{overflow:auto;max-height:65vh}.document-content h1{font-size:26px}.document-content h2{font-size:22px}.document-content h3{font-size:18px}#preview-content details{margin-top:15px}#file-preview{width:min(1100px,96vw)}

.cloud-panel{margin-bottom:22px}.cloud-panel p{font-size:13px}.bingo-banner{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:22px}.bingo-banner p{font-size:12px;margin:0}.flash-controls{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap}.flash-controls button[aria-pressed=true]{background:var(--green);color:white}.flash-letter{text-align:center;font:clamp(140px,25vw,280px)/1.2 Arial,'Helvetica Neue',sans-serif;color:var(--green);margin:25px 0;min-height:200px}.flash-pagination{display:flex;align-items:center;justify-content:center;gap:20px;flex-wrap:wrap}.flash-autoplay{display:flex;align-items:center;justify-content:center;gap:20px;margin:25px 0}.flash-autoplay label{margin:0;display:flex;align-items:center;gap:10px}.flash-autoplay select{width:100px;margin:0}.letter-list{display:grid;grid-template-columns:repeat(13,1fr);gap:8px}.letter-list button{font-size:22px;padding:8px 0}.letter-list button[aria-current=true]{background:#f3d67c;border-color:#d2b960}#flash-area:fullscreen{background:var(--paper);padding:35px;overflow:auto}.flash-print-page{break-after:page}.flash-print-page:last-child{break-after:auto}.flash-print-grid{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,72mm);gap:5mm}.flash-print-grid div{border:1px dashed #888;display:flex;align-items:center;justify-content:center;font:110pt Arial,sans-serif}.cloud-link-text{font-size:13px;word-break:break-all;background:#f4f6ef;padding:12px;border-radius:8px}.cloud-link-dialog p{font-size:13px}@media(max-width:580px){.letter-list{grid-template-columns:repeat(7,1fr)}.bingo-banner{flex-direction:column;align-items:start}.flash-pagination{gap:10px}.flash-autoplay{flex-wrap:wrap}.flash-controls button{font-size:12px}}

/* Landscape teaching mode: retain every control inside the visible screen. */
@media (min-width:900px) and (orientation:landscape){
body:is([data-classroom-view="games"],[data-classroom-view="flashcards"]){height:100dvh;display:flex;flex-direction:column}
body:is([data-classroom-view="games"],[data-classroom-view="flashcards"]) header{padding:10px 24px;width:100%}
body:is([data-classroom-view="games"],[data-classroom-view="flashcards"]) nav{width:calc(100% - 48px);padding-bottom:8px;flex-shrink:0}
body:is([data-classroom-view="games"],[data-classroom-view="flashcards"]) nav button{padding:5px 18px}
body:is([data-classroom-view="games"],[data-classroom-view="flashcards"]) main{width:100%;flex:1;min-height:0;padding:12px 24px}
body:is([data-classroom-view="games"],[data-classroom-view="flashcards"]) footer{display:none}
#games:not([hidden]),#flashcards:not([hidden]){height:100%;display:flex;flex-direction:column;min-height:0}
:is(#games,#flashcards) .section-title{margin-bottom:10px;flex-shrink:0;align-items:center}
:is(#games,#flashcards) .section-title h1{font-size:24px;line-height:1.3;margin:0}
:is(#games,#flashcards) .section-title p{margin:0;font-size:12px}
:is(#games,#flashcards) .section-title .eyebrow{font-size:10px}
#game-menu:not([hidden]){flex:1;min-height:0;grid-template-rows:repeat(2,minmax(0,1fr));gap:12px}
#game-menu .game-choice{padding:12px 20px;min-height:0}
#game-menu .icon{font-size:28px}#game-menu h2{font-size:21px;margin:2px 0}#game-menu p{margin:2px 0}
#game-menu small:last-child{margin-top:4px!important}
#game-stage:not([hidden]){flex:1;min-height:0;display:flex;flex-direction:column;padding:12px}
.game-toolbar{margin-bottom:8px;flex-shrink:0}.game-toolbar button{padding:5px 12px}
#play-content{flex:1;min-height:0;padding:0;position:relative}
.play-fit{position:absolute;left:0;width:100%;padding:8px 20px;transform-origin:top center}
.scoreboard{grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:8px;margin-top:8px;flex-shrink:0}
.scoreboard .team{padding:5px;white-space:nowrap}.scoreboard .team strong{font-size:22px;margin:0 8px}
#reset-scores{font-size:11px;padding:5px}
.play-fit label{margin:0!important;min-width:0!important}.play-fit select{margin:0;padding:4px 10px}
.play-fit .game-rule{margin:5px 0;font-size:13px}.play-fit .game-big{font-size:clamp(38px,6vh,64px);margin:8px 0}
.play-fit .hint-line{font-size:24px;margin:6px 0}.play-fit .game-answer{font-size:26px;margin:8px auto;padding:8px}
.play-fit .choice{padding:12px;min-width:160px;font-size:24px}.play-fit .choice span{font-size:42px}
.play-fit .timer{margin:8px 0}.play-fit .lucky-grid{margin:8px auto;gap:8px}.play-fit .lucky-grid button{padding:12px;font-size:27px}
.play-fit .bingo-draws{margin:6px auto;font-size:21px;letter-spacing:4px;max-width:850px}
.play-fit .bingo-card{margin:8px auto;width:180px}.play-fit .bingo-card span{padding:4px;font-size:22px}
#flash-area{flex:1;min-height:0;display:flex;flex-direction:column;padding:12px 20px;gap:8px}
#flash-area button{padding:5px 14px}.flash-controls{gap:8px;flex-shrink:0}
.flash-letter{flex:1;min-height:0;margin:0;display:flex;align-items:center;justify-content:center;font-size:clamp(90px,27vh,280px);line-height:1}
.flash-pagination{gap:14px;flex-shrink:0}.flash-autoplay{margin:0;gap:14px;flex-shrink:0}.flash-autoplay select{padding:4px 10px}
.letter-list{grid-template-columns:repeat(26,minmax(0,1fr));gap:4px;flex-shrink:0}
#flash-area .letter-list button{padding:3px 0;font-size:18px}
#flash-area:fullscreen,#game-stage:fullscreen{height:100dvh;padding:20px;overflow:hidden}
#flash-area:fullscreen .flash-letter{font-size:clamp(100px,48vh,480px)}
}

@media (min-width:900px) and (orientation:landscape){
#games:has(#game-stage:not([hidden]))>.section-title{display:none}
#play-content[data-game="bingo"] .play-fit{display:grid;grid-template-columns:minmax(0,1fr) 220px;column-gap:20px;align-items:center}
#play-content[data-game="bingo"] .play-fit>details{grid-column:2;grid-row:1 / 6}
#play-content[data-game="bingo"] .play-fit>:not(details){grid-column:1}
#play-content[data-game="bingo"] .play-fit>p{margin:6px 0!important}
}
