:root{--brutal-black: #0D0D0D;--brutal-paper: #FAFAF7;--brutal-card-bg: #FFFFFF;--brutal-yellow: #F5C518;--brutal-yellow-hover: #E5B508;--brutal-green: #16A34A;--brutal-red: #DC2626;--brutal-purple: #9333EA;--brutal-blue: #2563EB;--brutal-orange: #EA580C;--brutal-sky: #0284C7;--brutal-muted: #6B7280;--brutal-border: #0D0D0D}.brutal-root{background-color:var(--brutal-paper);color:var(--brutal-black);min-height:calc(100vh - 70px);padding-bottom:4rem;max-width:100%;box-sizing:border-box}.border-brutal-2{border:2px solid var(--brutal-border)}.border-brutal-3{border:3px solid var(--brutal-border)}.border-brutal-4{border:4px solid var(--brutal-border)}.shadow-brutal-sm{box-shadow:2px 2px 0 var(--brutal-border)}.shadow-brutal{box-shadow:3px 3px 0 var(--brutal-border)}.shadow-brutal-lg{box-shadow:5px 5px 0 var(--brutal-border)}.shadow-brutal-xl{box-shadow:6px 6px 0 var(--brutal-border)}.brutal-card-hover{transition:transform .15s ease,box-shadow .15s ease}.brutal-card-hover:hover{transform:translate(-2px,-2px);box-shadow:5px 5px 0 var(--brutal-border)}.btn-brutal-primary{background-color:var(--brutal-yellow);color:var(--brutal-black);border:2px solid var(--brutal-border);box-shadow:3px 3px 0 var(--brutal-border);font-weight:700;padding:.6rem 1.25rem;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:.5rem;transition:all .15s ease;font-size:.95rem}.btn-brutal-primary:hover{background-color:var(--brutal-yellow-hover);transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--brutal-border)}.btn-brutal-primary:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--brutal-border)}.btn-brutal-secondary{background-color:#fff;color:var(--brutal-black);border:2px solid var(--brutal-border);box-shadow:3px 3px 0 var(--brutal-border);font-weight:700;padding:.6rem 1.25rem;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;gap:.5rem;transition:all .15s ease;font-size:.95rem}.btn-brutal-secondary:hover{background-color:#f4f4f5;transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--brutal-border)}.btn-brutal-secondary:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--brutal-border)}.badge-brutal{display:inline-flex;align-items:center;gap:.35rem;padding:.25rem .65rem;border:2px solid var(--brutal-border);border-radius:9999px;font-weight:800;font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;box-shadow:1px 1px 0 var(--brutal-border)}.brutal-tabs-bar{display:flex;flex-wrap:wrap;border:2px solid var(--brutal-border);background:#fff;box-shadow:3px 3px 0 var(--brutal-border);border-radius:6px;overflow:hidden;margin-bottom:1.5rem}.brutal-tab-item{padding:.75rem 1.25rem;font-weight:800;font-size:.9rem;border:none;background:transparent;color:var(--brutal-black);cursor:pointer;border-right:2px solid var(--brutal-border);display:flex;align-items:center;gap:.4rem;transition:background-color .15s ease}.brutal-tab-item:last-child{border-right:none}.brutal-tab-item.active{background-color:var(--brutal-yellow)}.brutal-tab-item:hover:not(.active){background-color:#f4f4f5}@media(max-width:768px){.brutal-tab-item{padding:.5rem .75rem;font-size:.8rem}}:root{--flipbook-perspective: 1000px;--flipbook-duration: .5s;--flipbook-easing: cubic-bezier(.4, 0, .2, 1);--flipbook-border: #0D0D0D;--flipbook-yellow: #F5C518;--flipbook-yellow-hover: #E5B508;--flipbook-dark-face: #0F172A;--flipbook-paper: #FAFAF7}.flipbook-container{display:flex;flex-direction:column;gap:1.25rem;width:100%;position:relative;box-sizing:border-box}@media(min-width:1024px){.flipbook-container{flex-direction:row;gap:0;align-items:stretch;min-height:540px;border:3px solid var(--flipbook-border);border-radius:8px;background-color:#fff;box-shadow:5px 5px 0 var(--flipbook-border);overflow:hidden}}.flipbook-panel-left{width:100%;background-color:var(--flipbook-paper);display:flex;flex-direction:column;box-sizing:border-box;padding:1rem}@media(min-width:1024px){.flipbook-panel-left{width:var(--left-panel-width, 300px);min-width:200px;max-width:450px;border-right:2px solid var(--flipbook-border);flex-shrink:0}}.flipbook-panel-right{width:100%;background-color:var(--flipbook-paper);display:flex;flex-direction:column;box-sizing:border-box;padding:1rem}@media(min-width:1024px){.flipbook-panel-right{width:var(--right-panel-width, 300px);min-width:200px;max-width:450px;border-left:2px solid var(--flipbook-border);flex-shrink:0}}.flipbook-resizer{display:none}@media(min-width:1024px){.flipbook-resizer{display:flex;width:6px;cursor:col-resize;background-color:#e5e7eb;transition:background-color .15s ease;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;z-index:10;flex-shrink:0}.flipbook-resizer:hover,.flipbook-resizer.is-active{background-color:#2563eb}.flipbook-resizer:after{content:"";width:2px;height:32px;background-color:#9ca3af;border-radius:1px}}.flipbook-stage-center{flex:1 1 0%;min-width:0;background-color:#fff;padding:1.5rem;display:flex;flex-direction:column;justify-content:space-between;align-items:center;position:relative}.flipbook-scene{perspective:1000px;-webkit-perspective:1000px;width:100%;max-width:440px;height:270px;cursor:pointer;-webkit-user-select:none;user-select:none;margin:auto 0}.flipbook-card-inner{width:100%;height:100%;position:relative;transform-style:preserve-3d;-webkit-transform-style:preserve-3d;transition:transform var(--flipbook-duration) var(--flipbook-easing);border-radius:10px}.flipbook-card-inner.is-flipped{transform:rotateY(180deg)}.flipbook-face{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:10px;backface-visibility:hidden;-webkit-backface-visibility:hidden;display:flex;flex-direction:column;justify-content:space-between;box-sizing:border-box}.flipbook-face-front{background-color:#fff;border:4px solid var(--flipbook-border);box-shadow:4px 4px 0 var(--flipbook-border);padding:1.25rem;align-items:center;text-align:center}.flipbook-thumb-container{width:80px;height:80px;border:2px solid var(--flipbook-border);border-radius:8px;box-shadow:2px 2px 0 var(--flipbook-border);overflow:hidden;position:relative;margin-bottom:.5rem;flex-shrink:0;background-color:#f3f4f6}.flipbook-thumb-img{width:100%;height:100%;object-fit:cover;transition:opacity .3s ease}.flipbook-word-heading{font-size:1.5rem;font-weight:900;text-transform:uppercase;color:var(--flipbook-border);letter-spacing:-.02em;margin:.2rem 0;line-height:1.2}.flipbook-ipa-badge{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.85rem;font-weight:700;color:#1e40af;background-color:#eff6ff;border:1px solid #BFDBFE;padding:.15rem .6rem;border-radius:4px;display:inline-block}.flipbook-flip-hint{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.68rem;font-weight:700;color:#9ca3af;text-transform:uppercase;border-top:1px dashed #E5E7EB;width:100%;padding-top:.4rem;letter-spacing:.05em}.flipbook-face-back{background-color:var(--flipbook-dark-face);color:#fff;border:4px solid var(--flipbook-border);box-shadow:4px 4px 0 var(--flipbook-border);transform:rotateY(180deg);padding:1.25rem}.flipbook-back-scroll{overflow-y:auto;max-height:180px;padding-right:.35rem;display:flex;flex-direction:column;gap:.65rem}.flipbook-meaning-text{font-size:1.05rem;font-weight:800;color:#f8fafc;margin:0;line-height:1.4}.flipbook-example-box{font-size:.82rem;font-style:italic;color:#cbd5e1;border-left:2px solid #60A5FA;padding-left:.6rem;margin:0;line-height:1.45}.flipbook-collocations-wrap{display:flex;flex-wrap:wrap;gap:.35rem}.flipbook-collocation-pill{display:inline-flex;align-items:center;font-size:.72rem;font-weight:600;color:#e2e8f0;background-color:#ffffff1f;border:1px solid rgba(255,255,255,.2);padding:.15rem .5rem;border-radius:4px;line-height:1.2}.book-spine-shadow{position:absolute;top:0;bottom:0;left:50%;width:32px;transform:translate(-50%);background:linear-gradient(to right,#0003,#00000014 35%,#00000005,#00000014 65%,#0003);pointer-events:none;z-index:5}.flipbook-progress-track{height:12px;width:100%;background-color:#e5e7eb;border:2px solid var(--flipbook-border);border-radius:9999px;overflow:hidden;padding:1px}.flipbook-progress-fill{height:100%;background-color:#16a34a;border-radius:9999px;transition:width .3s ease}.flipbook-scroll::-webkit-scrollbar{width:4px}.flipbook-scroll::-webkit-scrollbar-track{background:transparent}.flipbook-scroll::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:2px}:root{--primary-50: #eff6ff;--primary-100: #dbeafe;--primary-200: #bfdbfe;--primary-300: #93c5fd;--primary-400: #60a5fa;--primary-500: #3b82f6;--primary-600: #2563eb;--primary-700: #1d4ed8;--primary-800: #1e40af;--primary-900: #1e3a8a;--accent-speaking: #3b82f6;--accent-listening: #10b981;--accent-writing: #8b5cf6;--accent-thptqg: #f59e0b;--accent-toeic: #ec4899;--surface-bg: #f8fafc;--surface-card: #ffffff;--surface-subtle: #f1f5f9;--surface-border: #e2e8f0;--text-main: #0f172a;--text-muted: #64748b;--text-subtle: #94a3b8;--text-inverse: #ffffff;--status-success: #10b981;--status-warning: #f59e0b;--status-danger: #ef4444;--status-info: #0ea5e9;--font-sans: "Plus Jakarta Sans", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 16px;--radius-xl: 24px;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .07), 0 2px 4px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .08), 0 4px 6px -4px rgba(0, 0, 0, .04);--shadow-glow: 0 0 25px -5px rgba(37, 99, 235, .2);--transition-fast: .15s ease;--transition-normal: .25s cubic-bezier(.4, 0, .2, 1)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-sans);background-color:var(--surface-bg);color:var(--text-main);line-height:1.6;-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:hidden}.container{max-width:1200px;margin:0 auto;padding:0 1.5rem}.header{position:sticky;top:0;z-index:50;background:#ffffffd9;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--surface-border);padding:.875rem 0}.header-inner{display:flex;justify-content:space-between;align-items:center}.brand-logo{display:flex;align-items:center;gap:.75rem;text-decoration:none;font-weight:800;font-size:1.25rem;color:var(--primary-700)}.nav-links{display:flex;align-items:center;gap:1.25rem;list-style:none}.nav-link{text-decoration:none;color:var(--text-muted);font-weight:600;font-size:.95rem;padding:.5rem .75rem;border-radius:var(--radius-sm);transition:var(--transition-fast)}.nav-link:hover,.nav-link.active{color:var(--primary-600);background-color:var(--primary-50)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;font-size:.95rem;font-weight:600;border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:var(--transition-fast);text-decoration:none}.btn-primary{background-color:var(--primary-600);color:var(--text-inverse)}.btn-primary:hover{background-color:var(--primary-700);box-shadow:var(--shadow-glow)}.btn-outline{background:transparent;border-color:var(--surface-border);color:var(--text-main)}.btn-outline:hover{border-color:var(--primary-400);background:var(--surface-subtle)}.btn-danger{background-color:var(--status-danger);color:var(--text-inverse)}.hero{padding:4.5rem 0 3.5rem;text-align:center;background:radial-gradient(circle at 50% 0%,#eff6ff,#f8fafc 70%)}.hero-badge{display:inline-flex;align-items:center;gap:.5rem;padding:.375rem 1rem;background:var(--primary-100);color:var(--primary-800);font-size:.85rem;font-weight:700;border-radius:var(--radius-full);margin-bottom:1.5rem}.hero-title{font-size:3rem;font-weight:800;line-height:1.2;letter-spacing:-.02em;margin-bottom:1.25rem;color:var(--text-main)}.hero-title span{color:var(--primary-600)}.hero-subtitle{font-size:1.2rem;color:var(--text-muted);max-width:650px;margin:0 auto 2rem}.grid-5{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.5rem}.card{background:var(--surface-card);border:1px solid var(--surface-border);border-radius:var(--radius-lg);padding:1.5rem;box-shadow:var(--shadow-sm);transition:var(--transition-normal);display:flex;flex-direction:column}.card:hover{transform:translateY(-3px);box-shadow:var(--shadow-lg);border-color:var(--primary-200)}.card-badge{align-self:flex-start;padding:.25rem .625rem;font-size:.75rem;font-weight:700;border-radius:var(--radius-full);text-transform:uppercase;margin-bottom:1rem}.card-title{font-size:1.25rem;font-weight:700;margin-bottom:.5rem}.card-desc{font-size:.9rem;color:var(--text-muted);flex-grow:1;margin-bottom:1.25rem}.form-group{margin-bottom:1.25rem}.form-label{display:block;font-size:.875rem;font-weight:600;margin-bottom:.375rem;color:var(--text-main)}.form-control{width:100%;padding:.625rem .875rem;font-size:.95rem;font-family:inherit;border:1px solid var(--surface-border);border-radius:var(--radius-md);background:var(--surface-card);transition:var(--transition-fast)}.form-control:focus{outline:none;border-color:var(--primary-500);box-shadow:0 0 0 3px var(--primary-100)}.state-container{text-align:center;padding:3rem 1.5rem;background:var(--surface-card);border:1px dashed var(--surface-border);border-radius:var(--radius-lg);margin:1.5rem 0}.state-icon{width:48px;height:48px;margin:0 auto 1rem;color:var(--text-muted)}.spinner{width:36px;height:36px;border:3px solid var(--primary-100);border-top-color:var(--primary-600);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 1rem}@keyframes spin{to{transform:rotate(360deg)}}.footer{margin-top:5rem;border-top:1px solid var(--surface-border);padding:2.5rem 0;background:var(--surface-card);font-size:.875rem;color:var(--text-muted);text-align:center}html{overflow-x:hidden;max-width:100vw}body{font-family:var(--font-sans);background-color:var(--surface-bg);color:var(--text-main);line-height:1.6;-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:hidden;max-width:100vw}.app-layout{overflow-x:hidden;max-width:100vw}@media(max-width:768px){.container{padding:0 .75rem}.header-inner{flex-direction:column;align-items:flex-start;gap:.625rem}.hero-title{font-size:2.2rem}.nav-links{display:flex;flex-wrap:wrap;gap:.35rem .5rem;max-width:100%}.nav-link{padding:.35rem .5rem;font-size:.85rem}.grid-5{grid-template-columns:1fr}}
