@font-face{font-family:Fournier MT Std;src:url(/FournierMTStdRegular.otf) format("opentype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Fournier MT Std;src:url(/FournierMTStdItalic.otf) format("opentype");font-weight:400;font-style:italic;font-display:swap}:root{--gold: #A58230;--gold-dark: #7E631F;--gold-light: #D4B270;--gold-faint: rgba(165, 130, 48, .14);--gold-hair: rgba(165, 130, 48, .35);--cream: #F9F3E8;--cream-deep: #F2E9D3;--paper: #FDFBF5;--ink: #2B2420;--ink-soft: #5C524A;--ink-fade: #8B7F73;--white: #FFFFFF;--danger: #B23A3A;--success: #5C7A3F;--shadow-soft: 0 1px 2px rgba(43, 36, 32, .04), 0 2px 6px rgba(43, 36, 32, .05);--shadow-lift: 0 2px 6px rgba(43, 36, 32, .06), 0 12px 28px rgba(43, 36, 32, .09)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Noto Sans JP,Helvetica Neue,sans-serif;font-size:15px;background:var(--cream);color:var(--ink);min-height:100vh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.font-display{font-family:Montserrat,sans-serif;font-weight:700;letter-spacing:.01em}.font-jp{font-family:"Noto Serif JP",serif}.font-ui{font-family:Montserrat,sans-serif;font-weight:600}.font-body{font-family:Noto Sans JP,Helvetica Neue,sans-serif;font-weight:400}.tracking-wider{letter-spacing:.08em}.tracking-widest{letter-spacing:.18em}.seigaiha-bg{background-color:var(--cream);background-image:radial-gradient(circle at 0 20px,transparent 18px,var(--gold-faint) 18px,var(--gold-faint) 19px,transparent 19px),radial-gradient(circle at 40px 20px,transparent 18px,var(--gold-faint) 18px,var(--gold-faint) 19px,transparent 19px),radial-gradient(circle at 20px 40px,transparent 18px,var(--gold-faint) 18px,var(--gold-faint) 19px,transparent 19px);background-size:40px 40px}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;color:inherit}input:focus,select:focus,textarea:focus{outline:none}button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.btn{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;font-family:Montserrat,sans-serif;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;border-radius:2px;transition:all .18s ease}.btn-primary{background:var(--ink);color:var(--cream);border:1px solid var(--ink)}.btn-primary:hover:not(:disabled){background:var(--gold-dark);border-color:var(--gold-dark);color:var(--white)}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-gold{background:var(--gold);color:var(--white);border:1px solid var(--gold)}.btn-gold:hover:not(:disabled){background:var(--gold-dark);border-color:var(--gold-dark)}.btn-gold:disabled{opacity:.45;cursor:not-allowed}.btn-ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--gold-hair)}.btn-ghost:hover{color:var(--ink);background:var(--paper);border-color:var(--gold)}.btn-sm{padding:7px 12px;font-size:11px}.input-field{display:block;width:100%;padding:11px 14px;background:var(--paper);border:1px solid var(--gold-hair);border-radius:2px;font-family:Noto Sans JP,Helvetica Neue,sans-serif;font-weight:400;font-size:15px;color:var(--ink);transition:border-color .18s ease}.input-field:focus{border-color:var(--gold);background:var(--white)}.input-field::placeholder{color:var(--ink-fade)}.input-error{border-color:var(--danger)!important}.label-ui{display:block;font-family:Montserrat,sans-serif;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px}.card{background:var(--paper);border:1px solid var(--gold-hair);border-radius:2px;transition:all .22s cubic-bezier(.2,.7,.2,1)}.card-hover:hover{border-color:var(--gold);transform:translateY(-2px);box-shadow:var(--shadow-lift)}.divider-gold{display:flex;align-items:center;gap:16px;color:var(--gold)}.divider-gold:before,.divider-gold:after{content:"";flex:1;height:1px;background:var(--gold-hair)}.tab-nav{display:flex;gap:4px;border-bottom:1px solid var(--gold-hair);margin-bottom:32px}.tab-btn{padding:14px 20px;font-family:Montserrat,sans-serif;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-fade);border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .16s}.tab-btn:hover{color:var(--ink-soft)}.tab-btn.active{color:var(--ink);border-bottom-color:var(--gold)}.data-table{width:100%;border-collapse:separate;border-spacing:0;background:var(--paper);border:1px solid var(--gold-hair);border-radius:2px;overflow:hidden}.data-table th{background:#a582300f;padding:14px 16px;font-family:Montserrat,sans-serif;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);text-align:left;border-bottom:1px solid var(--gold-hair)}.data-table td{padding:14px 16px;border-bottom:1px solid var(--gold-hair);font-size:14px;color:var(--ink);vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr{transition:background .14s}.data-table tbody tr:hover{background:#a582300a}.grade-table input.cell-grade{width:64px;padding:7px 8px;text-align:center;border:1px solid var(--gold-hair);border-radius:2px;background:var(--white);font-family:Montserrat,sans-serif;font-size:14px;font-weight:600;color:var(--ink);transition:all .16s}.grade-table input.cell-grade:focus{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-faint)}.grade-table input.cell-grade.dirty{background:#fff8e1;border-color:var(--gold)}.save-status{font-family:Montserrat,sans-serif;font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-fade);display:inline-flex;align-items:center;gap:6px}.save-status.saving{color:var(--gold-dark)}.save-status.saved{color:var(--success)}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.fade-in{animation:fadeIn .35s ease-out both}@keyframes scaleIn{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.scale-in{animation:scaleIn .2s ease-out both}@keyframes stagger{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.stagger>*{animation:stagger .4s ease-out both}.stagger>*:nth-child(1){animation-delay:.02s}.stagger>*:nth-child(2){animation-delay:.06s}.stagger>*:nth-child(3){animation-delay:.1s}.stagger>*:nth-child(4){animation-delay:.14s}.stagger>*:nth-child(5){animation-delay:.18s}.stagger>*:nth-child(6){animation-delay:.22s}.stagger>*:nth-child(7){animation-delay:.26s}.spinner{width:14px;height:14px;border:2px solid var(--gold-faint);border-top-color:var(--gold);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--cream);padding:12px 22px;border-radius:2px;font-family:Montserrat,sans-serif;font-size:12px;font-weight:500;letter-spacing:.04em;box-shadow:var(--shadow-lift);z-index:100;animation:toastIn .3s ease-out both}.toast:before{content:"";display:inline-block;width:6px;height:6px;background:var(--gold);margin-right:10px;vertical-align:middle;border-radius:50%}.toast-error:before{background:var(--danger)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,16px)}to{opacity:1;transform:translate(-50%)}}.modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;background:#2b242073;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px;z-index:9999;animation:fadeIn .2s ease-out both;overflow-y:auto}.menu-pop{position:absolute;top:calc(100% + 4px);right:0;min-width:200px;background:var(--paper);border:1px solid var(--gold-hair);border-radius:2px;box-shadow:var(--shadow-lift);z-index:20;animation:scaleIn .14s ease-out both;overflow:hidden}.menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:10px 14px;font-family:Montserrat,sans-serif;font-size:13px;font-weight:500;color:var(--ink);text-align:left;transition:background .14s ease}.menu-item:hover{background:var(--cream-deep)}.menu-item.danger{color:var(--danger)}.menu-item.danger:hover{background:#b23a3a14}.menu-divider{height:1px;background:var(--gold-hair);margin:0}.role-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;font-family:Montserrat,sans-serif;font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;border-radius:2px;border:1px solid}.role-admin{color:var(--ink);border-color:var(--ink);background:var(--cream)}.role-teacher{color:var(--gold-dark);border-color:var(--gold);background:var(--gold-faint)}.role-student{color:var(--ink-soft);border-color:var(--gold-hair);background:var(--paper)}.empty-row{color:var(--ink-fade);font-style:italic;text-align:center;padding:40px 20px!important}@media (max-width: 720px){body{font-size:14px}.hide-mobile{display:none}.data-table th,.data-table td{padding:10px;font-size:13px}}
