:root{--cream:#f6f1e6;--paper:#fffdf8;--forest:#315a4a;--forest-soft:#e5eee8;--brown:#765b43;--brown-soft:#eee4d6;--ink:#2f2b26;--muted:#736b61;--line:#d8cbbb;--danger:#9b493e;--danger-soft:#f8e8e5;font-family:"Yu Mincho","Hiragino Mincho ProN","Yu Gothic","Meiryo",serif;color:var(--ink);background:var(--cream)}
*{box-sizing:border-box}body{margin:0;min-height:100vh;background-color:var(--cream);background-image:radial-gradient(rgba(118,91,67,.12) .7px,transparent .7px);background-size:20px 20px}button,input{font:inherit}a{color:inherit}.site-header{display:flex;align-items:center;gap:20px;min-height:66px;padding:10px clamp(16px,4vw,48px);border-bottom:1px solid var(--line);background:rgba(255,253,248,.96)}.brand{display:flex;align-items:center;gap:8px;color:var(--forest);font-weight:600;text-decoration:none;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:50%;background:var(--forest);color:#fff}.brand-mark-large{width:54px;height:54px}.site-nav{display:flex;align-items:center;gap:14px;margin-left:auto}.site-nav a{text-decoration:none;color:var(--forest);white-space:nowrap}.site-nav form{margin:0}.user-label{color:var(--muted);white-space:nowrap}.page-shell{width:min(1080px,calc(100% - 28px));margin:0 auto;padding:28px 0 50px}.auth-card,.form-card,.table-card,.tree-stage{border:1px solid var(--line);border-radius:18px;background:var(--paper);box-shadow:0 16px 45px rgba(71,55,39,.12)}.auth-card{width:min(430px,100%);margin:6vh auto 0;padding:30px}.auth-heading{text-align:center}.auth-heading h1{margin:12px 0 5px;color:var(--forest);font-size:1.5rem;font-weight:500}.auth-heading p,.form-card p,.page-heading p{color:var(--muted)}.stack-form{display:grid;gap:15px;margin-top:22px}.stack-form label{display:grid;gap:6px;color:var(--brown)}.stack-form input{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}.stack-form input:focus{outline:3px solid rgba(49,90,74,.16);border-color:var(--forest)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:8px 13px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);text-decoration:none;cursor:pointer;white-space:nowrap}.button-primary{border-color:var(--forest);background:var(--forest);color:#fff}.button-quiet{background:transparent}.button-wide{width:100%}.button:disabled{cursor:not-allowed;opacity:.6}.flash{margin:0 auto 14px;padding:11px 13px;border:1px solid var(--line);border-radius:10px;background:var(--paper)}.flash-error{border-color:#dfb7b1;background:var(--danger-soft);color:var(--danger)}.flash-success{border-color:#9ebaaa;background:var(--forest-soft);color:var(--forest)}.form-card{padding:25px}.narrow{width:min(540px,100%);margin:25px auto}.form-card h1{margin-top:0;color:var(--forest);font-weight:500}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:16px}.page-heading h1{margin:0 0 4px;color:var(--forest);font-weight:500}.page-heading p{margin:0}.heading-actions{display:flex;gap:8px}.tree-stage{min-height:560px;padding:24px;background-color:var(--paper);background-image:linear-gradient(rgba(49,90,74,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(49,90,74,.045) 1px,transparent 1px);background-size:28px 28px}.empty-state{display:grid;justify-items:center;align-content:center;min-height:500px;text-align:center;color:var(--muted)}.empty-state h1,.empty-state h2{color:var(--forest);font-weight:500}.empty-state p{max-width:580px;line-height:1.7}.empty-state.standalone{min-height:55vh}.empty-mark{display:grid;place-items:center;width:72px;height:72px;border:4px solid #cbded2;border-radius:50%;background:#f2e8db;color:var(--forest);font-size:1.5rem}.person-grid{display:flex;flex-wrap:wrap;justify-content:center;gap:24px}.person-card{display:grid;justify-items:center;gap:6px;width:150px;padding:16px;border:1px solid var(--line);border-radius:14px;background:#fff}.person-face{display:grid;place-items:center;width:62px;height:62px;border:4px solid #ddd;border-radius:50%;background:#f5efe7;font-size:1.25rem}.person-male .person-face{border-color:#c5dfcf}.person-female .person-face{border-color:#efcbd2}.person-card small{color:var(--muted)}.table-card{overflow:auto}.table-card table{width:100%;border-collapse:collapse}.table-card th,.table-card td{padding:13px 15px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}.table-card th{background:var(--brown-soft);color:var(--brown);font-weight:500}.table-card tr:last-child td{border-bottom:0}.development-note{color:var(--muted)}
@media(max-width:760px){.site-header{align-items:flex-start;flex-wrap:wrap}.site-nav{width:100%;margin-left:0;overflow-x:auto;padding-bottom:3px}.user-label{display:none}.page-shell{width:min(100% - 20px,1080px);padding-top:18px}.page-heading{align-items:stretch;flex-direction:column}.heading-actions{display:grid;grid-template-columns:1fr 1fr}.auth-card{margin-top:2vh;padding:23px}.tree-stage{min-height:480px;padding:16px}.empty-state{min-height:430px}.table-card th,.table-card td{padding:11px}}

select,textarea{font:inherit}.stack-form select,.person-form input,.person-form select,.person-form textarea{width:100%;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink)}.person-form input:focus,.person-form select:focus,.person-form textarea:focus,.stack-form select:focus{outline:3px solid rgba(49,90,74,.16);border-color:var(--forest)}.stepper{display:grid;grid-template-columns:repeat(4,1fr);margin:0 0 16px;padding:0;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--paper);list-style:none}.stepper li{padding:11px 8px;text-align:center;color:var(--muted)}.stepper li+li{border-left:1px solid var(--line)}.stepper .active{background:var(--forest);color:#fff}.stepper .done{background:var(--forest-soft);color:var(--forest)}.narrow-wide{width:min(700px,100%);margin:20px auto}.relation-options{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0;padding:14px;border:1px solid var(--line);border-radius:12px}.relation-options legend{padding:0 6px;color:var(--brown)}.relation-options label{display:flex;align-items:flex-start;gap:9px;padding:12px;border:1px solid var(--line);border-radius:10px;background:#fff;cursor:pointer}.relation-options input{margin-top:4px;accent-color:var(--forest)}.relation-options span{display:grid;gap:3px}.relation-options small{color:var(--muted)}.person-form{display:grid;gap:14px}.form-section{padding:20px}.form-section h2,.detail-card h2{margin:0 0 14px;color:var(--forest);font-size:1.2rem;font-weight:500}.form-grid{display:grid;gap:12px;margin-bottom:12px}.form-grid.two{grid-template-columns:1fr 1fr}.person-form label,.date-grid label{display:grid;gap:6px;color:var(--brown)}.person-form em{font-size:.8em;font-style:normal;color:var(--danger)}.date-field{margin:14px 0;padding:13px;border:1px solid var(--line);border-radius:11px}.date-field legend{padding:0 6px;color:var(--forest)}.date-grid{display:grid;grid-template-columns:1.5fr repeat(3,.7fr);gap:9px}.full-field{display:grid;gap:6px}.form-help{margin:8px 0 0;color:var(--muted)}.form-actions{display:flex;justify-content:flex-end}.form-actions .button{min-width:210px}.detail-hero{display:flex;align-items:center;gap:16px;margin-bottom:15px;padding:20px;border:1px solid var(--line);border-radius:18px;background:var(--paper);box-shadow:0 14px 38px rgba(71,55,39,.1)}.detail-face{width:76px;height:76px;flex:none}.detail-hero h1{margin:2px 0;color:var(--forest);font-weight:500}.detail-hero p{margin:3px 0;color:var(--muted)}.eyebrow{color:var(--brown)!important}.detail-actions{display:flex;gap:8px;margin-left:auto}.detail-layout{display:grid;grid-template-columns:.9fr 1.1fr;gap:14px}.detail-card{padding:20px}.detail-list{display:grid;gap:0;margin:0}.detail-list div{display:grid;grid-template-columns:120px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.detail-list div:last-child{border-bottom:0}.detail-list dt{color:var(--muted)}.detail-list dd{margin:0}.pre-line{white-space:pre-line}.relation-group{padding:10px 0;border-bottom:1px solid var(--line)}.relation-group h3{margin:0 0 7px;color:var(--brown);font-size:1rem}.relation-group p{margin:0;color:var(--muted)}.relation-links{display:flex;flex-wrap:wrap;gap:7px}.relation-links a{padding:7px 10px;border-radius:999px;background:var(--forest-soft);color:var(--forest);text-decoration:none}.add-relation-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:15px}.button-danger{border-color:#dfb7b1;background:var(--danger-soft);color:var(--danger)}.danger-zone{margin-top:16px;padding:18px;border:1px solid #dfb7b1;border-radius:14px;background:var(--danger-soft)}.danger-zone h2{margin:0 0 5px;color:var(--danger);font-size:1.1rem}.danger-zone p{margin:0 0 11px;color:var(--muted)}.person-card{text-decoration:none;color:var(--ink)}.person-card:hover{border-color:var(--forest);box-shadow:0 8px 22px rgba(49,90,74,.13)}.trash-list{display:grid;gap:10px}.trash-card{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border:1px solid var(--line);border-radius:14px;background:var(--paper)}.person-mini{display:flex;align-items:center;gap:11px}.person-mini span:last-child{display:grid;gap:3px}.person-mini small{color:var(--muted);line-height:1.5}
@media(max-width:760px){.stepper{font-size:.85rem}.stepper li{padding:9px 4px}.relation-options,.form-grid.two,.detail-layout{grid-template-columns:1fr}.date-grid{grid-template-columns:1fr 1fr}.detail-hero{align-items:flex-start;flex-wrap:wrap}.detail-actions{display:grid;grid-template-columns:1fr 1fr;width:100%;margin-left:0}.detail-list div{grid-template-columns:100px 1fr}.form-actions .button{width:100%}.trash-card{align-items:stretch;flex-direction:column}.trash-card form,.trash-card .button{width:100%}}

.tree-toolbar{display:flex;align-items:center;gap:7px;margin-bottom:10px;padding:9px 10px;border:1px solid var(--line);border-radius:12px;background:var(--paper)}.tree-toolbar .button{min-width:42px}.tree-reorder-button[aria-pressed="true"]{border-color:var(--brown);background:var(--brown);color:#fff}.tree-zoom-label{min-width:52px;color:var(--muted);text-align:center}.tree-legend{display:flex;align-items:center;gap:6px;margin-left:auto;color:var(--muted);white-space:nowrap}.legend-line{display:inline-block;width:26px;border-top:2px solid var(--forest)}.legend-line.dotted{border-top-style:dashed}.tree-viewport{position:relative;height:min(68vh,680px);min-height:500px;padding:0;overflow:hidden;cursor:grab;touch-action:none;user-select:none}.tree-viewport.is-dragging{cursor:grabbing}.tree-viewport.is-reorder-mode .tree-person-node--reorderable{cursor:ew-resize;outline:3px solid rgba(118,91,67,.18)}.tree-canvas{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}.tree-lines,.tree-nodes{position:absolute;inset:0}.tree-lines{overflow:visible;pointer-events:none}.tree-parent-link{stroke:#6e8c78;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.tree-parent-link--dotted{stroke-dasharray:7 6}.tree-partner-link{stroke:#9a7354;stroke-width:3;stroke-linecap:round;vector-effect:non-scaling-stroke}.tree-partner-link--ended{stroke-dasharray:5 5}.tree-person-node{position:absolute;z-index:2;display:grid;justify-items:center;align-content:center;gap:3px;width:136px;height:130px;padding:9px;border:1px solid var(--line);border-radius:14px;background:#fffdf9;color:var(--ink);text-align:center;text-decoration:none;box-shadow:0 7px 20px rgba(71,55,39,.12)}.tree-person-node:hover,.tree-person-node:focus-visible{z-index:3;border-color:var(--forest);outline:3px solid rgba(49,90,74,.14)}.tree-person-node.is-reordering{z-index:10;cursor:grabbing;box-shadow:0 15px 34px rgba(71,55,39,.25)}.tree-node-face{display:grid;place-items:center;width:54px;height:54px;border:4px solid #d8d1c8;border-radius:50%;background:#f5efe7;color:var(--forest);font-size:1.15rem}.tree-person-node.person-male .tree-node-face{border-color:#c5dfcf}.tree-person-node.person-female .tree-node-face{border-color:#efcbd2}.tree-person-node strong{display:block;max-width:100%;padding-bottom:2px;overflow:hidden;line-height:1.55;text-overflow:ellipsis;white-space:nowrap}.tree-person-node small{display:block;max-width:100%;padding-bottom:2px;overflow:hidden;color:var(--muted);line-height:1.55;text-overflow:ellipsis;white-space:nowrap}
@media(max-width:760px){.tree-page-heading p{line-height:1.6}.tree-toolbar{overflow-x:auto}.tree-legend{display:none}.tree-viewport{height:62vh;min-height:470px}.tree-toolbar .button{flex:none}}

.tree-mobile-menu-toggle,.tree-mobile-menu,.tree-mobile-menu-backdrop{display:none}
@media(max-width:760px){
  body.tree-screen{height:100dvh;overflow:hidden}
  .tree-screen .site-header{height:57px;min-height:57px;padding:8px 12px;border-bottom-color:rgba(171,151,129,.65)}
  .tree-screen .brand-mark{width:34px;height:34px}
  .tree-screen .site-nav{display:none}
  .tree-screen .page-shell{width:100%;height:calc(100dvh - 57px);padding:0}
  .tree-screen .flash{position:fixed;z-index:35;top:64px;left:10px;right:10px;margin:0}
  .tree-screen .tree-page-heading,.tree-screen>.page-shell>.tree-toolbar{display:none}
  .tree-screen .tree-stage{height:100%;min-height:0;border-width:0;border-radius:0;box-shadow:none}
  .tree-screen .tree-viewport{height:100%;min-height:0}
  .tree-screen .empty-state{min-height:100%}
  .tree-mobile-menu-toggle{position:fixed;z-index:30;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:7px;min-height:50px;padding:10px 17px;border:0;border-radius:25px;background:var(--forest);color:#fff;box-shadow:0 7px 24px rgba(36,66,54,.32);font-weight:600}
  .tree-mobile-menu-icon{font-size:1.05rem;line-height:1}
  .tree-mobile-menu-backdrop{position:fixed;z-index:40;inset:0;display:block;background:rgba(31,36,32,.42);backdrop-filter:blur(2px)}
  .tree-mobile-menu{position:fixed;z-index:50;right:0;bottom:0;left:0;display:block;max-height:min(82dvh,680px);padding:18px 18px calc(18px + env(safe-area-inset-bottom));overflow-y:auto;border:1px solid var(--line);border-radius:22px 22px 0 0;background:var(--paper);box-shadow:0 -16px 42px rgba(45,38,31,.2)}
  .tree-mobile-menu[hidden],.tree-mobile-menu-backdrop[hidden]{display:none}
  .tree-mobile-menu-header{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;margin-bottom:16px}
  .tree-mobile-menu-header>div{display:grid;gap:3px}
  .tree-mobile-menu-header strong{color:var(--forest);font-size:1.15rem}
  .tree-mobile-menu-header small{color:var(--muted)}
  .tree-mobile-menu-close{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--ink);font-size:1.5rem;line-height:1}
  .tree-mobile-view-controls{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;margin-bottom:10px;padding:9px;border-radius:12px;background:var(--forest-soft)}
  .tree-mobile-view-controls .button{min-height:46px;font-size:1.2rem}
  .tree-mobile-menu-actions,.tree-mobile-admin-links{display:grid;grid-template-columns:1fr 1fr;gap:9px}
  .tree-mobile-menu-actions .button,.tree-mobile-admin-links .button{min-height:48px;white-space:normal}
  .tree-mobile-menu-actions .tree-reorder-button{grid-column:1/-1}
  .tree-mobile-edit-section{display:grid;gap:9px;margin-top:16px;padding-top:15px;border-top:1px solid var(--line)}
  .tree-mobile-edit-section>span{color:var(--brown);font-weight:600}
  .tree-mobile-edit-section .button{min-height:50px}
  .tree-mobile-edit-section p{margin:0;color:var(--muted);font-size:.88rem;line-height:1.55}
  .tree-mobile-admin-links{margin-top:12px}
  .tree-mobile-logout{margin-top:15px;padding-top:12px;border-top:1px solid var(--line)}
  .tree-mobile-logout .button{width:100%;min-height:46px}
  .tree-menu-open .tree-mobile-menu-toggle{visibility:hidden}
}
