:root{--c-primary: #0a4d3c;--c-primary-dark: #07382c;--c-primary-hover: #0d5d48;--c-primary-soft: #e8efec;--c-primary-tint: #F0F7F4;--c-text-muted: #374151;--c-gold: #b8902e;--c-gold-soft: #f5efdc;--c-bg: #f5f5f0;--c-bg-alt: #ecebe3;--c-card: #ffffff;--c-text: #1a1a1a;--c-text-2: #4a4a4a;--c-text-3: #8a8a8a;--c-border: #d8d6cc;--c-border-soft: #e8e6dc;--c-danger: #a02626;--c-info: #2b5f8f;--c-warn: #9a6a1a;--c-success: #1f6b4e;--ff-serif: "Noto Serif JP", "Hiragino Mincho ProN", "Yu Mincho", serif;--ff-sans: "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", sans-serif;--ff-mono: "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;--radius: 2px;--radius-md: 4px}*{box-sizing:border-box}html,body{margin:0;padding:0;font-family:var(--ff-sans);font-size:14px;color:var(--c-text);background:var(--c-bg);-webkit-font-smoothing:antialiased;line-height:1.6}button,input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.app-header{background:var(--c-primary-dark);color:#fff;border-bottom:3px solid var(--c-gold)}.app-header-inner{max-width:1400px;margin:0 auto;padding:0 32px;display:flex;align-items:stretch;min-height:56px;gap:32px}.brand{display:flex;align-items:center;gap:10px;font-family:var(--ff-serif);font-weight:500;font-size:16px;letter-spacing:.04em}.brand-mark{width:24px;height:24px;background:var(--c-gold);position:relative;flex-shrink:0}.brand-mark:after{content:"";position:absolute;top:5px;right:5px;bottom:5px;left:5px;background:var(--c-primary-dark)}.brand-mark:before{content:"";position:absolute;top:10px;right:10px;bottom:10px;left:10px;background:var(--c-gold)}.hamburger-btn{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;margin:8px 4px 8px 0;padding:0;background:none;border:none;color:#fff;cursor:pointer;border-radius:var(--radius);flex-shrink:0}.hamburger-btn:hover{background:#ffffff14}.hamburger-btn:focus-visible{outline:2px solid var(--c-gold);outline-offset:-2px}.header-spacer{flex:1}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;z-index:45;animation:drawerFadeIn .2s ease-out both}@keyframes drawerFadeIn{0%{opacity:0}to{opacity:1}}.drawer{position:fixed;top:0;left:0;width:280px;height:100vh;background:#fff;border-right:1px solid var(--c-border);box-shadow:2px 0 12px #0000001f;z-index:50;transform:translate(-100%);transition:transform .25s ease-out;display:flex;flex-direction:column}.drawer.open{transform:translate(0)}.drawer-header{height:56px;background:var(--c-primary-dark);color:#fff;border-bottom:3px solid var(--c-gold);display:flex;align-items:center;justify-content:space-between;padding:0 20px;font-family:var(--ff-serif);font-size:14px;font-weight:500;letter-spacing:.08em;flex-shrink:0}.drawer-close-btn{background:none;border:none;color:#fff;font-size:24px;line-height:1;cursor:pointer;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border-radius:var(--radius);padding:0}.drawer-close-btn:hover{background:#ffffff1f}.drawer-close-btn:focus-visible{outline:2px solid var(--c-gold);outline-offset:-2px}.drawer-nav{display:flex;flex-direction:column;padding:8px 0;overflow-y:auto}.drawer-nav-item{display:flex;align-items:center;height:48px;padding:0 20px 0 21px;background:none;border:none;border-left:3px solid transparent;color:var(--c-text-muted);font-size:13.5px;font-weight:500;text-align:left;cursor:pointer;letter-spacing:.02em;transition:background .12s,color .12s}.drawer-nav-item:hover{background:var(--c-primary-tint);color:var(--c-primary-dark)}.drawer-nav-item.active{background:var(--c-primary-tint);color:var(--c-primary-dark);border-left-color:var(--c-gold);font-weight:700}.drawer-nav-item:focus-visible{outline:2px solid var(--c-primary);outline-offset:-2px}.user-pill{display:flex;align-items:center;gap:10px;padding:0 0 0 20px;border-left:1px solid rgba(255,255,255,.15)}.user-avatar{width:30px;height:30px;border-radius:50%;background:var(--c-gold);color:var(--c-primary-dark);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:12px;font-family:var(--ff-mono)}.user-meta{display:flex;flex-direction:column;line-height:1.25}.user-id{font-size:12.5px;font-weight:500;font-family:var(--ff-mono);color:#fff}.user-role{font-size:10.5px;color:var(--c-gold);letter-spacing:.08em}.logout-btn{background:none;border:1px solid rgba(255,255,255,.25);color:#ffffffe6;padding:5px 12px;font-size:11.5px;cursor:pointer;border-radius:var(--radius);margin-left:12px}.logout-btn:hover{background:#ffffff1a}.sub-header{background:#fff;border-bottom:1px solid var(--c-border)}.sub-header-inner{max-width:1400px;margin:0 auto;padding:14px 32px;display:flex;align-items:center;justify-content:space-between;gap:20px}.page-title{font-family:var(--ff-serif);font-weight:500;font-size:20px;margin:0;letter-spacing:.03em}.crumb{font-size:11.5px;color:var(--c-text-3);font-family:var(--ff-mono);letter-spacing:.05em}.crumb .sep{margin:0 6px;color:var(--c-border)}.main{max-width:1400px;margin:0 auto;padding:28px 32px 60px}.card{background:var(--c-card);border:1px solid var(--c-border);border-radius:var(--radius)}.card-head{padding:16px 20px;border-bottom:1px solid var(--c-border-soft);display:flex;align-items:center;justify-content:space-between}.card-title{font-family:var(--ff-serif);font-size:15px;font-weight:500;margin:0;letter-spacing:.04em}.card-body{padding:20px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:9px 18px;border:1px solid transparent;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;background:#fff;color:var(--c-text);letter-spacing:.04em;transition:background .15s,border-color .15s}.btn-primary{background:var(--c-primary);color:#fff;border-color:var(--c-primary)}.btn-primary:hover{background:var(--c-primary-hover);border-color:var(--c-primary-hover)}.btn-outline{border-color:var(--c-border);color:var(--c-text-2)}.btn-outline:hover{border-color:var(--c-primary);color:var(--c-primary)}.btn-ghost{background:none;border-color:transparent;color:var(--c-text-2)}.btn-ghost:hover{background:var(--c-primary-soft);color:var(--c-primary)}.btn-danger{background:#fff;border-color:var(--c-danger);color:var(--c-danger)}.btn-danger:hover{background:#fbf0f0}.btn-sm{padding:5px 11px;font-size:12px}.btn-lg{padding:12px 28px;font-size:14px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.btn-primary:disabled{background:var(--c-border);border-color:var(--c-border);color:var(--c-text-3);opacity:1;cursor:not-allowed}.btn.btn-primary:disabled:hover{background:var(--c-border);border-color:var(--c-border)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field-label{font-size:12px;font-weight:500;color:var(--c-text-2);display:flex;align-items:center;gap:8px;letter-spacing:.04em}.field-label .required{color:var(--c-danger);font-size:10px;padding:1px 5px;border:1px solid var(--c-danger);border-radius:2px;font-weight:500}.input,.select,.textarea{background:#fff;border:1px solid var(--c-border);padding:9px 12px;border-radius:var(--radius);font-size:13.5px;transition:border-color .15s;width:100%}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--c-primary);box-shadow:0 0 0 2px var(--c-primary-soft)}.textarea{resize:vertical;min-height:80px;line-height:1.6}.hint{font-size:11.5px;color:var(--c-text-3)}.table-wrap{border:1px solid var(--c-border);border-radius:var(--radius);overflow:hidden;background:#fff}.table{width:100%;border-collapse:collapse;font-size:13px}.table th{text-align:left;background:#f9f8f2;padding:10px 14px;font-weight:500;font-size:12px;color:var(--c-text-2);border-bottom:1px solid var(--c-border);letter-spacing:.05em;white-space:nowrap}.table td{padding:11px 14px;border-bottom:1px solid var(--c-border-soft);vertical-align:middle}.table tr:last-child td{border-bottom:none}.table tr:hover td{background:#faf9f3}.table .mono{font-family:var(--ff-mono);font-size:12px}.badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;border-radius:2px;letter-spacing:.05em;border:1px solid transparent}.badge-admin{background:var(--c-primary-soft);color:var(--c-primary);border-color:#c8d9d2}.badge-dev{background:#f0ecdf;color:var(--c-warn);border-color:#e0d7b8}.badge-info{background:#e8eff5;color:var(--c-info);border-color:#c8d8e5}.badge-success{background:#e4efe8;color:var(--c-success);border-color:#c4d8ca}.badge-tag{background:#f3f1e6;color:var(--c-text-2);border-color:var(--c-border);font-family:var(--ff-mono)}.divider{height:1px;background:var(--c-border-soft);margin:20px 0}.muted{color:var(--c-text-3)}.mono{font-family:var(--ff-mono)}.row{display:flex;gap:16px}.row>*{flex:1}.segmented{display:inline-flex;border:1px solid var(--c-border);border-radius:var(--radius);overflow:hidden;background:#fff}.segmented button{background:none;border:none;padding:8px 18px;font-size:12.5px;cursor:pointer;color:var(--c-text-2);border-right:1px solid var(--c-border);font-weight:500;letter-spacing:.04em}.segmented button:last-child{border-right:none}.segmented button.active{background:var(--c-primary);color:#fff}.pill-tabs{display:flex;gap:0;border-bottom:1px solid var(--c-border);margin-bottom:20px}.pill-tab{padding:10px 22px;background:none;border:none;cursor:pointer;font-size:13px;font-weight:500;color:var(--c-text-3);border-bottom:2px solid transparent;margin-bottom:-1px;letter-spacing:.04em}.pill-tab:hover{color:var(--c-text)}.pill-tab.active{color:var(--c-primary);border-bottom-color:var(--c-primary)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#c8c6bb;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a8a69b}@keyframes pageIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.page-enter{animation:pageIn .28s ease-out both}.section-label{font-size:11px;color:var(--c-text-3);letter-spacing:.15em;font-weight:600;margin-bottom:10px;text-transform:uppercase;font-family:var(--ff-mono)}.kbd{display:inline-block;padding:1px 6px;border:1px solid var(--c-border);border-radius:3px;font-family:var(--ff-mono);font-size:10.5px;background:#f9f8f2;color:var(--c-text-2);line-height:1.5}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000006b;z-index:80;display:flex;align-items:center;justify-content:center;padding:32px;animation:drawerFadeIn .18s ease-out both}.modal{background:var(--c-card);border:1px solid var(--c-border);border-top:3px solid var(--c-gold);border-radius:var(--radius);box-shadow:0 20px 48px #00000038;width:100%;max-width:520px;max-height:calc(100vh - 64px);display:flex;flex-direction:column;overflow:hidden}.modal-head{padding:16px 22px;border-bottom:1px solid var(--c-border-soft);display:flex;align-items:center;justify-content:space-between;gap:16px;background:var(--c-primary-tint)}.modal-title{font-family:var(--ff-serif);font-size:15px;font-weight:500;margin:0;letter-spacing:.04em;color:var(--c-primary-dark)}.modal-body{padding:22px;overflow-y:auto;font-size:13px;color:var(--c-text);line-height:1.7}.modal-foot{padding:14px 22px;border-top:1px solid var(--c-border-soft);display:flex;align-items:center;justify-content:flex-end;gap:10px;background:#fbfaf5}.spinner{display:inline-block;width:18px;height:18px;border:2px solid var(--c-border);border-top-color:var(--c-primary);border-radius:50%;animation:spin .8s linear infinite;vertical-align:middle}.spinner-lg{width:28px;height:28px;border-width:3px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.phase-row{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--c-border-soft)}.phase-row:last-child{border-bottom:none}.phase-row .phase-label{font-weight:500;color:var(--c-text)}.phase-row .phase-msg{font-size:12px;color:var(--c-text-2);margin-top:2px}.phase-row.ok .phase-icon{color:var(--c-success)}.phase-row.fail .phase-icon{color:var(--c-danger)}.phase-row.pending .phase-icon{color:var(--c-text-3)}.checkbox-row{display:flex;align-items:flex-start;gap:10px;padding:10px 0;font-size:12.5px}.checkbox-row input[type=checkbox]{margin:3px 0 0;accent-color:var(--c-primary);width:16px;height:16px;cursor:pointer}.checkbox-row label{cursor:pointer;line-height:1.6;color:var(--c-text)}.modal-warning{background:var(--c-gold-soft);border:1px solid #e0d7b8;color:var(--c-warn);padding:10px 12px;font-size:11.5px;border-radius:var(--radius);margin-top:14px;line-height:1.6}.modal-error{background:#fbf0f0;border:1px solid #e2c4c4;color:var(--c-danger);padding:10px 12px;font-size:12px;border-radius:var(--radius);margin-top:14px}
