:root{--ink:#10233f;--navy:#07182e;--navy-2:#102946;--teal:#0e8f91;--teal-dark:#087174;--cyan:#8adadd;--paper:#f3f1eb;--card:#fffdfa;--line:#dcdedb;--muted:#667281;--amber:#d49a35;--danger:#b64842;--shadow:0 18px 45px rgba(15,35,57,.08);font-family:"Segoe UI","Noto Sans TC",sans-serif;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}html,body{margin:0;min-height:100%}body{background:var(--paper)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}.app-shell{min-height:100vh;display:grid;grid-template-columns:248px minmax(0,1fr)}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;background:var(--navy);color:#d9e8f2;padding:24px 18px 18px;display:flex;flex-direction:column;z-index:30;box-shadow:8px 0 30px rgba(7,24,46,.1)}.brand{display:flex;gap:12px;align-items:center;padding:0 8px 26px;border-bottom:1px solid rgba(255,255,255,.1)}.brand-mark,.login-logo span{display:grid;place-items:center;width:39px;height:39px;border-radius:10px;background:var(--teal);color:white;font-size:13px;font-weight:800;letter-spacing:.08em}.brand strong{font-size:15px}.brand small{display:block;color:#7390aa;font-size:9px;letter-spacing:.12em;margin-top:3px}.sidebar nav{padding-top:18px;overflow:auto}.nav-label{font-size:10px;color:#66849f;letter-spacing:.16em;margin:20px 10px 8px}.nav-item{display:flex;align-items:center;gap:11px;min-height:39px;padding:8px 10px;border-radius:8px;color:#aebfd0;font-size:13px;margin:2px 0;transition:.18s ease}.nav-item span{width:22px;color:#6788a5;font-size:10px;font-weight:700}.nav-item:hover,.nav-item.active{background:var(--navy-2);color:white}.nav-item.active{box-shadow:inset 3px 0 var(--cyan)}.sidebar-footer{margin-top:auto;border-top:1px solid rgba(255,255,255,.1);padding:18px 8px 4px;display:grid;gap:4px}.sidebar-footer strong{font-size:13px}.sidebar-footer small{font-size:10px;color:#7891a8;overflow:hidden;text-overflow:ellipsis}.role-pill{justify-self:start;font-size:10px;padding:3px 7px;border-radius:10px;background:#183b59;color:#a7c7de;margin-bottom:5px}.role-admin{background:#553b17;color:#f2d291}.role-editor{background:#12494b;color:#97dddd}.workspace{grid-column:2;min-width:0}.topbar{height:64px;border-bottom:1px solid var(--line);background:rgba(255,253,250,.82);backdrop-filter:blur(14px);display:flex;align-items:center;justify-content:space-between;padding:0 34px;position:sticky;top:0;z-index:20}.topbar-title{font-size:12px;font-weight:600;color:#526170}.live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#36b792;box-shadow:0 0 0 4px rgba(54,183,146,.13);margin-right:10px}.topbar-actions{display:flex;align-items:center;gap:18px}.topbar-actions form{margin:0}.content{padding:34px;max-width:1600px;margin:0 auto}.page-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:26px}.page-heading.compact{align-items:center}.page-heading h1{font-size:clamp(27px,3vw,40px);line-height:1.08;margin:5px 0 8px;letter-spacing:-.035em}.page-heading p{margin:0;color:var(--muted);font-size:14px}.eyebrow{color:var(--teal)!important;font-size:10px!important;letter-spacing:.2em!important;font-weight:800;text-transform:uppercase}.as-of{border-left:3px solid var(--teal);padding:5px 0 5px 16px;min-width:155px}.as-of span{display:block;font-size:10px;color:var(--muted);margin-bottom:3px}.as-of strong{font-size:14px}.metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.metric-card{position:relative;min-height:147px;background:var(--card);border:1px solid var(--line);padding:20px;border-radius:3px;box-shadow:0 2px 0 rgba(16,35,63,.02);transition:.2s ease;overflow:hidden}.metric-card:after{content:"";position:absolute;left:0;bottom:0;width:100%;height:3px;background:var(--teal);transform:scaleX(0);transform-origin:left;transition:.2s}.metric-card:hover{transform:translateY(-3px);box-shadow:var(--shadow);border-color:#b9d5d5}.metric-card:hover:after{transform:scaleX(1)}.metric-card strong{display:block;font-family:Georgia,serif;font-size:38px;font-weight:400;margin:17px 0 4px}.metric-card h2{font-size:14px;margin:0}.metric-card small{color:#9aa1a6;font-size:8px;letter-spacing:.12em}.metric-index{position:absolute;right:16px;top:14px;font-family:monospace;font-size:10px;color:#a4adb5}.section-block{margin-top:36px}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:14px}.section-heading h2{font-size:19px;margin:3px 0 0}.muted{color:var(--muted);font-size:13px}.recent-list{border-top:1px solid var(--ink)}.recent-list a{display:grid;grid-template-columns:105px minmax(0,1fr) 100px 145px 20px;gap:18px;align-items:center;padding:14px 8px;border-bottom:1px solid var(--line);font-size:13px;transition:.15s}.recent-list a:hover{background:var(--card);padding-left:14px}.record-type{color:var(--teal);font-size:11px;font-weight:700}.recent-list code{font-size:11px;color:#647180}.recent-list time{font-size:11px;color:#7c8791}.notice,.alert{padding:13px 16px;border-radius:4px;margin-bottom:18px;font-size:13px;border:1px solid #abd9cf;background:#e9f7f3;color:#14644f}.alert{border-color:#ecc2bd;background:#fff1ef;color:#8e302b}.alert.warning{border-color:#ecd49f;background:#fff8e7;color:#775314}.primary-button,.secondary-button,.ghost-button{border:0;border-radius:3px;min-height:40px;padding:10px 17px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:700;font-size:13px;cursor:pointer}.primary-button{background:var(--teal);color:white;box-shadow:0 7px 18px rgba(14,143,145,.17)}.primary-button:hover{background:var(--teal-dark)}.secondary-button{background:var(--ink);color:white}.ghost-button{background:transparent;border:1px solid #c9d0d3;color:var(--ink);min-height:34px;padding:6px 13px}.text-link{font-size:12px;color:var(--teal);font-weight:700}.full{width:100%}.toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.filter-form{display:flex;gap:8px;align-items:center}.filter-form input,.filter-form select{height:40px;border:1px solid var(--line);background:var(--card);padding:0 12px;min-width:120px}.search-field{position:relative}.search-field span{position:absolute;left:13px;top:9px;color:#7a858c}.search-field input{padding-left:35px;min-width:300px}.protected-label{color:#7a6250;font-size:11px;border:1px solid #d8c8b6;background:#fbf5eb;padding:8px 11px;border-radius:20px}.data-table-wrap{overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:3px}.data-table{width:100%;border-collapse:collapse;font-size:12px}.data-table th{text-align:left;padding:13px 15px;background:#e9ece9;color:#53616b;font-size:10px;letter-spacing:.06em;white-space:nowrap;border-bottom:1px solid #cbd0ce}.data-table td{padding:14px 15px;border-bottom:1px solid #e5e6e3;vertical-align:top;max-width:330px}.data-table tbody tr:hover{background:#f5faf8}.data-table td:first-child{font-family:ui-monospace,monospace;color:#445a6c}.data-table td strong,.data-table td small{display:block}.data-table td small{color:var(--muted);margin-top:3px}.row-link{display:grid;place-items:center;width:27px;height:27px;border-radius:50%;background:#e7f3f2;color:var(--teal);font-weight:800}.empty-state{text-align:center!important;color:var(--muted)!important;padding:34px!important}.pagination{display:flex;justify-content:space-between;align-items:center;margin-top:15px;font-size:12px}.pagination a{color:var(--teal);font-weight:700}.breadcrumb{display:flex;gap:9px;color:#87919a;font-size:11px;margin-bottom:18px}.breadcrumb a{color:var(--teal)}.detail-heading{align-items:center}.detail-layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,.72fr);gap:18px;align-items:start}.detail-card,.relation-panel,.form-card,.upload-card{background:var(--card);border:1px solid var(--line);border-radius:3px;padding:24px}.field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0}.field-grid div{padding:15px 12px;border-top:1px solid #e5e7e5}.field-grid dt{font-size:10px;color:#78838c;margin-bottom:6px}.field-grid dd{margin:0;font-size:13px;line-height:1.6;white-space:pre-wrap;overflow-wrap:anywhere}.status-chip{display:inline-flex;padding:4px 8px;border-radius:12px;background:#e6f2ef;color:#276c61;font-size:10px;font-weight:700}.status-chip.large{font-size:12px;padding:8px 13px}.status-chip.danger{background:#fae9e7;color:var(--danger)}.relation-column{display:grid;gap:11px}.relation-panel{padding:0}.relation-panel h3{font-size:12px;margin:0;padding:14px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between}.relation-panel h3 span{color:var(--teal)}.relation-panel a{display:flex;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid #ecece8;font-size:12px}.relation-panel a:hover{background:#f2f8f6}.relation-panel strong,.relation-panel small{display:block}.relation-panel small{color:var(--muted);font-size:10px;margin-top:3px}.relation-panel p{color:var(--muted);font-size:12px;padding:13px 16px;margin:0}.record-form{max-width:1060px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-grid label,.stack-form label,.login-card label,.upload-card label{display:grid;gap:7px;color:#465663;font-size:11px;font-weight:700}.form-grid label.wide{grid-column:1/-1}.form-grid label>span b{color:var(--danger);margin-left:3px}.form-grid input,.form-grid select,.form-grid textarea,.stack-form input,.stack-form select,.login-card input,.secret-output{width:100%;border:1px solid #cdd2d1;background:#fff;padding:10px 11px;border-radius:2px;color:var(--ink);font-size:13px}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.stack-form input:focus,.login-card input:focus{outline:2px solid rgba(14,143,145,.2);border-color:var(--teal)}.form-grid small{color:var(--muted);font-weight:400}.check-line{display:flex!important;align-items:center;gap:8px;min-height:39px}.check-line input{width:auto}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:15px}.form-card.narrow{max-width:570px}.stack-form{display:grid;gap:16px;margin-top:20px}.split-admin{display:grid;grid-template-columns:330px minmax(0,1fr);gap:18px;align-items:start}.admin-table select{min-width:88px}.inline-form,.table-actions{display:flex;align-items:center;gap:5px}.inline-form button,.table-actions button{border:0;background:#e8efee;color:#285d59;font-size:10px;padding:6px 8px;cursor:pointer}.upload-card form{display:flex;align-items:end;gap:14px}.upload-card label{flex:1}.upload-card input[type=file]{border:1px dashed #9fadaa;background:#f7faf8;padding:16px}.import-metrics{display:grid;grid-template-columns:repeat(6,1fr);gap:9px}.import-metrics div{background:var(--card);border:1px solid var(--line);padding:16px}.import-metrics span,.import-metrics strong{display:block}.import-metrics span{font-size:10px;color:var(--muted)}.import-metrics strong{font-family:Georgia,serif;font-size:27px;margin-top:5px}.danger-text strong{color:var(--danger)}.commit-box{margin-top:18px;border:1px solid #a9d2c8;background:#ecf7f4;padding:18px;display:flex;align-items:center;justify-content:space-between}.commit-box p{margin:4px 0 0;font-size:12px;color:var(--muted)}.issue-list{display:grid;gap:8px}.issue{background:var(--card);border:1px solid var(--line);border-left:4px solid #d5a345;padding:13px 15px}.issue-error{border-left-color:var(--danger)}.issue strong,.issue span{font-size:11px;margin-right:10px}.issue span{color:var(--muted)}.issue p{font-size:12px;margin:5px 0 0}.login-stage{min-height:100vh;display:grid;grid-template-columns:1.12fr .88fr;background:var(--navy)}.login-intro{position:relative;display:grid;align-items:center;padding:8vw;background:linear-gradient(145deg,#06162a,#0b2742);overflow:hidden}.login-intro:before{content:"";position:absolute;width:520px;height:520px;border:1px solid rgba(138,218,221,.12);border-radius:50%;right:-180px;top:-160px;box-shadow:0 0 0 90px rgba(138,218,221,.025),0 0 0 180px rgba(138,218,221,.018)}.login-intro-inner{position:relative;z-index:2;color:white;max-width:650px}.system-kicker{font-size:10px;color:var(--cyan);letter-spacing:.2em}.login-intro h1{font-family:Georgia,"Noto Serif TC",serif;font-size:clamp(44px,5vw,72px);font-weight:400;line-height:1.13;margin:24px 0}.login-intro p{color:#9bb1c4;line-height:1.8;max-width:520px}.relation-graphic{position:relative;display:flex;align-items:center;margin-top:70px}.relation-graphic i{display:block;width:80px;height:1px;background:linear-gradient(90deg,var(--teal),rgba(138,218,221,.2))}.node{display:grid;place-items:center;width:73px;height:73px;border:1px solid rgba(138,218,221,.5);border-radius:50%;font-size:11px;color:#d8f0ef;background:#0b2841}.node-d{position:absolute;left:114px;top:80px}.relation-graphic b{position:absolute;left:151px;top:60px;width:1px;height:20px;background:var(--teal)}.login-panel{display:grid;place-items:center;background:var(--paper);padding:40px}.login-card{width:min(400px,100%);background:var(--card);padding:42px;border:1px solid var(--line);box-shadow:var(--shadow)}.login-logo{margin-bottom:30px}.login-card h2{font-size:29px;margin:4px 0 7px}.login-card>label{margin-top:18px}.login-card .primary-button{margin-top:24px}.security-note{font-size:10px;color:#879199;text-align:center;line-height:1.5;margin:18px 0 0}.viewer-mode .data-table,.viewer-mode .detail-card,.viewer-mode .relation-column,.viewer-mode .metric-grid,.viewer-mode .recent-list{-webkit-user-select:none;user-select:none}.viewer-watermark{position:fixed;right:22px;bottom:14px;color:rgba(16,35,63,.22);font-size:10px;letter-spacing:.08em;pointer-events:none;z-index:50}.copy-toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,18px);opacity:0;background:var(--navy);color:white;padding:10px 16px;font-size:11px;border-radius:3px;transition:.2s;z-index:60}.copy-toast.show{opacity:1;transform:translate(-50%,0)}.error-page{min-height:55vh;display:grid;place-items:center;align-content:center;text-align:center}.error-page>span{font-family:Georgia,serif;font-size:80px;color:#c2cac8}.error-page h1{margin:0}.error-page p{color:var(--muted)}.anonymous-error{min-height:100vh}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.menu-toggle{display:none}.icon-button{border:0;background:transparent;font-size:20px}
@media(max-width:1180px){.metric-grid{grid-template-columns:repeat(3,1fr)}.split-admin{grid-template-columns:1fr}.detail-layout{grid-template-columns:1fr}.relation-column{grid-template-columns:repeat(2,1fr)}.relation-column>.section-heading{grid-column:1/-1}}
@media(max-width:820px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.2s}.menu-open .sidebar{transform:translateX(0)}.workspace{margin-left:0}.menu-toggle{display:block}.topbar{padding:0 18px}.content{padding:24px 18px}.metric-grid{grid-template-columns:repeat(2,1fr)}.recent-list a{grid-template-columns:80px 1fr 20px}.recent-list code,.recent-list time{display:none}.login-stage{grid-template-columns:1fr}.login-intro{display:none}.form-grid,.field-grid{grid-template-columns:1fr}.relation-column{grid-template-columns:1fr}.relation-column>.section-heading{grid-column:auto}.upload-card form{display:grid}.import-metrics{grid-template-columns:repeat(3,1fr)}.search-field input{min-width:180px}.toolbar{align-items:flex-end}.filter-form{flex-wrap:wrap}}
@media(max-width:520px){.metric-grid{grid-template-columns:1fr 1fr}.metric-card{min-height:125px;padding:15px}.metric-card strong{font-size:30px;margin-top:13px}.page-heading{align-items:flex-start;flex-direction:column}.topbar-title{display:none}.login-panel{padding:18px}.login-card{padding:28px 22px}.content{padding:20px 13px}.filter-form{width:100%}.search-field,.search-field input{width:100%}.protected-label{display:none}.import-metrics{grid-template-columns:repeat(2,1fr)}}

