@import url("https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=Noto+Sans+JP:wght@400;500;600;700&display=swap");:root{--sidebar:#0b1220;--sidebar-hover:#151e2e;--sidebar-active:#1a2740;--sidebar-border:#1e293b;--bg:#eef1f6;--panel:#ffffff;--text:#0f172a;--muted:#64748b;--accent:#0f766e;--accent-hover:#0d9488;--accent-soft:#ccfbf1;--border:#e2e8f0;--danger:#dc2626;--ok:#059669;--shadow:0 1px 2px rgba(15,23,42,0.04),0 8px 24px rgba(15,23,42,0.04);--font:"DM Sans","Noto Sans JP",sans-serif;--sidebar-w:260px;--topbar-h:64px;--radius:14px}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%;font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.auth-page{min-height:100vh;display:grid;place-items:center;padding:2rem 1rem;background:radial-gradient(900px 480px at 10% -10%,#99f6e4 0,transparent 55%),radial-gradient(700px 420px at 100% 0,#bfdbfe 0,transparent 50%),var(--bg)}.auth-card{width:min(420px,100%);background:var(--panel);border:1px solid var(--border);border-radius:20px;padding:2rem;box-shadow:var(--shadow)}.auth-brand{font-size:.8rem;font-weight:600;letter-spacing:.04em;color:var(--accent);text-transform:uppercase}.app-shell{min-height:100vh;display:flex;background:var(--bg)}.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--sidebar);color:#e2e8f0;display:flex;flex-direction:column;border-right:1px solid var(--sidebar-border);position:fixed;inset:0 auto 0 0;z-index:40;transition:transform .2s ease}.sidebar-brand{display:flex;align-items:center;gap:.75rem;padding:1.25rem 1.25rem 1rem;border-bottom:1px solid var(--sidebar-border)}.sidebar-logo{width:36px;height:36px;border-radius:10px;background:linear-gradient(145deg,#14b8a6,#0f766e);display:grid;place-items:center;font-weight:700;font-size:.85rem;color:white}.sidebar-brand-text{display:grid;grid-gap:.1rem;gap:.1rem}.sidebar-brand-text strong{font-size:1rem;letter-spacing:-.02em}.sidebar-brand-text span{font-size:.72rem;color:#94a3b8}.sidebar-nav{flex:1 1;padding:1rem .85rem;overflow-y:auto}.nav-section{margin-bottom:1.25rem}.nav-section-label{font-size:.68rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#64748b;padding:0 .65rem .45rem}.nav-item{display:flex;align-items:center;gap:.7rem;padding:.65rem .75rem;border-radius:10px;color:#cbd5e1;font-size:.92rem;font-weight:500;margin-bottom:.2rem;transition:background .15s ease,color .15s ease}.nav-item:hover{background:var(--sidebar-hover);color:#fff}.nav-item.active{background:var(--sidebar-active);color:#fff;box-shadow:inset 3px 0 0 var(--accent-hover)}.nav-icon{width:1.25rem;text-align:center;opacity:.85;font-size:.95rem}.sidebar-footer{padding:1rem 1.1rem 1.25rem;border-top:1px solid var(--sidebar-border)}.sidebar-user{display:grid;grid-gap:.15rem;gap:.15rem;margin-bottom:.75rem}.sidebar-user strong{font-size:.88rem;color:#f1f5f9}.sidebar-user span{font-size:.75rem;color:#94a3b8;word-break:break-all}.sidebar-actions{display:grid;grid-gap:.4rem;gap:.4rem}.app-main{flex:1 1;margin-left:var(--sidebar-w);min-width:0;display:flex;flex-direction:column;min-height:100vh}.topbar{height:var(--topbar-h);background:rgba(255,255,255,.85);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:0 1.75rem;position:-webkit-sticky;position:sticky;top:0;z-index:30}.topbar-title{display:grid;grid-gap:.1rem;gap:.1rem}.topbar-title h1{margin:0;font-size:1.15rem;font-weight:650;letter-spacing:-.02em}.topbar-title p{margin:0;font-size:.8rem;color:var(--muted)}.topbar-right{display:flex;align-items:center;gap:.5rem}.content{padding:1.5rem 1.75rem 2.5rem;width:min(1200px,100%)}.menu-toggle{display:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border);background:white;border-radius:10px;width:40px;height:40px;cursor:pointer}.sidebar-backdrop{display:none}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:1.35rem;box-shadow:var(--shadow)}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:10px;padding:.65rem 1rem;background:var(--accent);color:white;cursor:pointer;font-weight:600;font-size:.9rem}.btn:hover{background:var(--accent-hover)}.btn.secondary{background:white;border:1px solid var(--border);color:var(--text)}.btn.secondary:hover{background:#f8fafc}.btn.ghost{background:transparent;border:1px solid var(--sidebar-border);color:#e2e8f0}.btn.ghost:hover{background:var(--sidebar-hover)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.sm{padding:.4rem .7rem;font-size:.82rem}.field{display:grid;grid-gap:.35rem;gap:.35rem;margin-bottom:.9rem}.field label{font-size:.82rem;font-weight:500;color:var(--muted)}.field input,.field select,.field textarea,.search-input{border:1px solid var(--border);background:#fff;color:var(--text);border-radius:10px;padding:.7rem .85rem}.field input:focus,.search-input:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);border-color:var(--accent)}.error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:.75rem .9rem;margin-bottom:1rem;font-size:.9rem}.muted{color:var(--muted)}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:0 1rem;gap:0 1rem}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:1rem;gap:1rem;margin-bottom:1.25rem}.kpi-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:1.15rem 1.2rem;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi-card:after{content:"";position:absolute;right:-12px;top:-12px;width:72px;height:72px;border-radius:50%;background:var(--accent-soft);opacity:.7}.kpi-label{font-size:.8rem;font-weight:500;color:var(--muted);margin-bottom:.35rem}.kpi-value{font-size:1.85rem;font-weight:700;letter-spacing:-.03em;position:relative;z-index:1}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:.9rem}.section-head h2,.section-head h3{margin:0;font-size:1.05rem;letter-spacing:-.02em}.page-intro{margin:0 0 1.25rem}.page-intro h2{margin:0 0 .25rem;font-size:1.35rem;letter-spacing:-.03em}.page-intro p{margin:0;color:var(--muted);font-size:.92rem}.quick-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:.75rem;gap:.75rem}.quick-link{display:flex;flex-direction:column;gap:.25rem;padding:1rem;border:1px solid var(--border);border-radius:12px;background:#f8fafc;transition:border-color .15s ease,background .15s ease}.quick-link:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--border));background:var(--accent-soft)}.quick-link strong{font-size:.95rem}.quick-link span{font-size:.8rem;color:var(--muted)}.module-row{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.95rem 1rem;border:1px solid var(--border);border-radius:12px;background:#f8fafc}.badge{display:inline-flex;align-items:center;padding:.15rem .45rem;border-radius:999px;font-size:.7rem;font-weight:600;background:var(--accent-soft);color:var(--accent);margin-left:.4rem}.table{width:100%;border-collapse:collapse;font-size:.9rem}.table td,.table th{text-align:left;padding:.8rem 1rem;border-bottom:1px solid var(--border);vertical-align:middle}.table th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;background:#f8fafc}.table tr:last-child td{border-bottom:none}.toolbar{display:flex;gap:.5rem;margin-bottom:.85rem}.toolbar .search-input{flex:1 1}@media (max-width:1100px){.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.quick-links{grid-template-columns:1fr}}@media (max-width:900px){.sidebar{transform:translateX(-100%)}.sidebar.open{transform:translateX(0)}.sidebar-backdrop.open{display:block;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:35}.app-main{margin-left:0}.menu-toggle{display:grid;place-items:center}.content{padding:1.1rem 1rem 2rem}.grid-2{grid-template-columns:1fr}}@media (max-width:560px){.kpi-grid{grid-template-columns:1fr}}