*{box-sizing:border-box;margin:0;padding:0}body{font-family:Segoe UI,Microsoft JhengHei,sans-serif;background:#f0f2f5;padding:12px}.tab-nav{display:flex;gap:10px;margin-bottom:16px;border-bottom:2px solid #cbd5e1;padding-bottom:8px;max-width:1500px;margin-left:auto;margin-right:auto}.tab-btn{padding:10px 20px;font-size:16px;font-weight:700;border:none;background:transparent;color:#64748b;cursor:pointer;border-radius:8px;transition:all .2s}.tab-btn:hover{background:#f1f5f9;color:#3b82f6}.tab-btn.active{background:#3b82f6;color:#fff;box-shadow:0 4px 6px -1px #3b82f64d}.app-layout{display:flex;flex-direction:column;gap:12px;max-width:1500px;margin:0 auto}@media (min-width: 768px){.app-layout{flex-direction:row;align-items:flex-start}}.panel{background:#fff;padding:18px;border-radius:10px;box-shadow:0 2px 8px #00000014;flex:0 0 350px;max-height:90vh;overflow-y:auto}.panel h2{font-size:17px;color:#1e293b;margin-bottom:14px;padding-bottom:8px;border-bottom:2px solid #3b82f6}.panel-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid #e2e8f0;position:relative}.panel-header:after{content:"";position:absolute;left:0;bottom:-1px;height:2px;width:56px;background:linear-gradient(90deg,#3b82f6,#8b5cf6);border-radius:2px}.panel-header-left{display:flex;align-items:center;gap:14px;min-width:0}.panel-header-left h2{margin:0;padding:0;border:none;font-size:16px;font-weight:700;letter-spacing:.5px;color:#0f172a;white-space:nowrap}.panel-header-actions{display:flex;gap:8px;align-items:center;flex-shrink:0}.toggle-switch{display:inline-flex;align-items:center;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none}.toggle-switch .toggle-text{font-size:12px;font-weight:600;color:#64748b;letter-spacing:.3px}.toggle-switch input{position:absolute;opacity:0;width:0;height:0;pointer-events:none}.toggle-switch .toggle-track{position:relative;width:38px;height:20px;background:#e2e8f0;border-radius:999px;transition:background .25s ease;box-shadow:inset 0 1px 2px #0f172a14;flex-shrink:0}.toggle-switch .toggle-track:before{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .25s cubic-bezier(.34,1.56,.64,1);box-shadow:0 1px 3px #0003}.toggle-switch input:checked+.toggle-track{background:linear-gradient(135deg,#3b82f6,#6366f1)}.toggle-switch input:checked+.toggle-track:before{transform:translate(18px)}.toggle-switch:hover .toggle-track{box-shadow:inset 0 1px 2px #0f172a1f}.toggle-switch input:focus-visible+.toggle-track{outline:2px solid rgba(59,130,246,.4);outline-offset:2px}.btn-action{display:inline-flex;align-items:center;justify-content:center;height:30px;padding:0 14px;font-size:12.5px;font-weight:600;letter-spacing:.5px;border:none;border-radius:8px;cursor:pointer;color:#fff;transition:transform .15s ease,box-shadow .2s ease,filter .2s ease;white-space:nowrap;line-height:1}.btn-action:hover{transform:translateY(-1px);filter:brightness(1.05)}.btn-action:active{transform:translateY(0);filter:brightness(.95)}.btn-action.btn-primary{background:linear-gradient(135deg,#3b82f6,#2563eb);box-shadow:0 2px 6px #3b82f659}.btn-action.btn-danger{background:linear-gradient(135deg,#f87171,#ef4444);box-shadow:0 2px 6px #ef44444d}.quick-tool-panel{margin-bottom:14px;padding:14px;background:linear-gradient(135deg,#eef2ff,#f1f5f9);border:1px solid #c7d2fe;border-radius:12px;box-shadow:inset 0 1px #fff9,0 1px 2px #0f172a0a}.quick-tool-header{display:flex;flex-direction:column;gap:3px;margin-bottom:10px}.quick-tool-title{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#1e293b}.quick-tool-title:before{content:"";width:4px;height:14px;border-radius:2px;background:linear-gradient(180deg,#6366f1,#3b82f6)}.quick-tool-hint{font-size:11px;color:#64748b;line-height:1.5}.quick-tool-rows{display:flex;flex-direction:column;gap:8px}.quick-tool-row-group{display:flex;gap:6px;flex-wrap:nowrap;align-items:center}.quick-tool-row{background:#fff;padding:3px;border-radius:999px;display:inline-flex;align-items:center;gap:3px;border:1px solid #e2e8f0;box-shadow:0 1px 2px #0f172a0d;min-width:0}.quick-tool-row .status-badge{padding:2px 8px!important;font-size:11.5px!important}.quick-tool-btn{border:none;cursor:pointer;padding:4px 11px;font-size:12.5px;font-weight:600;border-radius:999px;background:transparent;color:#475569;transition:background .18s ease,color .18s ease,box-shadow .18s ease;letter-spacing:.2px;white-space:nowrap}.quick-tool-btn:hover{background:#f1f5f9;color:#1e293b}.quick-tool-btn.active{color:#fff;box-shadow:0 2px 5px #0f172a2e}.quick-tool-btn.active.tone-blue{background:linear-gradient(135deg,#3b82f6,#2563eb)}.quick-tool-btn.active.tone-purple{background:linear-gradient(135deg,#a78bfa,#8b5cf6)}.quick-tool-btn.active.tone-red{background:linear-gradient(135deg,#f87171,#ef4444)}.quick-tool-btn.active.tone-amber{background:linear-gradient(135deg,#fbbf24,#f59e0b)}.section{margin-bottom:14px;padding:10px 12px;background:#f8fafc;border-radius:8px;border:1px solid #e2e8f0}.section>label{display:block;font-size:13px;font-weight:700;color:#334155;margin-bottom:8px}.section-inline{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px}.section-inline>label{margin-bottom:0;white-space:nowrap}.section-inline .badge-wrap{margin-bottom:0}input[type=text]{width:100%;padding:7px 10px;border:1px solid #cbd5e1;border-radius:6px;font-size:14px;outline:none}input[type=text]:focus{border-color:#3b82f6;box-shadow:0 0 0 2px #3b82f626}.hint{font-size:11px;color:#94a3b8;margin-top:3px}.record-layout{display:flex;flex-direction:column;gap:16px;max-width:1500px;margin:0 auto}@media (min-width: 768px){.record-layout{flex-direction:row;align-items:stretch}}.record-form{flex:1;max-height:90vh;overflow-y:auto}.record-preview{flex:1;background:#fff;padding:18px;border-radius:10px;box-shadow:0 2px 8px #00000014;display:flex;flex-direction:column}.record-preview textarea{flex:1;width:100%;min-height:500px;padding:16px;border:1px solid #cbd5e1;border-radius:8px;font-size:16px;font-family:Times New Roman,DFKai-SB,BiauKai,serif;line-height:1.8;resize:vertical;margin-bottom:12px;background:#f8fafc}.badge-wrap{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.badge-btn{padding:4px 10px;font-size:12px;border:1px solid #cbd5e1;border-radius:15px;background:#fff;color:#475569;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .15s;display:flex;align-items:center}.badge-btn:hover{border-color:#94a3b8}.badge-btn.active{background:#10b981;color:#fff;border-color:#059669;font-weight:700}.fam-card{background:#fff;border:1px solid #e2e8f0;border-left:4px solid #3b82f6;padding:10px;border-radius:6px;margin-bottom:10px}.fam-title{font-size:14px;font-weight:700;color:#1e293b;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between}.fam-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.child-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid #e2e8f0}.child-row:last-child{border-bottom:none}.child-icon{font-size:14px;min-width:22px;text-align:center}.child-icon.m{color:#2563eb}.child-icon.f{color:#dc2626}.child-name{font-size:13px;font-weight:600;min-width:40px}.chk-wrap{display:flex;align-items:center;gap:3px;font-size:12px;color:#64748b;cursor:pointer;margin-left:auto}.gen3-block{padding:4px 0 4px 26px}.gen3-block label{font-size:11px;color:#64748b;display:block;margin-bottom:2px}.canvas-wrap{background:#fff;border-radius:10px;box-shadow:0 2px 8px #00000014;flex:1;overflow:auto;position:relative}svg{display:block;-webkit-user-select:none;user-select:none}.status-badge{display:inline-block;padding:2px 10px;font-size:12px;font-weight:600;border-radius:12px;cursor:ns-resize;-webkit-user-select:none;user-select:none;border:1.5px solid}.status-badge[data-status=none]{background:#f1f5f9;color:#64748b;border-color:#cbd5e1}.status-badge[data-status=married]{background:#dcfce7;color:#166534;border-color:#86efac}.status-badge[data-status=cohab]{background:#fef3c7;color:#92400e;border-color:#fcd34d}.status-badge[data-status=separated]{background:#fee2e2;color:#991b1b;border-color:#fca5a5}.status-badge[data-status=divorced]{background:#fce7f3;color:#9d174d;border-color:#f9a8d4}.status-badge[data-status=horizontal]{background:#e0f2fe;color:#0369a1;border-color:#7dd3fc}.status-badge[data-status=vertical]{background:#f0e7ff;color:#6b21a8;border-color:#c4b5fd}.info-box{font-size:12px;color:#64748b;line-height:1.9;padding:2px 0}
