
/* /itokyo_teacher_portal/static/src/css/tokens.css */
 :root{--red-50: #FFF1F1; --red-100: #FFDEDE; --red-200: #FCB8B8; --red-300: #F58A8A; --red-400: #E95757; --red-500: #D7263D; --red-600: #BC1A2F; --red-700: #951322; --red-800: #6E0E19; --navy-50: #F4F6FB; --navy-100: #E4E8F2; --navy-200: #C2CADD; --navy-300: #95A1BE; --navy-400: #5F6E92; --navy-500: #324672; --navy-600: #1F2F55; --navy-700: #14213D; --navy-800: #0D172A; --navy-900: #060B17; --gold-50: #FDF8EC; --gold-100: #F9EDC8; --gold-200: #F1D88A; --gold-300: #E6C25A; --gold-400: #C9A23A; --gold-500: #A48426; --gold-600: #7E6418; --neutral-0: #FFFFFF; --neutral-50: #FAFAF8; --neutral-100: #F4F4F1; --neutral-200: #E7E7E2; --neutral-300: #D2D2CC; --neutral-400: #A5A5A0; --neutral-500: #6A6A62; --neutral-600: #535351; --neutral-700: #36363A; --neutral-800: #1F1F22; --neutral-900: #0F0F11; --success-50: #ECF8F1; --success-500: #1F9D55; --success-700: #136B3A; --warning-50: #FFF6E5; --warning-500: #E29C2A; --warning-700: #8F5B0E; --info-50: #EAF2FB; --info-500: #2563C4; --info-700: #173E80; --error-50: #FDECEC; --error-500: #D7263D; --error-700: #8A1224; --bg-page: var(--neutral-50); --bg-surface: var(--neutral-0); --bg-surface-alt: var(--neutral-100); --bg-inverse: var(--navy-700); --bg-ink: var(--navy-900); --fg-primary: var(--navy-900); --fg-secondary: var(--neutral-700); --fg-muted: var(--neutral-500); --fg-on-inverse: var(--neutral-50); --fg-on-inverse-muted: rgba(255,255,255,0.72); --accent-primary: var(--red-500); --accent-primary-hover: var(--red-600); --accent-gold: var(--gold-400); --border-subtle: var(--neutral-200); --border-default: var(--neutral-300); --border-strong: var(--neutral-700); --font-display: 'Outfit', 'Noto Sans JP', system-ui, -apple-system, Segoe UI, sans-serif; --font-body: 'Plus Jakarta Sans', 'Noto Sans JP', system-ui, -apple-system, Segoe UI, sans-serif; --font-jp: 'Noto Sans JP', 'Plus Jakarta Sans', system-ui, sans-serif; --font-jp-serif: 'Noto Serif JP', Georgia, serif; --font-mono: ui-monospace, 'SF Mono', 'JetBrains Mono', Menlo, monospace; --text-xs: 12px; --text-sm: 14px; --text-base: 16px; --text-md: 17px; --text-lg: 19px; --text-xl: 22px; --text-2xl: 28px; --text-3xl: 36px; --text-4xl: 48px; --text-5xl: 64px; --text-6xl: 84px; --leading-tight: 1.1; --leading-snug: 1.25; --leading-normal: 1.5; --leading-relaxed: 1.65; --tracking-tight: -0.02em; --tracking-snug: -0.01em; --tracking-wide: 0.08em; --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 20px; --space-6: 24px; --space-8: 32px; --space-10: 40px; --space-12: 48px; --space-16: 64px; --space-20: 80px; --space-24: 96px; --space-32: 128px; --radius-xs: 4px; --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; --radius-xl: 24px; --radius-2xl: 32px; --radius-pill: 999px; --shadow-xs: 0 1px 2px rgba(15, 23, 42, 0.04); --shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.06), 0 1px 2px rgba(15, 23, 42, 0.04); --shadow-md: 0 6px 16px -4px rgba(15, 23, 42, 0.08), 0 2px 4px rgba(15, 23, 42, 0.04); --shadow-lg: 0 18px 40px -12px rgba(15, 23, 42, 0.18), 0 6px 12px rgba(15, 23, 42, 0.06); --shadow-xl: 0 32px 64px -20px rgba(15, 23, 42, 0.26); --shadow-ring: 0 0 0 4px rgba(215, 38, 61, 0.15); --ease-out: cubic-bezier(0.2, 0.8, 0.2, 1); --ease-in-out: cubic-bezier(0.6, 0, 0.4, 1); --dur-fast: 120ms; --dur-base: 220ms; --dur-slow: 360ms; --container-max: 1240px; --container-pad: 24px;}html, body{background: var(--bg-page); color: var(--fg-primary); font-family: var(--font-body); font-size: var(--text-base); line-height: var(--leading-normal); -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;}h1, h2, h3, h4, h5, h6{font-family: var(--font-display); color: var(--fg-primary); letter-spacing: var(--tracking-tight); line-height: var(--leading-tight); font-weight: 700; margin: 0; text-wrap: balance;}h1{font-size: clamp(40px, 5vw, var(--text-5xl)); font-weight: 700;}h2{font-size: clamp(30px, 3.5vw, var(--text-3xl));}h3{font-size: var(--text-2xl); font-weight: 600;}h4{font-size: var(--text-xl); font-weight: 600;}h5{font-size: var(--text-lg); font-weight: 600;}h6{font-size: var(--text-base); font-weight: 600; letter-spacing: var(--tracking-wide); text-transform: uppercase;}p{margin: 0; text-wrap: pretty;}.eyebrow{font-family: var(--font-display); font-size: var(--text-xs); font-weight: 600; letter-spacing: var(--tracking-wide); text-transform: uppercase; color: var(--accent-primary);}.jp-accent{font-family: var(--font-jp); font-size: var(--text-sm); font-weight: 500; color: var(--accent-primary); letter-spacing: 0.12em;}.container{max-width: var(--container-max); margin: 0 auto; padding: 0 var(--container-pad);}.hinomaru{display: inline-block; width: 0.55em; height: 0.55em; border-radius: 50%; background: var(--accent-primary); vertical-align: middle; margin: 0 0.18em; transform: translateY(-0.08em);}*:focus-visible{outline: none; box-shadow: var(--shadow-ring); border-radius: var(--radius-sm);}

/* /itokyo_teacher_portal/static/src/css/portal.css */
 *{box-sizing: border-box; -webkit-tap-highlight-color: transparent;}.stage{min-height: 100vh; background: radial-gradient(800px 500px at 18% 12%, rgba(215,38,61,0.06), transparent 60%), radial-gradient(700px 500px at 82% 88%, rgba(201,162,58,0.07), transparent 60%), var(--neutral-100); display: flex; align-items: center; justify-content: center; padding: 28px 16px 28px; font-family: var(--font-body); color: var(--fg-primary);}.screen{width: 100%; min-height: 100%; background: var(--neutral-50); position: relative; display: flex; flex-direction: column; font-size: 14.5px;}.screen.dark{background: var(--navy-900); color: var(--fg-on-inverse);}.screen-pad-top{height: 4px;}.app-header{position: sticky; top: 0; z-index: 30; background: rgba(250, 250, 248, 0.92); backdrop-filter: saturate(180%) blur(18px); -webkit-backdrop-filter: saturate(180%) blur(18px); border-bottom: 1px solid var(--border-subtle); padding: 10px 18px;}.app-header.dark{background: rgba(13,23,42,0.78); border-bottom-color: rgba(255,255,255,0.06);}.ah-row{display: flex; align-items: center; justify-content: space-between; gap: 10px;}.ah-back{width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 12px; color: var(--navy-700); cursor: pointer;}.ah-title{flex: 1; min-width: 0; font-family: var(--font-display); font-size: 17px; font-weight: 700; letter-spacing: -0.01em; text-align: center;}.ah-title small{display: block; font-family: var(--font-jp); font-size: 10.5px; font-weight: 500; color: var(--accent-primary); letter-spacing: 0.14em; margin-bottom: 1px;}.ah-action{width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 12px; color: var(--navy-700); cursor: pointer; position: relative;}.ah-action .dot{position: absolute; top: 7px; right: 7px; width: 7px; height: 7px; border-radius: 50%; background: var(--red-500); border: 1.5px solid var(--neutral-50);}.course-pill{display: inline-flex; align-items: center; gap: 6px; background: var(--navy-900); color: #fff; padding: 4px 10px 4px 4px; border-radius: 999px; font-family: var(--font-display); font-size: 11.5px; font-weight: 600; white-space: nowrap;}.course-pill .lvl{background: var(--red-500); color: #fff; font-size: 9.5px; font-weight: 700; padding: 2.5px 6px; border-radius: 999px; letter-spacing: 0.06em;}.scroll{flex: 1; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 16px 16px 110px; display: flex; flex-direction: column; gap: 14px;}.scroll > *{flex-shrink: 0;}.scroll.dense{gap: 10px; padding: 14px 14px 108px;}.scroll.airy{gap: 18px; padding: 18px 18px 116px;}.tabbar{position: absolute; left: 12px; right: 12px; bottom: 34px; z-index: 40; height: 64px; background: rgba(255,255,255,0.78); border-radius: 22px; border: 1px solid rgba(255,255,255,0.7); box-shadow: 0 1px 1px rgba(15,23,42,0.04), 0 16px 36px -10px rgba(15,23,42,0.22); backdrop-filter: blur(22px) saturate(180%); -webkit-backdrop-filter: blur(22px) saturate(180%); display: grid; grid-template-columns: repeat(5, 1fr); padding: 8px 6px;}.tabbar.dark{background: rgba(20,33,61,0.78); border-color: rgba(255,255,255,0.06);}.tab{display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; border: none; background: transparent; color: var(--navy-400); font-family: var(--font-display); font-size: 10px; font-weight: 600; letter-spacing: 0.01em; cursor: pointer; border-radius: 16px; transition: color 160ms var(--ease-out); position: relative;}.tab svg{width: 22px; height: 22px;}.tab.active{color: var(--red-500);}.tab.active::before{content: ''; position: absolute; top: 4px; width: 22px; height: 3px; border-radius: 2px; background: var(--red-500);}.tab .count{position: absolute; top: 4px; right: 16px; background: var(--red-500); color: #fff; font-size: 9px; font-weight: 700; min-width: 16px; height: 16px; border-radius: 999px; display: flex; align-items: center; justify-content: center; padding: 0 4px; border: 1.5px solid rgba(255,255,255,0.9);}.topnav{display: flex; gap: 6px; padding: 6px 12px 0; overflow-x: auto; scrollbar-width: none; background: var(--bg-page); border-bottom: 1px solid var(--border-subtle);}.topnav::-webkit-scrollbar{display: none;}.topnav .tn{flex: 0 0 auto; background: transparent; border: none; font-family: var(--font-display); font-size: 13px; font-weight: 600; color: var(--navy-400); padding: 10px 12px 12px; cursor: pointer; border-bottom: 2px solid transparent; white-space: nowrap;}.topnav .tn.active{color: var(--navy-900); border-bottom-color: var(--red-500);}.drawer-overlay{position: absolute; inset: 0; z-index: 60; background: rgba(13,23,42,0.4); backdrop-filter: blur(2px); animation: fade 180ms var(--ease-out);}.drawer{position: absolute; top: 0; left: 0; bottom: 0; z-index: 65; width: 78%; background: #fff; border-right: 1px solid var(--border-subtle); display: flex; flex-direction: column; animation: drawerIn 220ms var(--ease-out);}@keyframes drawerIn{from{transform: translateX(-100%);}to{transform: translateX(0);}}@keyframes fade{from{opacity: 0;}to{opacity: 1;}}.card{background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 16px; padding: 16px; box-shadow: var(--shadow-xs);}.card.pad-tight{padding: 12px;}.card.flush{padding: 0; overflow: hidden;}.card.dark{background: linear-gradient(160deg, var(--navy-900) 0%, var(--navy-700) 100%); color: #fff; border: none; position: relative; overflow: hidden;}.card.dark h1, .card.dark h2, .card.dark h3, .card.dark h4, .card.dark h5, .card.dark h6{color: #fff;}.card.dark::after{content: ''; position: absolute; top: -120px; right: -100px; width: 280px; height: 280px; border-radius: 50%; background: radial-gradient(circle, rgba(215,38,61,0.55) 0%, rgba(215,38,61,0) 65%); pointer-events: none;}.card.feature{background: var(--bg-surface); position: relative; overflow: hidden;}.card.feature::before{content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--red-500), var(--gold-400));}.card-head{display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; gap: 10px;}.card-head h3{font-family: var(--font-display); font-size: 15px; font-weight: 700; letter-spacing: -0.005em; color: var(--navy-900); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0;}.card-head .link{flex-shrink: 0; white-space: nowrap;}.card-head .link{font-family: var(--font-display); font-size: 12px; font-weight: 600; color: var(--red-500); text-decoration: none; background: none; border: none; cursor: pointer;}.ktile{width: 40px; height: 40px; border-radius: 11px; background: var(--navy-900); color: var(--gold-300); font-family: var(--font-jp-serif); font-size: 19px; font-weight: 500; display: flex; align-items: center; justify-content: center; flex-shrink: 0;}.ktile.red{background: var(--red-50); color: var(--red-600);}.ktile.gold{background: var(--gold-50); color: var(--gold-600);}.ktile.navy{background: var(--navy-50); color: var(--navy-700);}.ktile.success{background: var(--success-50); color: var(--success-700);}.ktile.info{background: var(--info-50); color: var(--info-700);}.ktile.sm{width: 32px; height: 32px; font-size: 15px; border-radius: 9px;}.ktile.lg{width: 48px; height: 48px; font-size: 22px; border-radius: 13px;}.bd{display: inline-flex; align-items: center; gap: 5px; font-family: var(--font-display); font-size: 11.5px; font-weight: 700; padding: 4px 10px; border-radius: 999px; letter-spacing: 0.02em; white-space: nowrap;}.bd .dot{width: 6px; height: 6px; border-radius: 50%;}.bd.due{background: var(--warning-50); color: var(--warning-700);}.bd.due .dot{background: var(--warning-500);}.bd.live{background: var(--success-50); color: var(--success-700);}.bd.live .dot{background: var(--success-500);}.bd.over{background: var(--error-50); color: var(--error-700);}.bd.over .dot{background: var(--error-500);}.bd.info{background: var(--info-50); color: var(--info-700);}.bd.info .dot{background: var(--info-500);}.bd.flat{background: var(--neutral-200); color: var(--navy-700);}.bd.done{background: var(--success-50); color: var(--success-700);}.bd.done .dot{background: var(--success-500);}.bd.gold{background: var(--gold-50); color: var(--gold-600);}.row{display: flex; align-items: center; gap: 12px; padding: 10px 0;}.row + .row{border-top: 1px solid var(--border-subtle);}.row .body{flex: 1; min-width: 0;}.row .body b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; display: block; line-height: 1.3;}.row .body > span{font-size: 12px; color: var(--fg-muted); display: block; margin-top: 2px; line-height: 1.4;}.row .end{display: flex; flex-direction: column; align-items: flex-end; gap: 4px; flex-shrink: 0;}.row .chev{color: var(--neutral-400); flex-shrink: 0;}.brow{display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid var(--border-subtle); border-radius: 12px; background: var(--bg-surface); text-align: left; width: 100%; cursor: pointer; transition: border-color 160ms;}.brow:hover, .brow:active{border-color: var(--border-default);}.brow .body{flex: 1; min-width: 0;}.brow .body b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; display: block; line-height: 1.3; color: var(--navy-900);}.brow .body > span{font-size: 11.5px; color: var(--fg-muted); display: block; margin-top: 2px; line-height: 1.4;}.brow .end{display: flex; flex-direction: column; align-items: flex-end; gap: 4px; flex-shrink: 0;}.empty{padding: 36px 18px; text-align: center; color: var(--fg-muted);}.empty .glyph{font-family: var(--font-jp-serif); font-size: 30px; color: var(--navy-400); width: 64px; height: 64px; border-radius: 50%; background: var(--navy-50); display: inline-flex; align-items: center; justify-content: center; line-height: 1; margin: 0 auto 12px;}.empty h4{font-family: var(--font-display); font-size: 15px; font-weight: 600; color: var(--navy-700); margin-bottom: 4px;}.empty p{font-size: 13px; line-height: 1.5; max-width: 220px; margin: 0 auto;}.bar{height: 6px; background: var(--neutral-100); border-radius: 999px; overflow: hidden;}.bar i{display: block; height: 100%; background: linear-gradient(90deg, var(--red-500), var(--gold-400)); border-radius: 999px; transition: width 360ms var(--ease-out);}.bar.success i{background: var(--success-500);}.bar.warn i{background: var(--warning-500);}.bar.error i{background: var(--error-500);}.btn{display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-family: var(--font-display); font-size: 14px; font-weight: 600; padding: 11px 18px; border-radius: 999px; border: 1px solid var(--border-subtle); background: var(--bg-surface); color: var(--navy-900); cursor: pointer; text-decoration: none; transition: transform 160ms, box-shadow 160ms;}.btn:hover{box-shadow: var(--shadow-sm);}.btn:active{transform: translateY(1px);}.btn.primary{background: var(--red-500); border-color: var(--red-500); color: #fff; box-shadow: 0 8px 22px -8px rgba(215,38,61,0.45);}.btn.primary:hover{background: var(--red-600); border-color: var(--red-600);}.btn.dark{background: var(--navy-900); border-color: var(--navy-900); color: #fff;}.btn.ghost{background: transparent;}.btn.full{width: 100%;}.btn.sm{padding: 7px 13px; font-size: 12.5px;}.chips{display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; padding-bottom: 2px;}.chips::-webkit-scrollbar{display: none;}.chip{flex: 0 0 auto; background: var(--bg-surface); border: 1px solid var(--border-subtle); color: var(--navy-700); font-family: var(--font-display); font-size: 12px; font-weight: 600; padding: 7px 12px; border-radius: 999px; cursor: pointer; white-space: nowrap;}.chip.active{background: var(--navy-900); color: #fff; border-color: var(--navy-900);}.chip .ct{opacity: 0.6; margin-left: 4px;}.chip.active .ct{opacity: 0.9;}.seg{display: inline-flex; background: var(--neutral-100); border-radius: 10px; padding: 3px; width: 100%;}.seg button{flex: 1; border: none; background: transparent; font-family: var(--font-display); font-size: 12.5px; font-weight: 600; padding: 8px 10px; border-radius: 8px; color: var(--fg-secondary); cursor: pointer; white-space: nowrap;}.seg button.active{background: #fff; color: var(--navy-900); box-shadow: var(--shadow-xs);}.greet{display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 4px;}.greet .jp{font-family: var(--font-jp); font-size: 11px; font-weight: 500; color: var(--red-500); letter-spacing: 0.16em; margin-bottom: 4px; display: block;}.greet h1{font-family: var(--font-display); font-size: 24px; font-weight: 700; letter-spacing: -0.02em; line-height: 1.15; color: var(--navy-900);}.greet h1 em{font-style: normal; color: var(--red-500);}.greet .sub{font-size: 13px; color: var(--fg-secondary); margin-top: 6px; line-height: 1.4;}.greet .av{width: 44px; height: 44px; border-radius: 14px; background: linear-gradient(135deg, var(--red-500), var(--gold-400)); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 14px; display: flex; align-items: center; justify-content: center; flex-shrink: 0;}.stats2{display: grid; grid-template-columns: 1fr 1fr; gap: 10px;}.stats4{display: grid; grid-template-columns: 1fr 1fr; gap: 10px;}.stat{background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 14px; padding: 12px 14px; display: flex; flex-direction: column; gap: 4px; position: relative;}.stat .lab{font-family: var(--font-display); font-size: 10px; font-weight: 700; color: var(--fg-muted); letter-spacing: 0.08em; text-transform: uppercase; display: flex; align-items: center; gap: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}.stat .ic{width: 18px; height: 18px; border-radius: 6px; background: var(--red-50); color: var(--red-500); display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-weight: 700; font-size: 10px;}.stat .ic.gold{background: var(--gold-50); color: var(--gold-600);}.stat .ic.navy{background: var(--navy-50); color: var(--navy-700);}.stat .ic.warn{background: var(--warning-50); color: var(--warning-700);}.stat .ic.success{background: var(--success-50); color: var(--success-700);}.stat .val{font-family: var(--font-display); font-size: 24px; font-weight: 700; letter-spacing: -0.02em; line-height: 1; color: var(--navy-900); margin-top: 2px;}.stat .val sub{font-size: 12px; font-weight: 500; color: var(--fg-muted); letter-spacing: 0; margin-left: 1px;}.stat .delta{font-size: 11px; font-weight: 600; color: var(--success-700); margin-top: 2px;}.stat .delta.warn{color: var(--warning-700);}.stat .delta.muted{color: var(--fg-muted);}.stat .delta.error{color: var(--error-700);}.nc{background: linear-gradient(155deg, var(--navy-900) 0%, var(--navy-700) 100%); border-radius: 18px; padding: 18px; color: #fff; position: relative; overflow: hidden;}.nc::before{content: ''; position: absolute; top: -60px; right: -50px; width: 180px; height: 180px; border-radius: 50%; background: radial-gradient(circle, rgba(215,38,61,0.55), rgba(215,38,61,0) 65%);}.nc .jp{font-family: var(--font-jp); font-size: 10.5px; font-weight: 500; color: var(--gold-300); letter-spacing: 0.18em; margin-bottom: 6px; position: relative; z-index: 2;}.nc h2{font-family: var(--font-display); font-size: 18px; font-weight: 700; letter-spacing: -0.01em; margin-bottom: 12px; position: relative; z-index: 2; text-wrap: balance; color: #fff;}.nc .meta{display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px; row-gap: 8px; font-size: 11.5px; color: rgba(255,255,255,0.65); margin-bottom: 16px; position: relative; z-index: 2;}.nc .meta b{display: block; color: #fff; font-family: var(--font-display); font-weight: 600; font-size: 12.5px;}.nc .actions{display: flex; gap: 8px; position: relative; z-index: 2;}.nc .join{background: var(--red-500); color: #fff; font-family: var(--font-display); font-weight: 600; font-size: 13px; border: none; border-radius: 999px; padding: 10px 18px; cursor: pointer; flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: 6px; box-shadow: 0 8px 22px -8px rgba(215,38,61,0.6);}.nc .later{background: rgba(255,255,255,0.1); color: #fff; border: 1px solid rgba(255,255,255,0.18); font-family: var(--font-display); font-weight: 600; font-size: 13px; border-radius: 999px; padding: 10px 14px; cursor: pointer;}.nc.live::after{content: 'LIVE'; position: absolute; top: 14px; right: 14px; background: var(--red-500); color: #fff; font-family: var(--font-display); font-size: 9.5px; font-weight: 800; letter-spacing: 0.15em; padding: 3px 7px; border-radius: 4px; z-index: 3;}.sec-label{font-family: var(--font-display); font-size: 10.5px; font-weight: 700; color: var(--fg-muted); letter-spacing: 0.16em; text-transform: uppercase; padding: 4px 4px 0; display: flex; justify-content: space-between; align-items: center;}.sec-label .link{font-size: 12px; font-weight: 600; color: var(--red-500); text-transform: none; letter-spacing: 0; background: none; border: none; cursor: pointer; text-decoration: none;}.ring-wrap{display: flex; align-items: center; gap: 14px;}.ring{position: relative; width: 92px; height: 92px; flex-shrink: 0;}.ring svg{transform: rotate(-90deg);}.ring .val{position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; font-family: var(--font-display); font-size: 22px; font-weight: 700; letter-spacing: -0.02em; color: var(--navy-900);}.ring .val small{font-size: 10px; font-weight: 600; color: var(--fg-muted); letter-spacing: 0.08em; text-transform: uppercase; margin-top: 1px;}.announce{background: linear-gradient(135deg, var(--gold-50) 0%, var(--red-50) 100%); border: 1px solid var(--gold-200); border-radius: 14px; padding: 12px 14px; display: flex; gap: 12px; align-items: flex-start;}.announce .ktile{background: var(--gold-100); color: var(--gold-600);}.announce .body{flex: 1;}.announce .body b{font-family: var(--font-display); font-size: 13px; font-weight: 700; display: block; color: var(--navy-900);}.announce .body > span{font-size: 12px; color: var(--fg-secondary); display: block; margin-top: 2px; line-height: 1.4;}.announce .x{background: none; border: none; color: var(--fg-muted); cursor: pointer; font-size: 16px; padding: 0 2px;}.mat{background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 14px; padding: 14px; display: flex; flex-direction: column; gap: 8px; cursor: pointer; transition: border-color 160ms;}.mat:hover{border-color: var(--border-default); box-shadow: var(--shadow-sm);}.mat .top{display: flex; justify-content: space-between; align-items: flex-start;}.mat .doc{width: 40px; height: 40px; border-radius: 11px; background: var(--red-50); color: var(--red-500); display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-size: 10.5px; font-weight: 800; letter-spacing: 0.04em;}.mat .doc.mp3{background: var(--gold-50); color: var(--gold-600);}.mat .doc.doc{background: var(--navy-50); color: var(--navy-700);}.mat .doc.mp4{background: var(--info-50); color: var(--info-700);}.mat h4{font-family: var(--font-display); font-size: 14.5px; font-weight: 600; letter-spacing: -0.005em; color: var(--navy-900); margin: 2px 0 1px;}.mat .meta{font-size: 12px; color: var(--fg-muted);}.mat .foot{display: flex; justify-content: space-between; align-items: center; margin-top: 6px; padding-top: 10px; border-top: 1px solid var(--border-subtle);}.mat .foot .open{background: none; border: none; color: var(--red-500); font-family: var(--font-display); font-size: 12.5px; font-weight: 600; cursor: pointer;}.classcard{background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 14px; padding: 14px; display: flex; align-items: center; gap: 12px; position: relative;}.classcard.live{border-color: var(--red-200); background: linear-gradient(0deg, var(--red-50) 0%, #fff 60%);}.classcard.cancelled{opacity: 0.55;}.classcard .when{width: 56px; flex-shrink: 0; text-align: center; border-right: 1px dashed var(--border-subtle); padding-right: 12px;}.classcard .when b{font-family: var(--font-display); font-size: 16px; font-weight: 700; color: var(--navy-900); display: block; line-height: 1; margin-bottom: 2px;}.classcard .when > span{font-family: var(--font-display); font-size: 10px; font-weight: 600; color: var(--fg-muted); letter-spacing: 0.06em; text-transform: uppercase;}.classcard .info{flex: 1; min-width: 0;}.classcard .info b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; display: block; color: var(--navy-900); line-height: 1.3;}.classcard .info > span{font-size: 11.5px; color: var(--fg-muted); display: block; margin-top: 3px;}.classcard .info .topic{font-style: italic; color: var(--navy-700);}.modal-overlay{position: absolute; inset: 0; z-index: 70; background: rgba(13,23,42,0.55); backdrop-filter: blur(4px); display: flex; align-items: flex-end; justify-content: center; animation: fade 200ms var(--ease-out);}.modal{width: 100%; background: #fff; border-radius: 24px 24px 0 0; padding: 18px 18px 28px; max-height: 85%; overflow-y: auto; animation: sheetIn 280ms var(--ease-out); position: relative;}.modal .grab{width: 38px; height: 5px; border-radius: 4px; background: var(--neutral-300); margin: 0 auto 14px;}.modal h3{font-family: var(--font-display); font-size: 19px; font-weight: 700; letter-spacing: -0.01em; margin-bottom: 4px;}.modal .sub{color: var(--fg-secondary); font-size: 13px; margin-bottom: 16px;}@keyframes sheetIn{from{transform: translateY(100%);}to{transform: translateY(0);}}.field{display: flex; flex-direction: column; gap: 6px;}.field label{font-family: var(--font-display); font-size: 11px; font-weight: 700; color: var(--fg-muted); letter-spacing: 0.1em; text-transform: uppercase;}.field input, .field textarea, .field select{font-family: var(--font-body); font-size: 14.5px; padding: 11px 12px; border-radius: 10px; border: 1.5px solid var(--border-subtle); background: var(--bg-surface); color: var(--navy-900); outline: none; transition: border-color 160ms, box-shadow 160ms;}.field input:focus, .field textarea:focus, .field select:focus{border-color: var(--red-500); box-shadow: var(--shadow-ring);}.field textarea{resize: vertical; min-height: 80px;}.field .hint{font-size: 11.5px; color: var(--fg-muted);}.upload{border: 1.5px dashed var(--border-default); border-radius: 12px; padding: 18px 14px; text-align: center; background: var(--neutral-50); cursor: pointer;}.upload b{font-family: var(--font-display); font-size: 13px; font-weight: 600; display: block; color: var(--navy-900);}.upload span{font-size: 11.5px; color: var(--fg-muted);}.upload.dropped{border-style: solid; border-color: var(--success-500); background: var(--success-50);}.score{display: flex; align-items: center; justify-content: space-between; padding: 10px 0; gap: 12px;}.score + .score{border-top: 1px solid var(--border-subtle);}.score b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600;}.score .pts{font-family: var(--font-mono); font-size: 13px; color: var(--navy-900); font-weight: 600;}.score .pts em{font-style: normal; color: var(--fg-muted); font-weight: 500;}.msg-thread{display: flex; flex-direction: column; gap: 8px;}.bubble{max-width: 78%; padding: 10px 13px; border-radius: 16px; font-size: 13.5px; line-height: 1.45; word-wrap: break-word;}.bubble.in{background: var(--neutral-100); color: var(--navy-900); border-bottom-left-radius: 4px; align-self: flex-start;}.bubble.out{background: var(--red-500); color: #fff; border-bottom-right-radius: 4px; align-self: flex-end;}.bubble .sender{font-family: var(--font-display); font-size: 11px; font-weight: 700; margin-bottom: 3px; color: var(--navy-700);}.bubble.out .sender{color: rgba(255,255,255,0.85);}.bubble time{display: block; font-size: 10px; color: var(--fg-muted); margin-top: 4px;}.bubble.out time{color: rgba(255,255,255,0.7);}.day-sep{text-align: center; font-family: var(--font-display); font-size: 10.5px; font-weight: 600; color: var(--fg-muted); letter-spacing: 0.12em; text-transform: uppercase; margin: 6px 0;}.composer{position: sticky; bottom: 0; background: rgba(250,250,248,0.95); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-top: 1px solid var(--border-subtle); padding: 10px 14px 14px; display: flex; gap: 8px; align-items: center; margin: 0 -16px;}.composer input{flex: 1; background: var(--neutral-100); border: 1px solid var(--border-subtle); border-radius: 999px; padding: 10px 14px; font-size: 14px; outline: none;}.composer .send{width: 38px; height: 38px; background: var(--red-500); color: #fff; border: none; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: 0 6px 16px -6px rgba(215,38,61,0.5);}.muted{color: var(--fg-muted);}.flex{display: flex;}.flex-between{display: flex; justify-content: space-between; align-items: center;}.flex-col{display: flex; flex-direction: column;}.gap-1{gap: 4px;}.gap-2{gap: 8px;}.gap-3{gap: 12px;}.gap-4{gap: 16px;}.text-jp{font-family: var(--font-jp);}.text-mono{font-family: var(--font-mono);}.divider{height: 1px; background: var(--border-subtle); margin: 4px 0;}.sync-note{display: flex; align-items: center; gap: 8px; font-size: 11.5px; color: var(--success-700); background: var(--success-50); border: 1px solid var(--success-500); border-radius: 999px; padding: 6px 12px; align-self: flex-start; font-family: var(--font-body);}.sync-note b{font-family: var(--font-display);}.sync-dot{width: 8px; height: 8px; border-radius: 50%; background: var(--success-500); flex-shrink: 0; box-shadow: 0 0 0 0 rgba(31,138,91,0.5); animation: syncPulse 1.8s infinite;}@keyframes syncPulse{0%{box-shadow: 0 0 0 0 rgba(31,138,91,0.5);}70%{box-shadow: 0 0 0 7px rgba(31,138,91,0);}100%{box-shadow: 0 0 0 0 rgba(31,138,91,0);}}.sync-pill{display: inline-flex; align-items: center; gap: 6px; font-family: var(--font-display); font-size: 11px; font-weight: 700; color: var(--success-700); letter-spacing: 0.04em;}.tp-form-grid{display: grid; grid-template-columns: 1fr 1fr; gap: 12px;}.tp-form-grid.cols-3{grid-template-columns: 1fr 1fr 1fr;}.tp-flabel{font-family: var(--font-display); font-size: 12px; font-weight: 600; color: var(--fg-secondary); display: block; margin-bottom: 5px;}@media (max-width: 768px){.tp-form-grid, .tp-form-grid.cols-3, form [style*="grid-template-columns:1fr 1fr"], form [style*="grid-template-columns: 1fr 1fr"], form [style*="grid-template-columns:1fr 1fr 1fr"], form [style*="grid-template-columns: 1fr 1fr 1fr"]{grid-template-columns: 1fr !important;}}@media (max-width: 480px){[style*="grid-template-columns:1fr 1fr"]:not(.stats2):not(.stats4), [style*="grid-template-columns: 1fr 1fr"]:not(.stats2):not(.stats4){grid-template-columns: 1fr !important;}}

/* /itokyo_teacher_portal/static/src/css/desktop.css */
 .stage.desktop, body{background: var(--neutral-100);}html, body{height: 100%;}.dsk-app{display: grid; grid-template-columns: 264px 1fr; height: 100vh; overflow: hidden; font-family: var(--font-body); color: var(--fg-primary); background: var(--neutral-100);}.dsk-sidebar{background: var(--navy-900); color: #fff; display: flex; flex-direction: column; height: 100vh; min-height: 0; border-right: 1px solid rgba(255,255,255,0.04); position: relative; overflow: hidden;}.dsk-sidebar::before{content: ''; position: absolute; top: -140px; right: -100px; width: 280px; height: 280px; border-radius: 50%; background: radial-gradient(circle, rgba(215,38,61,0.32) 0%, rgba(215,38,61,0) 70%); pointer-events: none;}.dsk-brand{padding: 22px 24px 16px; border-bottom: 1px solid rgba(255,255,255,0.06); position: relative; z-index: 2;}.dsk-brand::after{content: ''; position: absolute; top: 0; left: 24px; width: 56px; height: 3px; background: linear-gradient(90deg, var(--red-500), var(--gold-400)); border-radius: 0 0 3px 3px;}.dsk-brand img{height: 40px; filter: brightness(0) invert(1);}.dsk-greet{padding: 16px 16px; margin: 12px; border-radius: 14px; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.06); display: flex; align-items: center; gap: 12px; position: relative; z-index: 2;}.dsk-greet-name{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; color: #fff; line-height: 1.2;}.dsk-greet-sub{font-size: 11.5px; color: rgba(255,255,255,0.55); margin-top: 3px; line-height: 1.3;}.dsk-bell{width: 32px; height: 32px; flex-shrink: 0; border-radius: 10px; background: rgba(255,255,255,0.06); border: none; color: #fff; cursor: pointer; position: relative; display: flex; align-items: center; justify-content: center;}.dsk-bell:hover{background: rgba(255,255,255,0.1);}.dsk-bell-dot{position: absolute; top: 6px; right: 6px; width: 7px; height: 7px; border-radius: 50%; background: var(--red-500); border: 1.5px solid var(--navy-900);}.dsk-nav{flex: 1; overflow-y: auto; padding: 8px 12px 16px; scrollbar-width: thin; position: relative; z-index: 2;}.dsk-nav::-webkit-scrollbar{width: 4px;}.dsk-nav::-webkit-scrollbar-thumb{background: rgba(255,255,255,0.1); border-radius: 4px;}.dsk-nav-group{margin-bottom: 14px;}.dsk-nav-label{font-family: var(--font-display); font-size: 10px; font-weight: 700; color: rgba(255,255,255,0.4); letter-spacing: 0.16em; text-transform: uppercase; padding: 10px 12px 8px;}.dsk-nav-item{width: 100%; display: flex; align-items: center; gap: 11px; padding: 9px 12px; border: none; background: transparent; color: rgba(255,255,255,0.65); font-family: var(--font-display); font-size: 13.5px; font-weight: 500; text-align: left; cursor: pointer; border-radius: 10px; transition: background 160ms var(--ease-out), color 160ms var(--ease-out); position: relative;}.dsk-nav-item:hover{background: rgba(255,255,255,0.04); color: #fff;}.dsk-nav-item.active{background: rgba(229,38,40,0.16); color: #fff; font-weight: 600;}.dsk-nav-item.active svg{color: var(--red-300);}.dsk-nav-item span{flex: 1;}.dsk-nav-rail{position: absolute; left: -12px; top: 8px; bottom: 8px; width: 3px; background: var(--red-500); border-radius: 0 3px 3px 0;}.dsk-nav-badge{background: var(--red-500); color: #fff; font-size: 10px; font-weight: 700; min-width: 18px; height: 18px; border-radius: 999px; padding: 0 6px; display: flex; align-items: center; justify-content: center; font-family: var(--font-display);}.dsk-nav-badge.alert{background: var(--warning-500); color: var(--navy-900);}.dsk-foot{border-top: 1px solid rgba(255,255,255,0.06); padding: 14px 16px; position: relative; z-index: 2;}.dsk-foot-row{display: flex; justify-content: space-between; align-items: center; gap: 8px;}.dsk-signout{background: none; border: none; color: var(--red-300); font-family: var(--font-display); font-size: 11.5px; font-weight: 600; cursor: pointer; white-space: nowrap;}.dsk-signout:hover{color: var(--red-300); text-decoration: underline;}.dsk-main{display: flex; flex-direction: column; min-width: 0; height: 100vh; overflow: hidden; background: var(--bg-page);}.dsk-topbar{flex-shrink: 0; position: relative; z-index: 30; background: rgba(250, 250, 248, 0.92); backdrop-filter: blur(20px) saturate(180%); -webkit-backdrop-filter: blur(20px) saturate(180%); border-bottom: 1px solid var(--border-subtle); display: grid; grid-template-columns: auto 1fr auto; gap: 20px; align-items: center; padding: 14px 32px;}.dsk-crumb{display: flex; align-items: center; gap: 8px; font-family: var(--font-display); font-size: 13.5px;}.dsk-crumb button{background: none; border: none; color: var(--fg-muted); font-family: inherit; font-size: inherit; font-weight: 500; cursor: pointer;}.dsk-crumb button:hover{color: var(--navy-900);}.dsk-crumb-sep{color: var(--neutral-300); font-size: 14px;}.dsk-crumb-cur{color: var(--navy-900); font-weight: 600;}.dsk-search{display: flex; align-items: center; gap: 10px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 999px; padding: 8px 14px; max-width: 420px; width: 100%; justify-self: center;}.dsk-search:focus-within{border-color: var(--red-300); box-shadow: var(--shadow-ring);}.dsk-search input{flex: 1; border: none; outline: none; background: transparent; font-family: var(--font-body); font-size: 13.5px; color: var(--navy-900);}.dsk-search input::placeholder{color: var(--fg-muted);}.dsk-kbd{font-family: var(--font-mono); font-size: 10.5px; color: var(--fg-muted); padding: 2px 6px; border: 1px solid var(--border-subtle); border-radius: 4px; background: var(--neutral-50);}.dsk-tools{display: flex; gap: 8px; align-items: center;}.dsk-tool{display: inline-flex; align-items: center; gap: 8px; background: var(--navy-900); color: #fff; border: none; border-radius: 999px; padding: 8px 14px; font-family: var(--font-display); font-size: 12.5px; font-weight: 600; cursor: pointer; transition: background 160ms; white-space: nowrap;}.dsk-tool:hover{background: var(--navy-700);}.dsk-tool .dot{width: 7px; height: 7px; border-radius: 50%; background: var(--red-500); box-shadow: 0 0 0 3px rgba(215,38,61,0.25);}.dsk-tool.icon{background: var(--bg-surface); color: var(--navy-700); border: 1px solid var(--border-subtle); padding: 8px; width: 36px; height: 36px; justify-content: center;}.dsk-tool.icon:hover{background: var(--neutral-100);}.dsk-nav-item:focus-visible, .dsk-tool:focus-visible, .dsk-tool.icon:focus-visible{outline: 2px solid var(--red-500); outline-offset: 2px; border-radius: 10px;}.dsk-content{flex: 1; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: 28px 32px 48px; width: 100%;}.dsk-content > *{max-width: 1320px; margin-left: auto; margin-right: auto;}.dsk-content > div{height: auto;}.dsk-content .scroll{padding: 0 !important; gap: 22px !important; overflow: visible;}.page-header-desktop{display: flex; justify-content: space-between; align-items: flex-end; padding-bottom: 18px; margin-bottom: 4px; border-bottom: 1px solid var(--border-subtle); gap: 24px; flex-wrap: wrap;}.page-header-desktop .phd-l{display: flex; gap: 14px; align-items: flex-end; min-width: 0;}.page-header-desktop .phd-jp{font-family: var(--font-jp); font-size: 11.5px; font-weight: 500; color: var(--red-500); letter-spacing: 0.18em; margin-bottom: 4px;}.page-header-desktop h1{font-family: var(--font-display); font-size: 28px; font-weight: 700; letter-spacing: -0.02em; color: var(--navy-900); line-height: 1.1; white-space: nowrap;}.page-header-desktop .phd-r{display: flex; align-items: center; gap: 10px; flex-shrink: 0;}.page-header-desktop .course-pill{white-space: nowrap; flex-shrink: 0;}.dsk-content .stats2, .dsk-content .stats4{grid-template-columns: repeat(4, 1fr);}.dsk-content .nc{padding: 28px 32px;}.dsk-content .nc h2{font-size: 22px;}.dsk-content .nc .meta{grid-template-columns: repeat(4, 1fr);}.dsk-grid-2{display: grid; grid-template-columns: 1.4fr 1fr; gap: 20px; align-items: flex-start;}.dsk-content .card{padding: 22px;}.dsk-content .card-head h3{font-size: 16px;}.dsk-content .greet{padding: 8px 4px 16px;}.dsk-content .greet h1{font-size: 30px;}.dsk-content .greet .sub{font-size: 14px; max-width: 480px;}.dsk-content .greet .av{width: 56px; height: 56px; font-size: 17px; border-radius: 16px;}.dsk-content .greet .jp{font-size: 12px;}.dsk-content .app-header{display: none;}.dsk-content .tabbar{display: none;}.dsk-content .topnav{display: none;}.dsk-content .scroll > div[style*='grid-template-columns: 1fr 1fr']{}.dsk-content .ring-wrap{gap: 28px;}.dsk-content .classcard{padding: 18px 20px;}.dsk-content .classcard .when{width: 84px;}.dsk-content .composer{margin: 0; border-radius: 12px; border: 1px solid var(--border-subtle); margin-top: 12px;}.dsk-msg-pane{display: grid; grid-template-columns: 320px 1fr; gap: 0; border: 1px solid var(--border-subtle); border-radius: 16px; background: var(--bg-surface); overflow: hidden; height: calc(100vh - 220px); min-height: 520px;}.dsk-msg-list{border-right: 1px solid var(--border-subtle); overflow-y: auto; background: var(--neutral-50);}.dsk-msg-conv{display: flex; flex-direction: column; overflow: hidden;}.dsk-app .toast, body > .toast{}.dsk-app + .toast, .dsk-app .toast-mount{z-index: 9999;}.dsk-app [style*='bottom: 110px']{bottom: 32px !important; left: 50% !important; position: fixed !important;}.modal-overlay{align-items: center;}.modal{max-width: 480px; width: 100%; border-radius: 24px; margin: 0 20px; max-height: 82vh;}.tabbar.android{bottom: 22px; background: rgba(255,255,255,0.94); border-radius: 28px; height: 60px;}.tabbar.android .tab.active::before{display: none;}.tabbar.android .tab.active{background: var(--red-50); color: var(--red-700);}.tabbar.android .tab.active svg{color: var(--red-600);}.dsk-content > section{width: 100%;}.dsk-content .greet{margin-bottom: 0;}

/* /itokyo_teacher_portal/static/src/css/teacher.css */
 .ah-batchbar{margin-top: 10px;}.bs-trigger{width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 10px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 12px; padding: 9px 12px; cursor: pointer; text-align: left; color: var(--navy-900);}.bs-trigger .bs-trigger-lab{display: flex; flex-direction: column; min-width: 0; flex: 1;}.bs-trigger .bs-trigger-pre{font-family: var(--font-display); font-size: 9.5px; font-weight: 700; color: var(--fg-muted); letter-spacing: 0.12em; text-transform: uppercase;}.bs-trigger .bs-trigger-lab b{font-family: var(--font-display); font-size: 14px; font-weight: 700; color: var(--navy-900); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}.bs-trigger .bs-trigger-role{font-size: 11px; color: var(--red-500); font-weight: 600;}.bs-trigger.inline{margin-bottom: 2px; background: var(--navy-50); border-color: var(--navy-100);}.bs-wrap{position: relative;}.bs-trigger.desktop{width: auto; min-width: 300px; gap: 12px; border-radius: 999px; padding: 7px 14px 7px 7px; box-shadow: var(--shadow-xs);}.bs-trigger.desktop:hover{border-color: var(--border-default);}.bs-trigger.desktop.open{border-color: var(--red-300); box-shadow: var(--shadow-ring);}.bs-trigger.desktop .bs-trigger-pre{white-space: nowrap;}.bs-trigger.desktop .bs-trigger-lab b{white-space: nowrap; overflow: visible; text-overflow: clip;}.bs-trigger-ic{width: 32px; height: 32px; border-radius: 999px; flex-shrink: 0; background: var(--navy-900); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 12px; display: flex; align-items: center; justify-content: center;}.bs-trigger-ic.all{background: var(--red-50); color: var(--red-600);}.bs-backdrop{position: fixed; inset: 0; z-index: 90;}.bs-dropdown{position: absolute; top: calc(100% + 8px); left: 0; width: 360px; max-width: 90vw; background: #fff; border: 1px solid var(--border-subtle); border-radius: 16px; box-shadow: var(--shadow-lg); z-index: 95; overflow: hidden; animation: bsIn 180ms var(--ease-out);}@keyframes bsIn{from{opacity: 0; transform: translateY(-6px);}to{opacity: 1; transform: translateY(0);}}.bs-dropdown-head{display: flex; justify-content: space-between; align-items: center; padding: 12px 16px 8px; font-family: var(--font-display); font-size: 11px; font-weight: 700; color: var(--fg-muted); letter-spacing: 0.12em; text-transform: uppercase;}.bs-dropdown-note{color: var(--success-700); letter-spacing: 0; text-transform: none; font-size: 11px;}.bs-list{display: flex; flex-direction: column; padding: 4px;}.bs-divider{height: 1px; background: var(--border-subtle); margin: 4px 8px;}.bs-item{display: flex; align-items: center; gap: 12px; padding: 11px 12px; border: none; background: transparent; border-radius: 10px; cursor: pointer; text-align: left; width: 100%; transition: background 140ms;}.bs-item:hover{background: var(--neutral-100);}.bs-item.active{background: var(--red-50);}.bs-item .bs-body{flex: 1; min-width: 0;}.bs-item .bs-body b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; color: var(--navy-900); display: block;}.bs-item .bs-body .bs-term{font-weight: 400; color: var(--fg-muted);}.bs-item .bs-body > span{font-size: 11.5px; color: var(--fg-muted); display: block; margin-top: 2px; line-height: 1.35;}.bs-role{font-style: normal; color: var(--red-500); font-weight: 600;}.bs-ic.all{width: 40px; height: 40px; border-radius: 11px; flex-shrink: 0; background: var(--red-50); color: var(--red-600); display: flex; align-items: center; justify-content: center;}.bs-lvl{width: 40px; height: 40px; border-radius: 11px; flex-shrink: 0; font-family: var(--font-display); font-weight: 700; font-size: 14px; display: flex; align-items: center; justify-content: center; background: var(--navy-900); color: #fff;}.bs-lvl.lvl-n5{background: var(--navy-900);}.bs-lvl.lvl-n4{background: var(--navy-700);}.bs-lvl.lvl-n3{background: var(--red-600);}.bs-lvl.lvl-business{background: var(--gold-500); color: var(--navy-900); font-family: var(--font-jp-serif);}.batch-indicator{display: inline-flex; align-items: center; gap: 7px; background: var(--navy-50); border: 1px solid var(--navy-100); border-radius: 999px; padding: 6px 8px 6px 12px; font-size: 12px; color: var(--navy-700); font-family: var(--font-body); align-self: flex-start;}.batch-indicator b{font-family: var(--font-display); font-weight: 600; color: var(--navy-900);}.batch-indicator button{background: var(--navy-900); color: #fff; border: none; font-family: var(--font-display); font-size: 10.5px; font-weight: 600; padding: 3px 9px; border-radius: 999px; cursor: pointer;}.hinomaru-dot{width: 8px; height: 8px; border-radius: 50%; background: var(--red-500); flex-shrink: 0;}.note-banner{display: flex; align-items: center; gap: 8px; background: var(--gold-50); border: 1px solid var(--gold-200); border-radius: 12px; padding: 10px 14px; font-size: 12.5px; color: var(--navy-700); line-height: 1.4;}.note-banner b{font-family: var(--font-display); color: var(--navy-900);}.note-banner.subtle{background: var(--navy-50); border-color: var(--navy-100);}.batch-card{padding: 16px;}.batch-card-head{display: flex; gap: 12px; align-items: center; margin-bottom: 14px;}.batch-card-meta{display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; padding: 12px 0; border-top: 1px solid var(--border-subtle); border-bottom: 1px solid var(--border-subtle);}.batch-card-meta > div{display: flex; flex-direction: column; gap: 2px;}.batch-card-meta span{font-family: var(--font-display); font-size: 9.5px; font-weight: 700; color: var(--fg-muted); letter-spacing: 0.08em; text-transform: uppercase;}.batch-card-meta b{font-family: var(--font-display); font-size: 14px; font-weight: 700; color: var(--navy-900);}.batch-card-actions{display: flex; gap: 8px; margin-top: 14px;}.batch-card-actions .btn{flex: 1;}.dsk-batch-grid{display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px;}.student-row{display: flex; align-items: center; gap: 12px; padding: 12px 16px; width: 100%; background: transparent; border: none; border-bottom: 1px solid var(--border-subtle); cursor: pointer; text-align: left;}.student-row:hover{background: var(--neutral-50);}.student-row .body{flex: 1; min-width: 0;}.student-row .body b{font-family: var(--font-display); font-size: 14px; font-weight: 600; color: var(--navy-900); display: block;}.student-row .body > span{font-size: 11.5px; color: var(--fg-muted); display: block; margin-top: 3px;}.batch-tag{display: inline-block; background: var(--navy-50); color: var(--navy-700); font-family: var(--font-display); font-size: 10px; font-weight: 600; padding: 1px 7px; border-radius: 999px; margin-right: 6px;}.student-row .end{display: flex; flex-direction: column; align-items: flex-end; gap: 4px; flex-shrink: 0;}.mini-att{font-family: var(--font-display); font-size: 13px; font-weight: 700;}.search-field{display: flex; align-items: center; gap: 10px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 12px; padding: 10px 14px;}.search-field input{flex: 1; border: none; outline: none; background: transparent; font-family: var(--font-body); font-size: 14px;}.select-prompt{text-align: center; padding: 24px 18px 14px;}.select-prompt .ktile{margin: 0 auto 14px;}.select-prompt h3{font-family: var(--font-display); font-size: 17px; font-weight: 700; color: var(--navy-900); margin-bottom: 6px;}.select-prompt p{font-size: 13px; color: var(--fg-secondary); line-height: 1.5; max-width: 280px; margin: 0 auto;}.att-datebar{display: flex; justify-content: space-between; gap: 12px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 12px; padding: 12px 14px;}.att-datebar span{font-family: var(--font-display); font-size: 9.5px; font-weight: 700; color: var(--fg-muted); letter-spacing: 0.08em; text-transform: uppercase; display: block;}.att-datebar b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; color: var(--navy-900);}.att-progress{font-family: var(--font-display); font-size: 12px; font-weight: 600; color: var(--fg-muted); text-align: center;}.att-row{display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--border-subtle);}.att-student{display: flex; align-items: center; gap: 10px; min-width: 0;}.att-student b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; color: var(--navy-900); display: block; line-height: 1.2;}.att-student span{font-size: 11px; color: var(--fg-muted);}.att-btns{display: flex; gap: 5px; flex-shrink: 0;}.att-btn{width: 34px; height: 34px; border-radius: 9px; border: 1.5px solid var(--border-subtle); background: var(--bg-surface); font-family: var(--font-display); font-size: 13px; font-weight: 700; color: var(--fg-muted); cursor: pointer; transition: all 140ms;}.att-btn.on.success{background: var(--success-500); border-color: var(--success-500); color: #fff;}.att-btn.on.error{background: var(--error-500); border-color: var(--error-500); color: #fff;}.att-btn.on.warning{background: var(--warning-500); border-color: var(--warning-500); color: #fff;}.att-btn.on.info{background: var(--info-500); border-color: var(--info-500); color: #fff;}.att-savebar{position: absolute; left: 12px; right: 12px; bottom: 24px; z-index: 45; background: rgba(255,255,255,0.92); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border: 1px solid var(--border-subtle); border-radius: 16px; padding: 10px 12px 10px 16px; display: flex; align-items: center; justify-content: space-between; gap: 10px; box-shadow: var(--shadow-lg);}.att-savebar > span{font-family: var(--font-display); font-size: 12.5px; font-weight: 600; color: var(--fg-secondary);}.att-savebar .btn{flex-shrink: 0;}.marks-row{display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 14px; border-bottom: 1px solid var(--border-subtle);}.marks-inputs{display: flex; align-items: center; gap: 5px; flex-shrink: 0;}.marks-inputs input{width: 38px; height: 34px; text-align: center; border: 1.5px solid var(--border-subtle); border-radius: 8px; font-family: var(--font-mono); font-size: 13px; outline: none;}.marks-inputs input:focus{border-color: var(--red-500); box-shadow: var(--shadow-ring);}.marks-total{font-family: var(--font-display); font-size: 11px; color: var(--fg-muted); font-weight: 600;}.create-cta{display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; padding: 12px; border: 1.5px dashed var(--border-default); border-radius: 12px; background: var(--neutral-50); color: var(--navy-700); font-family: var(--font-display); font-size: 13.5px; font-weight: 600; cursor: pointer;}.create-cta:hover{border-color: var(--red-300); color: var(--red-600);}.hw-progress{margin-top: 8px;}.hw-prog-bar{height: 6px; background: var(--neutral-100); border-radius: 999px; overflow: hidden; margin-bottom: 5px;}.hw-prog-bar i{display: block; height: 100%; background: var(--gold-400); border-radius: 999px;}.hw-progress span{font-size: 12px; color: var(--fg-secondary);}.mat-doc{width: 40px; height: 40px; border-radius: 11px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-size: 10.5px; font-weight: 800; letter-spacing: 0.04em; background: var(--red-50); color: var(--red-500);}.mat-doc.mp3{background: var(--gold-50); color: var(--gold-600);}.mat-doc.doc{background: var(--navy-50); color: var(--navy-700);}.mat-doc.mp4{background: var(--info-50); color: var(--info-700);}.mat-doc.rec{background: var(--red-50); color: var(--red-600); position: relative;}.mat-doc.rec::after{content: '\25B8'; position: absolute; right: -2px; bottom: -2px; width: 16px; height: 16px; display: flex; align-items: center; justify-content: center; font-size: 11px; line-height: 1; background: var(--red-500); color: #fff; border-radius: 50%; border: 1.5px solid var(--bg-surface);}.card.pad-tight, .hw-card{transition: border-color 160ms, box-shadow 160ms;}.card.pad-tight:hover, .hw-card:hover{border-color: var(--border-default); box-shadow: var(--shadow-sm);}.sub-card{border: 1px solid var(--border-subtle); border-radius: 12px; padding: 12px;}.sub-head{display: flex; align-items: center; gap: 10px;}.sub-head b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; display: block;}.sub-head span{font-size: 11px; color: var(--fg-muted);}.sub-file{font-size: 12px; color: var(--navy-700); margin-top: 8px; display: flex; align-items: center; gap: 6px;}.sub-file em{color: var(--fg-muted); font-style: italic;}.sub-feedback{flex: 1; border: 1.5px solid var(--border-subtle); border-radius: 8px; padding: 7px 10px; font-size: 13px; outline: none; font-family: var(--font-body);}.sub-feedback:focus{border-color: var(--red-500);}.sub-grade{border: 1.5px solid var(--border-subtle); border-radius: 8px; padding: 7px; font-size: 12px; outline: none;}.toggle-row{display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer;}.toggle-row.mini{flex-shrink: 0;}.toggle-row b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; color: var(--navy-900); display: block;}.toggle-row span{font-size: 11.5px; color: var(--fg-muted);}.switch{width: 44px; height: 26px; border-radius: 999px; background: var(--neutral-300); position: relative; transition: background 180ms; flex-shrink: 0;}.switch i{position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: var(--shadow-sm); transition: transform 180ms;}.switch.on{background: var(--success-500);}.switch.on i{transform: translateX(18px);}.leave-card b{line-height: 1.25;}.leave-card .body > span{line-height: 1.3;}.leave-dates{display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--navy-700); font-weight: 600; font-family: var(--font-display); margin-top: 8px;}.leave-reason{font-size: 12.5px; color: var(--fg-secondary); margin-top: 4px; line-height: 1.4;}.leave-attach{display: inline-flex; align-items: center; gap: 3px; margin-left: 8px; color: var(--red-500); font-weight: 600;}.leave-detail{background: var(--neutral-50); border: 1px solid var(--border-subtle); border-radius: 12px; padding: 4px 14px; margin-bottom: 14px;}.ld-row{display: flex; justify-content: space-between; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border-subtle);}.ld-row:last-child{border-bottom: none;}.ld-row span{font-size: 12px; color: var(--fg-muted); flex-shrink: 0;}.ld-row b{font-family: var(--font-display); font-size: 13px; font-weight: 600; color: var(--navy-900); text-align: right;}.msg-list-row{display: flex; align-items: center; gap: 12px; padding: 14px 16px; width: 100%; background: transparent; border: none; border-bottom: 1px solid var(--border-subtle); cursor: pointer; text-align: left;}.msg-list-row:hover{background: var(--neutral-50);}.unread-pill{background: var(--red-500); color: #fff; font-size: 11px; font-weight: 700; font-family: var(--font-display); min-width: 20px; height: 20px; border-radius: 999px; padding: 0 6px; display: flex; align-items: center; justify-content: center; flex-shrink: 0;}.report-val{font-family: var(--font-display); font-size: 22px; font-weight: 700; color: var(--navy-900); flex-shrink: 0;}.eval-slider{width: 100%; -webkit-appearance: none; appearance: none; height: 8px; border-radius: 999px; background: var(--neutral-200); outline: none;}.eval-slider::-webkit-slider-thumb{-webkit-appearance: none; width: 22px; height: 22px; border-radius: 50%; background: var(--red-500); cursor: pointer; box-shadow: var(--shadow-sm), 0 0 0 2px #fff;}.eval-slider::-moz-range-thumb{width: 22px; height: 22px; border: none; border-radius: 50%; background: var(--red-500); cursor: pointer; box-shadow: var(--shadow-sm), 0 0 0 2px #fff;}.eval-slider:focus-visible{box-shadow: var(--shadow-ring);}.tp-eval-out{display: inline-block; background: var(--navy-50); color: var(--navy-900); padding: 1px 8px; border-radius: 999px; font-size: 12px; font-variant-numeric: tabular-nums;}.dsk-brand-sub{font-family: var(--font-jp); font-size: 9.5px; color: rgba(255,255,255,0.5); letter-spacing: 0.14em; margin-top: 6px;}.dsk-topbar.teacher{grid-template-columns: auto auto 1fr;}.dsk-topbar-batch{justify-self: start; min-width: 0;}.dsk-topbar.teacher .dsk-tools{justify-self: end;}.dsk-search.compact{max-width: 220px; padding: 7px 12px;}.dsk-tool-dot{position: absolute; top: 7px; right: 7px; width: 7px; height: 7px; border-radius: 50%; background: var(--red-500); border: 1.5px solid var(--bg-page);}.dsk-content .dsk6{grid-template-columns: repeat(3, 1fr);}.dsk-content .batch-card-meta{grid-template-columns: repeat(4, 1fr);}.dsk-content .att-savebar{position: sticky; bottom: 16px; left: auto; right: auto; max-width: 520px; margin: 16px auto 0;}.page-header-desktop.teacher .phd-r{gap: 12px;}.login-card-desktop{background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 24px; box-shadow: var(--shadow-xl); overflow: hidden;}.login-card-desktop .screen{background: var(--bg-surface) !important;}.login-card-desktop .screen > div:first-child{height: 24px !important;}.session-hero{background: linear-gradient(155deg, var(--navy-900) 0%, var(--navy-700) 100%); border-radius: 18px; padding: 18px; color: #fff; position: relative; overflow: hidden;}.session-hero::before{content: ''; position: absolute; top: -60px; right: -50px; width: 200px; height: 200px; border-radius: 50%; background: radial-gradient(circle, rgba(215,38,61,0.55), rgba(215,38,61,0) 65%);}.session-hero-top{display: flex; align-items: center; gap: 8px; font-family: var(--font-display); font-size: 11px; font-weight: 800; letter-spacing: 0.14em; color: #fff; position: relative; z-index: 2;}.session-timer{margin-left: auto; font-family: var(--font-mono); font-size: 15px; font-weight: 600; background: rgba(255,255,255,0.1); padding: 3px 10px; border-radius: 999px; letter-spacing: 0.04em;}.live-pulse{width: 9px; height: 9px; border-radius: 50%; background: var(--red-500); box-shadow: 0 0 0 0 rgba(215,38,61,0.6); animation: livePulse 1.6s infinite;}@keyframes livePulse{0%{box-shadow: 0 0 0 0 rgba(215,38,61,0.6);}70%{box-shadow: 0 0 0 8px rgba(215,38,61,0);}100%{box-shadow: 0 0 0 0 rgba(215,38,61,0);}}.session-hero h2{font-family: var(--font-display); font-size: 19px; font-weight: 700; margin: 12px 0 4px; position: relative; z-index: 2;}.session-meta{font-size: 12px; color: rgba(255,255,255,0.7); position: relative; z-index: 2;}.session-actions{display: flex; gap: 8px; margin-top: 16px; position: relative; z-index: 2; flex-wrap: wrap;}.session-actions .btn{background: rgba(255,255,255,0.1); border-color: rgba(255,255,255,0.18); color: #fff;}.session-actions .btn.primary{background: var(--red-500); border-color: var(--red-500);}.session-row{display: flex; align-items: center; gap: 11px; padding: 9px 14px; border-bottom: 1px solid var(--border-subtle);}.session-row-body{flex: 1; min-width: 0;}.session-row-body b{font-family: var(--font-display); font-size: 13.5px; font-weight: 600; color: var(--navy-900); display: block;}.session-row-body span{font-size: 11px; color: var(--fg-muted);}.hand-btn{width: 34px; height: 34px; border-radius: 9px; flex-shrink: 0; border: 1.5px solid var(--border-subtle); background: var(--bg-surface); font-family: var(--font-jp-serif); font-size: 14px; color: var(--neutral-400); cursor: pointer; transition: all 140ms;}.hand-btn.on{background: var(--gold-50); border-color: var(--gold-400); color: var(--gold-600);}.quick-fab{position: absolute; right: 18px; bottom: 96px; z-index: 44; width: 54px; height: 54px; border-radius: 18px; background: var(--red-500); border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; box-shadow: 0 10px 26px -8px rgba(215,38,61,0.6); transition: transform 160ms var(--ease-out);}.quick-fab:active{transform: scale(0.94);}.dsk-quickadd{display: inline-flex; align-items: center; gap: 6px; background: var(--red-500); color: #fff; border: none; border-radius: 999px; padding: 8px 14px; font-family: var(--font-display); font-size: 12.5px; font-weight: 600; cursor: pointer; white-space: nowrap; box-shadow: 0 8px 22px -10px rgba(215,38,61,0.5);}.dsk-quickadd:hover{background: var(--red-600);}.agenda-day{display: flex; flex-direction: column; gap: 10px;}.agenda-day + .agenda-day{margin-top: 4px;}.agenda-daylabel{display: flex; align-items: center; gap: 8px; font-family: var(--font-display); font-size: 12.5px; font-weight: 700; color: var(--navy-900); padding: 2px 2px 0;}.agenda-dot{width: 8px; height: 8px; border-radius: 50%; background: var(--red-500);}.agenda-count{margin-left: auto; font-size: 11px; font-weight: 600; color: var(--fg-muted);}.note-item{border: 1px solid var(--border-subtle); border-radius: 12px; padding: 12px; background: var(--neutral-50);}.lesson-line{font-size: 12px; color: var(--fg-secondary); margin-top: 6px; line-height: 1.4;}.lesson-line b{font-family: var(--font-display); color: var(--navy-700); font-weight: 600;}.enroll-steps{display: flex; gap: 6px;}.enroll-step{flex: 1; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 6px; border-radius: 10px; cursor: pointer; background: var(--neutral-100); border: 1px solid transparent; font-family: var(--font-display); font-size: 12px; font-weight: 600; color: var(--fg-muted);}.enroll-step.active{background: #fff; border-color: var(--red-300); color: var(--navy-900); box-shadow: var(--shadow-xs);}.enroll-step.done{color: var(--success-700);}.enroll-step .es-dot{width: 18px; height: 18px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700; background: var(--neutral-200); color: var(--fg-muted);}.enroll-step.active .es-dot{background: var(--red-500); color: #fff;}.enroll-step.done .es-dot{background: var(--success-500); color: #fff;}.dup-warn{display: flex; align-items: flex-start; gap: 8px; background: var(--error-50); border: 1px solid var(--error-500); color: var(--error-700); border-radius: 12px; padding: 10px 12px; font-size: 12.5px; line-height: 1.4;}.dup-warn svg{flex-shrink: 0; margin-top: 1px;}.readonly-block{background: var(--neutral-50); border: 1px dashed var(--border-default); border-radius: 12px; padding: 4px 14px 8px;}.ro-head{display: flex; align-items: center; gap: 7px; font-family: var(--font-display); font-size: 10.5px; font-weight: 700; color: var(--fg-muted); letter-spacing: 0.08em; text-transform: uppercase; padding: 12px 0 8px;}.enroll-sec-label{display: flex; align-items: center; gap: 8px; font-family: var(--font-display); font-size: 11px; font-weight: 700; color: var(--fg-muted); letter-spacing: 0.12em; text-transform: uppercase; padding: 4px 2px 8px;}.enroll-sec-label span{background: var(--neutral-200); color: var(--fg-secondary); border-radius: 999px; padding: 1px 8px; font-size: 10px; letter-spacing: 0;}.dsk-content .session-actions .btn{white-space: nowrap;}.dsk-content .session-row{padding: 11px 16px;}.dsk-topbar.teacher .dsk-tools{gap: 10px;}

/* /itokyo_teacher_portal/static/src/css/teacher_overrides.css */
 body.o_itokyo_tp{margin: 0; padding: 0; background: var(--neutral-100);}body.o_itokyo_tp a{text-decoration: none; color: inherit;}body.o_itokyo_tp .dsk-content > section{display: flex; flex-direction: column; gap: 22px;}body.o_itokyo_tp .dsk-app{display: grid !important; grid-template-columns: 264px minmax(0, 1fr) !important; height: 100vh !important; overflow: hidden !important; background: var(--neutral-100, #f5f6f8);}body.o_itokyo_tp .dsk-sidebar{width: 264px; min-width: 264px; max-width: 264px; height: 100vh; position: sticky !important; top: 0; align-self: start; background: var(--navy-900); color: #fff; display: flex !important; flex-direction: column !important; overflow: hidden; z-index: 10;}body.o_itokyo_tp .dsk-main{display: flex !important; flex-direction: column !important; height: 100vh !important; min-width: 0 !important; overflow: hidden !important; background: var(--neutral-100, #f5f6f8);}body.o_itokyo_tp .dsk-topbar{position: sticky !important; top: 0; z-index: 30; flex-shrink: 0;}body.o_itokyo_tp .dsk-content{flex: 1 1 auto !important; overflow-y: auto !important; overflow-x: hidden !important; padding: 28px clamp(16px, 4vw, 40px) 48px !important; background: var(--neutral-100, #f5f6f8); max-width: none !important; width: 100% !important; margin: 0 !important;}@media (max-width: 1024px){body.o_itokyo_tp .dsk-app{grid-template-columns: minmax(0, 1fr) !important;}body.o_itokyo_tp .dsk-sidebar{position: fixed !important; z-index: 60 !important; left: 0; top: 0; height: 100dvh; width: min(264px, 86vw); min-width: 0; max-width: 86vw; transform: translateX(-100%); transition: transform 0.22s ease; box-shadow: 0 24px 60px rgba(0, 0, 0, 0.3);}body.o_itokyo_tp .dsk-app.sp-open .dsk-sidebar{transform: translateX(0);}body.o_itokyo_tp .sp-scrim{display: none; position: fixed; inset: 0; z-index: 55; background: rgba(6, 11, 23, 0.55); opacity: 0; transition: opacity 0.22s ease;}body.o_itokyo_tp .dsk-app.sp-open .sp-scrim{display: block !important; opacity: 1;}body.o_itokyo_tp .dsk-app.sp-open{overflow: hidden;}body.o_itokyo_tp .dsk-app.sp-open .dsk-content{overflow: hidden !important; touch-action: none;}body.o_itokyo_tp .sp-burger{display: inline-flex !important; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 12px; border: 1px solid var(--border-subtle); background: var(--bg-surface); color: var(--navy-700); cursor: pointer; font-size: 18px; line-height: 1; -webkit-tap-highlight-color: transparent; margin-left: -4px;}body.o_itokyo_tp .dsk-nav-item{min-height: 44px; padding-top: 11px; padding-bottom: 11px;}body.o_itokyo_tp .dsk-nav{overscroll-behavior: contain; -webkit-overflow-scrolling: touch; -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 16px), transparent); mask-image: linear-gradient(to bottom, #000 calc(100% - 16px), transparent);}body.o_itokyo_tp .dsk-nav-rail{display: none;}body.o_itokyo_tp .dsk-foot{padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px));}body.o_itokyo_tp .dsk-foot-row{gap: 12px;}body.o_itokyo_tp .dsk-foot-link, body.o_itokyo_tp .dsk-signout{display: inline-flex; align-items: center; min-height: 44px; padding: 10px 14px; border-radius: 10px;}body.o_itokyo_tp .dsk-foot-link{flex: 1;}body.o_itokyo_tp .dsk-content{padding: 16px 14px calc(24px + env(safe-area-inset-bottom, 8px)) !important;}body.o_itokyo_tp .dsk-crumb a, body.o_itokyo_tp .dsk-crumb-sep{display: none;}body.o_itokyo_tp .dsk-crumb-cur{display: inline; font-size: 15px; margin-left: 4px; color: var(--navy-900); font-weight: 600;}}@media (prefers-reduced-motion: reduce){body.o_itokyo_tp .dsk-sidebar{transition: none !important;}body.o_itokyo_tp .sp-scrim{transition: none !important;}}@media (max-width: 720px){body.o_itokyo_tp .dsk-content > section{gap: 14px;}}@media (min-width: 1025px){body.o_itokyo_tp .sp-burger{display: none !important;}body.o_itokyo_tp .sp-scrim{display: none !important;}}body.o_itokyo_tp .dsk-content > .itp-banner, body.o_itokyo_tp .dsk-content > .sp-preview-banner{height: auto; flex: 0 0 auto;}body.o_itokyo_tp .dsk-nav-item.itp-soon{cursor: default; color: var(--fg-muted); opacity: 0.72;}body.o_itokyo_tp .dsk-nav-item.itp-soon:hover{background: transparent; color: var(--fg-muted);}body.o_itokyo_tp .itp-soon-badge{margin-left: auto; font-size: 10px; font-weight: 700; padding: 2px 7px; border-radius: 999px; background: var(--neutral-200); color: var(--fg-muted); letter-spacing: 0.04em; text-transform: uppercase;}body.o_itokyo_tp .dsk-nav-ic{width: 20px; display: inline-flex; align-items: center; justify-content: center;}body.o_itokyo_tp .itp-batch-form{margin: 0; justify-self: center; display: flex; align-items: center;}body.o_itokyo_tp .itp-batch-lbl{display: inline-flex; align-items: center; gap: 10px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 999px; padding: 4px 6px 4px 14px; font-family: var(--font-display); font-size: 12.5px; font-weight: 500; color: var(--navy-900);}body.o_itokyo_tp .itp-batch-pre{color: var(--fg-muted); letter-spacing: 0.02em; white-space: nowrap;}body.o_itokyo_tp .itp-batch-select{border: none; outline: none; background: transparent; font: inherit; color: var(--navy-900); padding: 6px 10px 6px 0; cursor: pointer; max-width: 320px; appearance: auto;}body.o_itokyo_tp .itp-batch-select:focus{box-shadow: var(--shadow-ring); border-radius: 999px;}body.o_itokyo_tp .itp-login-stage{min-height: 100vh; display: grid; place-items: center; background: linear-gradient(160deg, var(--navy-900) 0%, var(--navy-700) 60%, var(--red-600) 140%); padding: 24px;}body.o_itokyo_tp .itp-login-card{width: 100%; max-width: 420px; background: var(--bg-surface); border-radius: 18px; padding: 32px 30px 26px; box-shadow: var(--shadow-lg); font-family: var(--font-body);}body.o_itokyo_tp .itp-login-brand{text-align: center; margin-bottom: 24px; position: relative; padding: 16px 0 8px;}body.o_itokyo_tp .itp-login-brand::before{content: ""; position: absolute; left: 50%; top: -4px; width: 320px; max-width: 100%; height: 130px; transform: translateX(-50%); background: radial-gradient(ellipse at center, rgba(215, 38, 61, 0.16) 0%, rgba(215, 38, 61, 0.06) 45%, transparent 75%); pointer-events: none; z-index: 0; filter: blur(0.5px);}body.o_itokyo_tp .itp-login-brand > *{position: relative; z-index: 1;}body.o_itokyo_tp .itp-login-brand img{width: auto; height: 80px; max-width: 260px; display: block; margin: 0 auto; border-radius: 0; filter: drop-shadow(0 14px 32px rgba(215, 38, 61, 0.25)) drop-shadow(0 4px 10px rgba(15, 23, 42, 0.10)); animation: itp-logo-in 620ms cubic-bezier(0.16, 1, 0.3, 1) both;}@keyframes itp-logo-in{0%{opacity: 0; transform: translateY(-10px) scale(0.94);}100%{opacity: 1; transform: translateY(0) scale(1);}}@media (prefers-reduced-motion: reduce){body.o_itokyo_tp .itp-login-brand img{animation: none;}}body.o_itokyo_tp .itp-login-jp{margin-top: 18px; font-family: var(--font-jp-serif); font-size: 12.5px; color: var(--gold-500); letter-spacing: 0.24em; font-weight: 500; animation: itp-logo-in 700ms 80ms cubic-bezier(0.16, 1, 0.3, 1) both;}body.o_itokyo_tp .itp-login-brand h1{margin: 6px 0 4px; font-family: var(--font-display); font-size: 24px; font-weight: 700; color: var(--navy-900); letter-spacing: -0.02em; animation: itp-logo-in 720ms 140ms cubic-bezier(0.16, 1, 0.3, 1) both;}body.o_itokyo_tp .itp-login-brand p{color: var(--fg-muted); font-size: 13px; margin: 0; animation: itp-logo-in 740ms 200ms cubic-bezier(0.16, 1, 0.3, 1) both;}body.o_itokyo_tp .itp-login-form{display: flex; flex-direction: column; gap: 14px; margin-top: 6px;}body.o_itokyo_tp .itp-login-form label{display: flex; flex-direction: column; gap: 6px; font-size: 12.5px; color: var(--fg-muted);}body.o_itokyo_tp .itp-login-form input{font: inherit; font-size: 14.5px; color: var(--navy-900); background: var(--neutral-100); border: 1px solid var(--border-subtle); border-radius: 12px; padding: 11px 14px; outline: none; transition: border-color 0.12s, box-shadow 0.12s;}body.o_itokyo_tp .itp-login-form input:focus{border-color: var(--red-300); box-shadow: var(--shadow-ring);}body.o_itokyo_tp .itp-login-btn{margin-top: 6px; font: inherit; font-family: var(--font-display); font-weight: 700; font-size: 14px; background: var(--red-500); color: #fff; border: none; border-radius: 12px; padding: 12px 18px; cursor: pointer; transition: background 0.14s, transform 0.06s;}body.o_itokyo_tp .itp-login-btn:hover{background: var(--red-600);}body.o_itokyo_tp .itp-login-btn:active{transform: translateY(1px);}body.o_itokyo_tp .itp-login-error{background: var(--rejected-bg, #FEE2E2); color: var(--rejected, #991B1B); border: 1px solid color-mix(in srgb, var(--red-500) 30%, transparent); padding: 10px 12px; border-radius: 10px; font-size: 13px; margin-bottom: 12px;}body.o_itokyo_tp .itp-login-foot{margin-top: 16px; text-align: center; font-size: 12.5px; color: var(--fg-muted);}body.o_itokyo_tp .itp-login-foot a{color: var(--red-500); font-weight: 600;}body.o_itokyo_tp .itp-login-sep{margin: 0 8px; color: var(--neutral-300);}body.o_itokyo_tp .itp-today-list{display: flex; flex-direction: column; gap: 10px; margin-top: 10px;}body.o_itokyo_tp .itp-today-row{display: grid; grid-template-columns: 80px 1fr auto auto; gap: 14px; align-items: center; padding: 12px 14px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 12px;}body.o_itokyo_tp .itp-today-time{font-family: var(--font-display); font-weight: 700; font-size: 16px; color: var(--navy-900);}body.o_itokyo_tp .itp-today-body b{display: block; font-family: var(--font-display); font-weight: 600; color: var(--navy-900); font-size: 14px;}body.o_itokyo_tp .itp-today-meta{display: block; font-size: 12px; color: var(--fg-muted); margin-top: 2px;}body.o_itokyo_tp .itp-today-status .bd{display: inline-block; font-size: 11px; font-weight: 700; padding: 4px 9px; border-radius: 999px;}body.o_itokyo_tp .itp-today-status .bd.ok{background: var(--success-50, #DCFCE7); color: var(--success-700, #166534);}body.o_itokyo_tp .itp-today-status .bd.due{background: var(--pending-bg, #FEF3C7); color: var(--pending, #B7791F);}body.o_itokyo_tp .itp-btn{display: inline-block; padding: 8px 14px; border-radius: 10px; font-family: var(--font-display); font-weight: 600; font-size: 13px; text-decoration: none; border: 1px solid var(--border-subtle); background: var(--bg-surface); color: var(--navy-900);}body.o_itokyo_tp .itp-btn.primary{background: var(--red-500); color: #fff; border-color: transparent;}body.o_itokyo_tp .itp-btn.primary:hover{background: var(--red-600);}body.o_itokyo_tp .itp-btn.muted{color: var(--fg-muted); background: var(--neutral-100);}body.o_itokyo_tp .itp-card-meta{display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-top: 12px;}body.o_itokyo_tp .itp-card-meta > div{display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; background: var(--neutral-100); border-radius: 10px;}body.o_itokyo_tp .itp-card-meta b{font-family: var(--font-display); font-size: 15px; color: var(--navy-900);}body.o_itokyo_tp .itp-card-meta span{font-size: 11px; color: var(--fg-muted); letter-spacing: 0.04em; text-transform: uppercase;}body.o_itokyo_tp .itp-card-today{margin-top: 12px; padding: 10px 12px; background: var(--neutral-100); border-radius: 10px; font-size: 13px; display: flex; align-items: center; flex-wrap: wrap; gap: 6px;}body.o_itokyo_tp .itp-card-today .bd{display: inline-block; font-size: 11px; font-weight: 700; padding: 3px 8px; border-radius: 999px;}body.o_itokyo_tp .itp-card-today .bd.flat{background: var(--bg-surface); color: var(--navy-900); border: 1px solid var(--border-subtle);}body.o_itokyo_tp .itp-card-today .bd.due{background: var(--pending-bg, #FEF3C7); color: var(--pending, #B7791F);}body.o_itokyo_tp .itp-batch-table{display: flex; flex-direction: column; border-radius: 12px; overflow: hidden; border: 1px solid var(--border-subtle);}body.o_itokyo_tp .itp-batch-head, body.o_itokyo_tp .itp-batch-row{display: grid; grid-template-columns: 2fr 0.7fr 1.1fr 1.1fr 0.9fr; gap: 12px; align-items: center; padding: 11px 14px;}body.o_itokyo_tp .itp-batch-head{background: var(--neutral-100); font-size: 11.5px; color: var(--fg-muted); letter-spacing: 0.05em; text-transform: uppercase; font-weight: 600;}body.o_itokyo_tp .itp-batch-row{background: var(--bg-surface); font-size: 13px; color: var(--navy-900); border-top: 1px solid var(--border-subtle);}body.o_itokyo_tp .itp-batch-row + .itp-batch-row{border-top: 1px solid var(--border-subtle);}body.o_itokyo_tp .itp-tabs{display: inline-flex; align-items: center; gap: 4px; padding: 4px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 14px; margin-bottom: 2px;}body.o_itokyo_tp .itp-tab{display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 10px; font-family: var(--font-display); font-weight: 600; font-size: 13px; color: var(--fg-muted); text-decoration: none; transition: background 0.12s, color 0.12s;}body.o_itokyo_tp .itp-tab:hover{background: var(--neutral-100); color: var(--navy-900);}body.o_itokyo_tp .itp-tab.active{background: var(--navy-900); color: #fff;}body.o_itokyo_tp .itp-tab-ct{display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 20px; padding: 0 7px; font-size: 11.5px; font-weight: 700; border-radius: 999px; background: rgba(15, 23, 42, 0.08); color: var(--navy-900);}body.o_itokyo_tp .itp-tab.active .itp-tab-ct{background: rgba(255, 255, 255, 0.18); color: #fff;}body.o_itokyo_tp .itp-classes-list{display: flex; flex-direction: column; gap: 10px;}body.o_itokyo_tp .itp-class-card{display: grid; grid-template-columns: 110px 1fr auto auto; gap: 16px; align-items: center; padding: 14px 18px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 14px; text-decoration: none; color: var(--navy-900); transition: border-color 0.14s, transform 0.06s, box-shadow 0.14s;}body.o_itokyo_tp .itp-class-card:hover{border-color: var(--red-300); box-shadow: var(--shadow-md); transform: translateY(-1px); color: var(--navy-900);}body.o_itokyo_tp .itp-class-date{display: flex; flex-direction: column; gap: 2px; border-right: 1px solid var(--border-subtle); padding-right: 14px;}body.o_itokyo_tp .itp-class-date b{font-family: var(--font-display); font-weight: 700; font-size: 14px; color: var(--navy-900);}body.o_itokyo_tp .itp-class-date span{font-size: 12.5px; color: var(--fg-muted); font-weight: 500;}body.o_itokyo_tp .itp-class-body b{display: block; font-family: var(--font-display); font-weight: 600; font-size: 14.5px; color: var(--navy-900);}body.o_itokyo_tp .itp-class-body span{display: block; font-size: 12px; color: var(--fg-muted); margin-top: 3px;}body.o_itokyo_tp .itp-class-att{text-align: right; font-size: 11px; color: var(--fg-muted);}body.o_itokyo_tp .itp-class-att b{display: block; font-family: var(--font-display); font-weight: 700; font-size: 14px; color: var(--navy-900);}@media (max-width: 720px){body.o_itokyo_tp .itp-class-card{grid-template-columns: 64px 1fr; row-gap: 8px;}body.o_itokyo_tp .itp-class-att, body.o_itokyo_tp .itp-class-status{grid-column: 1 / -1; justify-self: flex-start; text-align: left;}body.o_itokyo_tp .itp-class-date{border-right: none; padding-right: 0;}}body.o_itokyo_tp .bd{display: inline-flex; align-items: center; gap: 5px; font-size: 11.5px; font-weight: 700; padding: 4px 10px; border-radius: 999px; white-space: nowrap; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.04);}body.o_itokyo_tp button.tp-badge-btn{font-family: inherit; cursor: pointer; border: 0; -webkit-appearance: none; appearance: none; transition: filter 0.14s, box-shadow 0.14s;}body.o_itokyo_tp button.tp-badge-btn.flat{border: 1px solid var(--border-subtle);}body.o_itokyo_tp button.tp-badge-btn:hover{filter: brightness(0.96);}body.o_itokyo_tp button.tp-badge-btn:focus-visible{outline: none; box-shadow: var(--shadow-ring, 0 0 0 3px rgba(229,38,40,0.18));}body.o_itokyo_tp .bd.ok{background: var(--success-50, #DCFCE7); color: var(--success-700, #166534);}body.o_itokyo_tp .bd.due{background: var(--pending-bg, #FEF3C7); color: var(--pending, #B7791F);}body.o_itokyo_tp .bd.err{background: var(--rejected-bg, #FEE2E2); color: var(--rejected, #991B1B);}body.o_itokyo_tp .bd.live{background: var(--red-500); color: #fff; animation: itp-pulse 1.5s ease-in-out infinite;}body.o_itokyo_tp .bd.flat{background: var(--neutral-100); color: var(--navy-900); border: 1px solid var(--border-subtle);}body.o_itokyo_tp .bd.info{background: var(--navy-100, #E4E8F2); color: var(--navy-900);}@keyframes itp-pulse{0%, 100%{opacity: 1;}50%{opacity: 0.55;}}body.o_itokyo_tp .itp-empty{text-align: center; padding: 56px 24px; background: var(--bg-surface); border: 1px dashed var(--border-subtle); border-radius: 14px;}body.o_itokyo_tp .itp-empty .glyph{font-family: var(--font-jp-serif); font-size: 48px; color: var(--gold-300); line-height: 1; margin-bottom: 14px;}body.o_itokyo_tp .itp-empty h3{font-family: var(--font-display); font-size: 18px; color: var(--navy-900); margin: 6px 0 4px;}body.o_itokyo_tp .itp-empty p{color: var(--fg-muted); font-size: 13.5px; max-width: 420px; margin: 0 auto;}body.o_itokyo_tp .itp-session-actions{display: flex; flex-wrap: wrap; gap: 10px;}body.o_itokyo_tp .itp-flash{padding: 12px 16px; background: var(--success-50, #DCFCE7); color: var(--success-700, #166534); border: 1px solid var(--success-500, #22C55E); border-radius: 12px; font-size: 13.5px; font-weight: 600; animation: itp-logo-in 360ms ease-out both;}body.o_itokyo_tp .itp-att-toolbar{display: flex; align-items: center; gap: 10px; flex-wrap: wrap;}body.o_itokyo_tp .itp-att-progress{margin-left: auto; font-size: 13px; color: var(--fg-muted);}body.o_itokyo_tp .itp-att-progress b{font-family: var(--font-display); font-weight: 700; color: var(--navy-900);}body.o_itokyo_tp .itp-att-form{display: flex; flex-direction: column; gap: 16px;}body.o_itokyo_tp .itp-att-list{display: flex; flex-direction: column; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 14px; overflow: hidden;}body.o_itokyo_tp .itp-att-row{display: grid; grid-template-columns: 1fr auto; gap: 14px; align-items: center; padding: 14px 18px; border-bottom: 1px solid var(--border-subtle);}body.o_itokyo_tp .itp-att-row:last-child{border-bottom: none;}body.o_itokyo_tp .itp-att-student{display: flex; align-items: center; gap: 12px; min-width: 0;}body.o_itokyo_tp .itp-att-student b{display: block; font-family: var(--font-display); font-weight: 600; font-size: 14px; color: var(--navy-900);}body.o_itokyo_tp .itp-att-student span{display: block; font-size: 11.5px; color: var(--fg-muted); margin-top: 2px;}body.o_itokyo_tp .itp-att-av{display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 12px; background: linear-gradient(135deg, var(--navy-700), var(--navy-900)); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 12px; flex-shrink: 0;}body.o_itokyo_tp .itp-att-btns{display: inline-flex; gap: 6px;}body.o_itokyo_tp .itp-att-btn{width: 38px; height: 36px; border-radius: 10px; border: 1px solid var(--border-default); background: var(--bg-surface); font-family: var(--font-display); font-weight: 700; font-size: 13px; color: var(--navy-700); cursor: pointer; transition: background 0.1s, border-color 0.1s, color 0.1s, transform 0.06s, box-shadow 0.1s;}body.o_itokyo_tp .itp-att-btn:hover{background: var(--neutral-100); color: var(--navy-900);}body.o_itokyo_tp .itp-att-btn:active{transform: translateY(1px);}body.o_itokyo_tp .itp-att-btn:focus-visible{outline: none; border-color: var(--red-500); box-shadow: var(--shadow-ring); position: relative; z-index: 1;}body.o_itokyo_tp .itp-att-btn.p.on{background: var(--success-700, #166534); color: #fff; border-color: var(--success-700, #166534);}body.o_itokyo_tp .itp-att-btn.a.on{background: var(--red-600); color: #fff; border-color: var(--red-600);}body.o_itokyo_tp .itp-att-btn.l.on{background: var(--pending, #B7791F); color: #fff; border-color: var(--pending, #B7791F);}body.o_itokyo_tp .itp-att-btn.lv.on{background: var(--navy-700); color: #fff; border-color: var(--navy-700);}body.o_itokyo_tp .itp-att-savebar{position: sticky; bottom: env(safe-area-inset-bottom, 0px); display: flex; align-items: center; gap: 14px; padding: 12px 16px calc(12px + env(safe-area-inset-bottom, 0px)); background: rgba(255, 255, 255, 0.94); backdrop-filter: blur(14px) saturate(180%); -webkit-backdrop-filter: blur(14px) saturate(180%); border: 1px solid var(--border-subtle); border-radius: 14px; box-shadow: var(--shadow-md); z-index: 25;}body.o_itokyo_tp .itp-att-savebar .itp-btn{margin-left: auto;}body.o_itokyo_tp .itp-att-save{padding: 10px 22px; font-size: 14px;}body.o_itokyo_tp .itp-att-form{padding-bottom: 8px;}@media (max-width: 720px){body.o_itokyo_tp .itp-att-row{grid-template-columns: 1fr; row-gap: 10px;}body.o_itokyo_tp .itp-att-btns{justify-self: stretch; gap: 8px;}body.o_itokyo_tp .itp-att-btn{flex: 1; width: auto; min-width: 44px; height: 44px; font-size: 14px;}}@media (max-width: 560px){body.o_itokyo_tp .itp-att-savebar{flex-direction: column; align-items: stretch; gap: 8px;}body.o_itokyo_tp .itp-att-savebar .itp-btn{margin-left: 0; width: 100%; min-height: 48px;}}body.o_itokyo_tp .itp-pick-list{display: flex; flex-direction: column; gap: 10px;}body.o_itokyo_tp .itp-pick-form{margin: 0; padding: 0; display: contents;}body.o_itokyo_tp .itp-pick-row{display: grid; grid-template-columns: 56px 1fr auto; gap: 14px; align-items: center; padding: 14px 18px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 14px; font: inherit; color: inherit; text-align: left; cursor: pointer; width: 100%; transition: border-color 0.14s, transform 0.06s, box-shadow 0.14s;}body.o_itokyo_tp .itp-pick-row:hover{border-color: var(--red-300); box-shadow: var(--shadow-md); transform: translateY(-1px);}body.o_itokyo_tp .itp-pick-lvl{display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 12px; background: var(--navy-900); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 13px; flex-shrink: 0;}body.o_itokyo_tp .itp-pick-body b{display: block; font-family: var(--font-display); font-weight: 600; font-size: 14.5px; color: var(--navy-900);}body.o_itokyo_tp .itp-pick-body span{display: block; font-size: 12px; color: var(--fg-muted); margin-top: 3px;}@media (max-width: 1024px){body.o_itokyo_tp .itp-batch-form{grid-column: 1 / -1; justify-self: stretch;}body.o_itokyo_tp .itp-batch-lbl{width: 100%;}body.o_itokyo_tp .itp-batch-select{flex: 1; max-width: none;}body.o_itokyo_tp .itp-today-row{grid-template-columns: 64px 1fr; row-gap: 6px;}body.o_itokyo_tp .itp-today-status, body.o_itokyo_tp .itp-today-actions{grid-column: 1 / -1; justify-self: end;}body.o_itokyo_tp .itp-card-meta{grid-template-columns: 1fr 1fr;}}@media (min-width: 769px) and (max-width: 1024px){body.o_itokyo_tp .itp-batch-head, body.o_itokyo_tp .itp-batch-row{grid-template-columns: 1.4fr 0.6fr 1fr 1fr;}body.o_itokyo_tp .itp-batch-head > :last-child, body.o_itokyo_tp .itp-batch-row > :last-child{display: none;}}@media (max-width: 768px){body.o_itokyo_tp .itp-batch-head{display: none;}body.o_itokyo_tp .itp-batch-row{grid-template-columns: 1fr; gap: 6px; padding: 14px 16px;}body.o_itokyo_tp .itp-batch-row > *{padding-left: 0; min-width: 0;}body.o_itokyo_tp .itp-batch-row > :first-child{font-weight: 700; font-size: 15px; margin-bottom: 2px;}body.o_itokyo_tp .itp-batch-row > :first-child b{font-weight: 700;}body.o_itokyo_tp .itp-batch-row > :nth-child(n + 2){display: flex; justify-content: space-between; align-items: baseline; gap: 12px; text-align: right !important;}body.o_itokyo_tp .itp-batch-row > :nth-child(n + 2)::before{flex-shrink: 0; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--fg-muted);}body.o_itokyo_tp .itp-batch-row > :nth-child(2)::before{content: "Level";}body.o_itokyo_tp .itp-batch-row > :nth-child(3)::before{content: "Mode";}body.o_itokyo_tp .itp-batch-row > :nth-child(4)::before{content: "Role";}body.o_itokyo_tp .itp-batch-row > :nth-child(5)::before{content: "Code";}}body.o_itokyo_tp .itp-section{display: flex; flex-direction: column; gap: 14px;}body.o_itokyo_tp .itp-section-head{display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-top: 4px;}body.o_itokyo_tp .itp-section-head h2{margin: 4px 0 0; font-family: var(--font-display); font-size: 20px; font-weight: 700; color: var(--navy-900); letter-spacing: -0.01em;}body.o_itokyo_tp .itp-section-jp{font-family: var(--font-jp-serif, "Noto Serif JP", serif); font-size: 11.5px; color: var(--red-500); letter-spacing: 0.2em; font-weight: 600;}body.o_itokyo_tp .itp-section-aside{font-size: 11.5px; color: var(--fg-muted); letter-spacing: 0.05em; text-transform: uppercase; font-weight: 600;}body.o_itokyo_tp .itp-hero-pro{position: relative; border-radius: 22px; overflow: hidden; padding: 32px 32px 30px; color: #fff; isolation: isolate; background: linear-gradient(135deg, #0e1a36 0%, #1a2744 45%, #2a1340 110%); box-shadow: 0 24px 48px -28px rgba(15, 23, 42, 0.45); animation: itp-rise 520ms cubic-bezier(0.16, 1, 0.3, 1) both;}body.o_itokyo_tp .itp-hero-pro::before, body.o_itokyo_tp .itp-hero-pro::after{content: ''; position: absolute; border-radius: 50%; pointer-events: none; z-index: 0;}body.o_itokyo_tp .itp-hero-pro::before{top: -120px; right: -80px; width: 360px; height: 360px; background: radial-gradient(circle, rgba(229, 38, 40, 0.36) 0%, rgba(229, 38, 40, 0) 70%);}body.o_itokyo_tp .itp-hero-pro::after{bottom: -160px; left: -120px; width: 420px; height: 420px; background: radial-gradient(circle, rgba(212, 175, 55, 0.18) 0%, rgba(212, 175, 55, 0) 65%);}body.o_itokyo_tp .itp-hero-pro-inner{display: grid; grid-template-columns: 1fr auto; gap: 24px; align-items: center; position: relative; z-index: 1;}body.o_itokyo_tp .itp-hero-pro-text{min-width: 0;}body.o_itokyo_tp .itp-hero-jp{font-family: var(--font-jp-serif, "Noto Serif JP", serif); font-size: 13px; color: #e7c873; letter-spacing: 0.22em; font-weight: 500; margin-bottom: 10px; text-shadow: 0 0 18px rgba(212, 175, 55, 0.35);}body.o_itokyo_tp .itp-hero-pro h1{margin: 0 0 10px; font-family: var(--font-display); font-size: clamp(26px, 3vw, 36px); font-weight: 800; letter-spacing: -0.02em; color: #fff; line-height: 1.18; display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px;}body.o_itokyo_tp .itp-hero-greet{color: rgba(255, 255, 255, 0.92); font-weight: 500;}body.o_itokyo_tp .itp-hero-pro h1 a{color: inherit; text-decoration: none;}body.o_itokyo_tp .itp-hero-pro h1 em{font-style: normal; background: linear-gradient(96deg, #ffd5b8 0%, #ffeb99 50%, #ffd5b8 100%); -webkit-background-clip: text; background-clip: text; color: transparent; font-weight: 800;}body.o_itokyo_tp .itp-hero-sensei{font-family: var(--font-jp-serif, "Noto Serif JP", serif); font-size: 0.7em; color: rgba(255,255,255,0.55); font-weight: 400; margin-left: 2px;}body.o_itokyo_tp .itp-hero-sub{color: rgba(255, 255, 255, 0.78); font-size: 14.5px; line-height: 1.55; max-width: 640px;}body.o_itokyo_tp .itp-hero-sub b{color: #fff; font-weight: 600;}body.o_itokyo_tp .itp-hero-pill{display: inline-flex; align-items: center; gap: 14px; padding: 12px 12px 12px 16px; background: rgba(255, 255, 255, 0.1); border: 1px solid rgba(255, 255, 255, 0.22); backdrop-filter: blur(10px) saturate(160%); -webkit-backdrop-filter: blur(10px) saturate(160%); border-radius: 14px; text-decoration: none; color: #fff; font-family: var(--font-display); transition: background 0.16s, transform 0.06s, border-color 0.16s; min-width: 240px;}body.o_itokyo_tp .itp-hero-pill:hover{background: rgba(255, 255, 255, 0.16); border-color: rgba(255, 255, 255, 0.35); color: #fff;}body.o_itokyo_tp .itp-hero-pill:active{transform: translateY(1px);}body.o_itokyo_tp .itp-hero-pill-dot{width: 10px; height: 10px; border-radius: 50%; background: rgba(255, 255, 255, 0.85); box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.18); flex-shrink: 0;}body.o_itokyo_tp .itp-hero-pill.live{border-color: rgba(255, 130, 130, 0.5); background: rgba(229, 38, 40, 0.18);}body.o_itokyo_tp .itp-hero-pill.live .itp-hero-pill-dot{background: #ff5a5f; box-shadow: 0 0 0 5px rgba(255, 90, 95, 0.34); animation: itp-pulse-dot 1.4s ease-in-out infinite;}@keyframes itp-pulse-dot{0%, 100%{transform: scale(1); box-shadow: 0 0 0 5px rgba(255, 90, 95, 0.34);}50%{transform: scale(1.22); box-shadow: 0 0 0 11px rgba(255, 90, 95, 0.0);}}body.o_itokyo_tp .itp-hero-pill-body{min-width: 0;}body.o_itokyo_tp .itp-hero-pill-lbl{font-size: 10.5px; letter-spacing: 0.18em; font-weight: 700; color: rgba(255, 255, 255, 0.72);}body.o_itokyo_tp .itp-hero-pill.live .itp-hero-pill-lbl{color: #ffb0b0;}body.o_itokyo_tp .itp-hero-pill-time{font-size: 14.5px; font-weight: 600; color: #fff; margin-top: 3px; line-height: 1.2;}body.o_itokyo_tp .itp-hero-pill-cta{margin-left: 8px; display: inline-flex; align-items: center; padding: 7px 12px; border-radius: 9px; background: #fff; color: var(--navy-900); font-weight: 700; font-size: 12px; letter-spacing: 0.01em; white-space: nowrap;}body.o_itokyo_tp .itp-hero-pill:hover .itp-hero-pill-cta{background: #ffeded;}body.o_itokyo_tp .itp-stat-grid{display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px;}body.o_itokyo_tp .itp-stat-pro{position: relative; background: var(--bg-surface, #fff); border: 1px solid var(--border-subtle); border-radius: 18px; padding: 18px 18px 16px; display: flex; flex-direction: column; gap: 6px; min-height: 144px; overflow: hidden; transition: transform 0.2s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.2s, border-color 0.2s; animation: itp-rise 520ms cubic-bezier(0.16, 1, 0.3, 1) both;}body.o_itokyo_tp .itp-stat-pro:nth-child(1){animation-delay: 60ms;}body.o_itokyo_tp .itp-stat-pro:nth-child(2){animation-delay: 120ms;}body.o_itokyo_tp .itp-stat-pro:nth-child(3){animation-delay: 180ms;}body.o_itokyo_tp .itp-stat-pro:nth-child(4){animation-delay: 240ms;}body.o_itokyo_tp .itp-stat-pro:hover{transform: translateY(-3px); box-shadow: 0 18px 32px -20px rgba(15, 23, 42, 0.22); border-color: var(--accent, var(--red-300));}body.o_itokyo_tp .itp-stat-pro::before{content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 4px; background: var(--accent, var(--navy-700));}body.o_itokyo_tp .itp-stat-pro::after{content: ''; position: absolute; top: -50px; right: -50px; width: 160px; height: 160px; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--accent, var(--navy-700)) 18%, transparent) 0%, transparent 70%); pointer-events: none;}body.o_itokyo_tp .itp-stat-pro-ic{display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 12px; background: color-mix(in srgb, var(--accent, var(--navy-700)) 14%, transparent); color: var(--accent, var(--navy-700)); font-size: 18px; margin-bottom: 4px;}body.o_itokyo_tp .itp-stat-pro-val{font-family: var(--font-display); font-size: 38px; font-weight: 800; color: var(--navy-900); line-height: 1; letter-spacing: -0.03em; font-variant-numeric: tabular-nums;}body.o_itokyo_tp .itp-stat-pro-lab{font-family: var(--font-display); font-size: 13px; font-weight: 600; color: var(--navy-900); margin-top: 2px;}body.o_itokyo_tp .itp-stat-pro-sub{font-size: 11.5px; color: var(--fg-muted); letter-spacing: 0.02em;}body.o_itokyo_tp .itp-stat-pro.urgent .itp-stat-pro-val{color: #B7791F;}@keyframes itp-rise{0%{opacity: 0; transform: translateY(14px);}100%{opacity: 1; transform: translateY(0);}}body.o_itokyo_tp .itp-today-card{display: grid; grid-template-columns: 96px 1fr auto auto; gap: 18px; align-items: center; padding: 16px 20px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 16px; text-decoration: none; color: var(--navy-900); position: relative; overflow: hidden; transition: border-color 0.16s, transform 0.06s, box-shadow 0.2s; animation: itp-rise 520ms cubic-bezier(0.16, 1, 0.3, 1) both;}body.o_itokyo_tp .itp-today-card:hover{border-color: var(--red-300); box-shadow: 0 14px 28px -18px rgba(15, 23, 42, 0.24); transform: translateY(-1px); color: var(--navy-900);}body.o_itokyo_tp .itp-today-card.live{border-color: var(--red-500); background: linear-gradient(135deg, rgba(229, 38, 40, 0.05) 0%, rgba(229, 38, 40, 0) 80%), var(--bg-surface);}body.o_itokyo_tp .itp-today-card.live::before{content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--red-500);}body.o_itokyo_tp .itp-today-card .itp-today-time{display: flex; flex-direction: column; gap: 2px; border-right: 1px solid var(--border-subtle); padding-right: 16px;}body.o_itokyo_tp .itp-today-card .itp-today-time b{font-family: var(--font-display); font-size: 20px; font-weight: 800; color: var(--navy-900); letter-spacing: -0.02em; font-variant-numeric: tabular-nums;}body.o_itokyo_tp .itp-today-card .itp-today-time span{font-size: 11.5px; color: var(--fg-muted); font-weight: 500;}body.o_itokyo_tp .itp-today-card .itp-today-body b{display: block; font-family: var(--font-display); font-size: 15px; font-weight: 600; color: var(--navy-900);}body.o_itokyo_tp .itp-today-card .itp-today-meta{display: block; font-size: 12.5px; color: var(--fg-muted); margin-top: 3px;}body.o_itokyo_tp .itp-today-card .itp-today-att{text-align: right; font-size: 11px; color: var(--fg-muted); letter-spacing: 0.04em; text-transform: uppercase;}body.o_itokyo_tp .itp-today-card .itp-today-att b{display: block; font-family: var(--font-display); font-size: 16px; font-weight: 700; color: var(--navy-900); font-variant-numeric: tabular-nums;}body.o_itokyo_tp .itp-quiet-day{display: grid; grid-template-columns: auto 1fr auto; gap: 18px; align-items: center; padding: 18px 22px; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 16px; animation: itp-rise 520ms 200ms cubic-bezier(0.16, 1, 0.3, 1) both;}body.o_itokyo_tp .itp-quiet-day-glyph{font-family: var(--font-jp-serif, "Noto Serif JP", serif); font-size: 36px; color: var(--gold-500, #D4AF37); width: 56px; height: 56px; display: inline-flex; align-items: center; justify-content: center; background: color-mix(in srgb, var(--gold-500, #D4AF37) 14%, transparent); border-radius: 14px; line-height: 1;}body.o_itokyo_tp .itp-quiet-day-body b{display: block; font-family: var(--font-display); font-size: 15px; font-weight: 700; color: var(--navy-900);}body.o_itokyo_tp .itp-quiet-day-body p{margin: 4px 0 0; font-size: 13px; color: var(--fg-muted);}body.o_itokyo_tp .itp-batch-grid{display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr)); gap: 14px;}body.o_itokyo_tp .itp-batch-card{display: block; background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 18px; padding: 18px 20px 16px; position: relative; overflow: hidden; text-decoration: none; color: var(--navy-900); transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s; animation: itp-rise 520ms cubic-bezier(0.16, 1, 0.3, 1) both;}body.o_itokyo_tp .itp-batch-card:nth-child(1){animation-delay: 80ms;}body.o_itokyo_tp .itp-batch-card:nth-child(2){animation-delay: 140ms;}body.o_itokyo_tp .itp-batch-card:nth-child(3){animation-delay: 200ms;}body.o_itokyo_tp .itp-batch-card:nth-child(4){animation-delay: 260ms;}body.o_itokyo_tp .itp-batch-card:nth-child(5){animation-delay: 320ms;}body.o_itokyo_tp .itp-batch-card:hover{transform: translateY(-3px); border-color: var(--lvl-color, var(--red-300)); box-shadow: 0 20px 32px -22px rgba(15, 23, 42, 0.26); color: var(--navy-900);}body.o_itokyo_tp .itp-batch-card::before{content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: var(--lvl-color, var(--navy-700));}body.o_itokyo_tp .itp-batch-card-top{display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 4px;}body.o_itokyo_tp .itp-batch-card h3{margin: 6px 0 12px; font-family: var(--font-display); font-size: 17px; font-weight: 700; color: var(--navy-900); letter-spacing: -0.01em; line-height: 1.25;}body.o_itokyo_tp .itp-batch-card-role{font-size: 10.5px; color: var(--fg-muted); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700;}body.o_itokyo_tp .itp-lvl-badge{display: inline-flex; align-items: center; justify-content: center; min-width: 42px; height: 28px; padding: 0 11px; border-radius: 9px; background: var(--lvl-color, var(--navy-900)); color: #fff; font-family: var(--font-display); font-weight: 700; font-size: 12.5px; letter-spacing: 0.02em; box-shadow: 0 4px 12px -6px color-mix(in srgb, var(--lvl-color, var(--navy-900)) 60%, transparent);}body.o_itokyo_tp .itp-batch-card.lvl-n5{--lvl-color: #1a2744;}body.o_itokyo_tp .itp-batch-card.lvl-n4{--lvl-color: #2e498d;}body.o_itokyo_tp .itp-batch-card.lvl-n3{--lvl-color: #8a2247;}body.o_itokyo_tp .itp-batch-card.lvl-n2{--lvl-color: #b53639;}body.o_itokyo_tp .itp-batch-card.lvl-n1{--lvl-color: #E52628;}body.o_itokyo_tp .itp-batch-card.lvl-business{--lvl-color: #D4AF37;}body.o_itokyo_tp .itp-batch-card.lvl-conversation{--lvl-color: #4f6a35;}body.o_itokyo_tp .itp-batch-card.lvl-hiragana-katakana{--lvl-color: #2a5562;}body.o_itokyo_tp .itp-batch-card.lvl-custom{--lvl-color: #6b7280;}body.o_itokyo_tp .itp-batch-card-meta{display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 12px;}body.o_itokyo_tp .itp-batch-card-meta > div{background: var(--neutral-100); border-radius: 10px; padding: 10px 10px; display: flex; flex-direction: column;}body.o_itokyo_tp .itp-batch-card-meta b{font-family: var(--font-display); font-size: 16px; font-weight: 700; color: var(--navy-900); line-height: 1.1; font-variant-numeric: tabular-nums;}body.o_itokyo_tp .itp-batch-card-meta span{font-size: 10px; color: var(--fg-muted); text-transform: uppercase; letter-spacing: 0.06em; font-weight: 600; margin-top: 4px;}body.o_itokyo_tp .itp-batch-card-bar{height: 6px; border-radius: 999px; background: var(--neutral-100); overflow: hidden; margin-bottom: 6px;}body.o_itokyo_tp .itp-batch-card-bar-fill{height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--lvl-color, var(--navy-700)), color-mix(in srgb, var(--lvl-color, var(--navy-700)) 65%, #fff)); transition: width 0.6s cubic-bezier(0.16, 1, 0.3, 1); min-width: 4px;}body.o_itokyo_tp .itp-batch-card-today{margin-top: 10px; padding: 10px 12px; background: var(--neutral-100); border-radius: 10px; font-size: 12.5px; display: flex; align-items: center; flex-wrap: wrap; gap: 6px;}body.o_itokyo_tp .itp-batch-card-today-t{font-weight: 600; color: var(--navy-900);}body.o_itokyo_tp .itp-focus-card{background: var(--bg-surface); border: 1px solid var(--border-subtle); border-radius: 18px; padding: 20px 22px 18px; animation: itp-rise 520ms cubic-bezier(0.16, 1, 0.3, 1) both;}body.o_itokyo_tp .itp-focus-card p{margin: 0 0 14px; color: var(--fg-muted); line-height: 1.55;}body.o_itokyo_tp .itp-focus-actions{display: flex; flex-wrap: wrap; gap: 10px;}body.o_itokyo_tp .itp-btn.ghost{background: transparent; border-color: transparent; color: var(--red-500); padding: 6px 10px; font-size: 12.5px;}body.o_itokyo_tp .itp-btn.ghost:hover{background: color-mix(in srgb, var(--red-500) 8%, transparent);}body.o_itokyo_tp .dsk-nav-item{position: relative; transition: background 0.12s, color 0.12s;}body.o_itokyo_tp .dsk-nav-item.active{background: rgba(229, 38, 40, 0.16); color: #fff;}body.o_itokyo_tp .dsk-nav-item.active::before{content: ''; position: absolute; left: 0; top: 7px; bottom: 7px; width: 3px; background: var(--red-500); border-radius: 0 3px 3px 0; box-shadow: 0 0 12px var(--red-500);}body.o_itokyo_tp .dsk-nav-item:hover{background: rgba(255, 255, 255, 0.04); color: #fff;}body.o_itokyo_tp .dsk-nav-item.itp-soon:hover{background: transparent; color: var(--fg-muted);}@media (max-width: 1100px){body.o_itokyo_tp .itp-stat-grid{grid-template-columns: repeat(2, minmax(0, 1fr));}}@media (max-width: 720px){body.o_itokyo_tp .itp-hero-pro{padding: 24px 20px; border-radius: 18px;}body.o_itokyo_tp .itp-hero-pro-inner{grid-template-columns: 1fr;}body.o_itokyo_tp .itp-hero-pill{width: 100%;}body.o_itokyo_tp .itp-stat-grid{grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px;}body.o_itokyo_tp .itp-stat-pro{min-height: 130px; padding: 14px;}body.o_itokyo_tp .itp-stat-pro-val{font-size: 32px;}body.o_itokyo_tp .itp-today-card{grid-template-columns: 78px 1fr; row-gap: 8px;}body.o_itokyo_tp .itp-today-card .itp-today-att, body.o_itokyo_tp .itp-today-card .itp-today-status{grid-column: 1 / -1; justify-self: end;}body.o_itokyo_tp .itp-quiet-day{grid-template-columns: auto 1fr;}body.o_itokyo_tp .itp-quiet-day .itp-btn{grid-column: 1 / -1; justify-self: stretch; text-align: center;}}@media (max-width: 480px){body.o_itokyo_tp .itp-stat-grid{grid-template-columns: 1fr;}}body.o_itokyo_tp .dsk-greet .av-init{display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 14px; background: linear-gradient(135deg, var(--red-500, #E52628), var(--gold-400, #C9A23A)); color: #fff; font-family: var(--font-display, 'Outfit', sans-serif); font-weight: 700; font-size: 14px; letter-spacing: 0.02em; flex-shrink: 0; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.12);}body.o_itokyo_tp .dsk-greet-text{flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px;}body.o_itokyo_tp .dsk-topbar-batch{display: flex; align-items: center; justify-content: center; min-width: 0;}body.o_itokyo_tp .dsk-batch-form{margin: 0;}body.o_itokyo_tp .dsk-batch-trigger{display: inline-flex; align-items: center; gap: 10px; background: var(--bg-surface, #fff); border: 1px solid var(--border-subtle, rgba(15,23,42,0.08)); border-radius: 14px; padding: 6px 14px 6px 6px; cursor: pointer; transition: border-color 0.14s, box-shadow 0.14s; max-width: 360px; min-width: 240px;}body.o_itokyo_tp .dsk-batch-trigger:hover{border-color: var(--red-300, #ffc2c4); box-shadow: 0 8px 18px -12px rgba(15, 23, 42, 0.18);}body.o_itokyo_tp .dsk-batch-icon{display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 10px; background: color-mix(in srgb, var(--red-500, #E52628) 12%, transparent); color: var(--red-500, #E52628); flex-shrink: 0;}body.o_itokyo_tp .dsk-batch-body{display: flex; flex-direction: column; min-width: 0; gap: 1px;}body.o_itokyo_tp .dsk-batch-label{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 9.5px; font-weight: 700; letter-spacing: 0.16em; color: var(--fg-muted, #6b7280); text-transform: uppercase;}body.o_itokyo_tp .dsk-batch-select{appearance: none; -webkit-appearance: none; background: transparent url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a2744' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M6 9l6 6 6-6'/></svg>") no-repeat right 0 center / 16px 16px; border: none; outline: none; padding: 0 22px 0 0; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 13.5px; font-weight: 600; color: var(--navy-900, #1a2744); cursor: pointer; max-width: 280px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden;}body.o_itokyo_tp .dsk-batch-select:focus{box-shadow: var(--shadow-ring, 0 0 0 3px rgba(229,38,40,0.18)); border-radius: 6px;}body.o_itokyo_tp .dsk-batch-go{position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;}body.o_itokyo_tp .dsk-batch-go:focus, body.o_itokyo_tp .dsk-batch-go:focus-visible{position: static; width: auto; height: auto; margin: 0 0 0 8px; padding: 7px 14px; overflow: visible; clip: auto; border-radius: 10px; border: 1px solid var(--red-500, #E52628); background: var(--red-500, #E52628); color: #fff; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 12.5px; font-weight: 600; cursor: pointer;}body.o_itokyo_tp .dsk-topbar.teacher{display: grid; grid-template-columns: minmax(180px, 1fr) auto minmax(280px, 1fr); align-items: center; gap: 16px; padding: 14px 22px; background: var(--bg-surface, #fff); border-bottom: 1px solid var(--border-subtle, rgba(15,23,42,0.08));}body.o_itokyo_tp .dsk-tools{display: inline-flex; align-items: center; gap: 10px; justify-self: end;}body.o_itokyo_tp .dsk-tool.icon{position: relative; display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 999px; border: 1px solid var(--border-subtle, rgba(15,23,42,0.08)); background: var(--bg-surface, #fff); color: var(--navy-900, #1a2744); text-decoration: none; transition: background 0.12s, border-color 0.12s;}body.o_itokyo_tp .dsk-tool.icon:hover{background: var(--neutral-100, #f5f6f8); border-color: var(--neutral-200, #e5e7eb);}body.o_itokyo_tp .dsk-tool-dot{position: absolute; top: 8px; right: 9px; width: 8px; height: 8px; border-radius: 50%; background: var(--red-500, #E52628); border: 2px solid var(--bg-surface, #fff);}body.o_itokyo_tp .dsk-quickadd{display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px 8px 11px; border-radius: 999px; background: var(--red-500, #E52628); color: #fff; font-family: var(--font-display, 'Outfit', sans-serif); font-weight: 700; font-size: 13px; text-decoration: none; border: none; cursor: pointer; box-shadow: 0 6px 14px -6px rgba(229, 38, 40, 0.45); transition: background 0.14s, transform 0.06s, box-shadow 0.14s; white-space: nowrap;}body.o_itokyo_tp .dsk-quickadd:hover{background: var(--red-600, #c91e20); color: #fff; box-shadow: 0 10px 18px -8px rgba(229, 38, 40, 0.55);}body.o_itokyo_tp .dsk-quickadd:active{transform: translateY(1px);}body.o_itokyo_tp .dsk-search.compact{display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; background: var(--neutral-100, #f5f6f8); border: 1px solid transparent; color: var(--fg-muted, #6b7280); transition: background 0.12s, border-color 0.12s; min-width: 240px;}body.o_itokyo_tp .dsk-search.compact:focus-within{background: var(--bg-surface, #fff); border-color: var(--neutral-200, #e5e7eb);}body.o_itokyo_tp .dsk-search.compact input{flex: 1; min-width: 0; background: transparent; border: none; outline: none; font: inherit; font-size: 13px; color: var(--navy-900, #1a2744);}body.o_itokyo_tp .dsk-search.compact input::placeholder{color: var(--fg-muted, #6b7280);}body.o_itokyo_tp .dsk-search-mini{display: none; position: relative; align-items: center; justify-content: center; width: 44px; height: 44px; border-radius: 999px; border: 1px solid var(--border-subtle, rgba(15,23,42,0.08)); background: var(--bg-surface, #fff); color: var(--navy-900, #1a2744); text-decoration: none;}body.o_itokyo_tp .dsk-search-mini:hover{background: var(--neutral-100, #f5f6f8); border-color: var(--neutral-200, #e5e7eb);}body.o_itokyo_tp .dsk-nav-item.soon{cursor: default; opacity: 0.6; pointer-events: none;}body.o_itokyo_tp .dsk-nav-item.soon:hover{background: transparent; color: inherit;}body.o_itokyo_tp .dsk-nav-badge.soon{font-size: 9px; letter-spacing: 0.08em; text-transform: uppercase; padding: 2px 7px; background: rgba(255, 255, 255, 0.06); color: rgba(255, 255, 255, 0.5); border-radius: 999px;}body.o_itokyo_tp .dsk-foot{margin-top: auto; padding: 14px 18px; border-top: 1px solid rgba(255, 255, 255, 0.06);}body.o_itokyo_tp .dsk-foot-row{display: flex; align-items: center; justify-content: space-between; gap: 10px;}body.o_itokyo_tp .dsk-foot-link{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 11.5px; font-weight: 600; color: rgba(255, 255, 255, 0.6); text-decoration: none; letter-spacing: 0.02em; transition: color 0.12s;}body.o_itokyo_tp .dsk-foot-link:hover{color: #fff;}body.o_itokyo_tp .dsk-signout{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 12px; font-weight: 700; color: var(--red-300, #F58A8A); text-decoration: none; letter-spacing: 0.01em; padding: 4px 6px; border-radius: 6px; transition: background 0.12s, color 0.12s;}body.o_itokyo_tp .dsk-signout:hover{background: rgba(229, 38, 40, 0.12); color: #ff7878;}body.o_itokyo_tp .dsk-content .greet{display: flex; align-items: flex-start; justify-content: space-between; gap: 18px; padding: 6px 0 22px; border-bottom: 1px solid var(--border-subtle, rgba(15,23,42,0.06)); margin-bottom: 22px;}body.o_itokyo_tp .dsk-content .greet .greet-text{flex: 1; min-width: 0;}body.o_itokyo_tp .dsk-content .greet .jp{display: block; font-family: var(--font-jp, 'Noto Sans JP', sans-serif); font-size: 12.5px; color: var(--red-500, #E52628); letter-spacing: 0.05em; font-weight: 500; margin-bottom: 6px;}body.o_itokyo_tp .dsk-content .greet .jp .title, body.o_itokyo_tp .dsk-content .greet .jp .lvls{font-family: var(--font-display, 'Outfit', sans-serif); letter-spacing: 0.02em;}body.o_itokyo_tp .dsk-content .greet h1{font-family: var(--font-display, 'Outfit', sans-serif); font-size: clamp(28px, 3vw, 36px); font-weight: 800; line-height: 1.15; letter-spacing: -0.02em; color: var(--navy-900, #1a2744); margin: 0 0 8px;}body.o_itokyo_tp .dsk-content .greet h1 .name-link{color: inherit; text-decoration: none;}body.o_itokyo_tp .dsk-content .greet h1 em{font-style: normal; color: var(--red-500, #E52628);}body.o_itokyo_tp .dsk-content .greet .sub{font-size: 14.5px; color: var(--fg-muted, #6b7280); line-height: 1.55; max-width: 680px;}body.o_itokyo_tp .dsk-content .greet .sub b{color: var(--navy-900, #1a2744); font-weight: 600;}body.o_itokyo_tp .dsk-content .greet .av{display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; border-radius: 18px; background: linear-gradient(135deg, var(--navy-700, #2e498d), var(--navy-500, #4661a8)); color: #fff; font-family: var(--font-display, 'Outfit', sans-serif); font-weight: 700; font-size: 18px; text-decoration: none; flex-shrink: 0; letter-spacing: 0.02em;}body.o_itokyo_tp .dsk-content .stats2.dsk6{gap: 12px; margin-bottom: 24px;}body.o_itokyo_tp .dsk-content .stat{background: var(--bg-surface, #fff); border: 1px solid var(--border-subtle, rgba(15,23,42,0.08)); border-radius: 16px; padding: 16px 18px; display: flex; flex-direction: column; gap: 8px; transition: transform 0.16s, box-shadow 0.16s, border-color 0.16s;}body.o_itokyo_tp .dsk-content .stat:hover{transform: translateY(-2px); border-color: var(--neutral-200, #e5e7eb); box-shadow: 0 16px 28px -20px rgba(15, 23, 42, 0.18);}body.o_itokyo_tp .dsk-content .stat .lab{display: inline-flex; align-items: center; gap: 8px; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 10.5px; font-weight: 700; color: var(--fg-muted, #6b7280); letter-spacing: 0.13em; text-transform: uppercase;}body.o_itokyo_tp .dsk-content .stat .ic{display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 8px; font-family: var(--font-jp-serif, 'Noto Serif JP', serif); font-size: 13px; font-weight: 700; flex-shrink: 0;}body.o_itokyo_tp .dsk-content .stat .ic.red{background: color-mix(in srgb, var(--red-500, #E52628) 14%, transparent); color: var(--red-600, #c91e20);}body.o_itokyo_tp .dsk-content .stat .ic.navy{background: color-mix(in srgb, var(--navy-700, #2e498d) 14%, transparent); color: var(--navy-700, #2e498d);}body.o_itokyo_tp .dsk-content .stat .ic.gold{background: color-mix(in srgb, #D4AF37 18%, transparent); color: #b8941f;}body.o_itokyo_tp .dsk-content .stat .ic.warn{background: rgba(245, 158, 11, 0.16); color: #b7791f;}body.o_itokyo_tp .dsk-content .stat .ic.success{background: color-mix(in srgb, #22c55e 16%, transparent); color: #166534;}body.o_itokyo_tp .dsk-content .stat .val{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 32px; font-weight: 800; letter-spacing: -0.03em; color: var(--navy-900, #1a2744); line-height: 1; font-variant-numeric: tabular-nums;}body.o_itokyo_tp .dsk-content .stat .delta{font-size: 11.5px; color: var(--fg-muted, #6b7280);}body.o_itokyo_tp .dsk-content .stat .delta.warn{color: #b7791f;}@media (max-width: 1180px){body.o_itokyo_tp .dsk-content .stats2.dsk6{grid-template-columns: repeat(2, 1fr);}}@media (max-width: 560px){body.o_itokyo_tp .dsk-content .stats2.dsk6{grid-template-columns: 1fr;}body.o_itokyo_tp .dsk-content .card{padding: 16px 14px; border-radius: 14px;}body.o_itokyo_tp .dsk-content .card.flush{padding: 0;}}body.o_itokyo_tp .dsk-content .card{background: var(--bg-surface, #fff); border: 1px solid var(--border-subtle, rgba(15,23,42,0.08)); border-radius: 18px; padding: 20px 22px; margin-bottom: 16px;}body.o_itokyo_tp .dsk-content .card .card-head{display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px;}body.o_itokyo_tp .dsk-content .card .card-head h3{margin: 0; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 16px; font-weight: 700; color: var(--navy-900, #1a2744); letter-spacing: -0.01em;}body.o_itokyo_tp .dsk-content .card .card-head .link{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 12.5px; font-weight: 600; color: var(--red-500, #E52628); text-decoration: none; background: none; border: none; cursor: pointer; padding: 4px 8px; border-radius: 8px; transition: background 0.12s;}body.o_itokyo_tp .dsk-content .card .card-head .link:hover{background: color-mix(in srgb, var(--red-500, #E52628) 10%, transparent);}body.o_itokyo_tp .dsk-content .card .empty{text-align: center; padding: 32px 16px;}body.o_itokyo_tp .dsk-content .card .empty .glyph{font-family: var(--font-jp-serif, 'Noto Serif JP', serif); font-size: 28px; color: var(--navy-400); width: 60px; height: 60px; border-radius: 50%; background: var(--navy-50); display: inline-flex; align-items: center; justify-content: center; line-height: 1; margin: 0 auto 12px;}body.o_itokyo_tp .dsk-content .card .empty b{display: block; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 14px; color: var(--navy-900, #1a2744); margin-bottom: 4px;}body.o_itokyo_tp .dsk-content .card .empty p{margin: 0; font-size: 12.5px; color: var(--fg-muted, #6b7280);}body.o_itokyo_tp .schedule-list{display: flex; flex-direction: column; gap: 10px;}body.o_itokyo_tp .schedule-list .classcard{display: grid; grid-template-columns: 84px 1fr auto; align-items: center; gap: 18px; padding: 14px 16px; background: var(--bg-surface, #fff); border: 1px solid var(--border-subtle, rgba(15,23,42,0.08)); border-radius: 14px; transition: border-color 0.14s, box-shadow 0.14s;}body.o_itokyo_tp .schedule-list .classcard:hover{border-color: var(--neutral-200, #e5e7eb); box-shadow: 0 12px 22px -16px rgba(15, 23, 42, 0.16);}body.o_itokyo_tp .schedule-list .classcard.live{border-color: var(--red-500, #E52628); background: linear-gradient(135deg, color-mix(in srgb, var(--red-500, #E52628) 5%, transparent), transparent 80%), var(--bg-surface, #fff);}body.o_itokyo_tp .schedule-list .classcard .when{display: flex; flex-direction: column; gap: 2px; border-right: 1px solid var(--border-subtle, rgba(15,23,42,0.08)); padding-right: 16px;}body.o_itokyo_tp .schedule-list .classcard .when b{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 18px; font-weight: 800; color: var(--navy-900, #1a2744); letter-spacing: -0.02em; font-variant-numeric: tabular-nums;}body.o_itokyo_tp .schedule-list .classcard .when span{font-size: 11.5px; color: var(--fg-muted, #6b7280);}body.o_itokyo_tp .schedule-list .classcard .info{min-width: 0;}body.o_itokyo_tp .schedule-list .classcard .info b{display: block; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 14.5px; font-weight: 600; color: var(--navy-900, #1a2744);}body.o_itokyo_tp .schedule-list .classcard .info > span{display: block; font-size: 12.5px; color: var(--fg-muted, #6b7280); margin-top: 3px;}body.o_itokyo_tp .schedule-list .classcard .info .meta-row{display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 6px;}body.o_itokyo_tp .schedule-list .classcard .info .meta-mode{font-size: 11.5px; color: var(--fg-muted, #6b7280);}body.o_itokyo_tp .schedule-list .classcard .actions{display: flex; flex-direction: column; gap: 6px; flex-shrink: 0;}body.o_itokyo_tp .bd[data-dot="1"]{display: inline-flex; align-items: center; gap: 6px;}body.o_itokyo_tp .bd[data-dot="1"]::before{content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: 0.85;}body.o_itokyo_tp .bd.done{background: color-mix(in srgb, #22c55e 14%, transparent); color: #166534;}body.o_itokyo_tp .bd.over{background: color-mix(in srgb, #f59e0b 14%, transparent); color: #b7791f;}body.o_itokyo_tp .bd.gold{background: color-mix(in srgb, #D4AF37 16%, transparent); color: var(--gold-600, #7E6418);}body.o_itokyo_tp .dsk-content .brow{display: flex; align-items: center; gap: 12px; padding: 12px 14px; background: var(--neutral-100, #f5f6f8); border-radius: 12px; text-decoration: none; color: var(--navy-900, #1a2744); border: 1px solid transparent; transition: background 0.12s, border-color 0.12s, transform 0.06s;}body.o_itokyo_tp .dsk-content .brow:hover{background: var(--bg-surface, #fff); border-color: var(--neutral-200, #e5e7eb);}body.o_itokyo_tp .dsk-content .brow:active{transform: translateY(1px);}body.o_itokyo_tp .dsk-content .brow .body{flex: 1; min-width: 0;}body.o_itokyo_tp .dsk-content .brow .body b{display: block; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 13.5px; font-weight: 600; color: var(--navy-900, #1a2744);}body.o_itokyo_tp .dsk-content .brow .body span{display: block; font-size: 11.5px; color: var(--fg-muted, #6b7280); margin-top: 2px;}body.o_itokyo_tp .dsk-content .brow .chev{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 18px; color: var(--neutral-400, #9ca3af); flex-shrink: 0;}body.o_itokyo_tp .dsk-content .ktile{display: inline-flex; align-items: center; justify-content: center; width: 38px; height: 38px; border-radius: 10px; font-family: var(--font-jp-serif, 'Noto Serif JP', serif); font-size: 17px; font-weight: 700; flex-shrink: 0;}body.o_itokyo_tp .dsk-content .sec-label{display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin: 8px 0 10px;}body.o_itokyo_tp .dsk-content .sec-label h2{margin: 0; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 17px; font-weight: 700; color: var(--navy-900, #1a2744); letter-spacing: -0.01em;}body.o_itokyo_tp .dsk-content .sec-label .link{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 12.5px; font-weight: 600; color: var(--red-500, #E52628); text-decoration: none;}body.o_itokyo_tp .dsk-content .dsk-batch-grid{display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px;}body.o_itokyo_tp .dsk-content .card.batch-card{padding: 16px 18px; margin: 0; display: flex; flex-direction: column; gap: 12px; text-decoration: none; transition: transform 0.16s, border-color 0.16s, box-shadow 0.16s;}body.o_itokyo_tp .dsk-content .card.batch-card:hover{transform: translateY(-2px); border-color: var(--neutral-200, #e5e7eb); box-shadow: 0 18px 30px -22px rgba(15, 23, 42, 0.22);}body.o_itokyo_tp .dsk-content .card.batch-card .batch-card-head{display: flex; align-items: center; gap: 12px;}body.o_itokyo_tp .dsk-content .card.batch-card .batch-card-name{flex: 1; min-width: 0;}body.o_itokyo_tp .dsk-content .card.batch-card .batch-card-name b{display: block; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 14px; font-weight: 700; color: var(--navy-900, #1a2744); line-height: 1.25;}body.o_itokyo_tp .dsk-content .card.batch-card .batch-card-name span{font-size: 11.5px; color: var(--fg-muted, #6b7280);}body.o_itokyo_tp .dsk-content .card.batch-card .batch-card-meta{display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px 14px;}body.o_itokyo_tp .dsk-content .card.batch-card .batch-card-meta > div{display: flex; flex-direction: column; gap: 2px;}body.o_itokyo_tp .dsk-content .card.batch-card .batch-card-meta span{font-size: 10.5px; color: var(--fg-muted, #6b7280); letter-spacing: 0.06em; text-transform: uppercase; font-weight: 600;}body.o_itokyo_tp .dsk-content .card.batch-card .batch-card-meta b{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 14px; font-weight: 700; color: var(--navy-900, #1a2744); font-variant-numeric: tabular-nums;}body.o_itokyo_tp .dsk-content .btn{display: inline-flex; align-items: center; justify-content: center; gap: 4px; padding: 6px 12px; border-radius: 8px; font-family: var(--font-display, 'Outfit', sans-serif); font-weight: 600; font-size: 12.5px; text-decoration: none; border: 1px solid var(--border-default, #D2D2CC); background: var(--neutral-50, #FAFAF8); color: var(--navy-900, #1a2744); cursor: pointer; transition: background 0.12s, border-color 0.12s, transform 0.06s;}body.o_itokyo_tp .dsk-content .btn:hover{background: var(--neutral-100, #f5f6f8); border-color: var(--neutral-400, #A5A5A0);}body.o_itokyo_tp .dsk-content .btn:active{transform: translateY(1px);}body.o_itokyo_tp .dsk-content .btn.primary{background: var(--red-500, #E52628); color: #fff; border-color: transparent;}body.o_itokyo_tp .dsk-content .btn.primary:hover{background: var(--red-600, #c91e20);}body.o_itokyo_tp .dsk-content .btn.sm{padding: 5px 10px; font-size: 11.5px;}@media (max-width: 1180px){body.o_itokyo_tp .dsk-topbar.teacher{grid-template-columns: 1fr auto;}body.o_itokyo_tp .dsk-topbar.teacher .dsk-topbar-batch{grid-column: 1 / -1; order: 3; justify-content: flex-start;}body.o_itokyo_tp .dsk-search.compact{min-width: 0; max-width: 220px;}}@media (max-width: 720px){body.o_itokyo_tp .dsk-search.compact{display: none;}body.o_itokyo_tp .dsk-search-mini{display: inline-flex;}body.o_itokyo_tp .dsk-quickadd span{display: none;}body.o_itokyo_tp .schedule-list .classcard{grid-template-columns: 72px 1fr;}body.o_itokyo_tp .schedule-list .classcard .actions{grid-column: 1 / -1; flex-direction: row;}body.o_itokyo_tp .dsk-topbar.teacher{padding-top: calc(10px + env(safe-area-inset-top, 0px)); padding-left: calc(14px + env(safe-area-inset-left, 0px)); padding-right: calc(14px + env(safe-area-inset-right, 0px)); padding-bottom: 10px; gap: 10px;}body.o_itokyo_tp .dsk-topbar-batch{width: 100%;}body.o_itokyo_tp .dsk-batch-form{width: 100%;}body.o_itokyo_tp .dsk-batch-trigger{min-width: 0; max-width: 100%; width: 100%; min-height: 44px; gap: 8px; padding: 5px 12px 5px 5px;}body.o_itokyo_tp .dsk-batch-select{max-width: none; width: 100%; flex: 1; padding-top: 8px; padding-bottom: 8px; font-size: 16px;}body.o_itokyo_tp .dsk-batch-icon{width: 30px; height: 30px;}body.o_itokyo_tp .dsk-tool.icon{width: 44px; height: 44px;}body.o_itokyo_tp .dsk-tool-dot{top: 10px; right: 11px;}body.o_itokyo_tp .dsk-quickadd{width: 44px; height: 44px; padding: 0; gap: 0; justify-content: center; border-radius: 999px;}body.o_itokyo_tp .dsk-batch-label, body.o_itokyo_tp .batch-card-meta span, body.o_itokyo_tp .itp-card-meta span{font-size: 10.5px; letter-spacing: 0.04em;}body.o_itokyo_tp .dsk-content .stat .lab{white-space: normal; overflow: visible; text-overflow: clip; line-height: 1.2; align-items: flex-start;}body.o_itokyo_tp .dsk-content .page-header-desktop h1{white-space: normal; font-size: 22px; line-height: 1.2;}body.o_itokyo_tp .itp-tabs{display: flex; max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none;}body.o_itokyo_tp .itp-tabs::-webkit-scrollbar{display: none;}body.o_itokyo_tp .itp-tab{flex: 0 0 auto; white-space: nowrap;}body.o_itokyo_tp .dsk-content b, body.o_itokyo_tp .dsk-content span, body.o_itokyo_tp .dsk-content a{overflow-wrap: anywhere;}body.o_itokyo_tp .itp-att-progress{margin-left: 0; width: 100%;}}body.o_itokyo_tp .batch-card-bar{height: 6px; border-radius: 999px; background: var(--neutral-100, #f5f6f8); overflow: hidden; margin-top: 4px;}body.o_itokyo_tp .batch-card-bar-fill{height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--navy-700, #2e498d), var(--red-500, #E52628)); transition: width 0.6s cubic-bezier(0.16, 1, 0.3, 1); min-width: 4px;}body.o_itokyo_tp .dsk-content .card.flush{padding: 0; overflow: hidden;}body.o_itokyo_tp .dsk-content .card.flush > .student-row{border-bottom: 1px solid var(--border-subtle, rgba(15,23,42,0.06));}body.o_itokyo_tp .dsk-content .card.flush > .student-row:last-child{border-bottom: none;}body.o_itokyo_tp .dsk-content .search-field{display: flex; align-items: center; gap: 10px; padding: 10px 14px; background: var(--bg-surface, #fff); border: 1px solid var(--border-subtle, rgba(15,23,42,0.08)); border-radius: 12px; margin-bottom: 12px;}body.o_itokyo_tp .dsk-content .search-field input{flex: 1; border: none; outline: none; background: transparent; font: inherit; font-size: 14px; color: var(--navy-900, #1a2744);}body.o_itokyo_tp .dsk-nav-item:focus-visible, body.o_itokyo_tp .itp-tab:focus-visible, body.o_itokyo_tp .itp-class-card:focus-visible, body.o_itokyo_tp .itp-pick-row:focus-visible, body.o_itokyo_tp .itp-today-card:focus-visible, body.o_itokyo_tp .itp-batch-card:focus-visible, body.o_itokyo_tp .bs-item:focus-visible, body.o_itokyo_tp .dsk-tool:focus-visible, body.o_itokyo_tp .dsk-tool.icon:focus-visible, body.o_itokyo_tp .dsk-quickadd:focus-visible{outline: 2px solid var(--red-500); outline-offset: 2px; border-radius: 10px; position: relative; z-index: 1;}@media (prefers-reduced-motion: reduce){body.o_itokyo_tp .bd.live, body.o_itokyo_tp .itp-hero-pill.live .itp-hero-pill-dot, body.o_itokyo_tp .live-pulse, body.o_itokyo_tp .sync-dot, body.o_itokyo_tp .itp-stat-pro, body.o_itokyo_tp .itp-batch-card, body.o_itokyo_tp .itp-today-card, body.o_itokyo_tp .itp-quiet-day, body.o_itokyo_tp .itp-hero-pro{animation: none !important;}}.tp-progress{position: fixed; top: 0; left: 0; right: 0; height: 2.5px; z-index: 2147483646; pointer-events: none; background: transparent;}.tp-progress .tp-progress-fill{height: 100%; width: 0; background: linear-gradient(90deg, var(--red-500, #E52628), #ffb6b8 50%, var(--red-500, #E52628)); background-size: 200% 100%; box-shadow: 0 0 8px rgba(229, 38, 40, 0.55); transition: width 0.36s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.22s ease;}.tp-progress.go .tp-progress-fill{width: 70%; animation: tp-progress-shimmer 1.6s linear infinite;}.tp-progress.done .tp-progress-fill{width: 100%; opacity: 0;}@keyframes tp-progress-shimmer{0%{background-position: 0% 0;}100%{background-position: 200% 0;}}body.o_itokyo_tp .dsk-content > section.tp-loading{pointer-events: none; position: relative;}body.o_itokyo_tp .dsk-content > section.tp-loading::after{content: ''; position: absolute; inset: 0; background: rgba(255, 255, 255, 0.55); backdrop-filter: blur(0.5px); z-index: 5; animation: tp-loading-fade 0.2s ease both;}@keyframes tp-loading-fade{from{opacity: 0;}to{opacity: 1;}}body.o_itokyo_tp .dsk-content > section.tp-anim-in{animation: tp-content-in 0.26s cubic-bezier(0.16, 1, 0.3, 1) both;}@keyframes tp-content-in{from{opacity: 0; transform: translateY(8px);}to{opacity: 1; transform: translateY(0);}}@media (prefers-reduced-motion: reduce){body.o_itokyo_tp .dsk-content > section.tp-anim-in{animation: none;}}.tp-toast-host{position: fixed; bottom: 24px; right: 24px; z-index: 2147483647; display: flex; flex-direction: column-reverse; gap: 10px; pointer-events: none; max-width: calc(100vw - 48px);}.tp-toast{pointer-events: auto; display: inline-flex; align-items: center; gap: 10px; padding: 12px 18px 12px 14px; background: var(--navy-900, #0e1a36); color: #fff; border-radius: 14px; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 13.5px; font-weight: 500; box-shadow: 0 18px 32px -16px rgba(15, 23, 42, 0.45), 0 4px 8px rgba(15, 23, 42, 0.18); opacity: 0; transform: translateY(18px) scale(0.96); transition: opacity 0.22s ease, transform 0.22s cubic-bezier(0.16, 1, 0.3, 1); max-width: 420px;}.tp-toast.in{opacity: 1; transform: translateY(0) scale(1);}.tp-toast.out{opacity: 0; transform: translateY(8px) scale(0.96);}.tp-toast .tp-toast-ic{display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border-radius: 999px; background: rgba(255, 255, 255, 0.15); font-weight: 700; font-size: 12.5px; flex-shrink: 0;}.tp-toast.tone-ok{background: linear-gradient(135deg, #166534, #14532d);}.tp-toast.tone-ok .tp-toast-ic{background: rgba(255, 255, 255, 0.22);}.tp-toast.tone-err{background: linear-gradient(135deg, #991b1b, #7f1d1d);}.tp-toast.tone-err .tp-toast-ic{background: rgba(255, 255, 255, 0.22);}.tp-toast.tone-info{background: linear-gradient(135deg, #1e3a8a, #1e40af);}.tp-toast.tone-info .tp-toast-ic{background: rgba(255, 255, 255, 0.22); font-family: serif; font-style: italic;}@media (max-width: 560px){.tp-toast-host{left: 12px; right: 12px; bottom: 12px; align-items: stretch;}.tp-toast{width: 100%; max-width: none;}}body.o_itokyo_tp button[type=submit][disabled], body.o_itokyo_tp .btn[type=submit][disabled]{opacity: 0.78; cursor: progress; position: relative;}body.o_itokyo_tp button[type=submit][disabled]::after{content: ''; position: absolute; right: 12px; top: 50%; transform: translateY(-50%); width: 14px; height: 14px; border: 2px solid rgba(255, 255, 255, 0.4); border-top-color: #fff; border-radius: 50%; animation: tp-spin 0.7s linear infinite;}@keyframes tp-spin{to{transform: translateY(-50%) rotate(360deg);}}body.o_itokyo_tp .tp-quickadd-wrap{position: relative;}body.o_itokyo_tp .tp-quickadd-menu{position: absolute; top: calc(100% + 8px); right: 0; z-index: 200; width: 320px; max-width: calc(100vw - 32px); background: var(--bg-surface, #fff); border: 1px solid var(--border-subtle, rgba(15,23,42,0.08)); border-radius: 14px; box-shadow: 0 24px 48px -16px rgba(15, 23, 42, 0.22), 0 8px 18px -10px rgba(15, 23, 42, 0.12); padding: 6px; flex-direction: column; gap: 2px; animation: tp-quickadd-in 0.16s cubic-bezier(0.16, 1, 0.3, 1) both;}@keyframes tp-quickadd-in{from{opacity: 0; transform: translateY(-6px) scale(0.98);}to{opacity: 1; transform: translateY(0) scale(1);}}body.o_itokyo_tp .tp-quickadd-item{display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 10px; text-decoration: none; color: var(--navy-900, #1a2744); transition: background 0.12s;}body.o_itokyo_tp .tp-quickadd-item:hover{background: var(--neutral-100, #f5f6f8);}body.o_itokyo_tp .tp-quickadd-item > div{display: flex; flex-direction: column; min-width: 0; flex: 1;}body.o_itokyo_tp .tp-quickadd-item b{font-family: var(--font-display, 'Outfit', sans-serif); font-size: 13.5px; font-weight: 600; color: var(--navy-900, #1a2744); line-height: 1.2;}body.o_itokyo_tp .tp-quickadd-item span{font-size: 11.5px; color: var(--fg-muted, #6b7280); margin-top: 2px;}@media (max-width: 720px){body.o_itokyo_tp .tp-quickadd-menu{right: 8px; left: auto; width: min(280px, calc(100vw - 24px)); max-width: calc(100vw - 16px);}}body.o_itokyo_tp .dsk-content form[id^="tp-"][style*="display: block"], body.o_itokyo_tp .dsk-content form[id^="tp-"][style*="display:block"]{animation: tp-content-in 0.22s cubic-bezier(0.16, 1, 0.3, 1) both;}.tp-skel{background: linear-gradient(90deg, var(--neutral-100, #f5f6f8) 0%, rgba(15, 23, 42, 0.04) 50%, var(--neutral-100, #f5f6f8) 100%); background-size: 200% 100%; animation: tp-skel-shimmer 1.4s ease-in-out infinite; border-radius: 12px; color: transparent !important; pointer-events: none;}@keyframes tp-skel-shimmer{0%{background-position: 100% 0;}100%{background-position: 0% 0;}}body.o_itokyo_tp .dsk-content .page-header-desktop{margin-bottom: 18px;}body.o_itokyo_tp .dsk-content .page-header-desktop h1{margin: 0; font-family: var(--font-display, 'Outfit', sans-serif); font-size: 26px; font-weight: 800; color: var(--navy-900, #1a2744); letter-spacing: -0.02em;}body.o_itokyo_tp .dsk-content .page-header-desktop .phd-jp{font-family: var(--font-jp, 'Noto Sans JP', sans-serif); font-size: 11.5px; color: var(--red-500, #E52628); letter-spacing: 0.18em; font-weight: 600; margin-bottom: 4px;}body.o_itokyo_tp .sp-tabbar, body.o_itokyo_tp ~ .sp-tabbar, body.o_itokyo_tp ~ nav.sp-tabbar{display: none !important;}body.o_itokyo_tp .itp-foot{margin-top: auto; padding: 14px 16px 16px; border-top: 1px solid rgba(255, 255, 255, 0.08); background: linear-gradient(180deg, rgba(255,255,255,0) 0%, rgba(0,0,0,0.18) 100%); display: flex; flex-direction: column; gap: 10px;}body.o_itokyo_tp .itp-foot-id{min-width: 0;}body.o_itokyo_tp .itp-foot-name{font-family: var(--font-display); font-weight: 700; font-size: 13px; color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}body.o_itokyo_tp .itp-foot-sub{font-size: 11px; color: rgba(255, 255, 255, 0.55); letter-spacing: 0.01em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-top: 2px;}body.o_itokyo_tp .itp-foot-actions{display: grid; grid-template-columns: 1fr 1fr; gap: 8px;}body.o_itokyo_tp .itp-foot-btn{display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 8px 10px; border-radius: 10px; font-family: var(--font-display); font-weight: 600; font-size: 12.5px; color: rgba(255, 255, 255, 0.86); background: rgba(255, 255, 255, 0.06); border: 1px solid rgba(255, 255, 255, 0.08); text-decoration: none; transition: background 0.12s, color 0.12s, border-color 0.12s;}body.o_itokyo_tp .itp-foot-btn:hover{background: rgba(255, 255, 255, 0.12); color: #fff; border-color: rgba(255, 255, 255, 0.2);}body.o_itokyo_tp .itp-foot-btn.danger{color: #ffd1d3; background: rgba(229, 38, 40, 0.15); border-color: rgba(229, 38, 40, 0.3);}body.o_itokyo_tp .itp-foot-btn.danger:hover{background: rgba(229, 38, 40, 0.28); color: #fff; border-color: rgba(229, 38, 40, 0.55);}body.o_itokyo_tp .itp-foot-btn span:first-child{font-size: 13px; opacity: 0.8;}body.o_itokyo_tp .dsk-foot + .dsk-foot, body.o_itokyo_tp .itp-foot{display: none !important;}@media (max-width: 1024px){body.o_itokyo_tp .itp-foot{padding: 16px;}body.o_itokyo_tp .itp-foot-btn{padding: 10px 12px; font-size: 13px;}}@media (max-width: 768px){body.o_itokyo_tp .dsk-content form input, body.o_itokyo_tp .dsk-content form select, body.o_itokyo_tp .dsk-content form textarea{font-size: 16px !important;}body.o_itokyo_tp .dsk-content .btn, body.o_itokyo_tp .dsk-content .btn.sm{min-height: 44px; padding-top: 0; padding-bottom: 0; font-size: 13px;}body.o_itokyo_tp .tp-sub-row form{flex-direction: column; align-items: stretch; gap: 8px;}body.o_itokyo_tp .tp-sub-row form input, body.o_itokyo_tp .tp-sub-row form select{width: 100% !important; min-width: 0 !important;}body.o_itokyo_tp .tp-sub-row form .btn{width: 100%; min-height: 44px;}}@media (max-width: 560px){body.o_itokyo_tp .student-row{flex-wrap: wrap;}body.o_itokyo_tp .student-row .body{flex: 1 1 100%; min-width: 0;}body.o_itokyo_tp .student-row .end{flex: 1 1 100%; flex-direction: row; justify-content: flex-start; align-items: center; gap: 6px; margin-left: 52px;}body.o_itokyo_tp .marks-row{padding: 12px 14px;}body.o_itokyo_tp .marks-row .marks-inputs input{width: 88px !important; min-height: 44px; font-size: 16px !important;}body.o_itokyo_tp .marks-row .marks-total{display: none;}body.o_itokyo_tp form[id^="tp-reply-"]{padding-left: 16px !important;}body.o_itokyo_tp form[id^="tp-reply-"] > div{flex-direction: column; align-items: stretch;}body.o_itokyo_tp form[id^="tp-reply-"] .btn{width: 100%; min-height: 44px;}}@media (max-width: 380px){body.o_itokyo_tp .itp-class-card{grid-template-columns: 1fr; row-gap: 6px;}body.o_itokyo_tp .itp-class-date{flex-direction: row; gap: 8px; align-items: baseline; border-right: none; padding-right: 0;}}