@font-face{font-family:Montserrat;src:url('/assets/fonts/montserrat-latin.woff2') format('woff2');font-style:normal;font-weight:400 700;font-display:swap}
:root{--ink:#1C1C1C;--paper:#FAF9F5;--technical:#A7BBE0;--blue:#237EE8;--success:#4FAE78;--muted:#595956;--line:#d6d6d0;font-family:Montserrat,"PingFang SC","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:var(--ink);text-decoration-color:var(--blue);text-underline-offset:3px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:3px}[hidden]{display:none!important}button:disabled{cursor:not-allowed;opacity:.6}img{max-width:100%}.brand-logo{display:inline-flex;align-items:center;flex-shrink:0}.brand-logo img{width:154px;height:40px;object-fit:contain}.eyebrow,.section-kicker{font-size:.68rem;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.passport-header,.admin-header{background:var(--ink);color:var(--paper)}.passport-header{display:flex;align-items:center;gap:24px;padding:18px max(24px,calc((100% - 1080px)/2));min-height:76px}.passport-header>span{font-size:.67rem;letter-spacing:.17em;font-weight:500;border-left:1px solid #666;padding-left:24px}.passport-main{max-width:1080px;margin:auto}.passport-intro{padding:54px 28px 32px}.customer-brand{font-size:1.3rem;font-weight:700;letter-spacing:.04em;margin-bottom:32px;min-height:26px}.customer-logo{display:block;width:auto;max-width:240px;height:auto;max-height:72px;object-fit:contain;object-position:left center}.passport-intro h1{font-size:clamp(2rem,5vw,3.7rem);font-weight:700;letter-spacing:-.045em;line-height:1.13;margin:15px 0 12px;overflow-wrap:anywhere}.passport-subtitle{color:var(--muted);font-size:.95rem;line-height:1.7;margin:0}.passport-index{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:25px;font-size:.76rem}.passport-index>span{font-size:.62rem;letter-spacing:.11em;color:var(--muted);font-weight:500}.passport-index strong{font-weight:600;overflow-wrap:anywhere}.passport-photos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:0 28px 24px}.passport-photos figure{margin:0;background:#fff;overflow:hidden;border:1px solid var(--line);border-radius:6px;display:grid;place-items:center}.passport-photos .photo-main{grid-column:1/-1;min-height:340px}.passport-photos img{display:block;width:100%;object-fit:contain;height:auto;max-height:650px;padding:24px}.passport-photos .photo-secondary img{aspect-ratio:4/3;max-height:340px}.passport-section{margin:28px;padding:32px;background:#fff;border:1px solid var(--line);border-radius:6px}.passport-section h2{font-size:clamp(1.25rem,3vw,1.65rem);line-height:1.35;font-weight:600;letter-spacing:-.025em;margin:10px 0 26px}.passport-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 36px;margin:0}.passport-facts>div{border-top:1px solid var(--line);padding:15px 0;display:flex;justify-content:space-between;gap:20px;align-items:baseline}.passport-facts dt{color:var(--muted);font-size:.77rem;line-height:1.6;max-width:55%}.passport-facts dd{margin:0;text-align:right;font-size:.86rem;font-weight:600;line-height:1.6;overflow-wrap:anywhere}.technical-section{background:linear-gradient(#A7BBE01c,#A7BBE01c),var(--paper)}.measurement-section{border-top:3px solid var(--technical)}.measurement-section .passport-facts{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.measurement-section .passport-facts>div{display:block;padding:18px;background:var(--paper);border:0;border-radius:4px}.measurement-section dt{font-size:.7rem;max-width:none;min-height:2.8em}.measurement-section dd{text-align:left;font-size:clamp(1.45rem,3vw,2rem);font-weight:700;letter-spacing:-.04em;margin-top:6px;line-height:1.2}.metric-unit{font-size:.7rem;font-weight:500;color:var(--muted);letter-spacing:0;margin-left:5px}.story-text{line-height:1.9;font-size:.9rem;white-space:pre-wrap;max-width:740px;color:var(--muted)}.passport-note{margin:36px 28px 52px;padding:0 0 0 15px;border-left:2px solid var(--technical);color:var(--muted);font-size:.72rem;line-height:1.8;max-width:760px}.passport-note p{margin:0}.passport-footer{background:var(--ink);color:var(--paper);display:flex;justify-content:space-between;gap:20px;padding:28px max(28px,calc((100% - 1024px)/2));font-size:.72rem;line-height:1.7}.passport-footer>span:first-child{font-weight:600}.passport-footer>span:last-child{color:#d2d2cf}.preview-banner{padding:12px 28px;background:var(--technical);color:var(--ink);font-size:.8rem;font-weight:600}.loading,.empty-state{padding:20vh 28px;text-align:center;color:var(--muted)}
.home-page{min-height:100vh;background:var(--ink);color:var(--paper);display:flex;align-items:center}.home-shell{width:min(880px,calc(100% - 48px));margin:auto;padding:60px 0}.home-logo{display:block;width:190px;height:auto;margin-bottom:12vh}.home-shell .eyebrow{color:var(--technical)}.home-shell h1{font-size:clamp(2.6rem,7vw,5.3rem);font-weight:700;line-height:1.25;letter-spacing:-.04em;margin:22px 0}.home-shell p{font-size:1rem;line-height:1.9;max-width:520px;color:#d2d2cf}.home-rule{height:1px;background:#666;margin:10vh 0 24px}.home-shell small{color:#d2d2cf;line-height:1.8}.home-shell a{color:var(--technical)}
.admin-page{min-height:100vh}.admin-header{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:14px 28px}.admin-header>div{display:flex;align-items:center;gap:16px}.admin-header span{font-size:.78rem}.admin-header .brand-logo img{width:132px;height:34px}.header-divider{width:1px;height:24px;background:#666}.admin-account{color:var(--paper)}.admin-main{max-width:1440px;margin:auto;padding:0 26px 70px}.admin-hero{padding:36px 0 28px}.admin-hero h1{font-size:clamp(1.8rem,4vw,2.5rem);font-weight:700;letter-spacing:-.035em;margin:10px 0}.admin-hero p{font-size:.86rem;color:var(--muted);line-height:1.8}.login-card{max-width:440px;margin:10vh auto;padding:36px;background:#fff;border:1px solid var(--line);border-radius:6px}.login-card h1{font-size:1.8rem;margin:14px 0;font-weight:700}.login-card p{font-size:.86rem;color:var(--muted);line-height:1.8}.login-card form{display:grid;gap:18px;margin-top:24px}.admin-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;align-items:start}.admin-card{min-width:0;background:#fff;border:1px solid var(--line);border-radius:6px;padding:22px}.racket-card,.option-card,.config-card{grid-column:1/-1}.card-heading{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:20px}.card-heading span{font-size:.72rem;font-weight:600;background:var(--technical);color:var(--ink);padding:5px 7px;border-radius:3px}.card-heading h2{font-size:1.12rem;font-weight:600;margin:0}.admin-card form{display:grid;gap:14px}.admin-card label,.login-card label{display:grid;gap:7px;color:var(--ink);font-size:.8rem;font-weight:500;line-height:1.5}.admin-card label small{font-weight:400;color:var(--muted)}.admin-card input,.admin-card select,.admin-card textarea,.login-card input{width:100%;padding:10px 11px;border:1px solid #a6a6a0;border-radius:4px;background:#fff;color:var(--ink);min-height:42px;min-width:0;font-weight:400}.admin-card input:hover,.admin-card select:hover,.admin-card textarea:hover{border-color:var(--ink)}.admin-card input:focus,.admin-card select:focus,.admin-card textarea:focus,.login-card input:focus{border-color:var(--blue)}input,select{accent-color:var(--blue)}select option:checked{background:var(--blue);color:#000}.admin-card textarea{resize:vertical;line-height:1.6}.primary-button,.quiet-button,.danger-button{border-radius:4px;padding:10px 15px;border:1px solid var(--ink);min-height:42px;font-weight:600;font-size:.78rem;line-height:1.5}.primary-button{background:var(--ink);color:#fff}.primary-button:hover{background:#363636}.quiet-button{background:#fff;color:var(--ink)}.quiet-button:hover{background:var(--paper);border-color:var(--blue)}.danger-button{color:#a42525;background:#fff;border-color:#a42525}.danger-button:hover{background:#fff0f0}.text-button{padding:4px;border:0;background:none;color:inherit;text-decoration:underline;text-underline-offset:3px;font-size:.78rem;min-height:30px}.danger-text{color:#a42525}.form-actions{display:flex;gap:9px;flex-wrap:wrap}.two-columns,.three-columns,.measurement-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.three-columns{grid-template-columns:repeat(3,minmax(0,1fr))}.measurement-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.record-list{margin-top:22px;border-top:1px solid var(--line)}.record-row{display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:11px 0;font-size:.79rem;line-height:1.6}.record-row>span{overflow-wrap:anywhere;min-width:0}.record-actions{display:flex;gap:9px;flex-shrink:0}.empty-list,.form-hint{font-size:.77rem;color:var(--muted);line-height:1.75}.form-hint{margin:0 0 16px}.list-heading{font-size:.95rem;margin:28px 0 0}.racket-detail{margin-top:28px;padding:22px;border:1px solid var(--line);background:var(--paper);border-radius:4px}.detail-header{display:flex;align-items:start;justify-content:space-between;gap:15px}.detail-header h3{font-size:1.35rem;font-weight:600;margin:8px 0 18px;overflow-wrap:anywhere}.status-pill{font-size:.7rem;border:1px solid #999;color:var(--ink);background:#fff;border-radius:30px;padding:6px 12px;white-space:nowrap;font-weight:600}.status-pill.published{border-color:var(--success);background:var(--success);color:var(--ink)}.link-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--line);font-size:.77rem}.link-row>span{color:var(--muted)}.link-row a{overflow-wrap:anywhere;color:var(--ink);text-decoration-color:var(--blue);flex:1;min-width:160px}.link-row .quiet-button{padding:5px 10px;min-height:32px}.image-form{border-top:1px solid var(--line);padding-top:22px;margin-top:12px;max-width:650px}.image-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:12px;margin:22px 0}.image-card{display:grid;gap:8px;border:1px solid var(--line);padding:8px;font-size:.75rem;background:#fff;border-radius:4px}.image-card img{width:100%;height:130px;object-fit:contain;background:var(--paper)}.publish-box,.nfc-box{padding:20px 0;border-top:1px solid var(--line)}.publish-box{display:flex;justify-content:space-between;align-items:center;gap:15px}.publish-box p,.nfc-box p{color:var(--muted);font-size:.77rem;line-height:1.7;margin:5px 0 14px}.nfc-box label{max-width:400px;margin:18px 0}.nfc-box .link-row{margin-top:16px}.toast{position:fixed;bottom:25px;right:25px;max-width:min(440px,calc(100% - 40px));background:var(--success);color:var(--ink);padding:14px 18px;border:1px solid #31744e;border-radius:4px;box-shadow:0 8px 25px #0002;opacity:0;pointer-events:none;font-size:.82rem;font-weight:500;line-height:1.6;z-index:10}.toast.visible{opacity:1}.toast.error{background:#a42525;color:#fff;border-color:#a42525}.option-card .record-list{max-height:330px;overflow:auto}.option-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;border-top:1px solid var(--line);padding-top:18px}.option-field{align-content:start}.option-field input{margin-top:6px}.inline-check{display:flex!important;align-items:center;gap:10px;line-height:1.5}.inline-check input{width:18px!important;height:18px;min-height:auto!important;accent-color:var(--blue)}.identifier-preview{display:grid;gap:6px;padding:14px 16px;background:#A7BBE033;color:var(--ink);font-size:.78rem;border-left:3px solid var(--technical);line-height:1.7}.identifier-preview strong{overflow-wrap:anywhere}.unit-fields,.default-fields{padding:14px;border:1px solid var(--line);background:var(--paper);border-radius:4px}.unit-fields summary,.default-fields summary{cursor:pointer;font-weight:600;font-size:.8rem;line-height:1.7}.unit-fields .form-hint,.default-fields .form-hint{margin:12px 0}.unit-fields .option-fields,.default-fields .option-fields{margin:12px 0}.unit-fields label{margin-top:10px}.identifier-summary{font-size:.78rem;color:var(--muted);line-height:1.8;margin-bottom:15px;overflow-wrap:anywhere}.preview-actions{padding:14px 0 20px}.measurement-box{border-top:1px solid var(--line);padding:20px 0 28px}.subheading h4{font-size:1rem;margin:0 0 5px}.subheading p{color:var(--muted);font-size:.77rem;line-height:1.7;margin:0 0 20px}.measurement-row span{overflow-wrap:anywhere}.default-fields .option-fields,.default-fields .three-columns{grid-template-columns:1fr}
@media(max-width:1050px){.admin-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.racket-card,.option-card,.config-card{grid-column:1/-1}.measurement-section .passport-facts{grid-template-columns:repeat(2,minmax(0,1fr))}.option-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.measurement-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.passport-header{padding:15px 20px;gap:16px;min-height:68px}.passport-header .brand-logo img{width:128px;height:33px}.passport-header>span{font-size:.54rem;letter-spacing:.11em;padding-left:16px}.passport-intro{padding:36px 20px 28px}.customer-brand{margin-bottom:27px}.customer-logo{max-width:200px;max-height:60px}.passport-index{gap:10px}.passport-photos{padding:0 12px 12px;gap:8px}.passport-photos .photo-main{min-height:300px}.passport-photos img{padding:16px;max-height:520px}.passport-photos .photo-secondary img{padding:10px}.passport-section{margin:16px 12px;padding:24px 18px}.passport-section h2{margin-bottom:22px}.passport-facts{grid-template-columns:1fr}.passport-facts>div{gap:12px}.passport-facts dt{font-size:.73rem}.passport-facts dd{font-size:.8rem}.measurement-section .passport-facts{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.measurement-section .passport-facts>div{padding:13px}.measurement-section dd{font-size:1.5rem}.measurement-section dt{font-size:.65rem;min-height:3em}.passport-note{margin:30px 20px 40px}.passport-footer{padding:23px 20px;flex-direction:column;gap:5px;font-size:.68rem}.preview-banner{padding:12px 20px;font-size:.72rem}.admin-header{padding:13px 16px;gap:10px;flex-wrap:wrap}.admin-header .header-divider,.admin-header>div>span:last-child{display:none}.admin-header .brand-logo img{width:120px;height:31px}.admin-account{margin-left:auto}.admin-account span{font-size:.65rem;max-width:150px;overflow-wrap:anywhere}.admin-main{padding:0 12px 50px}.admin-hero{padding:28px 4px 20px}.admin-grid{grid-template-columns:1fr}.racket-card,.option-card,.config-card{grid-column:auto}.admin-card{padding:18px}.two-columns,.three-columns,.measurement-grid,.option-fields{grid-template-columns:1fr}.publish-box{align-items:start;flex-direction:column}.login-card{padding:25px;margin:8vh auto}.record-row{align-items:start;flex-wrap:wrap}.record-actions{margin-left:auto}.racket-detail{padding:15px}.detail-header{flex-wrap:wrap}.home-shell h1{font-size:2.6rem}.home-logo{margin-bottom:10vh}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.brand-logo-editor{margin-top:22px;padding-top:18px;border-top:1px solid var(--line)}.brand-logo-editor h3{font-size:.9rem;font-weight:600;margin:0 0 10px}.brand-logo-preview{display:block;width:auto;max-width:100%;max-height:72px;object-fit:contain;object-position:left center;margin:0 0 15px;padding:8px;border:1px solid var(--line);border-radius:4px;background:var(--paper)}.brand-logo-editor input[type=file]{font-size:.72rem;padding:8px;line-height:1.7}
.imperial-value{display:block;font-size:.75rem;font-weight:400;letter-spacing:0;color:var(--muted);line-height:1.6;margin-top:6px}.admin-nav{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 20px;padding:12px 0;position:sticky;top:0;z-index:3;background:var(--paper);border-bottom:1px solid var(--line)}.admin-nav a{font-size:.8rem;font-weight:500;padding:8px 11px;border:1px solid var(--line);border-radius:4px;text-decoration:none;background:#fff}.admin-nav a:hover{border-color:var(--blue)}.admin-card,.library-disclosure{scroll-margin-top:85px}.racket-records{max-height:220px;overflow:auto;margin:12px 0 20px}.record-search{max-width:480px}.library-disclosure{grid-column:1/-1}.library-disclosure>summary{cursor:pointer;font-size:.85rem;font-weight:600;padding:18px;background:#fff;border:1px solid var(--line);border-radius:4px}.library-disclosure[open]>summary{margin-bottom:12px}.preview-actions a{display:inline-flex;align-items:center;text-decoration:none}.measurement-section .passport-facts dd{overflow-wrap:normal}.measurement-section .metric-unit{white-space:nowrap}
@media(max-width:650px){.admin-nav{gap:5px}.admin-nav a{font-size:.72rem;padding:7px}.admin-card,.library-disclosure{scroll-margin-top:110px}.imperial-value{font-size:.68rem}.measurement-section dd{font-size:1.4rem}}
.measurement-section dd.metric-long{font-size:1rem;overflow-wrap:anywhere;line-height:1.6}
