:root{--bg: #f4f5f3;--surface: #ffffff;--text: #1c1f1d;--text-sub: #6b726e;--border: #e3e6e2;--primary: #2f6f4f;--primary-weak: #e6f0ea;--danger: #c0392b;--danger-weak: #fbeae8;--chip-bg: #eef1ef;--radius: 14px;--radius-sm: 9px;--nav-h: 60px;--maxw: 640px;font-family:system-ui,-apple-system,Hiragino Sans,Noto Sans JP,sans-serif;color:var(--text);-webkit-text-size-adjust:100%}*{box-sizing:border-box}html,body{margin:0;background:var(--bg)}#root{max-width:var(--maxw);margin:0 auto;min-height:100vh}button{font-family:inherit;cursor:pointer}.app{padding-bottom:calc(var(--nav-h) + env(safe-area-inset-bottom))}.appbar{position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:1px solid var(--border);padding:14px 16px;padding-top:calc(14px + env(safe-area-inset-top));display:flex;align-items:center;gap:10px}.appbar h1{font-size:18px;margin:0;font-weight:700}.appbar .spacer{flex:1}.content{padding:14px 16px 24px}.bottom-nav{position:fixed;left:0;right:0;bottom:0;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--border);display:flex;z-index:20;max-width:var(--maxw);margin:0 auto}.bottom-nav a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;text-decoration:none;color:var(--text-sub);font-size:11px;font-weight:600}.bottom-nav a.active{color:var(--primary)}.bottom-nav a .ico{font-size:20px;line-height:1}.axis-toggle{display:flex;background:var(--chip-bg);border-radius:999px;padding:4px;gap:4px}.axis-toggle button{flex:1;border:none;background:transparent;border-radius:999px;padding:9px 0;font-size:14px;font-weight:700;color:var(--text-sub)}.axis-toggle button.active{background:var(--primary);color:#fff;box-shadow:0 1px 3px #00000026}.filter-bar{display:flex;gap:8px;margin-top:12px}.filter-bar select{flex:1;min-width:0;padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:13px;color:var(--text)}.filter-clear{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);padding:0 12px;font-size:13px;color:var(--text-sub)}.group{margin-top:22px}.group-head{display:flex;align-items:baseline;gap:8px;margin:0 2px 8px}.group-head .name{font-size:15px;font-weight:800;color:var(--primary)}.group-head .count{font-size:12px;color:var(--text-sub)}.card{width:100%;text-align:left;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;margin-bottom:8px;display:block}.card:active{background:#fafbfa}.card .row1{display:flex;align-items:center;gap:8px}.card .cname{font-size:15px;font-weight:700;flex:1;min-width:0}.chip{font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;background:var(--primary-weak);color:var(--primary);white-space:nowrap}.card .meta{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:8px}.card .meta span{font-size:12px;color:var(--text-sub)}.card .meta b{color:var(--text);font-weight:600}.card .note-line{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border);font-size:12.5px;color:var(--text-sub);line-height:1.45;white-space:pre-wrap;word-break:break-word}.swipe-row{position:relative;margin-bottom:8px;border-radius:var(--radius);overflow:hidden}.swipe-delete{position:absolute;top:0;right:0;bottom:0;border:none;background:var(--danger);color:#fff;font-size:14px;font-weight:700;z-index:0}.swipe-front{position:relative;z-index:1;touch-action:pan-y}.swipe-front .card{margin-bottom:0}.fab{position:fixed;right:max(16px,calc((100vw - var(--maxw)) / 2 + 16px));bottom:calc(var(--nav-h) + 18px + env(safe-area-inset-bottom));width:56px;height:56px;border-radius:50%;background:var(--primary);color:#fff;border:none;font-size:30px;line-height:1;box-shadow:0 4px 14px #2f6f4f66;z-index:15}.field{margin-bottom:16px}.field label{display:block;font-size:13px;font-weight:700;margin-bottom:6px}.field label .req{color:var(--danger);margin-left:4px}.field input,.field select,.field textarea{width:100%;padding:12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:16px;color:var(--text);font-family:inherit}.field textarea{resize:vertical;line-height:1.5}.field .hint{font-size:12px;color:var(--text-sub);margin-top:5px}.btn{width:100%;padding:14px;border:none;border-radius:var(--radius-sm);font-size:15px;font-weight:700}.btn-primary{background:var(--primary);color:#fff}.btn-primary:disabled{opacity:.5}.btn-ghost{background:var(--surface);border:1px solid var(--border);color:var(--text)}.btn-danger{background:var(--danger-weak);color:var(--danger)}.icon-btn{border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);width:38px;height:38px;font-size:16px;color:var(--text);display:inline-flex;align-items:center;justify-content:center}.icon-btn:disabled{opacity:.35}.link-btn{background:none;border:none;color:var(--primary);font-weight:700;font-size:14px;padding:6px}.master-section{margin-bottom:28px}.master-section h2{font-size:15px;margin:0 0 10px}.master-row{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;margin-bottom:7px}.master-row .mname{flex:1;min-width:0;font-size:15px;font-weight:600}.drag-handle{flex:0 0 auto;width:40px;height:40px;border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);color:var(--text-sub);font-size:18px;display:inline-flex;align-items:center;justify-content:center;cursor:grab;touch-action:none}.drag-handle:active{cursor:grabbing}.mname-btn{flex:1;min-width:0;text-align:left;background:transparent;border:none;font-size:15px;font-weight:600;color:var(--text);padding:8px 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mname-btn:active{color:var(--primary)}.master-row input{flex:1;min-width:0;font-size:16px;padding:8px;border:1px solid var(--border);border-radius:8px}.master-add{display:flex;gap:8px;margin-top:10px}.master-add input{flex:1;min-width:0;padding:10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:16px}.empty,.loading{text-align:center;color:var(--text-sub);padding:48px 16px;font-size:14px}.error-banner{background:var(--danger-weak);color:var(--danger);border-radius:var(--radius-sm);padding:10px 12px;font-size:13px;margin-top:12px}