.auth-option{display:block;margin-top:18px;text-align:center;color:var(--teal);font-weight:700}.auth-option:hover{text-decoration:underline}.registration-warning{margin:16px 0 0;padding:12px 13px;border-left:3px solid var(--teal);background:#eef7f5;color:#52636c}.login-card .registration-warning+.primary-button{margin-top:18px}
.google-signin{width:100%;min-height:44px;margin-top:20px;border:1px solid #c8d1dc;border-radius:5px;background:#fff;display:flex;align-items:center;justify-content:center;gap:11px;font:600 15px "Segoe UI",sans-serif;color:#1e2937;transition:.16s}.google-signin[href]:hover{background:#f7f9fb;border-color:#9eabb9;box-shadow:0 2px 7px rgba(16,35,63,.08)}.google-signin.is-disabled{background:#f1f3f5;color:#7b858e;cursor:not-allowed}.google-mark{font:bold 20px Arial,sans-serif;background:conic-gradient(from -45deg,#4285f4 0 25%,#34a853 0 42%,#fbbc05 0 67%,#ea4335 0 82%,#4285f4 0);background-clip:text;-webkit-background-clip:text;color:transparent}.google-config-note{display:block;margin-top:7px;text-align:center;color:#8a6b36;font-size:12px}.auth-divider{display:flex;align-items:center;gap:12px;margin:20px 0 2px;color:#7c8791;font-size:12px}.auth-divider:before,.auth-divider:after{content:"";height:1px;background:#d7dcdf;flex:1}.auth-divider span{white-space:nowrap}.pending-stage{min-height:100vh;display:grid;place-items:center;padding:28px;background:linear-gradient(145deg,#06162a,#0b2742)}.pending-card{width:min(560px,100%);background:var(--card);border:1px solid var(--line);padding:42px;box-shadow:var(--shadow);text-align:center}.pending-card .login-logo span{margin:0 auto}.pending-card h1{font-size:34px;margin:15px 0}.pending-card p{line-height:1.8;color:var(--muted)}.pending-card .primary-button{margin-top:12px}
