*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--primary:#ff6b6b;--secondary:#4ecdc4;--accent:#ffd93d;--accent2:#6bcb77;--bg:#fffdf7;--text:#2d2d2d;--muted:#888;--radius:14px;font-family:Hiragino Rounded Gothic Pro,Hiragino Sans,Meiryo,Yu Gothic,sans-serif}body{background:var(--bg);color:var(--text)}#root{min-height:100svh}.app{flex-direction:column;min-height:100svh;display:flex}.menu{text-align:center;width:100%;max-width:640px;margin:0 auto;padding:28px 16px 40px}.menu-header{justify-content:center;align-items:center;gap:10px;margin-bottom:0;display:flex;position:relative}.menu-title{color:var(--text);letter-spacing:-.01em;margin-bottom:6px;font-family:Kaisei Tokumin,Hiragino Mincho ProN,serif;font-size:clamp(1.8rem,7vw,2.6rem);font-weight:800;line-height:1.1}.menu-title em{color:#d0241a;font-style:normal}.btn-history{cursor:pointer;background:0 0;border:none;flex-shrink:0;margin-bottom:4px;padding:4px;font-size:1.5rem;line-height:1;position:relative}.history-badge{background:var(--primary);color:#fff;text-align:center;border-radius:999px;min-width:16px;padding:1px 4px;font-family:inherit;font-size:.6rem;font-weight:900;position:absolute;top:-2px;right:-4px}.menu-subtitle{color:var(--muted);margin-bottom:20px;font-size:clamp(.85rem,3vw,1rem)}.menu-footer{margin-top:28px}.manual-link{color:var(--muted);opacity:.7;border-bottom:1px solid;padding-bottom:1px;font-size:.8rem;text-decoration:none}.manual-link:hover{opacity:1}.selectors-box{flex-direction:column;gap:10px;margin-bottom:22px;display:flex}.count-selector{border-radius:var(--radius);background:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 14px;display:flex;box-shadow:0 2px 8px #0000000f}.count-label{color:var(--muted);white-space:nowrap;flex-shrink:0;font-size:clamp(.78rem,2.5vw,.9rem);font-weight:700}.count-buttons{flex-wrap:wrap;gap:5px;display:flex}.count-btn{cursor:pointer;color:var(--muted);background:#f5f5f5;border:2px solid #e0e0e0;border-radius:999px;padding:5px 11px;font-family:inherit;font-size:clamp(.78rem,2.5vw,.88rem);font-weight:700;transition:all .13s}.count-btn.active{background:var(--secondary);border-color:var(--secondary);color:#fff}.count-btn:hover:not(.active){border-color:var(--secondary);color:var(--secondary)}.grade-tabs{justify-content:center;gap:10px;margin-bottom:18px;display:flex}.grade-tab{cursor:pointer;color:var(--muted);background:#eee;border:3px solid #0000;border-radius:999px;padding:9px 26px;font-family:inherit;font-size:clamp(.9rem,3vw,1.05rem);font-weight:700;transition:all .13s}.grade-tab.active{background:var(--primary);color:#fff;border-color:var(--primary)}.category-grid{grid-template-columns:repeat(auto-fill,minmax(clamp(130px,40vw,180px),1fr));gap:10px;display:grid}.category-card{border-radius:var(--radius);cursor:pointer;background:#fff;border:3px solid #f0e8ff;flex-direction:column;align-items:center;gap:5px;padding:14px 10px;font-family:inherit;transition:all .13s;display:flex;box-shadow:0 2px 8px #0000000f}.category-card:hover{border-color:var(--secondary);background:#f0fffe;transform:translateY(-2px);box-shadow:0 6px 16px #0000001a}.category-card-label{color:var(--text);font-size:clamp(.8rem,2.5vw,.95rem);font-weight:700;line-height:1.35}.category-card-example{color:var(--secondary);font-size:clamp(1rem,3.5vw,1.2rem);font-weight:900}.problem-page{flex-direction:column;width:100%;max-width:600px;height:100svh;margin:0 auto;padding:28px 16px 14px;display:flex}.problems-container{flex-direction:column;flex:1;justify-content:space-evenly;align-items:center;gap:clamp(4px,1svh,12px);min-height:0;display:flex}.problem{border-radius:var(--radius);background:#fff;border:2px solid #f0ecff;flex:1;align-items:center;gap:10px;width:min(280px,88%);min-height:0;max-height:clamp(200px,38svh,280px);padding:10px 16px;display:flex;overflow:clip;box-shadow:0 2px 14px #00000014;container-type:size}.problem-number{color:var(--primary);text-align:left;flex-shrink:0;align-self:flex-start;min-width:1.2em;padding-top:2cqh;font-size:clamp(.65rem,8cqh,.95rem);font-weight:900}.problem-calc{grid-template-columns:28cqh repeat(var(--digits,2), minmax(0, 1fr));flex:1;grid-template-rows:10cqh 20cqh 20cqh 4cqh 10cqh 19cqh;align-items:center;row-gap:1cqh;min-width:0;display:grid}.calc-cell{justify-content:center;align-items:center;min-width:0;display:flex}.calc-digit{color:var(--text);letter-spacing:.02em;font-size:20cqh;font-weight:700;line-height:1}.calc-op{color:var(--primary);justify-content:center;align-items:center;font-size:17cqh;font-weight:700;line-height:1;display:flex}.calc-line{border-top:clamp(2px,.5cqh,5px) solid #2d2d2d;grid-column:1/-1;justify-self:stretch;width:100%;margin:1cqh 0 1.5cqh}.calc-answer{color:var(--accent2);font-weight:700}.problem.result-correct{border-color:#c0f0cc}.problem.result-wrong{border-color:#ffd0d0}.result-mark{justify-content:center;align-items:center;font-size:17cqh;font-weight:900;line-height:1;display:flex}.result-mark.mark-correct{color:var(--accent2)}.result-mark.mark-wrong{color:var(--primary)}.user-wrong-digit{color:var(--primary);opacity:.7;text-decoration:line-through;-webkit-text-decoration-color:var(--primary);text-decoration-color:var(--primary);font-size:11cqh;font-weight:700;line-height:1}.carry-input{touch-action:manipulation;text-align:center;width:85%;height:100%;color:var(--primary);min-width:0;caret-color:var(--primary);appearance:none;background:0 0;border:1px solid #0000;border-radius:4px;outline:none;justify-self:center;padding:0;font-family:inherit;font-size:10cqh;font-weight:700;transition:background .12s,border-color .12s}.carry-input:not(:placeholder-shown){background:#fff8f8}.carry-input:hover{background:#fff8f8;border-color:#ffadad}.carry-input:focus{border-color:var(--primary);background:#fff3f3}.carry-mid{color:var(--primary);caret-color:var(--primary)}.answer-input{touch-action:manipulation;text-align:center;width:85%;height:100%;color:var(--accent2);min-width:0;caret-color:var(--accent2);appearance:none;background:0 0;border:none;border-bottom:clamp(1.5px,.4cqh,4px) dashed #bbb;border-radius:0;outline:none;justify-self:center;padding:0;font-family:inherit;font-size:19cqh;font-weight:700;line-height:1}.answer-input:hover{border-bottom-color:var(--accent2)}.answer-input:focus{border-bottom-color:var(--accent2);background:#6bcb7714;border-bottom-style:solid}.btn{cursor:pointer;white-space:nowrap;border:none;border-radius:999px;padding:8px 14px;font-family:inherit;font-size:clamp(.78rem,2.5vw,.88rem);font-weight:700;transition:all .13s}.btn-back{color:var(--text);background:#efefef}.btn-back:hover{background:#e0e0e0}.btn-print{color:var(--text);background:#efefef}.btn-print:hover{background:#e0e0e0}.btn-pdf{color:#06c;background:#e8f4ff}.btn-pdf:hover{background:#cce5ff}.btn-pdf:disabled{opacity:.6;cursor:default}.btn-clear{color:var(--muted);background:#f0f0f0;padding:11px 14px}.btn-clear:hover{color:var(--text);background:#e0e0e0}.control-panel{border-radius:var(--radius);background:#fff;flex-direction:column;flex-shrink:0;gap:8px;margin-top:10px;padding:10px 14px 12px;display:flex;box-shadow:0 -1px #0000000a,0 4px 20px #00000017}.control-panel-title{color:var(--muted);text-align:center;font-size:clamp(.72rem,2.5vw,.82rem);font-weight:700}.control-panel-nav{justify-content:space-between;gap:8px;display:flex}.control-panel-main{gap:8px;display:flex}.btn-answer{background:var(--accent);color:#2d2d2d;text-align:center;flex:1;padding:11px 10px;font-size:clamp(.85rem,3vw,.95rem)}.btn-answer:hover{background:#ffc300}.btn-next{background:var(--primary);color:#fff;text-align:center;flex:1;padding:11px 10px;font-size:clamp(.85rem,3vw,.95rem)}.btn-next:hover{background:#e85555}.print-pages{display:none}@media print{@page{size:A4 portrait;margin:20mm 20mm 18mm}body{background:#fff}.no-print{display:none!important}.problem-page{max-width:100%;height:auto;padding:0 8mm}.print-pages{display:block!important}.print-page{break-after:page;flex-direction:column;height:163mm;margin-top:7mm;display:flex;overflow:hidden}.print-page:last-child{break-after:auto}.print-page-header{border-bottom:.4mm solid #ccc;flex-shrink:0;justify-content:space-between;align-items:baseline;margin-bottom:3mm;padding-bottom:3mm;display:flex}.print-category{color:#444;font-size:4mm;font-weight:700}.print-page-num{color:#aaa;font-size:3mm}.print-page .problems-container{flex:1;gap:3mm;min-height:0}.print-page .problem-calc{grid-template-columns:9mm repeat(var(--digits,2), 13mm);grid-template-rows:4mm 10mm 10mm 1.5mm 4mm 9mm;row-gap:.5mm}.print-page .problem{width:auto;max-width:55mm;min-height:0;max-height:none;box-shadow:none;break-inside:avoid;border:.3mm solid #e0e0e0;border-radius:3mm;flex:1;container-type:normal}.print-page .calc-digit{font-size:8mm}.print-page .calc-op{font-size:6mm}.print-page .calc-answer{font-size:8mm}.print-page .answer-input{font-size:7mm}.print-page .carry-input{font-size:3.5mm}.print-page .problem-number{padding-top:1mm;font-size:3mm}.print-page .result-mark{font-size:7mm}.print-page .user-wrong-digit{font-size:3.5mm}.print-page .carry-input{color:#0000!important;background:0 0!important;border:none!important}.print-page .answer-input{color:#0000!important;background:0 0!important;border-bottom:.3mm dashed #888!important}.print-page .carry-mid{color:#0000!important;background:0 0!important;border:1px dashed #cde!important}}.history-page{width:100%;max-width:640px;min-height:100svh;margin:0 auto;padding:16px 16px 40px}.history-header{align-items:center;gap:8px;margin-bottom:20px;display:flex}.history-title{color:var(--primary);text-align:center;flex:1;margin:0;font-size:clamp(1.1rem,5vw,1.5rem);font-weight:900}.btn-clear-history{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #ddd;border-radius:999px;padding:5px 12px;font-family:inherit;font-size:.78rem;font-weight:700}.btn-clear-history:hover{background:#f5f5f5}.btn-danger{background:var(--primary);color:#fff}.btn-danger:hover{background:#e85555}.history-empty{text-align:center;color:var(--muted);margin-top:40px;font-size:1rem;line-height:1.8}.history-list{flex-direction:column;gap:8px;display:flex}.history-row{border-radius:var(--radius);background:#fff;border:2px solid #f0ecff;overflow:hidden;box-shadow:0 2px 8px #0000000f}.history-row-summary{cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:12px 14px;font-family:inherit;display:flex}.history-date{color:var(--muted);white-space:nowrap;flex-shrink:0;font-size:.72rem}.history-label{color:var(--text);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:clamp(.78rem,2.5vw,.9rem);font-weight:700;overflow:hidden}.history-score{flex-shrink:0;align-items:center;gap:4px;display:flex}.score-dots{gap:3px;display:flex}.score-dot{border-radius:50%;width:10px;height:10px}.score-dot.correct{background:var(--accent2)}.score-dot.wrong{background:var(--primary)}.score-text{color:var(--muted);margin-left:2px;font-size:.78rem;font-weight:700}.score-unanswered{color:var(--muted);font-size:.8rem}.history-chevron{color:var(--muted);flex-shrink:0;font-size:.7rem}.history-detail{border-top:1px solid #f0f0f0;flex-direction:column;gap:8px;padding:10px 14px 12px;display:flex}.history-problem-row{align-items:center;gap:8px;font-size:clamp(.85rem,2.8vw,1rem);display:flex}.hp-num{color:var(--muted);flex-shrink:0;font-size:.78rem}.hp-expr{color:var(--text);flex:1;font-weight:700}.hp-user{color:var(--text);text-align:right;min-width:2em;font-weight:900}.hp-mark{flex-shrink:0;font-size:1.1rem;font-weight:900}.mark-correct{color:var(--accent2)}.mark-wrong{color:var(--primary)}.mark-unanswered{color:var(--muted)}.hp-correct-ans{color:var(--muted);font-size:.78rem}.modal-overlay{z-index:100;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{border-radius:var(--radius);text-align:center;background:#fff;width:90%;max-width:320px;padding:24px 28px;font-size:1rem;font-weight:700}.modal p{color:var(--text);margin-bottom:20px}.modal-buttons{justify-content:center;gap:10px;display:flex}@media (width<=400px){.count-selector{flex-direction:column;align-items:flex-start}.problem-page-header{gap:4px}.btn{padding:7px 10px}}
