
:root{--ink:#171512;--muted:#7d766f;--line:#e5e0d8;--gold:#c5a028;--serif:"Hiragino Mincho ProN","Yu Mincho",serif;--sans:"Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif}*{box-sizing:border-box}body{margin:0;padding-bottom:80px;background:#fff;color:var(--ink);font-family:var(--sans);line-height:1.6;font-size:14px}a{color:inherit;text-decoration:none}button,input{font:inherit}button{cursor:pointer;color:inherit}button:disabled{opacity:.4;cursor:default}a,button,input{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--gold);outline-offset:3px}img{display:block;object-fit:cover}h1,h2,h3,p{margin:0}[hidden]{display:none!important}.prototype{background:#f0ede5;padding:9px 24px;display:flex;justify-content:space-between;gap:14px;font-size:10px}.prototype nav{display:flex;gap:23px}.prototype a[aria-current]{border-bottom:1px solid var(--ink)}.embed .prototype{display:none}.catalog-header{max-width:1200px;margin:0 auto;padding:23px 20px 20px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #eee}.wordmark{font-family:Georgia,serif;font-size:30px;letter-spacing:.2em;line-height:1}.catalog-header>span{font-family:Georgia,serif;font-size:9px;letter-spacing:.14em;color:#999}.catalog-main{max-width:1200px;margin:0 auto}.page-title{font-family:var(--serif);font-size:26px;font-weight:600;letter-spacing:.06em;margin:32px 0 14px 20px;display:inline-block;position:relative}.page-title:after{content:"";position:absolute;left:2px;bottom:-5px;width:40px;height:3px;border-radius:2px;background:linear-gradient(90deg,#d4af37,#c5a028)}.catalog-nav{padding:0 16px 18px;margin-bottom:10px}.class-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:3px;margin:16px 0 0;padding:3px;border:1px solid #e5e0d8;border-radius:999px;background:#fff}.class-tabs button{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-height:34px;min-width:0;border:0;border-radius:999px;background:transparent;color:#17151299;font-size:11.5px;font-weight:500;letter-spacing:.01em;white-space:nowrap;padding:0 2px}.class-tabs button[data-dot]:before{content:"";width:5px;height:5px;border-radius:50%;flex-shrink:0}.class-tabs button[data-dot=diamond]:before{background:#c5a028}.class-tabs button[data-dot=ruby]:before{background:#e0115f}.class-tabs button[data-dot=pearl]:before{background:#faf8f5;border:1px solid #8a8170}.class-tabs button[aria-pressed=true]{background:#171512;color:#f7f2e9;font-weight:600}.class-tabs #newcomer{border-left:1px solid #eee7dc}.search-wrap{margin-top:14px;position:relative}.search-wrap input{width:100%;min-height:50px;border:1px solid #2e261d24;border-radius:999px;background:#fff;color:#171512;padding:0 16px 0 43px;font-size:15px}.search-wrap>span{position:absolute;left:15px;top:6px;font-size:26px;color:#b9962e;pointer-events:none}.filter-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}.filter-count strong{display:inline-block;font-family:var(--serif);font-size:23px;font-weight:600;border-bottom:2px solid var(--gold);padding-bottom:2px;line-height:1.25}.filter-count>span{display:block;font-size:12px;color:var(--muted);margin-top:4px;line-height:1.35}.filter-open{min-height:48px;border:1px solid #171512;border-radius:999px;background:#171512;color:#fff;padding:0 15px;display:inline-flex;align-items:center;gap:8px;font-size:13px;font-weight:600;box-shadow:0 10px 18px #17151224}.filter-open>span{min-width:20px;height:20px;border-radius:999px;background:#d4af37;color:#171512;font-size:12px;display:grid;place-items:center;padding:0 6px}.profile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px;padding:0 20px}.profile-card{position:relative;min-width:0}.profile-link{display:block;background:transparent;border:0;padding:0;width:100%;text-align:left;position:relative}.profile-photo{width:100%;aspect-ratio:3/4;border-radius:14px}.class-badge{position:absolute;top:8px;right:8px;background:#333;color:#c5b382;font-size:10px;line-height:20px;padding:4px 12px;border-radius:50px;pointer-events:none;z-index:3}.class-badge.ruby{color:#e0115f}.class-badge.pearl{color:#f5f2ec}.new-badge{position:absolute;top:8px;left:8px;background:#f7f2e9;color:#222;font-size:9px;padding:3px 8px;border-radius:4px;letter-spacing:.05em;z-index:3}.card-meta{display:flex;gap:5px;white-space:nowrap;font-size:11px;color:#777;padding-top:10px}.card-name{font-family:var(--serif);font-size:20px;font-weight:600;line-height:1.2;margin-top:6px;padding-right:35px}.favorite-toggle{position:absolute;bottom:0;right:0;width:38px;height:38px;background:none;border:0;font-size:26px;line-height:1;color:#666;z-index:5}.favorite-toggle[aria-pressed=true]{color:#ff4d4f}.demo-note{text-align:center;color:#999;font-size:10px;line-height:1.8;margin:34px 20px}.floating-list{position:fixed;bottom:22px;right:22px;background:#fffffff2;backdrop-filter:blur(10px);border:1px solid #eee;border-radius:24px;box-shadow:0 2px 12px #00000014;padding:12px 19px;font-size:13px;letter-spacing:.03em;z-index:10}.floating-list>span{margin-left:8px}.empty-state{text-align:center;padding:45px 18px;font-size:14px;color:#999}.empty-sub{font-size:12px;color:#bbb;margin-top:8px}.pill-button{display:inline-flex;align-items:center;justify-content:center;border:1px solid #1a1a1a;background:#fff;color:#1a1a1a;padding:12px 18px;font-size:13px;min-height:45px;border-radius:999px;gap:8px}.dark{background:#171512;color:#fff}.empty-state .pill-button{margin-top:24px}.favorites-main{max-width:600px;margin:0 auto;padding:0 16px 40px}.back-link{display:block;font-size:13px;color:#999;padding:24px 0 4px}.favorites-main h1{font-size:13px;font-weight:400;color:#999;letter-spacing:.03em;margin:26px 0 6px;line-height:1.4}.favorites-list{list-style:none;padding:0;margin:0}.favorite-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #eee;gap:8px}.favorite-profile{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;flex:1;min-width:0;border:0;background:none;padding:0;text-align:left}.favorite-profile img{width:56px;height:56px;border-radius:8px;flex-shrink:0;background:#f3f3f3}.favorite-name{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:14px}.favorite-class{font-size:9px;letter-spacing:.15em;color:#b08d3f;line-height:1}.favorite-class.ruby{color:#e0115f}.favorite-class.pearl{color:#8a8170}.apply-person{border:0;background:transparent;font-size:11px;color:#a8862a;letter-spacing:.04em;white-space:nowrap;padding:10px 2px;flex-shrink:0}.delete-favorite{border:0;background:none;font-size:18px;line-height:1;color:#999;padding:10px;flex-shrink:0}.consult-button{display:block;width:100%;margin:20px auto 8px;padding:15px;font-size:14px;font-weight:600;letter-spacing:.05em}.favorites-main .demo-note{margin:24px 0;line-height:1.9}.toast{position:fixed;bottom:85px;left:50%;transform:translate(-50%,10px);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:100;background:#171512;color:white;border-radius:8px;max-width:90vw;width:max-content;padding:12px 18px;font-size:11px}.toast.visible{opacity:1;transform:translate(-50%,0)}dialog{border:1px solid #2e261d1f;background:#fff;color:var(--ink);padding:0;max-height:90dvh;width:min(740px,calc(100vw - 32px));overflow:auto;border-radius:18px;box-shadow:0 20px 80px #0004}dialog::backdrop{background:#17151270}.dialog-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.dialog-heading h2{font-size:18px;font-weight:700}.close-button{width:42px;height:42px;border:1px solid #2e261d24;border-radius:999px;background:#fff;font-size:24px;line-height:1;flex-shrink:0}.filter-dialog{position:fixed;top:auto;bottom:0;left:0;right:0;margin:0 auto;width:min(100vw,440px);max-height:78dvh;border-radius:26px 26px 0 0;padding:20px 18px 22px}.filter-scope{font-size:10px;color:#999;margin:8px 0 15px}.filter-group{border:0;margin:0 0 20px;padding:0}.filter-group legend{display:block;font-size:12px;font-weight:600;letter-spacing:.04em;color:#7d766f;margin:0 0 8px}.filter-options{display:flex;flex-wrap:wrap;gap:8px}.filter-chip{border:1px solid #2e261d2e;background:#fff;color:#4e463e;border-radius:999px;padding:9px 14px;font-size:13px;font-weight:600}.filter-chip[aria-pressed=true]{background:#171512;color:#fff;border-color:#171512}.filter-actions{display:flex;gap:8px;position:sticky;bottom:-22px;padding:15px 0;background:#fff}.filter-actions .dark{flex:1}.profile-dialog{padding:24px}.profile-dialog>.dialog-heading{margin-bottom:20px}.profile-detail{display:grid;grid-template-columns:1fr 1fr;gap:26px}.detail-photo{width:100%;aspect-ratio:3/4;border-radius:14px}.detail-name{font-family:var(--serif);font-size:26px;margin:0 0 7px}.detail-class{font-size:11px;letter-spacing:.15em;color:#b08d3f;margin-bottom:10px}.detail-class.ruby{color:#e0115f}.detail-class.pearl{color:#8a8170}.detail-demo{font-size:9px;color:#999;line-height:1.8;margin-bottom:16px}.detail-facts{margin:0}.detail-facts>div{display:grid;grid-template-columns:80px 1fr;font-size:12px;padding:9px 0;border-bottom:1px solid #eee}.detail-facts dt{color:#999}.detail-facts dd{margin:0}.detail-section{margin:18px 0}.detail-section h3{font-size:12px;color:#777;margin-bottom:7px;font-weight:500}.detail-section p{font-size:12px;line-height:1.9}.profile-detail .pill-button{width:100%;margin-top:12px}.message-dialog{max-width:560px;padding:25px}.message-note{font-size:11px;line-height:1.9;color:#777;margin:17px 0}.message-preview{font-family:inherit;font-size:12px;line-height:1.9;white-space:pre-wrap;overflow-wrap:anywhere;background:#f7f6f3;border:1px solid #e9e5dc;padding:18px;margin:0 0 20px}.message-dialog>.pill-button{width:100%}@media(max-width:767px){.profile-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;padding:0 16px}.page-title{font-size:23px}.prototype{padding:8px 16px;gap:7px;flex-wrap:wrap;font-size:9px}.prototype nav{gap:20px}.catalog-header{padding:18px 20px}.wordmark{font-size:27px}}@media(max-width:479px){.profile-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 10px;padding:0 16px}.profile-link{position:relative;display:block}.profile-photo{aspect-ratio:3/4;border-radius:14px}.profile-link:after{content:"";position:absolute;left:0;right:0;bottom:0;height:115px;background:linear-gradient(to top,#000d,transparent);border-radius:0 0 14px 14px;pointer-events:none}.card-meta{position:absolute;left:11px;right:11px;bottom:40px;margin:0;padding:0;z-index:4;overflow:hidden;font-size:10px;color:#fff;gap:3px;line-height:1.5}.card-name{position:absolute;left:11px;right:35px;bottom:16px;font-size:15px;color:white;z-index:4;padding:0;margin:0}.favorite-toggle{bottom:6px;right:5px;color:#fff;font-size:24px;width:34px;height:38px}.class-badge{top:auto;right:auto;bottom:67px;left:11px;padding:3px 7px;border-radius:6px;font-size:9px;line-height:1;background:#0008}.new-badge{font-size:8px;padding:3px 6px}.demo-note{font-size:9px;margin:25px 16px}.profile-dialog{padding:18px}.profile-detail{grid-template-columns:1fr;gap:20px}.detail-photo{max-height:390px;object-position:center 30%}.profile-dialog>.dialog-heading{margin-bottom:14px}.profile-detail .detail-copy{padding-bottom:10px}.message-dialog{padding:20px}.message-preview{font-size:11px;padding:13px}.floating-list{bottom:18px;right:16px}.favorites-main{padding-left:16px;padding-right:16px}}@media(max-width:359px){.class-tabs button{font-size:10.5px;letter-spacing:0}.class-tabs button[data-dot]:before{display:none}.card-meta{font-size:9px;left:9px;gap:2px}.card-name{left:9px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

.detail-main{max-width:850px;margin:0 auto;padding:0 24px 30px}.detail-main>.back-link{padding:23px 0 24px}.detail-main .profile-detail{gap:40px}.detail-main .detail-photo{max-height:none}.detail-main .detail-name{font-size:30px}.detail-main .detail-copy{padding-top:5px}@media(min-width:480px){.profile-card{background:white;border-radius:12px;padding:16px;box-shadow:0 2px 10px #00000010}.favorite-toggle{bottom:13px;right:13px}}@media(max-width:479px){.detail-main{padding:0 18px 30px}.detail-main .profile-detail{gap:24px}.detail-main .detail-photo{max-height:470px;object-position:center 25%}}

.detail-name-row{display:flex;align-items:center;gap:6px;margin-bottom:7px}.detail-name-row .detail-name{margin:0}.detail-name-row .favorite-toggle{position:static;flex-shrink:0;width:42px;height:42px;font-size:28px;color:#666}.detail-name-row .favorite-toggle[aria-pressed=true]{color:#ff4d4f}

/* Shared image treatment for fixed, fictional sample portraits. */
.portrait-media{display:block;overflow:hidden;position:relative;flex-shrink:0}.portrait-sprite{display:block;position:absolute;left:0;top:0;width:100%;height:100%;background-image:url("assets/demo-portraits-grid.webp");background-size:400% 600%;background-repeat:no-repeat}.favorite-profile .portrait-media{width:56px;height:56px;border-radius:8px;background-color:#f3f3f3}.favorite-profile .portrait-sprite{position:absolute;left:0;top:-9.333px;height:74.667px}.sample-count-note{font-size:10px;line-height:1.6;color:#8a8170;margin:12px 0 0}.card-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.favorite-name{overflow:hidden}.detail-photo.portrait-media:not(img){aspect-ratio:3/4;max-height:none}@media(max-width:479px){.sample-count-note{font-size:9px;margin-top:10px}.profile-grid .card-name{font-size:14px;letter-spacing:0}}

.portrait-sprite.portrait-editorial{background-image:url("assets/demo-portraits-editorial.webp")}

.phrase{display:inline-block}

img.portrait-media{object-position:center 22%}.favorite-profile img.portrait-media{object-position:center 8%}
