@import "https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800;900&display=swap";body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:Outfit,Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--font-family:"Outfit", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--transition-smooth:all .3s cubic-bezier(.4, 0, .2, 1);--transition-fast:all .15s ease;--color-male:#a5c9eb;--color-male-bg:#a5c9eb26;--color-male-border:#a5c9eb66;--color-female:#f3b0c3;--color-female-bg:#f3b0c326;--color-female-border:#f3b0c366;--color-neutral:#cbd5e1;--color-neutral-bg:#cbd5e11a;--color-neutral-border:#cbd5e14d}.dark-theme{--bg-app:#0b0f19;--bg-gradient:radial-gradient(circle at 50% 50%, #151c2e 0%, #0b0f19 100%);--bg-card:#141a2ab3;--bg-card-hover:#1c253ad9;--border-card:#ffffff14;--border-card-focus:#fff3;--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--accent-glow:#6366f126;--btn-primary-bg:linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);--btn-primary-hover:linear-gradient(135deg, #818cf8 0%, #6366f1 100%);--shadow-premium:0 12px 40px -10px #0009;--shadow-inset:inset 0 1px 1px #ffffff0d;--desk-wood:#2e1a0c;--desk-wood-light:#523015;--desk-border:#ffffff1a;--desk-empty-bg:#1e293b66}.light-theme{--bg-app:#f4f6fa;--bg-gradient:radial-gradient(circle at 50% 50%, #fff 0%, #f4f6fa 100%);--bg-card:#ffffffbf;--bg-card-hover:#fffffff2;--border-card:#00000014;--border-card-focus:#6366f14d;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--accent-glow:#6366f114;--btn-primary-bg:linear-gradient(135deg, #4f46e5 0%, #3730a3 100%);--btn-primary-hover:linear-gradient(135deg, #6366f1 0%, #4f46e5 100%);--shadow-premium:0 12px 30px -10px #6366f11f;--shadow-inset:inset 0 1px 1px #fffc;--desk-wood:#e2c092;--desk-wood-light:#f7e6d0;--desk-border:#0000001a;--desk-empty-bg:#e2e8f080}*{box-sizing:border-box;font-family:var(--font-family);margin:0;padding:0}body{background-color:var(--bg-app);color:var(--text-primary);transition:var(--transition-smooth);overflow-x:hidden}.App{background:var(--bg-gradient);min-height:100vh;transition:var(--transition-smooth);flex-direction:column;display:flex;position:relative}.scrollbar-thin::-webkit-scrollbar{width:6px;height:6px}.scrollbar-thin::-webkit-scrollbar-track{background:0 0}.scrollbar-thin::-webkit-scrollbar-thumb{background:var(--text-muted);border-radius:4px}.scrollbar-thin::-webkit-scrollbar-thumb:hover{background:var(--text-secondary)}.portal-container{z-index:1;justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex;position:relative;overflow:hidden}.glow-circle{filter:blur(120px);opacity:.45;z-index:-1;pointer-events:none;border-radius:50%;position:absolute}.bg-glow-1{background:#6366f1;width:400px;height:400px;animation:15s infinite alternate float-slow;top:-100px;left:-100px}.bg-glow-2{background:#ec4899;width:500px;height:500px;animation:20s infinite alternate-reverse float-slow;bottom:-150px;right:-150px}@keyframes float-slow{0%{transform:translate(0)scale(1)}to{transform:translate(50px,30px)scale(1.1)}}.portal-toolbar{gap:12px;display:flex;position:absolute;top:20px;right:20px}.toolbar-btn{background:var(--bg-card);border:1px solid var(--border-card);color:var(--text-primary);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);width:40px;height:40px;transition:var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;display:flex}.toolbar-btn:hover{background:var(--bg-card-hover);border-color:var(--border-card-focus);transform:scale(1.1)}.portal-card{background:var(--bg-card);border:1px solid var(--border-card);box-shadow:var(--shadow-premium), var(--shadow-inset);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);text-align:center;width:100%;max-width:460px;transition:var(--transition-smooth);border-radius:24px;padding:40px}.portal-header{margin-bottom:30px}.logo-badge{color:#818cf8;letter-spacing:.05em;text-transform:uppercase;background:#6366f126;border:1px solid #6366f14d;border-radius:50px;align-items:center;gap:6px;margin-bottom:16px;padding:6px 12px;font-size:.8rem;font-weight:600;display:inline-flex}.portal-header h1{letter-spacing:-.02em;background:linear-gradient(135deg, var(--text-primary) 30%, var(--text-secondary));-webkit-text-fill-color:transparent;-webkit-background-clip:text;margin-bottom:10px;font-size:1.8rem;font-weight:800}.portal-subtitle{color:var(--text-secondary);font-size:.85rem;line-height:1.5}.portal-form{text-align:left;flex-direction:column;gap:20px;display:flex}.form-group{flex-direction:column;gap:8px;display:flex}.form-group label{color:var(--text-secondary);font-size:.85rem;font-weight:600}.form-desc{color:var(--text-muted);margin-bottom:4px;font-size:.75rem;line-height:1.4}.input-wrapper{align-items:center;display:flex;position:relative}.input-icon{color:var(--text-muted);pointer-events:none;position:absolute;left:14px}.input-wrapper input,.input-wrapper select{border:1px solid var(--border-card);width:100%;color:var(--text-primary);transition:var(--transition-fast);background:#00000026;border-radius:12px;outline:none;padding:14px 14px 14px 42px;font-size:.95rem}.light-theme .input-wrapper input,.light-theme .input-wrapper select{background:#fff9}.input-wrapper input:focus,.input-wrapper select:focus{border-color:var(--border-card-focus);background:#00000040;box-shadow:0 0 10px #6366f126}.light-theme .input-wrapper input:focus,.light-theme .input-wrapper select:focus{background:#ffffffe6}.form-row{gap:16px;display:flex}.form-group.half{flex:1}.portal-submit-btn{background:var(--btn-primary-bg);color:#fff;cursor:pointer;transition:var(--transition-fast);border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;margin-top:10px;padding:14px 20px;font-size:.95rem;font-weight:700;display:flex;box-shadow:0 4px 15px #6366f159}.portal-submit-btn:hover:not(:disabled){background:var(--btn-primary-hover);transform:translateY(-2px);box-shadow:0 6px 20px #6366f173}.portal-submit-btn:active{transform:translateY(0)}.portal-submit-btn:disabled{opacity:.6;cursor:not-allowed}.class-summary-box{text-align:center;background:#6366f114;border:1px dashed #6366f140;border-radius:12px;margin-bottom:4px;padding:16px}.summary-tag{color:#fff;background:#6366f1;border-radius:50px;margin-bottom:8px;padding:2px 8px;font-size:.7rem;font-weight:700;display:inline-block}.class-summary-box h3{margin-bottom:4px;font-size:1.1rem;font-weight:700}.class-summary-box p{color:var(--text-secondary);font-size:.9rem}.auth-actions{gap:12px;display:flex}.portal-back-btn{border:1px solid var(--border-card);color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);background:0 0;border-radius:12px;padding:14px 18px;font-weight:600}.portal-back-btn:hover{color:var(--text-primary);background:#ffffff0d}.portal-submit-btn.auth-btn{flex:1;margin-top:0}.portal-error-alert{color:#f87171;text-align:left;background:#ef44441f;border:1px solid #ef44444d;border-radius:10px;align-items:center;gap:8px;margin-bottom:20px;padding:12px 16px;font-size:.82rem;font-weight:500;display:flex}.light-theme .portal-error-alert{color:#b91c1c;background:#ef444414}.shake{animation:.5s ease-in-out shake}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}.confetti-canvas{z-index:999;pointer-events:none;width:100vw;height:100vh;position:fixed;top:0;left:0}.dashboard-header{background:var(--bg-card);border-bottom:1px solid var(--border-card);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:100;transition:var(--transition-smooth);justify-content:space-between;align-items:center;padding:16px 24px;display:flex;position:sticky;top:0;box-shadow:0 4px 20px #00000026}.header-left{align-items:center;gap:12px;display:flex}.app-logo{color:var(--text-primary);align-items:center;gap:8px;display:flex}.logo-spark{color:#6366f1;animation:2s infinite pulse-glow}.app-logo h1{letter-spacing:-.03em;font-size:1.25rem;font-weight:900}.live-badge{color:#34d399;text-transform:uppercase;background:#10b9811f;border:1px solid #10b9814d;border-radius:50px;padding:2px 8px;font-size:.7rem;font-weight:700}.header-right{gap:8px;display:flex}.header-btn{border:1px solid var(--border-card);color:var(--text-secondary);cursor:pointer;width:36px;height:36px;transition:var(--transition-fast);background:0 0;border-radius:8px;justify-content:center;align-items:center;display:flex}.header-btn:hover{color:var(--text-primary);border-color:var(--border-card-focus);background:#ffffff0d}.light-theme .header-btn:hover{background:#0000000d}.dashboard-body{flex:1;grid-template-columns:280px 1fr 340px;gap:20px;height:calc(100vh - 69px);min-height:500px;padding:20px;display:grid}.dashboard-sidebar{flex-direction:column;height:100%;min-height:0;display:flex;overflow:hidden}.dashboard-main{background:var(--bg-card);border:1px solid var(--border-card);box-shadow:var(--shadow-premium), var(--shadow-inset);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);height:100%;transition:var(--transition-smooth);border-radius:20px;flex-direction:column;padding:24px;display:flex;overflow-y:auto}.control-panel{flex-direction:column;gap:16px;height:100%;display:flex}.panel-section{background:var(--bg-card);border:1px solid var(--border-card);box-shadow:var(--shadow-premium), var(--shadow-inset);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);transition:var(--transition-smooth);border-radius:16px;padding:16px}.profile-section{flex-direction:column;gap:12px;display:flex}.profile-info h2{font-size:1.15rem;font-weight:800}.profile-info p{color:var(--text-secondary);font-size:.85rem}.profile-year{color:#818cf8;background:#6366f11f;border-radius:4px;margin-bottom:4px;padding:2px 6px;font-size:.7rem;font-weight:700;display:inline-block}.sync-badge-container{border-top:1px solid var(--border-card);flex-direction:column;gap:6px;padding-top:10px;display:flex}.sync-badge{border-radius:50px;align-items:center;gap:6px;width:fit-content;padding:4px 10px;font-size:.72rem;font-weight:700;display:inline-flex;position:relative}.supabase-connected{color:#34d399;background:#10b9811f;border:1px solid #10b98133}.local-demo{color:#fbbf24;background:#f59e0b1f;border:1px solid #f59e0b33}.pulse-green,.pulse-yellow{border-radius:50%;width:6px;height:6px;margin-left:2px}.pulse-green{background:#10b981;animation:1.5s infinite pulse-light}.pulse-yellow{background:#f59e0b;animation:1.5s infinite pulse-light}@keyframes pulse-light{0%{box-shadow:0 0 #10b981b3}70%{box-shadow:0 0 0 6px #10b98100}to{box-shadow:0 0 #10b98100}}.autosave-status{color:var(--text-muted);font-size:.68rem}.status-text.saving{color:#60a5fa}.status-text.saved{color:var(--text-muted)}.status-text.error{color:#f87171}.section-header{color:var(--text-primary);align-items:center;gap:6px;margin-bottom:12px;display:flex}.section-header h3{letter-spacing:-.01em;font-size:.88rem;font-weight:700}.grid-inputs{gap:12px;margin-bottom:14px;display:flex}.grid-inputs .input-box{flex-direction:column;flex:1;gap:6px;display:flex}.grid-inputs label{color:var(--text-secondary);font-size:.75rem;font-weight:600}.grid-inputs input{border:1px solid var(--border-card);width:100%;color:var(--text-primary);text-align:center;background:#0000001a;border-radius:8px;outline:none;padding:8px;font-weight:600}.light-theme .grid-inputs input{background:#ffffffb3}.preset-container{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.sub-label{color:var(--text-muted);font-size:.72rem;font-weight:600}.preset-buttons{flex-direction:column;gap:6px;display:flex}.preset-btn{border:1px solid var(--border-card);color:var(--text-secondary);cursor:pointer;text-align:left;transition:var(--transition-fast);background:#ffffff08;border-radius:8px;padding:8px 8px 8px 12px;font-size:.78rem;font-weight:600}.preset-btn:hover:not(:disabled){color:var(--text-primary);border-color:var(--border-card-focus);background:#ffffff14}.light-theme .preset-btn{background:#00000005}.light-theme .preset-btn:hover{background:#0000000f}.edit-layout-toggle-btn{border:1px solid var(--border-card);width:100%;color:var(--text-primary);cursor:pointer;transition:var(--transition-fast);background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px;font-size:.82rem;font-weight:700;display:flex}.edit-layout-toggle-btn.active{color:#ef4444;background:#ef44441f;border-color:#ef444466}.edit-layout-toggle-btn:hover:not(:disabled){border-color:var(--border-card-focus)}.edit-mode-helper-text{color:#f87171;text-align:center;margin-top:8px;font-size:.7rem;line-height:1.4}.shuffle-section{flex-direction:column;display:flex}.engine-options{margin-bottom:12px}.checkbox-wrapper{cursor:pointer;-webkit-user-select:none;user-select:none;color:var(--text-secondary);align-items:center;font-size:.8rem;font-weight:600;display:flex}.checkbox-wrapper input{opacity:0;cursor:pointer;width:0;height:0;position:absolute}.checkbox-custom{border:1px solid var(--border-card);width:16px;height:16px;transition:var(--transition-fast);background-color:#0003;border-radius:4px;margin-right:8px;position:relative}.light-theme .checkbox-custom{background-color:#fffc}.checkbox-wrapper:hover input~.checkbox-custom{border-color:var(--border-card-focus)}.checkbox-wrapper input:checked~.checkbox-custom{background-color:#6366f1;border-color:#6366f1}.checkbox-custom:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:4px;height:8px;display:none;position:absolute;top:2px;left:5px;transform:rotate(45deg)}.checkbox-wrapper input:checked~.checkbox-custom:after{display:block}.shuffle-buttons-group{flex-direction:column;gap:8px;display:flex}.shuffle-trigger-btn{color:#fff;cursor:pointer;transition:var(--transition-fast);background:linear-gradient(135deg,#6366f1 0%,#d946ef 100%);border:none;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:12px;font-size:.9rem;font-weight:800;display:flex;box-shadow:0 4px 15px #6366f159}.shuffle-trigger-btn:hover:not(:disabled){filter:brightness(1.1);transform:translateY(-2px);box-shadow:0 8px 25px #6366f180}.shuffle-trigger-btn:active{transform:translateY(0)}.shuffle-trigger-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.simple-shuffle-btn{border:1px solid var(--border-card);color:var(--text-secondary);box-shadow:none;background:#ffffff08}.simple-shuffle-btn:hover:not(:disabled){color:var(--text-primary);border-color:var(--border-card-focus);background:#ffffff14}.light-theme .simple-shuffle-btn{background:#00000005}.light-theme .simple-shuffle-btn:hover:not(:disabled){background:#0000000d}.footer-section{flex-direction:column;gap:8px;margin-top:auto;display:flex}.util-btn{border:1px solid var(--border-card);width:100%;color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);background:#ffffff03;border-radius:8px;justify-content:center;align-items:center;gap:8px;padding:10px;font-size:.8rem;font-weight:700;display:flex}.light-theme .util-btn{background:#00000003}.print-btn{color:#a5b4fc;border-color:#6366f159}.print-btn:hover{box-shadow:0 0 10px #6366f133;color:#fff!important;background:#6366f11a!important;border-color:#6366f1!important}.save-img-btn{color:#fbcfe8;border-color:#ec489959}.save-img-btn:hover{box-shadow:0 0 10px #ec489933;color:#fff!important;background:#ec48991a!important;border-color:#ec4899!important}.save-pdf-btn{color:#fde68a;border-color:#f59e0b59}.save-pdf-btn:hover{box-shadow:0 0 10px #f59e0b33;color:#fff!important;background:#f59e0b1a!important;border-color:#f59e0b!important}.light-theme .print-btn{color:#4f46e5;border-color:#6366f133}.light-theme .save-img-btn{color:#db2777;border-color:#ec489933}.light-theme .save-pdf-btn{color:#d97706;border-color:#f59e0b33}.logout-btn:hover{box-shadow:0 0 10px #ef444433;color:#f87171!important;background:#ef44441a!important;border-color:#ef444480!important}.light-theme .logout-btn:hover{color:#dc2626!important}.manager-container{background:var(--bg-card);border:1px solid var(--border-card);height:100%;min-height:0;box-shadow:var(--shadow-premium), var(--shadow-inset);-webkit-backdrop-filter:blur(12px)saturate(180%);transition:var(--transition-smooth);border-radius:20px;flex-direction:column;flex:1;gap:16px;padding:20px;display:flex;overflow:hidden}.section-title{align-items:center;gap:8px;display:flex;position:relative}.section-title h2{font-size:.95rem;font-weight:800}.clear-all-btn{color:#f87171;cursor:pointer;background:0 0;border:none;font-size:.72rem;font-weight:700;position:absolute;right:0}.clear-all-btn:hover{text-decoration:underline}.manager-error{color:#f87171;background:#ef44441a;border:1px solid #ef444440;border-radius:8px;padding:8px 12px;font-size:.75rem}.add-controller{flex-direction:column;gap:10px;display:flex}.add-tabs{background:#00000026;border-radius:8px;gap:4px;padding:3px;display:flex}.light-theme .add-tabs{background:#0000000d}.tab-btn{color:var(--text-secondary);cursor:pointer;transition:var(--transition-fast);background:0 0;border:none;border-radius:6px;flex:1;justify-content:center;align-items:center;gap:4px;padding:6px;font-size:.72rem;font-weight:700;display:flex}.tab-btn.active{background:var(--bg-card);color:var(--text-primary);box-shadow:0 2px 8px #00000026}.add-form{align-items:center;gap:8px;display:flex}.add-form input{border:1px solid var(--border-card);color:var(--text-primary);background:#0000001f;border-radius:8px;outline:none;flex:1;padding:8px 12px;font-size:.85rem}.light-theme .add-form input{background:#ffffffb3}.add-form input:focus{border-color:var(--border-card-focus)}.gender-selector{gap:2px;display:flex}.gender-btn{border:1px solid var(--border-card);color:var(--text-secondary);cursor:pointer;width:26px;height:32px;transition:var(--transition-fast);background:#ffffff05;border-radius:6px;font-size:.75rem;font-weight:700}.gender-btn.male.active{background:var(--color-male-bg);border-color:var(--color-male);color:var(--color-male)}.gender-btn.female.active{background:var(--color-female-bg);border-color:var(--color-female);color:var(--color-female)}.gender-btn.neutral.active{background:var(--color-neutral-bg);border-color:var(--color-neutral);color:var(--text-primary)}.add-submit-btn{color:#fff;cursor:pointer;transition:var(--transition-fast);background:#6366f1;border:none;border-radius:8px;padding:8px 12px;font-size:.8rem;font-weight:700}.add-submit-btn:hover{background:#4f46e5}.bulk-form{flex-direction:column;align-items:stretch}.bulk-form textarea{border:1px solid var(--border-card);color:var(--text-primary);resize:vertical;background:#0000001f;border-radius:8px;outline:none;padding:10px;font-size:.8rem}.light-theme .bulk-form textarea{background:#ffffffb3}.bulk-form textarea:focus{border-color:var(--border-card-focus)}.add-submit-btn.bulk-btn{width:100%}.empty-students-box{border:2px dashed var(--border-card);text-align:center;color:var(--text-muted);border-radius:12px;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:12px;padding:30px 20px;display:flex}.empty-students-box p{font-size:.8rem;line-height:1.4}.student-list-scroller{flex:1;height:0;min-height:0;padding-right:6px;overflow-y:auto}.student-list-scroller.scroll-active{border-bottom:1px dashed var(--border-card);padding-bottom:8px;height:330px!important;max-height:330px!important;overflow-y:auto!important}.student-list-scroller::-webkit-scrollbar{width:6px}.student-list-scroller::-webkit-scrollbar-track{background:#00000005;border-radius:10px}.student-list-scroller::-webkit-scrollbar-thumb{background:linear-gradient(#6366f1 0%,#a855f7 100%);border-radius:10px}.student-list-scroller::-webkit-scrollbar-thumb:hover{background:linear-gradient(#4f46e5 0%,#9333ea 100%)}.student-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.student-card{border:1px solid var(--border-card);background:#ffffff08;border-radius:14px;flex-direction:column;gap:8px;padding:10px 12px;transition:transform .25s cubic-bezier(.34,1.56,.64,1),background-color .2s,border-color .2s,box-shadow .25s;display:flex;position:relative;overflow:hidden}.light-theme .student-card{background:#ffffff73}.student-card:hover{background:var(--bg-card-hover);border-color:var(--border-card-focus);transform:translateY(-4px);box-shadow:0 10px 20px -5px #00000040}.light-theme .student-card:hover{box-shadow:0 10px 20px -5px #6366f11a}.student-card.gender-M{border-left:4px solid var(--color-male);background:linear-gradient(135deg,#a5c9eb0d 0%,#ffffff05 100%)}.light-theme .student-card.gender-M{background:linear-gradient(135deg,#a5c9eb33 0%,#fff9 100%)}.student-card.gender-F{border-left:4px solid var(--color-female);background:linear-gradient(135deg,#f3b0c30d 0%,#ffffff05 100%)}.light-theme .student-card.gender-F{background:linear-gradient(135deg,#f3b0c333 0%,#fff9 100%)}.student-card.gender-N{border-left:4px solid var(--color-neutral);background:linear-gradient(135deg,#cbd5e108 0%,#ffffff03 100%)}.light-theme .student-card.gender-N{background:linear-gradient(135deg,#cbd5e126 0%,#fff9 100%)}.student-card.front-prefered{border-right:3px solid #10b98180;box-shadow:0 0 10px #10b98114}.card-top{justify-content:space-between;align-items:center;display:flex}.student-name{white-space:nowrap;text-overflow:ellipsis;max-width:80px;font-size:.85rem;font-weight:700;overflow:hidden}.card-actions{gap:2px;display:flex}.front-toggle-btn,.delete-student-btn{color:var(--text-muted);cursor:pointer;width:20px;height:20px;transition:var(--transition-fast);background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;display:flex}.front-toggle-btn:hover{color:#10b981;background:#10b9811a}.front-toggle-btn.active{color:#10b981}.delete-student-btn:hover{color:#ef4444;background:#ef44441a}.card-body{flex-direction:column;gap:4px;display:flex}.mini-gender-toggle{background:#00000026;border-radius:4px;padding:1px;display:flex;overflow:hidden}.g-toggle-btn{cursor:pointer;color:var(--text-muted);transition:var(--transition-fast);background:0 0;border:none;flex:1;padding:2px;font-size:.65rem;font-weight:700}.g-toggle-btn.m.active{background:var(--color-male-bg);color:var(--color-male)}.g-toggle-btn.f.active{background:var(--color-female-bg);color:var(--color-female)}.g-toggle-btn.n.active{background:var(--color-neutral-bg);color:var(--text-primary)}.constraint-select-group{justify-content:space-between;align-items:center;gap:4px;display:flex}.select-label{color:var(--text-muted);align-items:center;gap:3px;font-size:.65rem;font-weight:600;display:flex}.love-icon,.avoid-icon{color:#f43f5e}.constraint-select-group select{border:1px solid var(--border-card);color:var(--text-secondary);background:#00000026;border-radius:4px;outline:none;max-width:65px;padding:2px;font-size:.65rem;font-weight:600}.light-theme .constraint-select-group select{background:#fffc}.blackboard-area{flex-direction:column;align-items:center;width:100%;margin-bottom:24px;display:flex}.podium-desk{color:#fff;z-index:2;letter-spacing:.1em;background:linear-gradient(135deg,#4f46e5 0%,#3b82f6 100%);border:1px solid #ffffff26;border-radius:8px;padding:6px 20px;font-size:.75rem;font-weight:800;box-shadow:0 0 15px #4f46e54d}.green-blackboard{width:80%;max-width:600px}.blackboard-wood-frame{text-align:center;transition:var(--transition-smooth);background:linear-gradient(135deg,#064e3b 0%,#022c22 100%);border:3px solid #10b981;border-radius:12px;padding:12px;position:relative;box-shadow:0 0 20px #10b98166,inset 0 0 30px #000c}.blackboard-glow{color:#a7f3d0;letter-spacing:.4em;text-shadow:0 0 10px #34d39999,0 0 20px #34d3994d;font-size:.95rem;font-weight:800;font-family:var(--font-family)}.chalk-decor{opacity:.8;background:#f8fafc;border-radius:1px;width:16px;height:5px;position:absolute;bottom:2px;right:20px;box-shadow:2px 0 #fca5a5}.seating-grid{flex:1;gap:12px;padding:8px;display:grid}.grid-cell{aspect-ratio:1.45;-webkit-user-select:none;user-select:none;border-radius:10px;transition:all .2s cubic-bezier(.25,.8,.25,1);position:relative;overflow:hidden}.cell-aisle{background:0 0;justify-content:center;align-items:center;display:flex}.editable-aisle{cursor:pointer;background:#ef444405;border:1px dashed #ef444440}.editable-aisle:hover{background:#ef444414;border-color:#ef444480}.aisle-indicator{color:var(--text-muted);opacity:.6;font-size:.7rem;font-weight:600}.cell-desk-empty{background:var(--desk-empty-bg);border:2.5px dashed var(--desk-border);cursor:default}.cell-desk-empty .desk-wood-texture{flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex}.empty-label{color:var(--text-muted);font-size:.72rem;font-weight:600}.cell-desk-editable{background:var(--desk-wood);border:2px solid var(--desk-border);cursor:pointer;box-shadow:inset 0 2px 4px #ffffff1a,0 4px 8px #0003}.cell-desk-editable .desk-wood-texture{background:linear-gradient(180deg, var(--desk-wood-light) 0%, var(--desk-wood) 100%);flex-direction:column;justify-content:center;align-items:center;height:100%;display:flex}.edit-remove-hint{color:var(--text-primary);opacity:.7;font-size:.7rem;font-weight:700}.cell-desk-editable:hover{border-color:#ef4444;transform:scale(.95)}.cell-desk-student{background:var(--desk-wood);border:2px solid var(--desk-border);cursor:grab;border-radius:12px;transition:transform .25s cubic-bezier(.34,1.56,.64,1),border-color .2s,box-shadow .25s;overflow:hidden;box-shadow:0 8px 24px -6px #0006,inset 0 1px 1px #ffffff26}.cell-desk-student:active{cursor:grabbing}.cell-desk-student .desk-wood-texture{background:linear-gradient(135deg, var(--desk-wood-light) 0%, var(--desk-wood) 100%);border-radius:10px;flex-direction:column;justify-content:space-between;height:100%;padding:12px 10px;display:flex;position:relative}.cell-desk-student.gender-M{border-color:#3b82f666;box-shadow:0 0 15px #3b82f61f,0 8px 24px -6px #0006}.cell-desk-student.gender-F{border-color:#ec489966;box-shadow:0 0 15px #ec48991f,0 8px 24px -6px #0006}.cell-desk-student.gender-N{border-color:#94a3b866;box-shadow:0 0 15px #94a3b814,0 8px 24px -6px #0006}.cell-desk-student:hover{z-index:10;border-color:#818cf8!important;transform:translateY(-6px)scale(1.04)!important;box-shadow:0 16px 36px -8px #00000080,0 0 20px #6366f133!important}.cell-desk-student.gender-M:hover{border-color:#3b82f6!important;box-shadow:0 16px 36px -8px #00000080,0 0 20px #3b82f64d!important}.cell-desk-student.gender-F:hover{border-color:#ec4899!important;box-shadow:0 16px 36px -8px #00000080,0 0 20px #ec48994d!important}.student-badge{text-align:center;border-top:3px solid var(--color-neutral);background:#fffffff2;border-radius:6px;justify-content:center;align-items:center;gap:4px;margin-top:2px;padding:6px;display:flex;box-shadow:0 3px 6px #00000029}.dark-theme .student-badge{background:#1e293b;border-top:3px solid #475569}.cell-desk-student.gender-M .student-badge{border-top-color:#3b82f6}.cell-desk-student.gender-F .student-badge{border-top-color:#ec4899}.student-badge-name{color:#0f172a;font-size:.88rem;font-weight:800}.dark-theme .student-badge-name{color:#f8fafc}.student-badge-gender-label{border-radius:3px;padding:1px 3px;font-size:.65rem;font-weight:700}.cell-desk-student.gender-M .student-badge-gender-label{color:#3b82f6;background:#3b82f61a}.cell-desk-student.gender-F .student-badge-gender-label{color:#ec4899;background:#ec48991a}.desk-meta{justify-content:space-between;align-items:center;width:100%;display:flex}.coordinate-tag{color:var(--text-primary);opacity:.6;font-size:.62rem;font-weight:700}.status-indicators{gap:3px;display:flex}.meta-icon{justify-content:center;align-items:center;width:14px;height:14px;display:flex}.front-row-icon{color:#10b981}.pair-icon{color:#f43f5e}.lock-toggle-btn{color:#fff9;cursor:pointer;width:20px;height:20px;transition:var(--transition-fast);background:#0000004d;border:none;border-radius:4px;justify-content:center;align-items:center;display:flex;position:absolute;bottom:6px;right:6px}.lock-toggle-btn:hover{color:#fff;background:#00000080}.lock-toggle-btn.active{color:#000;background:#fbbf24}.cell-desk-student.locked{border-color:#fbbf24}.dragging-now{opacity:.3;transform:scale(.92)}.drag-hover{transform:scale(1.03);border-color:#6366f1!important;box-shadow:0 0 15px #6366f166,inset 0 0 8px #6366f14d!important}.shuffle-spin-loader{color:#a78bfa;justify-content:center;align-items:center;height:100%;display:flex}.spin-fast{animation:.8s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.shuffling-shimmer{animation:1s infinite alternate shimmer}@keyframes shimmer{0%{background:#6366f11a;border-color:#6366f133}to{background:#6366f140;border-color:#6366f180}}.animate-pop{animation:.35s cubic-bezier(.34,1.56,.64,1) pop}@keyframes pop{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.animate-slide-up{animation:.45s cubic-bezier(.16,1,.3,1) slideUp}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in{animation:.3s fadeIn}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-pulse{animation:1.8s infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.print-only-header{display:none}@media print{@page{size:A4 landscape!important;margin:8mm 12mm!important}body{font-size:12pt;color:#000!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;background:#fff!important;font-family:Noto Sans KR,-apple-system,sans-serif!important}.App{background:#fff!important;min-height:auto!important;margin:0!important;padding:0!important}.no-print,.dashboard-header,.dashboard-sidebar,.portal-container,.lock-toggle-btn,.status-indicators,.confetti-canvas,.add-controller,.section-title button{display:none!important}.dashboard-body{width:100%!important;height:auto!important;padding:0!important;display:block!important}.dashboard-main.classroom-main-export{box-shadow:none!important;background:#fff!important;border:none!important;flex-direction:column!important;width:100%!important;height:auto!important;padding:0!important;display:flex!important;overflow:visible!important}.classroom-export-header{box-shadow:none!important;background:0 0!important;border:none!important;border-bottom:3px double #111827!important;border-radius:0!important;margin-bottom:24px!important;padding:10px 0!important}.classroom-export-header:before{display:none!important}.academic-badge{color:#111827!important;background:#f3f4f6!important;border:1px solid #374151!important}.class-info{-webkit-text-fill-color:initial!important;color:#111827!important;background:0 0!important;font-size:1.8rem!important}.school-name{color:#4b5563!important}.meta-badge{background:#f3f4f6!important;border:1px solid #e5e7eb!important}.meta-badge .value{color:#111827!important}.blackboard-area{justify-content:center;display:flex;width:100%!important;margin-bottom:30px!important}.green-blackboard{min-width:300px;width:45%!important}.blackboard-wood-frame{box-shadow:none!important;background:#fff!important;border:3px solid #1f2937!important;border-radius:6px!important;padding:8px 16px!important}.blackboard-glow{letter-spacing:.1em;color:#111827!important;text-shadow:none!important;font-size:1.1rem!important;font-weight:700!important}.podium-desk{font-weight:600;color:#111827!important;box-shadow:none!important;background:#f3f4f6!important;border:2px solid #374151!important;padding:6px 20px!important;font-size:.9rem!important}.seating-grid{gap:16px 20px!important;max-width:96%!important;margin:0 auto!important}.grid-cell{background:0 0!important;border-radius:10px!important}.cell-aisle{background:0 0!important;border:none!important}.cell-desk-empty{background:#f9fafb!important;border:2px dashed #9ca3af!important}.empty-label{font-weight:500;color:#9ca3af!important;font-size:.8rem!important}.cell-desk-student{background:#fff!important;border:2px solid #374151!important;box-shadow:0 4px 6px -1px #0000000d!important}.cell-desk-student .desk-wood-texture{background:#fff!important;border:none!important;padding:8px!important}.student-badge{box-shadow:none!important;background:#fff!important;border:1px solid #4b5563!important;border-top:5px solid #111827!important;border-radius:8px!important;padding:8px 6px!important}.gender-M .student-badge{border-top-color:#3b82f6!important}.gender-F .student-badge{border-top-color:#ec4899!important}.gender-N .student-badge{border-top-color:#6b7280!important}.student-badge-name{letter-spacing:-.01em;color:#111827!important;font-size:1.3rem!important;font-weight:800!important}.student-badge-gender-label{color:#1f2937!important;background:#f3f4f6!important;border:1px solid #4b5563!important;border-radius:3px!important;padding:1px 4px!important;font-size:.75rem!important;font-weight:700!important}.coordinate-tag{color:#6b7280!important;font-size:.75rem!important;font-weight:700!important}}.classroom-export-header{-webkit-backdrop-filter:blur(16px);transition:var(--transition-smooth);background:linear-gradient(135deg,#6366f114 0%,#8b5cf614 100%);border:1px solid #ffffff14;border-radius:16px;justify-content:space-between;align-items:center;margin-bottom:20px;padding:16px 24px;display:flex;position:relative;overflow:hidden;box-shadow:0 8px 32px #0003,inset 0 1px 1px #ffffff08}.light-theme .classroom-export-header{background:linear-gradient(135deg,#6366f10d 0%,#8b5cf60d 100%);border:1px solid #6366f114;box-shadow:0 8px 32px #6366f10d}.classroom-export-header:before{content:"";background:linear-gradient(#6366f1,#d946ef);width:4px;height:100%;position:absolute;top:0;left:0}.classroom-title-area{text-align:left;flex-direction:column;gap:4px;display:flex}.academic-badge{text-transform:uppercase;letter-spacing:.08em;color:#a5b4fc;background:#6366f126;border:1px solid #6366f14d;border-radius:9999px;width:fit-content;padding:2px 8px;font-size:.72rem;font-weight:800}.light-theme .academic-badge{color:#4f46e5;background:#6366f114;border:1px solid #6366f126}.school-class-title{color:var(--text-primary);align-items:center;gap:12px;margin:0;font-weight:900;display:flex}.school-name{opacity:.85;font-size:1.15rem}.class-info{background:linear-gradient(135deg,#a5b4fc 0%,#f472b6 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:1.45rem;font-weight:900}.light-theme .class-info{background:linear-gradient(135deg,#4f46e5 0%,#db2777 100%);-webkit-text-fill-color:transparent;-webkit-background-clip:text}.classroom-meta-area{align-items:center;gap:12px;display:flex}.meta-badge{background:#0003;border:1px solid #ffffff0a;border-radius:10px;flex-direction:column;align-items:flex-end;padding:6px 12px;display:flex}.light-theme .meta-badge{background:#fffc;border:1px solid #0000000a;box-shadow:0 2px 8px #00000005}.meta-badge .label{color:var(--text-muted);text-transform:uppercase;font-size:.65rem;font-weight:600}.meta-badge .value{color:var(--text-primary);font-size:.85rem;font-weight:800}.meta-badge.date-stamp{justify-content:center}.meta-badge.date-stamp .value{color:var(--text-secondary)}body.is-exporting-image,body.is-exporting-pdf{background:var(--bg-app)!important;overflow:visible!important}body.is-exporting-image .classroom-main-export,body.is-exporting-pdf .classroom-main-export{z-index:999999!important;background:var(--bg-app)!important;box-sizing:border-box!important;width:1120px!important;height:792px!important;box-shadow:none!important;border:none!important;border-radius:0!important;flex-direction:column!important;justify-content:flex-start!important;padding:32px!important;display:flex!important;position:fixed!important;top:0!important;left:0!important;transform:none!important}body.is-exporting-image .classroom-export-header,body.is-exporting-pdf .classroom-export-header{background:#ffffff05!important;border:1px solid #ffffff14!important;margin-bottom:24px!important;padding:16px 24px!important}body.light-theme.is-exporting-image .classroom-export-header,body.light-theme.is-exporting-pdf .classroom-export-header{background:#fffffff2!important;border:1px solid #6366f11a!important}body.is-exporting-image .classroom-container,body.is-exporting-pdf .classroom-container{flex-direction:column!important;flex:1!important;justify-content:space-between!important;margin:0!important;padding:0!important;display:flex!important}body.is-exporting-image .seating-grid,body.is-exporting-pdf .seating-grid{flex:1!important;align-content:center!important;gap:16px 20px!important;display:grid!important}.email-simulator-toast{z-index:9999;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#111827f2;border:1px solid #ffffff1a;border-radius:12px;width:360px;position:fixed;top:24px;right:24px;overflow:hidden;box-shadow:0 20px 25px -5px #00000080,0 10px 10px -5px #0006}.simulator-header{color:#a7f3d0;background:#ffffff0d;border-bottom:1px solid #ffffff0d;align-items:center;gap:8px;padding:12px 16px;font-size:.9rem;font-weight:700;display:flex}.simulator-header svg{color:#34d399}.simulator-close{color:#fff6;cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:1.2rem;line-height:1}.simulator-close:hover{color:#fff}.simulator-body{color:#d1d5db;padding:16px;font-size:.85rem}.simulator-recipient{border-bottom:1px dashed #ffffff1a;margin-bottom:12px;padding-bottom:8px}.simulator-mail-title{color:#f3f4f6;margin-bottom:10px}.simulator-content-box{background:#0003;border:1px solid #ffffff0d;border-radius:8px;padding:12px}.simulator-code-box{text-align:center;background:#34d3991a;border:1px dashed #34d399;border-radius:6px;margin:12px 0;padding:8px}.simulator-code-box span{letter-spacing:.2em;color:#34d399;font-family:monospace;font-size:1.6rem;font-weight:800}.simulator-link-btn{text-align:center;color:#fff;background:#3b82f6;border-radius:6px;margin:12px 0;padding:8px 12px;font-weight:700;text-decoration:none;transition:background .2s;display:block}.simulator-link-btn:hover{background:#2563eb}.simulator-desc{color:#fff6;margin-top:8px;font-size:.75rem;line-height:1.4}.portal-modal-backdrop{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:99999;background:#0009;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.portal-modal-card{background:var(--bg-card);border:1px solid var(--border-card);border-radius:16px;width:100%;max-width:500px;overflow:hidden;box-shadow:0 25px 50px -12px #00000080}.modal-header{border-bottom:1px solid var(--border-card);align-items:center;gap:12px;padding:20px 24px;display:flex}.modal-header.warning{color:#f59e0b;background:#f59e0b0d}.modal-header.danger{color:#ef4444;background:#ef44440d}.modal-header h2{margin:0;font-size:1.25rem;font-weight:800}.modal-body{color:var(--text-secondary);padding:24px;font-size:.92rem;line-height:1.6}.modal-body p{margin-bottom:14px}.highlight-text{color:var(--text-primary);border-left:4px solid var(--primary-color);background:#ffffff08;border-radius:8px;padding:12px;font-size:1.05rem}.warning-note{color:#f87171;font-weight:700}.email-recommend-box{background:#3b82f60d;border:1px solid #3b82f626;border-radius:10px;margin-top:20px;padding:16px}.email-recommend-box h4{color:#60a5fa;margin-bottom:6px;font-weight:700}.modal-footer{border-top:1px solid var(--border-card);background:#0000001a;flex-direction:column;gap:10px;padding:16px 24px;display:flex}.modal-btn{cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;gap:8px;width:100%;padding:12px;font-size:.9rem;font-weight:700;transition:all .2s;display:flex}.register-email-btn{color:#fff;background:#3b82f6}.register-email-btn:hover{background:#2563eb}.skip-email-btn{color:var(--text-secondary);border:1px solid var(--border-card);background:#ffffff0d}.skip-email-btn:hover{color:var(--text-primary);background:#ffffff1a}.cancel-modal-btn{color:#fff6;background:0 0;font-size:.8rem;font-weight:500}.cancel-modal-btn:hover{color:var(--text-secondary)}.delete-confirm-btn{color:#fff;background:#ef4444}.delete-confirm-btn:hover{background:#dc2626}.error-text-container{flex-direction:column;gap:8px;width:100%;display:flex}.error-action-btn{color:#60a5fa;text-align:left;cursor:pointer;background:0 0;border:none;width:max-content;padding:0;font-size:.8rem;font-weight:700;text-decoration:underline}.error-action-btn:hover{color:#3b82f6}.form-desc{color:var(--text-secondary);margin-top:-6px;margin-bottom:12px;font-size:.8rem;line-height:1.4}.register-label-highlight{align-items:center;gap:6px;display:flex;color:var(--primary-color)!important}.save-img-btn:hover{color:#3b82f6!important;background:#3b82f61a!important;border-color:#3b82f64d!important}.save-pdf-btn:hover{color:#10b981!important;background:#10b9811a!important;border-color:#10b9814d!important}.light-theme .save-img-btn:hover{background:#3b82f614!important}.light-theme .save-pdf-btn:hover{background:#10b98114!important}
