.edge-frame{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1000;border:2px solid var(--accent);box-shadow:0 0 10px 1px var(--accent),0 0 22px 4px color-mix(in srgb,var(--accent) 55%,transparent),inset 0 0 16px color-mix(in srgb,var(--accent) 35%,transparent);transition:border-color .5s ease,box-shadow .5s ease}.home-page{max-width:960px;margin:0 auto;padding:4rem 1.5rem}.home-header h1{font-size:2.25rem;margin:0 0 .5rem}.home-header p{color:var(--text-muted);margin:0 0 2.5rem}.source-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem}.source-card{display:flex;gap:1rem;padding:1.25rem;border-radius:14px;background:var(--surface);border:1px solid var(--border);text-decoration:none;color:inherit;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.source-card:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 8px 24px -12px var(--accent)}.source-card-swatch{flex-shrink:0;width:10px;border-radius:999px;background:var(--accent)}.source-card-body h2{margin:0 0 .4rem;font-size:1.15rem}.source-card-body p{margin:0 0 .75rem;font-size:.9rem;color:var(--text-muted);line-height:1.4}.source-card-meta{font-size:.8rem;color:var(--accent);font-weight:600}.html-embed{width:100%;height:100%;border:0;background:#fff;border-radius:12px}.html-embed-status{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:.95rem}.html-embed-error{color:#f87171}.floating-nav{position:fixed;right:24px;bottom:24px;z-index:1100;display:flex;flex-direction:column;align-items:flex-end;gap:.75rem}.floating-nav-button{height:44px;padding:0 1.1rem;border-radius:999px;border:2px solid var(--accent);background:color-mix(in srgb,var(--accent) 22%,#0b1120 78%);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 12%,transparent),0 8px 24px -8px var(--accent);cursor:pointer;display:flex;align-items:center;gap:.5rem;color:#f8fafc;font-size:.9rem;font-weight:600;white-space:nowrap;transition:transform .15s ease,box-shadow .2s ease}.floating-nav-button:hover{transform:translateY(-2px)}.floating-nav-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px 2px var(--accent)}.floating-nav-panel{width:240px;padding:.9rem;border-radius:14px;border:1px solid color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,#0b1120 88%,var(--accent) 12%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 12px 32px -12px var(--accent);color:#e2e8f0;display:flex;flex-direction:column;gap:.5rem}.floating-nav-header{display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:.9rem;color:var(--accent);margin-bottom:.25rem}.floating-nav-close{border:0;background:transparent;color:inherit;font-size:1.1rem;line-height:1;cursor:pointer;padding:0 .25rem}.floating-nav-link{color:#e2e8f0;text-decoration:none;font-size:.85rem;padding:.35rem 0;border-bottom:1px solid rgba(255,255,255,.08)}.floating-nav-link:hover{color:var(--accent)}.floating-nav-crumbs{display:flex;flex-direction:column;gap:.25rem;max-height:140px;overflow-y:auto;padding-top:.25rem}.floating-nav-crumb{font-size:.8rem;color:#94a3b8;text-decoration:none}.floating-nav-crumb:hover{color:var(--accent)}.floating-nav-pager{display:flex;gap:.5rem;margin-top:.25rem}.floating-nav-pager-btn{flex:1;text-align:center;padding:.4rem 0;border-radius:8px;border:1px solid color-mix(in srgb,var(--accent) 50%,transparent);color:var(--accent);text-decoration:none;font-size:.8rem}.floating-nav-pager-btn:hover{background:color-mix(in srgb,var(--accent) 16%,transparent)}.floating-nav-pager-disabled{opacity:.35;pointer-events:none}.kimdung-page{padding-bottom:4rem}.kimdung-empty{max-width:1100px;margin:0 auto;padding:0 1.5rem;color:var(--text-muted)}.kimdung-soon{margin-left:auto;font-size:.7rem;padding:.15rem .5rem;border-radius:999px;background:#94a3b826;color:var(--text-muted)}.node-card-disabled{opacity:.55;cursor:default;display:flex;align-items:center}.kimdung-quiz{max-width:860px;margin:0 auto;padding:0 1.5rem}.kimdung-toolbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 0;margin-bottom:1rem;background:var(--bg);border-bottom:1px solid var(--border);flex-wrap:wrap}.kimdung-toggle{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--text-muted);cursor:pointer}.kimdung-toolbar-actions{display:flex;align-items:center;gap:.6rem}.kimdung-score{font-size:.9rem;font-weight:600;color:var(--accent, #a78bfa)}.kimdung-btn{border-radius:8px;padding:.45rem .9rem;font-size:.85rem;font-weight:600;cursor:pointer;border:1px solid var(--border);background:transparent;color:var(--text)}.kimdung-btn-ghost:hover{border-color:var(--text-muted)}.kimdung-btn-primary{background:var(--accent, #a78bfa);border-color:var(--accent, #a78bfa);color:#0b1120}.kimdung-btn:disabled{opacity:.4;cursor:default}.kimdung-btn-active{background:var(--accent, #a78bfa);border-color:var(--accent, #a78bfa);color:#0b1120}.kimdung-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1.25rem 1.5rem;margin-bottom:1.25rem}.kimdung-card-header{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:.75rem}.kimdung-line{margin:0 0 .6rem;line-height:1.7}.kimdung-line-example{color:var(--text-muted);font-style:italic}.kimdung-tag{margin-left:.4rem;font-size:.7rem;font-style:normal;padding:.1rem .4rem;border-radius:999px;background:#94a3b826}.kimdung-vi{display:block;color:var(--text-muted);font-size:.88rem;margin-top:.1rem}.kimdung-options{display:inline-flex;gap:.35rem;flex-wrap:wrap;vertical-align:middle}.kimdung-option{border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--text);padding:.15rem .7rem;font-size:.88rem;cursor:pointer}.kimdung-option:hover{border-color:var(--accent, #a78bfa)}.kimdung-option-selected{border-color:var(--accent, #a78bfa);background:color-mix(in srgb,var(--accent, #a78bfa) 20%,transparent)}.kimdung-option-correct{border-color:#34d399;background:color-mix(in srgb,#34d399 25%,transparent);color:#34d399;font-weight:600}.kimdung-option-wrong{border-color:#f87171;background:color-mix(in srgb,#f87171 20%,transparent);color:#f87171;text-decoration:line-through}.kimdung-input{border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--text);padding:.15rem .5rem;font-size:.95rem}.kimdung-input-correct{border-color:#34d399;color:#34d399}.kimdung-input-wrong{border-color:#f87171;color:#f87171}.kimdung-answer-reveal{margin-left:.5rem;font-size:.82rem;color:#34d399;font-weight:600}.kimdung-anchor{color:var(--text-muted);display:flex;gap:.5rem}.kimdung-reorder-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}.kimdung-hint{color:var(--text-muted);font-size:.85rem;margin:0 0 1rem}.kimdung-reorder-row{display:flex;align-items:flex-start;gap:.6rem;padding:.5rem .7rem;border-radius:8px;border:1px solid var(--border);background:#94a3b80f;cursor:grab;transition:border-color .15s ease,background .15s ease}.kimdung-reorder-row:active{cursor:grabbing}.kimdung-reorder-over{border-color:var(--accent, #a78bfa);background:color-mix(in srgb,var(--accent, #a78bfa) 14%,transparent)}.kimdung-drag-handle{flex-shrink:0;color:var(--text-muted);font-size:1rem;line-height:1;padding-top:.1rem;-webkit-user-select:none;user-select:none;cursor:pointer}.kimdung-reorder-correct{border-color:#34d399;background:color-mix(in srgb,#34d399 12%,transparent)}.kimdung-reorder-wrong{border-color:#f87171;background:color-mix(in srgb,#f87171 10%,transparent)}.kimdung-reorder-badge{flex-shrink:0;width:1.5rem;height:1.5rem;border-radius:50%;background:#94a3b826;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700}.kimdung-reorder-text{flex:1;line-height:1.6}.kimdung-paragraphs{display:flex;flex-direction:column;gap:.6rem;margin-bottom:1rem;padding-bottom:1rem;border-bottom:1px dashed var(--border)}.kimdung-paragraph{display:flex;gap:.6rem}.kimdung-paragraph-letter{flex-shrink:0;width:1.6rem;height:1.6rem;border-radius:50%;background:color-mix(in srgb,var(--accent, #a78bfa) 20%,transparent);color:var(--accent, #a78bfa);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.85rem}.kimdung-heading-list{margin:0 0 1rem;padding-left:1.4rem;color:var(--text-muted);font-size:.92rem;line-height:1.7}.kimdung-heading-list strong{color:var(--text)}.kimdung-match-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.kimdung-match-row{display:flex;align-items:center;flex-wrap:wrap;gap:.6rem;padding:.5rem 0}.kimdung-match-row-block{flex-direction:column;align-items:flex-start;padding:.75rem 0;border-top:1px dashed var(--border)}.kimdung-match-row-block:first-of-type{border-top:none}.kimdung-match-question{flex:1;min-width:220px}.kimdung-match-options{display:inline-flex;gap:.3rem}.kimdung-progress{font-size:.85rem;color:var(--text-muted);font-weight:600}.kimdung-listening-card{display:flex;flex-direction:column;gap:1rem}.kimdung-listening-question{font-size:1.05rem;margin:0}.kimdung-audio-controls{display:flex;gap:.5rem;flex-wrap:wrap}.kimdung-options-block{display:flex;flex-direction:column;gap:.5rem}.kimdung-option-block{text-align:left;padding:.6rem .9rem;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--text);cursor:pointer;font-size:.95rem}.kimdung-option-block:hover{border-color:var(--accent, #a78bfa)}.kimdung-option-block.kimdung-option-selected{border-color:var(--accent, #a78bfa);background:color-mix(in srgb,var(--accent, #a78bfa) 16%,transparent)}.kimdung-option-block.kimdung-option-correct{border-color:#34d399;background:color-mix(in srgb,#34d399 18%,transparent);color:#34d399;font-weight:600}.kimdung-option-block.kimdung-option-wrong{border-color:#f87171;background:color-mix(in srgb,#f87171 14%,transparent);color:#f87171}.kimdung-transcript{font-size:.88rem;color:var(--text-muted);border-top:1px dashed var(--border);padding-top:.75rem}.kimdung-transcript summary{cursor:pointer;color:var(--accent, #a78bfa);font-weight:600}.kimdung-flashcard{display:flex;flex-direction:column;align-items:flex-start;gap:.6rem}.kimdung-pager{display:flex;justify-content:space-between;gap:.6rem;margin-top:1rem}.kimdung-recordings{display:flex;flex-direction:column;gap:.6rem;margin:1rem 0}.kimdung-recording-row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;padding:.5rem 0;border-top:1px dashed var(--border)}.kimdung-recording-row:first-child{border-top:none}.kimdung-speaking-answer{display:flex;flex-direction:column;gap:.75rem;padding-top:.75rem;border-top:1px dashed var(--border)}.kimdung-speaking-questions{margin:0 0 1rem;padding-left:1.4rem;line-height:1.7}.kimdung-speaking-questions li{margin-bottom:.3rem}.kimdung-speaking-images{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1rem}.kimdung-speaking-images img{max-width:260px;max-height:200px;border-radius:8px;border:1px solid var(--border);object-fit:cover}.kimdung-speaking-picker{max-width:420px;flex:1}.kimdung-speaking-title{font-size:1.05rem;margin:0 0 1rem;color:var(--text-muted)}.kimdung-md-p{margin:0 0 .9rem;line-height:1.7}.kimdung-md-list{margin:0 0 .9rem;padding-left:1.4rem;line-height:1.7}.kimdung-writing-context{background:#94a3b814;border-radius:8px;padding:.75rem 1rem;margin-bottom:1rem}.kimdung-writing-prompt{padding:.75rem 0;border-top:1px dashed var(--border)}.kimdung-writing-prompt:first-of-type{border-top:none}.kimdung-writing-textarea{width:100%;box-sizing:border-box;border-radius:8px;border:1px solid var(--border);background:transparent;color:var(--text);padding:.6rem .8rem;font-family:inherit;font-size:.92rem;line-height:1.6;resize:vertical}.kimdung-writing-textarea:focus{outline:none;border-color:var(--accent, #a78bfa)}.kimdung-writing-meta{margin-top:.4rem}.kimdung-writing-count{font-size:.8rem;color:var(--text-muted)}.kimdung-writing-count-ok{color:#34d399}.kimdung-writing-count-off{color:#f87171}.browser-page{min-height:100vh}.breadcrumb{max-width:1100px;margin:0 auto;padding:1.75rem 1.5rem 1rem;font-size:.9rem;color:var(--text-muted)}.breadcrumb-item a{color:var(--text-muted);text-decoration:none}.breadcrumb-item a:hover{color:var(--accent, #38bdf8)}.breadcrumb-current{color:var(--text);font-weight:600}.breadcrumb-sep{margin:0 .4rem;opacity:.5}.node-grid{max-width:1100px;margin:0 auto;padding:0 1.5rem 3rem;display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:.9rem}.node-card{display:flex;align-items:center;gap:.6rem;padding:.9rem 1rem;border-radius:10px;background:var(--surface);border:1px solid var(--border);color:inherit;text-decoration:none;font-size:.9rem;transition:border-color .15s ease,transform .15s ease}.node-card:hover{transform:translateY(-1px);border-color:var(--accent, #38bdf8)}.node-card-dir{color:var(--text)}.node-card-file{color:var(--text-muted)}.empty-note{color:var(--text-muted);font-size:.9rem}.file-view{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1}.file-view .html-embed,.file-view .html-embed-status{border-radius:0}:root{color-scheme:dark;--bg: #0b1120;--surface: #111827;--border: #1f2937;--text: #e2e8f0;--text-muted: #94a3b8}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif}a{color:inherit}
