@import "https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;500;700;800&family=Outfit:wght@500;700&display=swap";@font-face{font-family:Poster BIZ UDPGothic;src:url(/fonts/BIZUDPGothic-Regular.ttf)format("truetype");font-display:swap;font-style:normal;font-weight:400}@font-face{font-family:Poster BIZ UDPGothic;src:url(/fonts/BIZUDPGothic-Bold.ttf)format("truetype");font-display:swap;font-style:normal;font-weight:700}:root{color:#1e2b38;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;--line:#d5dde5;--muted:#617181;--panel:#fff;--header:#1e2b38;--accent:#1f6f8b;--accent-2:#287a5f;--warn:#b86f18;--danger:#aa3f3f;--gold:#ffd84d;--orange:#ffc043;--pink:#f09ac8;background:#eef2f5;font-family:Noto Sans JP,sans-serif}*{box-sizing:border-box}html,body,#root{min-height:100%}body{min-width:0;margin:0}button,input,select,textarea{font:inherit}button,a{cursor:pointer}a{color:inherit;text-decoration:none}.app-shell{min-height:100vh}.app-header{z-index:10;color:#f7fafc;background:var(--header);border-bottom:1px solid #ffffff1f;grid-template-columns:auto 1fr auto;align-items:center;gap:20px;padding:14px 28px;display:grid;position:sticky;top:0}.app-header h1{letter-spacing:0;margin:0;font-family:Outfit,sans-serif;font-size:clamp(18px,2.2vw,24px)}.tab-nav{flex-wrap:wrap;gap:6px;display:inline-flex}.tab-link{color:#ffffffc2;text-align:center;border:1px solid #ffffff2e;border-radius:8px;min-width:150px;padding:9px 16px;font-weight:700}.tab-link.active{color:#1e2b38;background:#fff}.user-menu,.button-row,.panel-heading{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.user-menu{justify-content:flex-end}.page-shell{width:min(1540px,100vw - clamp(16px,4vw,48px));max-width:100%;margin:0 auto;padding:22px 0 56px}.page-grid{gap:16px;display:grid}.panel,.subpanel,.login-panel{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 26px #1e2b3814}.panel{padding:18px}.subpanel{gap:12px;padding:14px;display:grid}.panel-heading{justify-content:space-between;margin-bottom:14px}.panel-heading.compact{grid-template-columns:minmax(0,1fr);align-items:start;gap:12px;width:100%;display:grid}.panel-heading.compact .filter-grid{justify-self:stretch;width:100%;min-width:0}.panel h2,.subpanel h3{margin:0}.panel h2{font-size:22px}.subpanel h3{font-size:16px}.filter-grid,.form-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));align-items:end;gap:10px;display:grid}.filter-grid.wide{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.entry-flow{gap:16px;display:grid}.entry-setup-summary{border:1px solid #287a5f57;border-left:4px solid var(--accent-2);background:#f4fbf7;border-radius:8px;justify-content:space-between;align-items:center;gap:16px;padding:14px;display:flex}.entry-setup-summary-main{gap:4px;min-width:0;display:grid}.entry-setup-summary-main strong{overflow-wrap:anywhere;color:#1e2b38;font-size:17px;line-height:1.4}.entry-setup-summary-main p{color:var(--muted);margin:0;font-size:13px;font-weight:700}.entry-setup-summary-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:10px;display:flex}.entry-session-panel{scroll-margin-top:18px}.entry-step{gap:10px;display:grid}.entry-step-label{color:var(--accent);font-size:13px;font-weight:800;display:inline-flex}.entry-step-copy{color:var(--muted);margin:3px 0 0;font-size:13px;line-height:1.5}.entry-condition-grid{grid-template-columns:repeat(5,minmax(150px,1fr))}.target-save-panel{border:1px solid #cbd8df;border-left:4px solid var(--accent);background:#f6fafb;border-radius:8px;gap:12px;padding:14px;display:grid}.target-save-panel.needs-selection{background:#fff8ea;border-color:#bc791c80 #bc791c80 #bc791c80 #c97416;border-left-width:6px;box-shadow:0 8px 22px #80510d14}.target-save-panel.is-selected{border-color:#287a5f7a;border-left-color:var(--accent-2);background:#f4fbf7}.target-save-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.target-save-heading h3{margin:4px 0 0;font-size:18px}.target-save-heading p{color:var(--muted);margin:4px 0 0;font-size:13px;line-height:1.5}.target-save-status{border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:700}.target-save-panel.is-selected .target-save-status{color:#1f5b48;background:#e8f5ef;border-color:#287a5f4d}.target-save-panel.needs-selection .target-save-status{color:#80510d;background:#fff1d7;border-color:#bc791c52}.target-select-field{gap:6px}.target-save-panel.needs-selection .target-select-field{color:#80510d}.target-save-panel.needs-selection select{background:#fff;border-color:#bc791c94;box-shadow:inset 0 0 0 1px #bc791c1f}.target-save-panel.needs-selection select:focus{border-color:#c97416;outline-color:#c9741647}.selected-target-summary{color:var(--muted);background:#ffffffb8;border:1px dashed #b6c6cf;border-radius:6px;gap:4px;padding:10px 12px;display:grid}.target-save-panel.needs-selection .selected-target-summary{color:#80510d;background:#fff;border-color:#bc791c73}.selected-target-summary span{font-size:13px;font-weight:700}.selected-target-summary strong{color:#1e2b38;font-size:17px;line-height:1.45}.entry-action-row{grid-template-columns:minmax(180px,240px) minmax(260px,max-content);align-items:end;gap:10px;display:grid}.entry-action-row .button-primary{min-width:260px}.student-form{grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.placement-form{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.table-actions{flex-wrap:nowrap}.target-create-panel{gap:12px;display:grid}.target-create-panel .panel-heading{margin-bottom:0}.target-create-panel .helper-text{margin:0}.target-form{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.target-form .button-secondary{min-width:150px}.auto-target-panel{gap:12px;display:grid}.auto-target-panel .panel-heading{align-items:flex-start;margin-bottom:0}.auto-target-panel .helper-text{margin:4px 0 0}.auto-target-kpis{grid-template-columns:repeat(5,minmax(0,1fr))}.auto-target-breakdown table{min-width:420px}.auto-target-breakdown td:last-child{font-family:Outfit,sans-serif;font-weight:700}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}label{color:var(--muted);gap:5px;font-size:13px;font-weight:700;display:grid}input,select,textarea{color:#1e2b38;background:#fff;border:1px solid #c3ced8;border-radius:6px;width:100%;min-height:40px;padding:9px 10px}textarea{resize:vertical;min-height:128px}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:2px solid #1f6f8b3d}.button-primary,.button-secondary,.button-ghost{border:1px solid #0000;border-radius:6px;justify-content:center;align-items:center;min-height:40px;padding:0 14px;font-weight:800;display:inline-flex}.button-primary{color:#fff;background:var(--accent)}.button-secondary{color:#fff;background:var(--accent-2)}.button-ghost{color:#1e2b38;border-color:var(--line);background:#fff}.button-ghost.small{min-height:32px;padding:0 10px}.button-row.compact{gap:6px}.button-ghost.danger,.button-primary.danger{color:#fff;background:var(--danger);border-color:var(--danger)}button:disabled{opacity:.48;cursor:not-allowed}.kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;display:grid}.kpi-card{border:1px solid var(--line);background:#f8fafc;border-radius:8px;gap:4px;padding:14px;display:grid}.kpi-card span,.helper-text{color:var(--muted)}.kpi-card strong{font-family:Outfit,sans-serif;font-size:clamp(22px,4.5vw,34px)}.kpi-subtext{color:var(--muted);font-size:12px}.table-shell{border:1px solid var(--line);border-radius:8px;overflow:auto}table{border-collapse:collapse;width:100%;min-width:860px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:10px 12px}thead th{z-index:1;color:#4e5f70;background:#f2f5f8;font-size:12px;position:sticky;top:0}.row-attention{background:#fff8ea}.row-muted{color:var(--muted);background:#f3f5f7}.empty-cell{color:var(--muted);text-align:center}.text-link{color:var(--accent);font-weight:800}.pill{color:#80510d;background:#fff1d7;border-radius:999px;padding:5px 10px;font-size:13px;font-weight:800}.message-banner,.error-banner,.offline-banner,.preview-box{border:1px solid #0000;border-radius:8px;padding:11px 12px}.message-banner{color:#1d654e;background:#e5f5ee;border-color:#bfe5d3}.error-banner,.offline-banner{color:var(--danger);background:#faeaea;border-color:#efc2c2}.offline-banner{width:min(1540px,100vw - clamp(16px,4vw,48px));max-width:100%;margin:10px auto}.admin-grid{grid-template-columns:minmax(320px,.9fr) repeat(2,minmax(320px,1fr));gap:12px;display:grid}.preview-box{color:#5d3f0c;background:#fff6df;border-color:#f0d39b;gap:8px;display:grid}.preview-box ul{margin:0;padding-left:20px}.modal-backdrop{z-index:40;background:#1e2b3873;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal-panel{border:1px solid var(--line);background:#fff;border-radius:8px;gap:14px;width:min(560px,100%);max-height:min(760px,100vh - 36px);padding:18px;display:grid;overflow:auto;box-shadow:0 22px 50px #1e2b383d}.modal-panel.wide{width:min(980px,100%)}.confirm-card{border:1px solid var(--line);background:#f8fafc;border-radius:8px;gap:4px;padding:12px;display:grid}.danger-text{color:var(--danger);font-weight:800}.input-table input{min-width:min(130px,100%)}.mono{font-family:Outfit,monospace}.login-screen,.boot-screen{background:#eef2f5;place-items:center;min-height:100vh;display:grid}.login-panel{gap:14px;width:min(380px,100vw - 32px);max-width:100%;padding:24px;display:grid}.login-panel h1{margin:0;font-size:26px}.poster-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;display:flex}.poster-loading-panel{flex-direction:column;align-items:center;gap:12px;padding:28px 18px;display:flex}.poster-options{flex-wrap:wrap;gap:10px;display:flex}.poster-options label{color:#1e2b38;align-items:center;gap:6px;display:inline-flex}.poster-options input{width:auto;min-height:0}.poster-page{width:100%;max-width:100%}.poster-sheet{box-sizing:border-box;border:1px solid var(--line);-webkit-print-color-adjust:exact;print-color-adjust:exact;background:#fff;width:100%;max-width:210mm;min-height:297mm;margin:0 auto;padding:clamp(16px,4vw,36px);font-family:Poster BIZ UDPGothic,BIZ UDPGothic,Noto Sans JP,sans-serif;overflow-x:auto}.poster-header{gap:4px;margin-bottom:18px;display:grid;position:relative}.poster-header h1,.poster-header h2{color:#ff7f2a;text-shadow:1px 1px #fff,2px 2px #d9d9d9;margin:0;font-size:clamp(22px,5vw,38px)}.poster-header h2{font-size:clamp(18px,4vw,30px)}.poster-stats{border:3px solid #111;grid-template-columns:repeat(1,minmax(0,120px));width:fit-content;max-width:100%;margin:12px 0;display:grid;position:static}.poster-stats div{border-left:3px solid #111;place-items:center;min-height:72px;display:grid}.poster-stats div:first-child{border-left:0}.poster-stats span{font-size:clamp(14px,2.5vw,22px)}.poster-stats strong{color:red;font-size:clamp(16px,2.8vw,24px)}.poster-table{table-layout:fixed;border:4px solid #111;width:100%;min-width:0;font-size:clamp(13px,2.2vw,26px)}.poster-table th,.poster-table td{text-align:center;vertical-align:middle;border:3px solid #111;height:52px;padding:7px 10px;line-height:1;overflow:hidden}.poster-table th{color:#111;white-space:nowrap;background:#fff;height:64px;padding-left:6px;padding-right:6px;font-size:clamp(12px,2.4vw,28px);font-weight:700}.poster-name-cell{white-space:nowrap;width:20%}.poster-school-cell{white-space:nowrap;width:25%;font-size:.78em}.poster-rank-cell{white-space:nowrap;width:9%}.poster-course-cell,.poster-level-cell,.poster-result-cell{white-space:nowrap;width:12%}.poster-score-cell{white-space:nowrap;width:10%;font-weight:700}td.poster-name-cell,td.poster-school-cell,td.poster-course-cell,td.poster-level-cell,td.poster-result-cell{overflow:hidden}td.poster-score-cell{font-size:1.08em}.poster-fit-text{vertical-align:middle;white-space:nowrap;max-width:none;line-height:1;display:inline-block}.poster-sheet.is-monochrome .poster-band{background:#fff}@media (width>=821px){.poster-header{padding-right:min(260px,28vw)}.poster-stats{margin:0;position:absolute;top:0;right:0}}@media (width<=1100px){.app-header{grid-template-columns:1fr;align-items:stretch;gap:12px;padding:12px 16px}.tab-nav{width:100%}.user-menu{justify-content:flex-start;width:100%}.tab-link{flex:140px;min-width:min(120px,100%)}.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.entry-condition-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (width<=820px){.page-shell{padding:16px 0 40px}.panel{padding:14px}.panel-heading.compact{align-items:stretch}.entry-condition-grid,.entry-action-row{grid-template-columns:1fr}.entry-setup-summary{flex-direction:column;align-items:stretch}.entry-setup-summary-actions{justify-content:stretch}.entry-setup-summary-actions .button-ghost,.entry-setup-summary-actions .button-secondary{width:100%}.entry-action-row .button-primary{width:100%;min-width:0}.panel h2{font-size:max(18px,min(5vw,22px))}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-grid,.form-grid.two{grid-template-columns:1fr}.input-table input{min-width:0}.poster-header{padding-right:0}}@media (width<=600px){.kpi-grid{grid-template-columns:1fr}}.poster-band.perfect{background:var(--gold)}.poster-band.excellent{background:var(--orange)}.poster-band.pass{background:var(--pink)}.poster-band.retry,.poster-band.absent,.poster-band.unscored{background:#fff}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@keyframes spinner-rotate{to{transform:rotate(360deg)}}.spinner-svg{animation:.85s linear infinite spinner-rotate;display:block}.spinner-inline{justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex}.spinner-inline .spinner-svg{width:18px;height:18px}.spinner-lg{flex-direction:column;justify-content:center;align-items:center;gap:12px;display:flex}.spinner-lg .spinner-svg{width:40px;height:40px}.spinner-track{stroke:#1f6f8b38}.spinner-arc{stroke:var(--accent);stroke-dasharray:42 62;stroke-linecap:round}.boot-screen-inner{color:var(--muted);flex-direction:column;align-items:center;gap:12px;font-weight:700;display:flex}.toast-viewport{z-index:80;pointer-events:none;flex-direction:column;gap:10px;max-width:min(380px,100vw - 32px);display:flex;position:fixed;bottom:16px;right:16px}.toast-viewport .toast{pointer-events:auto}.toast{border:1px solid var(--line);background:#fff;border-radius:8px;align-items:flex-start;gap:10px;padding:12px 14px;font-size:14px;font-weight:600;line-height:1.45;display:flex;box-shadow:0 10px 28px #1e2b382e}.toast-message{flex:1;min-width:0}.toast-dismiss{width:28px;height:28px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;flex-shrink:0;padding:0;font-size:18px;line-height:1}.toast-dismiss:hover{color:#1e2b38;background:#1e2b380f}.toast.is-success{background:#f0faf3;border-color:#b8dfc8}.toast.is-error{color:#6b2a2a;background:#fdf2f2;border-color:#e4b4b4}.toast.is-info{background:#f0f8fc;border-color:#b6d5e4}.overlay-loader{z-index:70;background:#1e2b3859;place-items:center;display:grid;position:fixed;inset:0}.overlay-loader-inner{border:1px solid var(--line);background:#fff;border-radius:10px;flex-direction:column;align-items:center;gap:12px;padding:28px 32px;display:flex;box-shadow:0 18px 44px #1e2b3833}.overlay-loader-text{color:var(--header);margin:0;font-weight:700}.confirm-dialog-body{line-height:1.55}.confirm-dialog-actions{margin-top:4px}.button-primary,.button-secondary,.button-ghost{position:relative}.button-primary.is-loading .button-label,.button-secondary.is-loading .button-label,.button-ghost.is-loading .button-label{opacity:0}.button-spinner-wrap{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.button-primary.small,.button-secondary.small{min-height:32px;padding:0 10px;font-size:13px}.route-progress{z-index:60;pointer-events:none;opacity:0;height:3px;transition:opacity .15s;position:fixed;top:0;left:0;right:0;overflow:hidden}.route-progress.is-active{opacity:1}.route-progress:after{content:"";background:linear-gradient(90deg, transparent, var(--accent), transparent);width:35%;height:100%;animation:.9s ease-in-out infinite route-progress-slide;display:block;transform:translate(-120%)}.route-progress.is-active:after{animation-play-state:running}.route-progress:not(.is-active):after{animation-play-state:paused}@keyframes route-progress-slide{0%{transform:translate(-120%)}to{transform:translate(320%)}}@keyframes skeleton-shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.skeleton-block{background:linear-gradient(90deg,#e4ebf2 0%,#f4f7fa 45%,#e4ebf2 90%) 0 0/200% 100%;border-radius:6px;animation:1.3s ease-in-out infinite skeleton-shimmer}.kpi-card.is-skeleton span{width:56%;height:12px;margin-bottom:8px;display:block}.kpi-card.is-skeleton strong{width:72%;height:28px;display:block}.tr-skeleton td{padding:12px}.tr-skeleton .sk{background:linear-gradient(90deg,#e4ebf2 0%,#f4f7fa 45%,#e4ebf2 90%) 0 0/200% 100%;border-radius:4px;height:14px;animation:1.3s ease-in-out infinite skeleton-shimmer;display:block}@media print{@page{size:A4 portrait;margin:0}body{background:#fff;min-width:0}.app-header,.offline-banner,.poster-toolbar{display:none}.page-shell{width:auto;padding:0}.poster-sheet{width:210mm;max-width:none;min-height:297mm;box-shadow:none;border:0;padding:12mm;overflow:visible}.poster-header{padding-right:260px}.poster-stats{grid-template-columns:repeat(1,120px);margin:0;position:absolute;top:0;right:0}.poster-header h1{font-size:38px}.poster-header h2{font-size:30px}.poster-stats span{font-size:22px}.poster-stats strong{font-size:24px}.poster-table{font-size:26px}.poster-table th{font-size:28px}}
