@import url("https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700;800;900&family=JetBrains+Mono:wght@400;500;600;700&display=swap");:root{--crimson:#c3002f;--crimson-soft:#f7e3e6;--teal:#1e7f72;--teal-soft:#e1f2ef;--gray:#51626f;--gray-soft:#8a97a2;--bg:#faf9f6;--card:#fff;--line:#eae7e0;--ink:#3a3a3a}*{box-sizing:border-box;margin:0;padding:0}a{color:inherit;text-decoration:none}body{font-family:Noto Sans KR,Apple SD Gothic Neo,sans-serif;background:var(--bg);color:var(--ink);min-height:100vh;padding-bottom:52px}.detail-header,header{display:flex;align-items:center;justify-content:space-between;padding:22px 40px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}.subject-title{font-size:20px;font-weight:800;color:var(--ink);display:flex;align-items:baseline;gap:10px}.user-tag{font-size:13px;color:var(--gray);background:var(--bg);border-radius:20px;padding:7px 16px}.header-right{gap:10px}.header-right,.logout-btn{display:flex;align-items:center}.logout-btn{justify-content:center;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--gray-soft);cursor:pointer;flex-shrink:0;transition:background .15s ease,color .15s ease,border-color .15s ease}.logout-btn:hover{background:var(--crimson-soft);color:var(--crimson);border-color:var(--crimson)}.hero{max-width:1600px;margin:36px auto 0;padding:0 40px;display:flex;align-items:center;gap:32px}.hero-text{flex:1}.hero-text h1{font-size:24px;font-weight:900;margin-bottom:8px}.hero-text p{font-size:14px;color:var(--gray);line-height:1.6;max-width:520px}.hero-stats{display:flex;gap:14px;margin-top:18px}.hero-stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 18px;min-width:110px}.hero-stat .n{font-size:20px;font-weight:900;color:var(--crimson)}.hero-stat .l{font-size:11.5px;color:var(--gray-soft);font-weight:700;margin-top:2px}.hero-stat-link{display:block;cursor:pointer;transition:box-shadow .15s ease,transform .15s ease,border-color .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.03)}.hero-stat-link:hover{box-shadow:0 4px 14px rgba(195,0,47,.08);transform:translateY(-1px);border-color:var(--crimson)}.hero-art{gap:16px}.cover-placeholder,.hero-art{flex-shrink:0;display:flex;align-items:center}.cover-placeholder{width:104px;height:140px;border:1.5px dashed var(--line);border-radius:10px;flex-direction:column;justify-content:center;gap:6px;color:var(--gray-soft);background:var(--card);text-align:center;padding:8px}.cover-placeholder span{font-size:10px;line-height:1.4}.cover-info{font-size:12px;color:var(--gray);line-height:1.65;max-width:190px}.cover-info .book-title{font-size:14px;font-weight:800;color:var(--ink);margin-bottom:2px}.board{display:grid;grid-template-columns:300px 1fr;max-width:1600px;margin:40px auto;padding:0 40px;gap:28px;align-items:start}.col-label{font-size:13px;font-weight:800;color:var(--crimson);margin-bottom:14px}.chapter-list{display:flex;flex-direction:column;gap:10px}.chapter{position:relative;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;cursor:pointer;display:flex;align-items:flex-start;gap:13px;transition:box-shadow .15s ease,transform .15s ease;box-shadow:0 1px 3px rgba(0,0,0,.03)}.chapter .icon{flex-shrink:0;width:38px;height:38px;border-radius:10px;background:var(--bg);display:flex;align-items:center;justify-content:center;color:var(--crimson)}.chapter.disabled .icon{color:var(--gray-soft)}.chapter .body{flex:1;min-width:0}.chapter .num{font-size:12px;font-weight:800;color:var(--crimson);display:block;margin-bottom:2px}.chapter.disabled .num{color:var(--gray-soft)}.chapter .title{font-size:15px;font-weight:700}.chapter .tag{font-size:10.5px;color:var(--gray-soft);margin-left:8px;font-weight:700;background:var(--bg);border-radius:8px;padding:2px 7px}.chapter:hover{box-shadow:0 4px 14px rgba(195,0,47,.08);transform:translateY(-1px)}.chapter.active{border-color:var(--crimson);background:var(--crimson-soft)}.chapter.disabled{cursor:default;opacity:.75}.chapter.disabled:hover{box-shadow:0 1px 3px rgba(0,0,0,.03);transform:none}.preview{display:none;font-size:12.5px;color:var(--gray);line-height:1.55;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line)}.chapter:hover .preview{display:block}.subtopics{background:var(--card);border:1px solid var(--line);border-radius:16px;min-height:120px;overflow:hidden}.subtopics,.subtopics .empty{display:flex;flex-direction:column}.subtopics .empty{margin:auto;color:var(--gray-soft);font-size:13.5px;padding:48px 40px;text-align:center;align-items:center;gap:12px}.subtopics .empty svg{color:var(--line)}.subtopic{display:block;border-bottom:1px solid var(--line);padding:18px 22px;cursor:pointer;transition:background .15s ease;text-decoration:none;color:inherit}.subtopic:last-child{border-bottom:none}.subtopic:hover{background:var(--crimson-soft)}.subtopic-row{display:flex;align-items:center;justify-content:space-between}.subtopic .name{font-size:15px;font-weight:700;color:var(--ink)}.subtopic .go{font-size:12px;font-weight:800;color:var(--crimson);opacity:0;transition:opacity .15s}.subtopic:hover .go{opacity:1}.subtopic .subprev{display:none;font-size:12.5px;color:var(--gray);line-height:1.55;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}.subtopic:hover .subprev{display:block}.back-link{font-size:12.5px;font-weight:800;color:var(--crimson);cursor:pointer;margin-right:16px;text-decoration:none}.tabs{display:flex;flex-wrap:wrap;gap:10px;padding:0 40px;margin:32px 0 24px}.tab{flex:0 0 auto;text-align:center;padding:10px 20px;font-size:13.5px;font-weight:700;background:var(--card);border:1px solid var(--line);border-radius:20px;color:var(--gray-soft);cursor:pointer;text-decoration:none}.tab.active{color:#fff;background:var(--crimson);border-color:var(--crimson)}.panels{display:grid;grid-template-columns:360px 1fr 340px;gap:24px;align-items:start;width:100%;margin:0 0 48px;padding:0 40px;box-sizing:border-box}.panel{padding:26px;min-height:600px;background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 1px 3px rgba(0,0,0,.04)}.panel-ai{position:sticky;top:24px;align-self:start;min-height:auto;max-height:calc(100vh - 48px);display:flex;flex-direction:column;overflow:hidden}.panel-ai .chat-log{overflow-y:auto;flex:1}.panel h3{font-size:12.5px;font-weight:800;color:var(--crimson);margin-bottom:16px}.field{margin-bottom:14px}.field label{display:block;font-size:12px;color:var(--gray);margin-bottom:5px;font-weight:700}.field input,.field select{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:10px;color:var(--ink);padding:9px 11px;font-family:Noto Sans KR,sans-serif;font-size:13px}.field input:focus,.field select:focus{outline:none;border-color:var(--crimson)}.field input.invalid{border-color:var(--crimson);background:var(--crimson-soft)}.add-block{width:100%;padding:9px;margin:4px 0 18px;background:var(--bg);color:var(--crimson);border:1px dashed var(--crimson);border-radius:10px;font-size:12.5px;font-weight:700;cursor:pointer;transition:background .15s ease,color .15s ease}.add-block.active{background:var(--crimson);color:#fff;border-style:solid;border-color:var(--crimson)}.block-card{border:1px solid var(--line);border-radius:12px;padding:12px 12px 4px;margin-bottom:12px;position:relative;background:var(--bg);transition:background .15s ease}.block-card.drag-over{background:var(--crimson-soft);border-color:var(--crimson)}.block-card .block-title{font-size:11.5px;font-weight:800;color:var(--gray);margin-bottom:10px;padding-left:20px}.drag-handle{position:absolute;top:10px;left:10px;cursor:grab;color:var(--gray-soft);font-size:15px;line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none}.drag-handle:active{cursor:grabbing}.remove-block{position:absolute;top:10px;right:10px;width:20px;height:20px;border-radius:50%;background:var(--card);border:1px solid var(--line);color:var(--gray-soft);font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}.remove-block:hover{color:var(--crimson);border-color:var(--crimson)}.input-unit-group{display:flex}.input-unit-group input{flex:1 1 auto;min-width:0;border-radius:10px 0 0 10px;border-right:none}.unit-inline{width:60px;flex:0 0 60px;background:var(--bg);border:1px solid var(--line);border-radius:0 10px 10px 0;color:var(--gray);padding:9px 2px;font-family:Noto Sans KR,sans-serif;font-size:10.5px;text-align:center}.unit-inline:focus{outline:none;border-color:var(--crimson)}.field-with-slider{display:flex;align-items:center;gap:8px}.field-with-slider .input-unit-group{flex:1;min-width:0}.mini-slider{width:84px;flex:0 0 84px;accent-color:var(--crimson)}.steps{margin-top:4px}.step-card{border:1px solid var(--line);border-radius:12px;margin-bottom:10px}.step-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;font-size:12.5px;font-weight:800;color:var(--ink);cursor:pointer;background:var(--bg);border-radius:11px 11px 0 0}.step-header:hover{background:var(--crimson-soft)}.chevron{color:var(--crimson);font-size:11px}.step-body{padding:14px;font-size:12px;color:var(--gray);line-height:1.7;background:var(--card);border-radius:0 0 11px 11px;overflow:visible}.step-formula{font-family:JetBrains Mono,monospace;font-size:13.5px;font-weight:700;color:var(--crimson);background:var(--crimson-soft);border-radius:8px;padding:9px 13px;margin-bottom:10px;display:inline-block;letter-spacing:.01em}.step-row{padding:4px 0;font-size:12px}.step-final{margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);font-size:13px;font-weight:800;color:var(--ink);font-family:JetBrains Mono,monospace}.tens{color:var(--teal)}.comp{color:var(--crimson)}.step-header.static{cursor:default}.step-header.static:hover{background:var(--bg)}.y-ref-toggle{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--gray-soft);font-weight:700;margin-bottom:12px}.y-ref-toggle button{font-family:Noto Sans KR,sans-serif;font-size:11.5px;font-weight:700;color:var(--gray);background:var(--bg);border:1px solid var(--line);border-radius:20px;padding:6px 14px;cursor:pointer}.y-ref-toggle button.active{background:var(--crimson);border-color:var(--crimson);color:#fff}.step-eq{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--ink);background:var(--bg);border-radius:6px;padding:8px 11px;margin:5px 0;overflow-wrap:break-word;line-height:1.65;letter-spacing:.005em}.tip{position:relative;border-bottom:1.5px dotted;opacity:.92;cursor:help;padding-bottom:1px;transition:background .12s ease}.tip:hover{background:rgba(195,0,47,.14);border-bottom-color:var(--crimson);opacity:1;border-radius:2px}.tip:after{content:attr(data-tip);bottom:calc(100% + 8px);background:var(--ink);color:#fff;font-family:Noto Sans KR,sans-serif;font-weight:500;font-size:11.5px;line-height:1.4;text-align:center;white-space:normal;width:-moz-max-content;width:max-content;max-width:220px;padding:7px 11px;border-radius:8px;box-shadow:0 4px 14px rgba(0,0,0,.18)}.tip:after,.tip:before{position:absolute;left:50%;transform:translateX(-50%);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .1s ease;z-index:100}.tip:before{content:"";bottom:calc(100% + 3px);border:5px solid transparent;border-top:5px solid var(--ink)}.tip:hover:after,.tip:hover:before{opacity:1;visibility:visible}.material-block{margin-bottom:14px}.material-block:last-child{margin-bottom:0}.material-title{font-size:12px;font-weight:800;color:var(--ink);margin-bottom:4px}.ai-hint{font-size:12px;color:var(--gray);background:var(--crimson-soft);border-radius:10px;padding:10px 14px;margin-top:6px}.color-dot{width:9px;height:9px;border-radius:2px;display:inline-block;margin-right:6px;vertical-align:middle}.viz-placeholder{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;border:1.5px dashed var(--line);border-radius:14px;color:var(--gray-soft);font-size:13px;text-align:center;padding:20px}.badge{font-size:10.5px;font-weight:800;color:var(--crimson);background:var(--crimson-soft);border-radius:20px;padding:4px 12px;display:inline-block}.badge.live{color:var(--teal);background:var(--teal-soft)}.result-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}.result-card{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.result-card .l{font-size:11px;color:var(--gray-soft);font-weight:700}.result-card .v{font-size:14px;font-weight:800;margin-top:2px}.result-card .v.tens{color:var(--teal)}.result-card .v.comp{color:var(--crimson)}.chat-log{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.msg{font-size:13px;line-height:1.55;padding:11px 14px;border-radius:14px}.msg.ai{background:var(--crimson-soft);color:var(--ink);border-bottom-left-radius:4px}.msg.user{background:var(--bg);border-bottom-right-radius:4px}.chat-input{display:flex;gap:8px;margin-top:auto}.chat-input input{flex:1;background:var(--bg);border:1px solid var(--line);border-radius:20px;color:var(--ink);padding:11px 16px;font-size:13px;font-family:Noto Sans KR,sans-serif}.chat-input button{background:var(--crimson);color:#fff;border:none;border-radius:50%;width:38px;height:38px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer}.footer-bar{position:fixed;bottom:0;left:0;right:0;background:var(--gray);color:#fff;text-align:center;font-size:12.5px;font-weight:700;padding:14px 0;letter-spacing:.02em;z-index:20}