:root{--bg: #f6f7f9;--card: #ffffff;--card-2: #eef1f5;--text: #1f2937;--muted: #6b7280;--accent: #ea580c;--accent-weak: rgba(234, 88, 12, .3);--on-accent: #ffffff;--ok: #16a34a;--warn: #d97706;--danger: #dc2626;--border: rgba(15, 23, 42, .08);--radius: 14px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:system-ui,-apple-system,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;-webkit-text-size-adjust:100%}#app{max-width:560px;margin:0 auto;padding:env(safe-area-inset-top) 12px calc(24px + env(safe-area-inset-bottom))}.app-header{padding:16px 4px 8px;position:sticky;top:0;background:var(--bg);z-index:5;display:flex;align-items:center;justify-content:space-between;gap:8px}.brand{display:flex;align-items:center;gap:8px;min-width:0}.app-icon{width:26px;height:26px;flex:none}.app-icon svg{width:100%;height:100%;display:block}.app-header h1{margin:0;font-size:1.2rem;letter-spacing:.03em;color:var(--accent);font-weight:800}.refresh-btn{background:#fff;color:var(--accent);border:1px solid var(--accent-weak);border-radius:8px;padding:7px 12px;font-size:.82rem;font-weight:700;cursor:pointer;white-space:nowrap;flex:none}.app-content{display:flex;flex-direction:column;gap:12px}.card{background:var(--card);border-radius:var(--radius);padding:14px;border:1px solid var(--border);box-shadow:0 1px 3px #0f172a0d}.card h2{margin:0 0 10px;font-size:1rem}.card h3{margin:0;font-size:.98rem}.rate{display:flex;align-items:center;gap:10px}.rate-bar{flex:1;height:10px;background:var(--card-2);border-radius:999px;overflow:hidden}.rate-fill{height:100%;background:var(--ok);transition:width .25s ease}.rate-text{font-variant-numeric:tabular-nums;font-size:.85rem;color:var(--muted);white-space:nowrap}.overall h2{color:var(--muted);font-weight:600}.overall-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}.overall-head h2{margin:0}.baseline{position:relative}.baseline-btn{background:#fff;color:var(--accent);border:1px solid var(--accent-weak);border-radius:8px;padding:5px 9px;font-size:.75rem;cursor:pointer;white-space:nowrap}.baseline-input{position:absolute;right:0;bottom:0;width:1px;height:1px;opacity:0;pointer-events:none}.course-head-btn{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;padding:0 0 2px;color:var(--text);cursor:pointer;text-align:left}.course-head-btn .course-head{font-size:.98rem;font-weight:700}.chevron{color:var(--muted);font-size:1.3rem;line-height:1;padding-left:8px}.course-head{margin-bottom:10px}.course-list{display:flex;flex-direction:column;margin-top:10px}.row{display:flex;align-items:flex-start;gap:12px;padding:12px 4px;border-top:1px solid var(--border);cursor:pointer}.row:first-child{border-top:none}.row-check{width:22px;height:22px;margin-top:2px;accent-color:var(--accent);flex:none}.row-main{flex:1;min-width:0}.row-title{font-size:.95rem;line-height:1.4}.row-meta{display:flex;gap:10px;align-items:center;margin-top:4px;font-size:.8rem;color:var(--muted)}.row-course{background:var(--card-2);color:var(--accent);border-radius:6px;padding:1px 7px;font-size:.72rem;white-space:nowrap;max-width:55%;overflow:hidden;text-overflow:ellipsis}.row-left.soon{color:var(--warn);font-weight:700}.row-left.overdue,.row-left.today{color:var(--danger);font-weight:700}.row.is-today{background:#dc26261a;border-left:3px solid var(--danger);padding-left:8px;border-radius:8px}.row.is-done,.row.is-overdue{opacity:.5}.is-done .row-title{text-decoration:line-through}.tabs{display:flex;gap:6px;background:var(--card);padding:4px;border-radius:12px;border:1px solid var(--border)}.tab{flex:1;padding:10px;border:none;border-radius:9px;background:transparent;color:var(--muted);font-size:.9rem;font-weight:700;cursor:pointer}.tab.active{background:var(--card-2);color:var(--text)}.cal-btn,.primary-btn{display:block;text-align:center;text-decoration:none;background:var(--accent);color:var(--on-accent);font-weight:700;padding:13px;border-radius:var(--radius);border:none;font-size:.95rem;cursor:pointer}.primary-btn{width:100%;margin-top:12px}.link-btn{background:none;border:none;color:var(--muted);text-decoration:underline;padding:8px;font-size:.85rem;cursor:pointer;align-self:center}.url-input{width:100%;margin-top:10px;padding:12px;border-radius:10px;border:1px solid var(--border);background:var(--card-2);color:var(--text);font-size:.9rem}.hint,.msg{color:var(--muted);font-size:.85rem;line-height:1.6;margin:6px 0 0;white-space:pre-wrap}.empty{color:var(--muted);text-align:center;padding:20px}.app-footer{margin:32px -12px calc(-24px - env(safe-area-inset-bottom));padding:20px 16px calc(24px + env(safe-area-inset-bottom));background:#e9edf3;border-top:1px solid #d7dde6;display:flex;flex-direction:column;align-items:center;gap:8px;color:var(--muted)}.footer-brand{display:flex;align-items:center;gap:8px;font-size:.85rem;font-weight:700;color:#334155;letter-spacing:.02em}.footer-logo{height:30px;width:auto;display:block}.footer-row{display:flex;align-items:center;gap:10px;font-size:.78rem}.footer-count{font-variant-numeric:tabular-nums}.footer-sep{opacity:.6}.footer-link{background:none;border:none;color:var(--muted);text-decoration:underline;font-size:.78rem;cursor:pointer;padding:0}.footer-copy{font-size:.72rem;color:var(--muted)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:20px;z-index:50}.modal{background:var(--card);color:var(--text);border-radius:var(--radius);padding:18px;max-width:420px;width:100%;max-height:85vh;overflow-y:auto;box-shadow:0 8px 30px #0f172a33}.guide-step{margin-top:16px}.guide-step-label{display:inline-block;background:var(--accent);color:var(--on-accent);font-weight:700;font-size:.72rem;padding:2px 9px;border-radius:6px}.guide-step-desc{margin:7px 0 8px;font-size:.85rem;line-height:1.6}.guide-img{width:100%;border:1px solid var(--border);border-radius:8px;display:block}.cal-actions{display:flex;justify-content:space-between;align-items:center;margin-top:4px}.guide-btn{background:none;border:none;color:var(--accent);text-decoration:underline;font-size:.8rem;cursor:pointer;padding:8px 0}.modal h2{margin:0 0 8px;font-size:1.05rem}.modal p{margin:0 0 4px;font-size:.85rem;line-height:1.7}.modal .modal-sub{margin-top:16px;font-size:.98rem}.modal ul{margin:6px 0 4px;padding-left:1.25em;font-size:.83rem;line-height:1.65}.modal li{margin-bottom:5px}.notice{background:#f59e0b26;color:var(--warn);border:1px solid rgba(245,158,11,.4);border-radius:10px;padding:10px 12px;font-size:.82rem;text-align:center}
