*{box-sizing:border-box}body{margin:0;font-family:Hiragino Sans,Yu Gothic,system-ui,sans-serif;background:#fdf6ec;color:#3a2e26}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:#fff3e0;border-bottom:2px solid #f0d9b5}.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:#3a2e26;font-weight:700}.brand-icon{width:36px;height:36px}.app-header nav a{margin-left:16px;text-decoration:none;color:#6b5744;padding:6px 10px;border-radius:8px}.app-header nav a.active{background:#f0d9b5;color:#3a2e26;font-weight:700}.app-main{flex:1;padding:20px;max-width:900px;width:100%;margin:0 auto}.loading,.error{text-align:center;padding:40px;font-size:1.1rem}.error{color:#b3261e}.greeting{display:flex;align-items:center;gap:12px;background:#fff;border-radius:16px;padding:16px;margin-bottom:20px;box-shadow:0 2px 8px #0000000f}.greeting-icon{width:112px;height:112px;flex-shrink:0}.problem-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:12px}.problem-card{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;padding:18px 20px;box-shadow:0 2px 6px #0000000f;cursor:pointer;font-size:1.05rem;touch-action:manipulation}.problem-card:active{background:#fff3e0}.problem-index{font-weight:700;background:#f0d9b5;border-radius:999px;padding:4px 12px}.problem-arrow{margin-left:auto;color:#a08d78}.problem-view{display:flex;flex-direction:column;gap:20px}.question-panel{background:#fff;border-radius:16px;padding:20px;box-shadow:0 2px 8px #0000000f}.question-meta{color:#a08d78;margin:0 0 8px}.passage-text{font-size:1.15rem;line-height:1.7;white-space:pre-wrap}.passage-image{display:block;width:100%;height:auto;border:1px solid #f0e3cc;border-radius:8px}.annotation-toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:8px;padding:8px;background:#fff8ee;border:2px solid #f0d9b5;border-radius:12px;margin-bottom:8px}.annotated-problem-canvas-wrap{position:relative;display:flex;flex-direction:column;gap:8px}.annotation-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.sub-problem-label{font-weight:700;color:#7a6a55;margin:0 0 8px}.answer-grid{display:flex;flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:12px}.answer-item{display:inline-flex;flex-direction:column;align-items:center}.answer-item.grouped{margin-left:-8px}.sub-problem-card{border-top:2px solid #f0e3cc;margin-top:20px;padding-top:20px}.sub-problem-card:first-of-type{border-top:none;margin-top:12px;padding-top:0}.sub-question-text{font-size:1.1rem;line-height:2.4;white-space:pre-wrap}.blank-wrap{display:inline-flex;flex-direction:column;align-items:center;vertical-align:middle;margin:0 2px}.blank-tag{font-size:.65em;color:#a08d78;line-height:1.2;margin-bottom:1px}.blank-input{display:inline-block;box-sizing:border-box;width:2.2em;height:2em;padding:0 2px;text-align:center;font-size:1.1rem;font-weight:700;border:2px solid #d9c4a3;border-radius:6px;background:#fff;vertical-align:middle}.blank-input:focus{outline:none;border-color:#e0913f;background:#fff3e0}.problem-sub-count{margin-left:6px;color:#a08d78;font-size:.85em}.choices{display:flex;flex-direction:column;gap:10px;margin:16px 0}.choice{display:flex;align-items:center;gap:10px;padding:14px 16px;border:2px solid #f0d9b5;border-radius:12px;font-size:1.05rem;touch-action:manipulation}.choice.selected{border-color:#e0913f;background:#fff3e0}.memo-label{margin:4px 0 8px;color:#a08d78;font-size:.9rem}.memo-canvas-wrap{border:2px solid #f0d9b5;border-radius:12px;overflow:hidden;margin-bottom:16px}.memo-toolbar{display:flex;align-items:center;gap:8px;padding:8px;background:#fff8ee;border-bottom:2px solid #f0d9b5}.memo-color{width:28px;height:28px;border-radius:50%;border:2px solid transparent;cursor:pointer;padding:0;touch-action:manipulation}.memo-color.active{border-color:#3a2e26}.memo-tool-button{padding:6px 12px;border-radius:8px;border:1px solid #d9c4a3;background:#fff;cursor:pointer;font-size:.9rem;touch-action:manipulation}.memo-tool-button.active{background:#f0d9b5;font-weight:700}.memo-canvas{display:block;width:100%;height:420px;background:#fff;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.submit-button,.next-button{padding:14px 20px;font-size:1.05rem;border:none;border-radius:12px;background:#e0913f;color:#fff;cursor:pointer;touch-action:manipulation}.submit-button:disabled{background:#e6d3b8;cursor:not-allowed}.result-banner{margin-top:16px;padding:12px 16px;border-radius:12px;font-weight:700}.result-banner.correct{background:#e3f3e1;color:#276b2e}.result-banner.incorrect{background:#fdeaea;color:#a8352a}.chat-panel{background:#fff;border-radius:16px;padding:16px;box-shadow:0 2px 8px #0000000f;display:flex;flex-direction:column;gap:12px}.chat-thread{display:flex;flex-direction:column;gap:10px;max-height:50vh;overflow-y:auto}.chat-bubble{display:flex;align-items:flex-start;gap:8px;padding:10px 14px;border-radius:14px;max-width:85%}.chat-bubble.integral_cat{background:#fff3e0;align-self:flex-start}.chat-bubble.hatsune{background:#eef4fb;align-self:flex-end;margin-left:auto}.chat-bubble p{margin:0;white-space:pre-wrap;line-height:1.6}.chat-icon{width:28px;height:28px;flex-shrink:0}.chat-input{display:flex;gap:8px}.chat-input input{flex:1;padding:12px;border-radius:10px;border:2px solid #f0d9b5;font-size:1rem}.chat-input button{padding:0 18px;border:none;border-radius:10px;background:#e0913f;color:#fff;cursor:pointer}.dashboard{display:flex;flex-direction:column;gap:24px}.dashboard-section{background:#fff;border-radius:16px;padding:20px;box-shadow:0 2px 8px #0000000f}.dashboard-section h2{margin-top:0}.stat-row{display:flex;gap:16px;margin-bottom:16px}.stat-tile{background:#fff3e0;border-radius:12px;padding:14px 20px;display:flex;flex-direction:column;align-items:center}.stat-value{font-size:1.6rem;font-weight:700}.stat-label{color:#a08d78;font-size:.85rem}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid #f0e3cc;font-size:.95rem}.settings-field{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #f0e3cc}.settings-field input[type=number]{width:80px;padding:6px;border-radius:8px;border:1px solid #d9c4a3}.settings-field.checkbox{justify-content:flex-start}.settings-field.checkbox input{margin-right:8px}.dashboard-section button{margin-top:16px;padding:10px 20px;border:none;border-radius:10px;background:#e0913f;color:#fff;cursor:pointer}.dashboard-section button:disabled{background:#e6d3b8;cursor:not-allowed}.scrape-note{color:#a08d78;font-size:.9rem;line-height:1.6}.scrape-actions{display:flex;flex-wrap:wrap;gap:10px}.scrape-actions button{margin-top:0}.scrape-message{margin-top:12px;padding:10px 14px;background:#fff3e0;border-radius:10px;font-size:.9rem}.pending-pair-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:8px}.pending-pair-item{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;background:#fff8ee;border-radius:10px}.pending-pair-item button{margin-top:0;padding:6px 14px}.review-list{display:flex;flex-direction:column;gap:16px}.review-card{border:2px solid #f0d9b5;border-radius:12px;padding:16px}.review-card-header{font-weight:700;color:#6b5744;margin-bottom:8px}.review-sub-problem{line-height:2;margin:8px 0}.review-blank{display:inline-block;padding:1px 6px;margin:0 2px;background:#eef4fb;border-radius:6px;font-weight:700;font-size:.95em}.review-actions{display:flex;gap:10px;margin-top:12px}.review-approve,.review-reject{padding:8px 16px;border:none;border-radius:8px;cursor:pointer;margin-top:0}.review-approve{background:#4a9d5f;color:#fff}.review-reject{background:#e5e5e5;color:#6b5744}.weak-accuracy{color:#b3261e;font-weight:700}.cron-input{width:140px;padding:6px;border-radius:8px;border:1px solid #d9c4a3;font-family:monospace}.unit-selector>button{margin-top:16px}.unit-subject{margin-bottom:16px;border-top:2px solid #f0e3cc;padding-top:12px}.unit-subject:first-of-type{border-top:none;padding-top:0}.unit-subject-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.unit-subject-header h3{margin:0}.unit-toggle-all{padding:6px 12px;border:1px solid #d9c4a3;border-radius:8px;background:#fff;color:#6b5744;cursor:pointer;font-size:.85rem;margin-top:0}.unit-toggle-all.small{margin-bottom:8px}.unit-category{margin:6px 0;border:1px solid #f0e3cc;border-radius:10px;padding:4px 12px}.unit-category summary{cursor:pointer;padding:8px 0;font-weight:700;color:#6b5744}.unit-category-count{margin-left:8px;font-weight:400;color:#a08d78;font-size:.85rem}.unit-category-body{padding:4px 0 12px}.unit-checkbox-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 12px}.unit-checkbox{display:flex;align-items:center;gap:6px;font-size:.9rem}.auth-gate{display:flex;justify-content:center;padding:40px 16px}.auth-form{background:#fff;border-radius:16px;padding:24px;box-shadow:0 2px 8px #0000000f;display:flex;flex-direction:column;gap:12px;width:100%;max-width:320px}.auth-form h2{margin:0}.auth-form input{padding:12px;border-radius:10px;border:2px solid #f0d9b5;font-size:1.1rem}.auth-form button{padding:12px;border:none;border-radius:10px;background:#e0913f;color:#fff;font-size:1rem;cursor:pointer}.auth-form button:disabled{background:#e6d3b8;cursor:not-allowed}.dashboard-logout-row{display:flex;justify-content:flex-end}.dashboard-logout{padding:6px 14px;border:1px solid #d9c4a3;border-radius:8px;background:#fff;color:#6b5744;cursor:pointer;font-size:.85rem}.my-stats{display:flex;flex-direction:column;gap:16px}.today-answered,.today-unanswered{font-size:.8rem;padding:2px 8px;border-radius:999px}.today-answered{background:#e3f3e1;color:#276b2e}.today-unanswered{background:#f0e3cc;color:#6b5744}
