/* Ideal trait edit alignment overrides */
.trait-form{grid-template-columns:1fr 70px 34px;gap:.55rem .7rem;align-items:center}
.trait-form label{display:flex;align-items:center;min-height:34px}
.trait-form input{padding:.35rem .55rem;font-size:.75rem;min-height:34px}
/* --- Overrides appended at end so they take precedence --- */
.ideal-list li{padding:.35rem .4rem;align-items:center;position:relative}
.ideal-list li:nth-child(odd){background:linear-gradient(to right,rgba(0,0,0,.03),rgba(0,0,0,0))}
.theme-dark .ideal-list li:nth-child(odd){background:linear-gradient(to right,rgba(255,255,255,.05),rgba(255,255,255,0))}
.theme-highcontrast .ideal-list li:nth-child(odd){background:linear-gradient(to right,rgba(255,255,255,.15),rgba(255,255,255,0))}
.ideal-list .trait-name{flex:0 1 auto;white-space:nowrap;max-width:60%;overflow:hidden;text-overflow:ellipsis}
.ideal-list .leader{flex:1 1 auto;min-width:24px;border-bottom:1px dotted var(--color-border);margin:0 .4rem .15rem;height:0;opacity:.55}
.ideal-list .trait-value{flex:0 0 auto;min-width:2.4rem;text-align:right;font-variant-numeric:tabular-nums}
.trait-form .del-trait,.trait-form .add-btn{display:flex;align-items:center;justify-content:center;height:34px;padding:0}
.trait-form .add-btn{font-weight:700}
.form-actions{margin-top:.35rem;padding-top:.5rem;border-top:1px solid var(--color-border)}
@media (max-width:640px){ .trait-form{grid-template-columns:1fr 58px 30px} }
:root { --font-body:'Inter',system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen,Cantarell,'Fira Sans','Droid Sans','Helvetica Neue',Arial,sans-serif; --radius-sm:4px; --radius-md:8px; --shadow-sm:0 1px 2px rgba(0,0,0,.08),0 2px 4px -2px rgba(0,0,0,.08); --shadow-md:0 2px 4px rgba(0,0,0,.08),0 6px 14px -6px rgba(0,0,0,.15); --color-bg:#f5f7fa; --color-surface:#ffffff; --color-border:#dfe3e8; --color-text:#20252b; --color-text-soft:#5a6572; --color-accent:#2667ff; --color-accent-hover:#1655e6; --color-on-accent:#ffffff; --color-danger:#d92d20; --color-danger-bg:#fdecec; --color-focus:#2667ff; --gradient-accent:linear-gradient(135deg,#4e8cff,#2667ff); }
.theme-dark { --color-bg:#111418; --color-surface:#1a1f25; --color-border:#2a323b; --color-text:#f2f5f8; --color-text-soft:#99a3b0; --color-accent:#5393ff; --color-accent-hover:#3d7fe9; --color-on-accent:#ffffff; --color-danger:#ff6154; --color-danger-bg:#392020; --gradient-accent:linear-gradient(135deg,#3d7fe9,#1f4cba); }
.theme-highcontrast { --color-bg:#000; --color-surface:#000; --color-border:#fff; --color-text:#fff; --color-text-soft:#d0d0d0; --color-accent:#ffde00; --color-accent-hover:#ffb300; --color-on-accent:#000; --color-danger:#ff4d4d; --color-danger-bg:#2d0000; --gradient-accent:linear-gradient(135deg,#ffde00,#ffb300); }
html,body{height:100%} body{font-family:var(--font-body);margin:0;background:var(--color-bg);color:var(--color-text);-webkit-font-smoothing:antialiased} h1{margin:0;font-size:clamp(1.4rem,3vw,2.2rem);font-weight:600;background:var(--gradient-accent);-webkit-background-clip:text;background-clip:text;color:transparent;letter-spacing:.5px} h3{margin:.25rem 0 .75rem;font-weight:600}
a{color:var(--color-accent)} a:hover{color:var(--color-accent-hover)} button,select{font:inherit} button{background:var(--color-accent);color:var(--color-on-accent);border:1px solid var(--color-accent-hover);border-radius:var(--radius-sm);padding:.55rem .9rem;cursor:pointer;line-height:1;display:inline-flex;align-items:center;gap:.35rem;font-weight:500;box-shadow:var(--shadow-sm);transition:background .18s,transform .18s} button:hover{background:var(--color-accent-hover)} button:active{transform:translateY(1px)} button:disabled{opacity:.55;cursor:not-allowed}.danger{background:var(--color-danger);border-color:var(--color-danger)} .danger:hover{background:#b91d12} #app-shell{max-width:1280px;margin:0 auto;padding:clamp(.75rem,2vw,1.5rem)} header{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;margin-bottom:1rem} .top-actions{display:flex;flex-wrap:wrap;gap:.55rem} .theme-select{background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:.5rem .65rem;box-shadow:var(--shadow-sm)} #container{display:grid;gap:1.25rem;grid-template-columns:repeat(auto-fill,minmax(min(360px,100%),1fr));align-items:start} #container.single-view{grid-template-columns:1fr} .single-view .person-card.single-person{padding:clamp(1rem,2vw,2.25rem)} .single-view .person-card.single-person h3{font-size:clamp(1.1rem,2.2vw,1.6rem)} .single-view .person-card.single-person .badge{top:1rem;right:1rem;font-size:.8rem;padding:.4rem .65rem} .single-view .person-card.single-person canvas{width:100%!important;max-width:900px;margin:0 auto;display:block;height:600px;max-height:600px} .card{border:1px solid var(--color-border);background:var(--color-surface);border-radius:var(--radius-md);padding:1rem 1.1rem 1.15rem;box-shadow:var(--shadow-sm);position:relative;overflow:hidden} .card:hover{box-shadow:var(--shadow-md)} .person-card .edit-btn{opacity:0;visibility:hidden;pointer-events:none;transition:opacity .18s ease,transform .18s ease;transform:translateY(-4px)} .person-card:hover .edit-btn{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)} .badge{position:absolute;top:.55rem;right:.6rem;background:var(--color-accent);color:var(--color-on-accent);font-size:.7rem;padding:.25rem .45rem;border-radius:999px;letter-spacing:.5px;font-weight:600;box-shadow:0 0 0 2px var(--color-surface)} .ideal-list{list-style:none;padding:0;margin:.5rem 0 0} .ideal-list li{display:flex;justify-content:space-between;gap:.75rem;padding:.35rem 0;border-bottom:1px dashed var(--color-border);font-size:.85rem} .ideal-list li:last-child{border-bottom:none} .subhead{font-size:.72rem;text-transform:uppercase;letter-spacing:1px;color:var(--color-text-soft);font-weight:500;margin:-.25rem 0 .75rem} .trait-form{display:grid;grid-template-columns:1fr 70px 32px;gap:.45rem .6rem;margin-top:.5rem} .trait-form label{font-size:.6rem;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-soft);font-weight:600;line-height:1.1} .trait-form input{width:100%;padding:.4rem .45rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-size:.8rem} .trait-form input:focus{outline:2px solid var(--color-focus);outline-offset:1px} .trait-form .del-trait{background:var(--color-danger-bg);color:var(--color-danger);border:1px solid var(--color-danger);font-weight:600} .trait-form .del-trait:hover{background:var(--color-danger);color:#fff} .new-trait-name{border:2px dashed var(--color-border);background:var(--color-surface)} .add-btn{background:var(--color-accent);border:1px solid var(--color-accent-hover);font-weight:700} .form-actions{grid-column:1/-1;display:flex;gap:.6rem;justify-content:flex-end;margin-top:.5rem} .inline-status{font-size:.7rem;color:var(--color-text-soft);margin-left:.25rem} .full-span{grid-column:1 / -1} canvas{max-width:100%;height:auto!important} @media (max-width:640px){ header{flex-direction:column;align-items:stretch} .top-actions{justify-content:center} .badge{font-size:.6rem} .trait-form{grid-template-columns:1fr 60px 28px} } *{scrollbar-width:thin;scrollbar-color:var(--color-accent) var(--color-bg)} *::-webkit-scrollbar{width:10px} *::-webkit-scrollbar-track{background:var(--color-bg)} *::-webkit-scrollbar-thumb{background:var(--color-accent);border:2px solid var(--color-bg);border-radius:20px} *::-webkit-scrollbar-thumb:hover{background:var(--color-accent-hover)} .person-edit-form{display:flex;flex-direction:column;gap:.55rem;max-height:380px;overflow:auto;padding-right:.25rem} .person-edit-form .trait-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem} .person-edit-form label{flex:1;font-size:.6rem;text-transform:uppercase;letter-spacing:.5px;color:var(--color-text-soft);font-weight:600} .person-edit-form input{width:80px;padding:.4rem .45rem;border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);color:var(--color-text);font-size:.8rem} .person-edit-form input:focus{outline:2px solid var(--color-focus);outline-offset:1px}
