| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999 |
- :root {
- color-scheme: light;
- --bg: #f5f5f7;
- --panel: rgba(255, 255, 255, 0.92);
- --panel-solid: #ffffff;
- --panel-soft: #f2f2f4;
- --text: #1d1d1f;
- --muted: #6e6e73;
- --line: #d8d8de;
- --line-soft: #ebecef;
- --accent: #0071e3;
- --accent-strong: #005bb5;
- --warning: #b25a00;
- --danger: #c52929;
- --success: #16833a;
- --shadow: 0 18px 44px rgba(0, 0, 0, 0.055);
- --shadow-soft: 0 8px 22px rgba(0, 0, 0, 0.045);
- }
- * {
- box-sizing: border-box;
- }
- body {
- margin: 0;
- min-width: 320px;
- min-height: 100vh;
- background: var(--bg);
- color: var(--text);
- font-family:
- -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", Inter, ui-sans-serif, system-ui, "Segoe UI",
- "PingFang SC", "Microsoft YaHei", sans-serif;
- letter-spacing: 0;
- -webkit-font-smoothing: antialiased;
- text-rendering: geometricPrecision;
- }
- [hidden] {
- display: none !important;
- }
- button,
- input,
- select,
- textarea {
- font: inherit;
- }
- .auth-screen {
- min-height: 100vh;
- padding: 30px clamp(18px, 4vw, 64px);
- background: #fff;
- color: var(--text);
- }
- .auth-brand {
- display: flex;
- align-items: center;
- gap: 14px;
- padding-bottom: 22px;
- border-bottom: 1px solid var(--line);
- }
- .auth-brand h1,
- .auth-brand p,
- .auth-card h2,
- .auth-preview {
- margin: 0;
- }
- .auth-brand h1 {
- font-size: 21px;
- font-weight: 760;
- }
- .auth-brand p {
- margin-top: 2px;
- color: var(--muted);
- font-size: 13px;
- }
- .auth-card {
- width: min(760px, 100%);
- margin: clamp(76px, 11vh, 132px) auto 0;
- text-align: center;
- }
- .auth-card h2 {
- margin-bottom: 64px;
- font-size: clamp(34px, 4vw, 48px);
- line-height: 1.08;
- font-weight: 780;
- }
- .auth-box {
- overflow: hidden;
- width: min(620px, 100%);
- margin: 0 auto;
- border: 1.5px solid #86868b;
- border-radius: 18px;
- background: #fff;
- text-align: left;
- transition: border-color 0.16s ease, box-shadow 0.16s ease;
- }
- .auth-box:focus-within {
- border-color: var(--accent);
- box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.12);
- }
- .auth-field {
- position: relative;
- display: block;
- min-height: 82px;
- padding: 16px 58px 12px 26px;
- }
- .auth-field + .auth-field {
- border-top: 1px solid #86868b;
- }
- .auth-box:focus-within .auth-field + .auth-field {
- border-top-color: var(--accent);
- }
- .auth-field span {
- display: block;
- color: var(--muted);
- font-size: 17px;
- line-height: 1.2;
- }
- .auth-field input {
- width: 100%;
- padding: 4px 0 0;
- border: 0;
- outline: 0;
- background: transparent;
- color: #424245;
- font-size: 28px;
- line-height: 1.15;
- box-shadow: none;
- }
- .auth-field-password input {
- padding-right: 46px;
- }
- .auth-submit {
- position: absolute;
- right: 18px;
- bottom: 17px;
- display: inline-grid;
- place-items: center;
- width: 42px;
- height: 42px;
- min-height: 0;
- padding: 0;
- border-radius: 50%;
- border-color: #5f5f63;
- background: #fff;
- color: #424245;
- box-shadow: none;
- }
- .auth-submit svg {
- width: 26px;
- height: 26px;
- }
- .auth-submit svg * {
- fill: none;
- stroke: currentColor;
- stroke-width: 2.4;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
- .auth-remember {
- display: inline-flex;
- align-items: center;
- gap: 12px;
- margin-top: 54px;
- color: var(--text);
- font-size: 25px;
- font-weight: 460;
- }
- .auth-remember input {
- width: 24px;
- height: 24px;
- accent-color: var(--accent);
- }
- .auth-preview {
- margin-top: 46px;
- color: var(--muted);
- font-size: 15px;
- }
- button,
- label.file-button {
- min-height: 34px;
- border: 1px solid var(--line);
- border-radius: 8px;
- cursor: pointer;
- font-weight: 650;
- transition:
- background 0.16s ease,
- border-color 0.16s ease,
- box-shadow 0.16s ease,
- transform 0.16s ease;
- }
- button:hover,
- label.file-button:hover {
- transform: translateY(-1px);
- box-shadow: var(--shadow-soft);
- }
- button:disabled {
- cursor: progress;
- opacity: 0.72;
- transform: none;
- }
- button:focus-visible,
- input:focus-visible,
- select:focus-visible,
- textarea:focus-visible,
- label.file-button:focus-within {
- outline: 3px solid rgba(0, 113, 227, 0.18);
- outline-offset: 2px;
- }
- .app-shell {
- display: grid;
- grid-template-columns: 268px minmax(0, 1fr);
- min-height: 100vh;
- }
- .sidebar {
- position: sticky;
- top: 0;
- height: 100vh;
- padding: 24px 16px 16px;
- border-right: 1px solid var(--line);
- background: rgba(251, 251, 253, 0.86);
- backdrop-filter: blur(22px);
- display: flex;
- flex-direction: column;
- gap: 26px;
- }
- .sidebar-account {
- margin-top: auto;
- padding-top: 16px;
- border-top: 1px solid var(--line-soft);
- }
- .sidebar-user {
- display: flex;
- align-items: center;
- gap: 10px;
- width: 100%;
- padding: 8px 10px;
- border: 1px solid transparent;
- border-radius: 12px;
- background: transparent;
- color: var(--text);
- box-shadow: none;
- text-align: left;
- }
- .sidebar-user:hover {
- background: var(--panel-solid);
- border-color: var(--line);
- transform: none;
- box-shadow: var(--shadow-soft);
- }
- .sidebar-user-avatar {
- flex: 0 0 auto;
- display: grid;
- place-items: center;
- width: 36px;
- height: 36px;
- border-radius: 50%;
- color: #fff;
- font-weight: 760;
- font-size: 14px;
- letter-spacing: 0.4px;
- background: linear-gradient(135deg, #4c8bf5 0%, #7d5fff 100%);
- box-shadow: 0 4px 10px rgba(76, 139, 245, 0.28);
- }
- .sidebar-user-avatar[data-tier="pro"] {
- background: linear-gradient(135deg, #f5c14b 0%, #e08818 60%, #b65a0a 100%);
- box-shadow: 0 4px 12px rgba(224, 136, 24, 0.32);
- }
- .sidebar-user-info {
- flex: 1;
- min-width: 0;
- display: grid;
- gap: 2px;
- }
- .sidebar-user-info strong {
- display: block;
- font-size: 13px;
- font-weight: 720;
- color: var(--text);
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .sidebar-user-info small {
- display: inline-flex;
- align-items: center;
- align-self: start;
- padding: 1px 7px;
- border-radius: 999px;
- background: #ececef;
- color: var(--muted);
- font-size: 11px;
- font-weight: 720;
- letter-spacing: 0.02em;
- }
- .sidebar-user-info small[data-tier="pro"] {
- background: linear-gradient(135deg, #fff3d4 0%, #f7d77a 100%);
- color: #8a5a09;
- }
- .sidebar-user-caret {
- flex: 0 0 auto;
- width: 14px;
- height: 14px;
- color: var(--muted);
- fill: none;
- stroke: currentColor;
- stroke-width: 2;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
- .account-menu-up {
- top: auto !important;
- right: auto !important;
- bottom: calc(100% + 8px);
- left: 0;
- width: 240px;
- }
- .account-menu-license span[data-tier="pro"] {
- color: #b07300;
- }
- .brand {
- display: flex;
- gap: 12px;
- align-items: center;
- }
- .brand-mark {
- display: grid;
- place-items: center;
- width: 42px;
- height: 42px;
- border-radius: 8px;
- background: #1d1d1f;
- color: #fff;
- font-weight: 800;
- letter-spacing: 0.2px;
- }
- .brand h1,
- .brand p,
- .topbar h2,
- .topbar p,
- .card h3,
- .dialog h3,
- .empty h3 {
- margin: 0;
- }
- .brand h1 {
- font-size: 19px;
- font-weight: 760;
- }
- .brand p,
- .eyebrow,
- .backup-note,
- .muted,
- .field-hint {
- color: var(--muted);
- }
- .brand p {
- margin-top: 2px;
- font-size: 12px;
- font-weight: 520;
- }
- .nav {
- display: grid;
- gap: 4px;
- }
- .nav-group {
- margin: 14px 9px 5px;
- color: var(--muted);
- font-size: 11px;
- font-weight: 780;
- letter-spacing: 0.08em;
- text-transform: uppercase;
- }
- .nav-group:first-child {
- margin-top: 0;
- }
- .nav button {
- width: 100%;
- padding: 9px 11px;
- background: transparent;
- color: var(--text);
- text-align: left;
- border-color: transparent;
- box-shadow: none;
- font-size: 14px;
- display: flex;
- align-items: center;
- gap: 10px;
- }
- .nav button.active {
- background: var(--panel-solid);
- border-color: var(--line);
- color: var(--text);
- box-shadow: var(--shadow-soft);
- font-weight: 760;
- }
- .nav-icon {
- position: relative;
- display: inline-grid;
- place-items: center;
- flex: 0 0 auto;
- width: 25px;
- height: 25px;
- border-radius: 8px;
- background: #f1f2f5;
- color: #52545a;
- box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.045);
- }
- .nav button.active .nav-icon {
- background: #eef5ff;
- color: var(--accent);
- }
- .nav-icon::before,
- .nav-icon::after {
- content: "";
- position: absolute;
- box-sizing: border-box;
- }
- .nav-icon.grid::before {
- width: 13px;
- height: 13px;
- border: 2px solid currentColor;
- border-radius: 4px;
- box-shadow:
- -5px -5px 0 -3px currentColor,
- 5px -5px 0 -3px currentColor,
- -5px 5px 0 -3px currentColor,
- 5px 5px 0 -3px currentColor;
- }
- .nav-icon.phone::before {
- width: 9px;
- height: 15px;
- border: 2px solid currentColor;
- border-radius: 3px;
- }
- .nav-icon.phone::after {
- bottom: 5px;
- width: 3px;
- height: 3px;
- border-radius: 50%;
- background: currentColor;
- }
- .nav-icon.mail::before {
- width: 15px;
- height: 11px;
- border: 2px solid currentColor;
- border-radius: 3px;
- }
- .nav-icon.mail::after {
- width: 10px;
- height: 10px;
- border-right: 2px solid currentColor;
- border-bottom: 2px solid currentColor;
- transform: translateY(-2px) rotate(45deg);
- }
- .nav-icon.domain::before {
- width: 15px;
- height: 15px;
- border: 2px solid currentColor;
- border-radius: 50%;
- box-shadow: inset -7px 0 0 -6px currentColor, inset 7px 0 0 -6px currentColor;
- }
- .nav-icon.domain::after {
- width: 8px;
- height: 15px;
- border: 2px solid currentColor;
- border-radius: 50%;
- }
- .nav-icon.user::before {
- top: 5px;
- width: 7px;
- height: 7px;
- border: 2px solid currentColor;
- border-radius: 50%;
- }
- .nav-icon.user::after {
- bottom: 5px;
- width: 14px;
- height: 7px;
- border: 2px solid currentColor;
- border-radius: 9px 9px 4px 4px;
- }
- .nav-icon.link::before {
- width: 13px;
- height: 7px;
- border: 2px solid currentColor;
- border-radius: 999px;
- transform: rotate(-28deg);
- }
- .nav-icon.link::after {
- width: 13px;
- height: 7px;
- border: 2px solid currentColor;
- border-radius: 999px;
- transform: rotate(28deg);
- }
- .nav-icon.alert::before {
- width: 0;
- height: 0;
- border-left: 8px solid transparent;
- border-right: 8px solid transparent;
- border-bottom: 15px solid currentColor;
- }
- .nav-icon.alert::after {
- width: 2px;
- height: 7px;
- background: #fff;
- transform: translateY(3px);
- box-shadow: 0 5px 0 #fff;
- }
- .backup-note {
- margin-top: auto;
- padding: 13px;
- background: rgba(255, 255, 255, 0.72);
- border: 1px solid var(--line);
- border-radius: 8px;
- display: grid;
- gap: 6px;
- font-size: 13px;
- line-height: 1.45;
- }
- .main {
- min-width: 0;
- padding: 30px;
- }
- .topbar {
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: 18px;
- margin-bottom: 26px;
- }
- .topbar-heading {
- min-width: 0;
- }
- .eyebrow {
- font-size: 11px;
- font-weight: 760;
- text-transform: uppercase;
- letter-spacing: 0.08em;
- }
- .topbar h2 {
- margin-top: 4px;
- font-size: clamp(30px, 3vw, 42px);
- line-height: 1.05;
- font-weight: 780;
- }
- .topbar-actions,
- .toolbar,
- .filter-row,
- .inline-actions,
- .detail-meta {
- display: flex;
- gap: 10px;
- align-items: center;
- flex-wrap: wrap;
- }
- .global-search {
- display: flex;
- align-items: center;
- gap: 8px;
- padding: 0 14px;
- min-height: 40px;
- border: 1px solid var(--line);
- border-radius: 999px;
- background: var(--panel-solid);
- color: var(--muted);
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.025);
- }
- .global-search:focus-within {
- border-color: var(--accent);
- box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.12);
- }
- .global-search .search-icon {
- width: 16px;
- height: 16px;
- flex: 0 0 auto;
- color: var(--muted);
- }
- .global-search .search-icon * {
- fill: none;
- stroke: currentColor;
- stroke-width: 2;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
- .global-search input {
- width: min(32vw, 360px);
- min-width: 180px;
- border: 0;
- outline: 0;
- background: transparent;
- color: var(--text);
- font-size: 13.5px;
- }
- .global-search input::placeholder {
- color: var(--muted);
- }
- .language-select-wrap {
- display: inline-flex;
- align-items: center;
- min-height: 40px;
- }
- .language-select-wrap select {
- min-height: 40px;
- padding: 0 12px;
- border: 1px solid var(--line);
- border-radius: 999px;
- background: var(--panel-solid);
- color: var(--text);
- font-size: 13px;
- font-weight: 650;
- outline: 0;
- }
- .icon-pill {
- display: inline-grid;
- place-items: center;
- position: relative;
- width: 40px;
- height: 40px;
- padding: 0;
- border-radius: 50%;
- border: 1px solid var(--line);
- background: var(--panel-solid);
- color: var(--text);
- }
- .icon-pill svg {
- width: 18px;
- height: 18px;
- }
- .icon-pill svg * {
- fill: none;
- stroke: currentColor;
- stroke-width: 2;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
- .icon-pill .bell-dot {
- position: absolute;
- top: 9px;
- right: 10px;
- width: 8px;
- height: 8px;
- border-radius: 50%;
- background: #ff4d4f;
- box-shadow: 0 0 0 2px var(--panel-solid);
- }
- .topbar-primary {
- display: inline-flex;
- align-items: center;
- gap: 6px;
- height: 40px;
- padding: 0 16px;
- border-radius: 999px;
- }
- .topbar-primary svg {
- width: 16px;
- height: 16px;
- }
- .topbar-primary svg * {
- fill: none;
- stroke: currentColor;
- stroke-width: 2.4;
- stroke-linecap: round;
- }
- .topbar-avatar {
- display: inline-grid;
- place-items: center;
- width: 40px;
- height: 40px;
- padding: 0;
- border-radius: 50%;
- background: linear-gradient(135deg, #4c8bf5 0%, #7d5fff 100%);
- border: 0;
- color: #fff;
- font-weight: 760;
- font-size: 15px;
- letter-spacing: 0.4px;
- box-shadow: 0 6px 14px rgba(76, 139, 245, 0.32);
- }
- .topbar-avatar:hover {
- transform: translateY(-1px);
- }
- .account-menu-wrap {
- position: relative;
- }
- .account-menu {
- position: absolute;
- top: calc(100% + 10px);
- right: 0;
- z-index: 30;
- width: 260px;
- padding: 6px;
- border: 1px solid var(--line);
- border-radius: 12px;
- background: rgba(255, 255, 255, 0.96);
- box-shadow: 0 18px 42px rgba(0, 0, 0, 0.14);
- backdrop-filter: blur(18px);
- }
- .account-menu-license {
- display: grid;
- gap: 4px;
- padding: 10px 10px 12px;
- margin-bottom: 4px;
- border-bottom: 1px solid var(--line-soft);
- }
- .account-menu-license span {
- color: var(--muted);
- font-size: 11px;
- font-weight: 780;
- text-transform: uppercase;
- letter-spacing: 0.08em;
- }
- .account-menu-license strong {
- color: var(--text);
- font-size: 13px;
- line-height: 1.35;
- overflow-wrap: anywhere;
- }
- .account-menu-license small {
- color: var(--muted);
- font-size: 12px;
- line-height: 1.35;
- }
- .account-menu button {
- width: 100%;
- min-height: 34px;
- padding: 8px 10px;
- border: 0;
- border-radius: 8px;
- background: transparent;
- box-shadow: none;
- color: var(--text);
- text-align: left;
- font-size: 13px;
- }
- .account-menu button:hover {
- background: #f5f5f7;
- transform: none;
- box-shadow: none;
- }
- .primary-button,
- .ghost-button,
- .danger-button,
- .file-button {
- padding: 7px 12px;
- }
- .primary-button {
- background: var(--accent);
- color: #fff;
- border-color: var(--accent);
- box-shadow: 0 8px 18px rgba(0, 113, 227, 0.18);
- }
- .ghost-button,
- .file-button {
- background: var(--panel-solid);
- color: var(--text);
- }
- .danger-button {
- background: #fff7f7;
- color: var(--danger);
- border-color: #f0caca;
- }
- .icon-button {
- width: 36px;
- height: 36px;
- padding: 0;
- background: var(--panel-solid);
- color: var(--text);
- font-size: 22px;
- line-height: 1;
- }
- .file-button input {
- display: none;
- }
- .utility-action {
- display: none;
- }
- .content {
- display: grid;
- gap: 16px;
- }
- .dashboard-setting-card,
- .dashboard-panel-card,
- .dashboard-hero-note {
- background: rgba(255, 255, 255, 0.9);
- border: 1px solid rgba(207, 210, 220, 0.72);
- border-radius: 24px;
- box-shadow:
- 0 18px 40px rgba(15, 23, 42, 0.05),
- 0 2px 5px rgba(15, 23, 42, 0.03);
- }
- .dashboard-side-label,
- .dashboard-card-label,
- .dashboard-note-label,
- .dashboard-subtitle {
- color: var(--muted);
- font-size: 12px;
- font-weight: 780;
- letter-spacing: 0.08em;
- text-transform: uppercase;
- }
- .dashboard-mainpanel {
- display: grid;
- gap: 12px;
- }
- .dashboard-hero {
- display: grid;
- grid-template-columns: minmax(0, 1.5fr) minmax(280px, 0.7fr);
- gap: 12px;
- align-items: end;
- }
- .dashboard-hero--full {
- grid-template-columns: minmax(0, 1.6fr) minmax(320px, 0.6fr);
- }
- .dashboard-hero h1 {
- margin: 6px 0 8px;
- font-size: clamp(30px, 3.2vw, 40px);
- line-height: 1;
- }
- .dashboard-hero p:not(.eyebrow) {
- max-width: 760px;
- margin: 0;
- color: var(--muted);
- font-size: 14px;
- line-height: 1.45;
- }
- .dashboard-hero-note {
- display: grid;
- gap: 6px;
- min-height: 112px;
- padding: 16px 18px;
- align-content: center;
- }
- .dashboard-hero-note strong {
- font-size: 22px;
- line-height: 1.08;
- }
- .dashboard-hero-note span:last-child {
- color: var(--muted);
- font-size: 13px;
- }
- .dashboard-settings-grid,
- .dashboard-insights-grid {
- display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 12px;
- }
- .dashboard-setting-card,
- .dashboard-panel-card {
- padding: 16px 18px;
- }
- .dashboard-setting-card {
- display: grid;
- gap: 10px;
- min-height: 148px;
- }
- .dashboard-setting-head,
- .dashboard-panel-head,
- .dashboard-platform-row,
- .dashboard-platform-main,
- .dashboard-platform-meter,
- .dashboard-recent-main {
- display: flex;
- align-items: center;
- }
- .dashboard-setting-head,
- .dashboard-panel-head,
- .dashboard-platform-row {
- justify-content: space-between;
- }
- .dashboard-card-value {
- margin-top: 4px;
- font-size: 32px;
- font-weight: 780;
- line-height: 0.96;
- }
- .dashboard-card-icon {
- width: 40px;
- height: 40px;
- display: grid;
- place-items: center;
- border-radius: 13px;
- }
- .dashboard-card-icon svg {
- width: 18px;
- height: 18px;
- stroke: currentColor;
- fill: none;
- stroke-width: 1.8;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
- .dashboard-card-icon.asset {
- background: rgba(0, 113, 227, 0.08);
- color: #0071e3;
- }
- .dashboard-card-icon.security {
- background: rgba(31, 128, 88, 0.1);
- color: #178148;
- }
- .dashboard-card-icon.recovery {
- background: rgba(125, 90, 255, 0.1);
- color: #6a4cff;
- }
- .dashboard-card-icon.risk {
- background: rgba(255, 149, 0, 0.12);
- color: #d97a00;
- }
- .dashboard-card-copy {
- display: grid;
- gap: 4px;
- }
- .dashboard-card-copy p,
- .dashboard-card-copy span {
- margin: 0;
- color: var(--muted);
- line-height: 1.55;
- }
- .dashboard-card-copy p {
- font-size: 13px;
- }
- .dashboard-card-copy span {
- font-size: 12px;
- }
- .dashboard-card-link {
- justify-self: start;
- border: 0;
- background: transparent;
- color: var(--accent);
- padding: 0;
- font-size: 13px;
- font-weight: 700;
- }
- .dashboard-card-link:hover {
- color: #0057b8;
- }
- .dashboard-panel-card {
- display: grid;
- gap: 12px;
- }
- .dashboard-panel-head h3 {
- margin-top: 4px;
- font-size: 20px;
- line-height: 1.08;
- }
- .dashboard-stack {
- display: grid;
- gap: 12px;
- }
- .dashboard-subsection {
- display: grid;
- gap: 8px;
- }
- .chart-list--soft .bar-row,
- .chart-list--soft .dashboard-platform-row {
- padding: 10px 12px;
- border-radius: 14px;
- background: linear-gradient(180deg, #fcfcfe 0%, #f5f6fa 100%);
- border: 1px solid rgba(228, 230, 236, 0.95);
- }
- .dashboard-platform-row {
- gap: 16px;
- }
- .dashboard-platform-main {
- gap: 12px;
- min-width: 0;
- }
- .dashboard-platform-main strong {
- font-size: 14px;
- white-space: nowrap;
- }
- .dashboard-platform-meter {
- gap: 10px;
- min-width: min(240px, 42%);
- }
- .dashboard-platform-track {
- flex: 1;
- height: 8px;
- border-radius: 999px;
- overflow: hidden;
- background: #e7e8eb;
- }
- .dashboard-platform-fill {
- height: 100%;
- border-radius: inherit;
- background: linear-gradient(90deg, #7ab7ff 0%, #0071e3 100%);
- }
- .dashboard-platform-meter span {
- color: var(--muted);
- font-size: 12px;
- font-weight: 700;
- }
- .dashboard-recent-list {
- display: grid;
- gap: 10px;
- }
- .dashboard-recent-item {
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: 14px;
- width: 100%;
- padding: 10px 12px;
- border: 1px solid rgba(228, 230, 236, 0.95);
- border-radius: 14px;
- background: linear-gradient(180deg, #fcfcfe 0%, #f5f6fa 100%);
- text-align: left;
- }
- .dashboard-recent-main {
- gap: 12px;
- min-width: 0;
- }
- .dashboard-recent-main div {
- min-width: 0;
- }
- .dashboard-recent-main strong,
- .dashboard-recent-main span {
- display: block;
- }
- .dashboard-recent-main strong {
- font-size: 14px;
- }
- .dashboard-recent-main span {
- color: var(--muted);
- font-size: 12px;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- .stats-grid {
- display: grid;
- grid-template-columns: repeat(4, minmax(160px, 1fr));
- gap: 12px;
- }
- .card,
- .table-wrap,
- .detail-panel,
- .empty {
- background: var(--panel);
- border: 1px solid var(--line);
- border-radius: 8px;
- box-shadow: var(--shadow);
- backdrop-filter: blur(18px);
- }
- .card {
- padding: 17px;
- }
- .card h3,
- .detail-panel h3 {
- font-weight: 740;
- }
- .stat-value {
- margin: 12px 0 5px;
- font-size: 36px;
- font-weight: 780;
- line-height: 1;
- }
- .dashboard-grid {
- display: grid;
- grid-template-columns: minmax(0, 1.3fr) minmax(320px, 0.7fr);
- gap: 16px;
- }
- .chart-list,
- .risk-list,
- .bound-list {
- display: grid;
- gap: 10px;
- margin-top: 14px;
- }
- .bar-row {
- display: grid;
- grid-template-columns: 120px minmax(80px, 1fr) 36px;
- gap: 10px;
- align-items: center;
- font-size: 13px;
- }
- .empty-compact {
- padding: 18px;
- }
- .empty-compact h3,
- .empty-compact p {
- margin: 0;
- }
- .bar-track {
- height: 8px;
- background: #e7e8eb;
- border-radius: 999px;
- overflow: hidden;
- }
- .bar-fill {
- height: 100%;
- background: var(--accent);
- }
- .toolbar {
- justify-content: space-between;
- }
- .filter-row input,
- .filter-row select,
- .form-grid input,
- .form-grid select,
- .form-grid textarea {
- min-height: 42px;
- width: 100%;
- border: 1px solid #cfd0d6;
- border-radius: 8px;
- background: var(--panel-solid);
- color: var(--text);
- padding: 9px 11px;
- outline: 0;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.025);
- transition:
- border-color 0.16s ease,
- box-shadow 0.16s ease,
- background 0.16s ease;
- }
- .filter-row input:hover,
- .filter-row select:hover,
- .form-grid input:hover,
- .form-grid select:hover,
- .form-grid textarea:hover {
- border-color: #b7b8bf;
- }
- .filter-row input:focus,
- .filter-row select:focus,
- .form-grid input:focus,
- .form-grid select:focus,
- .form-grid textarea:focus {
- border-color: var(--accent);
- background: #fff;
- box-shadow:
- 0 0 0 4px rgba(0, 113, 227, 0.12),
- inset 0 1px 1px rgba(0, 0, 0, 0.02);
- }
- .form-grid.was-validated input:invalid,
- .form-grid.was-validated textarea:invalid,
- .form-grid.was-validated select:invalid {
- border-color: var(--danger);
- box-shadow: 0 0 0 4px rgba(197, 41, 41, 0.1);
- }
- .filter-row input,
- .filter-row select {
- width: 210px;
- }
- .table-wrap {
- overflow: auto;
- background: var(--panel-solid);
- }
- .topology-card {
- background: var(--panel);
- border: 1px solid var(--line);
- border-radius: 8px;
- box-shadow: var(--shadow);
- padding: 18px;
- display: grid;
- gap: 14px;
- overflow: hidden;
- }
- .topology-card h3 {
- margin: 0;
- font-size: 20px;
- font-weight: 760;
- }
- .topology-legend {
- display: flex;
- align-items: center;
- gap: 10px;
- flex-wrap: wrap;
- color: var(--muted);
- font-size: 12px;
- font-weight: 680;
- }
- .topology-legend span {
- display: inline-flex;
- align-items: center;
- gap: 6px;
- }
- .topology-legend i {
- width: 9px;
- height: 9px;
- border-radius: 50%;
- background: #9b9da5;
- }
- .topology-legend i.phone {
- background: #0071e3;
- }
- .topology-legend i.email {
- background: #7d5fff;
- }
- .topology-legend i.domain {
- background: #16a36a;
- }
- .topology-legend i.risk {
- background: var(--danger);
- }
- .topology-legend i.role {
- background: #a7afbd;
- }
- .relationship-board > .topology-legend {
- margin-top: 12px;
- padding: 10px 14px;
- border: 1px solid var(--line-soft);
- border-radius: 10px;
- background: rgba(251, 251, 253, 0.7);
- gap: 18px;
- }
- .relation-column {
- fill: rgba(247, 250, 255, 0.55);
- stroke: #e7ecf6;
- stroke-width: 1.2;
- }
- .relation-column.account {
- fill: rgba(238, 249, 242, 0.45);
- stroke: #dceee3;
- }
- .relation-column.role {
- fill: rgba(244, 240, 255, 0.45);
- stroke: #e6dffa;
- }
- .topology-stage {
- width: 100%;
- overflow-x: auto;
- padding: 4px;
- border: 1px solid var(--line-soft);
- border-radius: 8px;
- background:
- radial-gradient(circle at 24px 24px, rgba(0, 0, 0, 0.055) 1px, transparent 1px),
- linear-gradient(180deg, #ffffff 0%, #fbfbfd 100%);
- background-size: 24px 24px, 100% 100%;
- }
- .topology-stage svg {
- display: block;
- width: 100%;
- min-width: 860px;
- height: auto;
- }
- .topology-axis {
- fill: var(--muted);
- font-size: 13px;
- font-weight: 760;
- letter-spacing: 0.06em;
- }
- .topology-edge {
- fill: none;
- stroke: #b9c0ca;
- stroke-width: 2;
- opacity: 0.7;
- }
- .topology-edge.low {
- stroke: #aeb6c2;
- }
- .topology-edge.medium {
- stroke: var(--warning);
- stroke-width: 2.5;
- opacity: 0.85;
- }
- .topology-edge.high {
- stroke: var(--danger);
- stroke-width: 3;
- opacity: 0.9;
- }
- .topology-edge-label {
- fill: #76777e;
- paint-order: stroke;
- stroke: #fff;
- stroke-width: 5px;
- stroke-linejoin: round;
- font-size: 11px;
- font-weight: 720;
- text-anchor: middle;
- }
- .topology-node rect {
- fill: rgba(255, 255, 255, 0.96);
- stroke: #dfe1e7;
- }
- .topology-node circle {
- fill: #9b9da5;
- }
- .topology-node.phone circle {
- fill: #0071e3;
- }
- .topology-node.email circle {
- fill: #7d5fff;
- }
- .topology-node.domain circle {
- fill: #16a36a;
- }
- .topology-node.account circle {
- fill: #1d1d1f;
- }
- .topology-node circle.custom {
- fill: #fff;
- stroke: #dfe1e7;
- }
- .topology-node-title {
- fill: var(--text);
- font-size: 13px;
- font-weight: 760;
- }
- .topology-node-meta {
- fill: var(--muted);
- font-size: 11px;
- font-weight: 620;
- }
- .topology-empty {
- display: grid;
- place-items: center;
- min-height: 180px;
- border: 1px dashed var(--line);
- border-radius: 8px;
- color: var(--muted);
- background: #fbfbfd;
- font-weight: 680;
- }
- .relation-hero {
- display: flex;
- align-items: end;
- justify-content: space-between;
- gap: 18px;
- padding: 4px 2px 2px;
- }
- .relation-hero h3 {
- margin: 4px 0 4px;
- font-size: 30px;
- line-height: 1.08;
- }
- .relation-hero p {
- margin: 0;
- color: var(--muted);
- }
- .relation-filter {
- justify-content: flex-end;
- }
- .relation-layout {
- display: grid;
- grid-template-columns: minmax(860px, 1fr) 300px;
- gap: 16px;
- align-items: start;
- overflow-x: auto;
- }
- .relation-main {
- min-width: 0;
- display: grid;
- gap: 16px;
- }
- .relation-stats {
- display: grid;
- grid-template-columns: repeat(4, minmax(150px, 1fr));
- gap: 12px;
- }
- .relation-stat {
- display: grid;
- grid-template-columns: 44px minmax(0, 1fr);
- gap: 14px;
- align-items: center;
- padding: 16px;
- border: 1px solid var(--line);
- border-radius: 12px;
- background: var(--panel-solid);
- box-shadow: var(--shadow-soft);
- }
- .relation-stat-icon {
- display: grid;
- place-items: center;
- width: 44px;
- height: 44px;
- border-radius: 12px;
- background: #eef5ff;
- color: #0a84ff;
- }
- .relation-stat-icon svg {
- width: 22px;
- height: 22px;
- }
- .relation-stat-icon svg * {
- fill: none;
- stroke: currentColor;
- stroke-width: 2;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
- .relation-stat.account .relation-stat-icon {
- background: #edf9f2;
- color: var(--success);
- }
- .relation-stat.binding .relation-stat-icon {
- background: #f3edff;
- color: #7d5fff;
- }
- .relation-stat.risk .relation-stat-icon {
- background: #fff0ee;
- color: var(--danger);
- }
- .relation-stat span {
- color: var(--muted);
- font-size: 12px;
- font-weight: 720;
- }
- .relation-stat strong {
- display: block;
- margin-top: 2px;
- font-size: 26px;
- line-height: 1;
- }
- .relation-stat p {
- margin: 5px 0 0;
- color: var(--muted);
- font-size: 12px;
- }
- .relationship-board,
- .relation-table-card,
- .relation-inspector {
- border: 1px solid var(--line);
- border-radius: 8px;
- background: var(--panel);
- box-shadow: var(--shadow);
- }
- .relationship-board {
- padding: 16px;
- overflow: hidden;
- }
- .relationship-board-head {
- display: flex;
- justify-content: space-between;
- align-items: start;
- gap: 12px;
- margin-bottom: 12px;
- }
- .relationship-board-head h3,
- .relation-table-card h3 {
- margin: 0;
- font-size: 20px;
- }
- .relation-canvas {
- overflow-x: auto;
- border: 1px solid var(--line-soft);
- border-radius: 8px;
- background:
- radial-gradient(circle at 24px 24px, rgba(0, 0, 0, 0.045) 1px, transparent 1px),
- linear-gradient(180deg, #ffffff 0%, #fbfbfd 100%);
- background-size: 24px 24px, 100% 100%;
- }
- .relation-canvas svg {
- display: block;
- width: 100%;
- min-width: 980px;
- height: auto;
- }
- .relation-axis {
- fill: var(--accent);
- font-size: 13px;
- font-weight: 800;
- }
- .relation-axis.account {
- fill: var(--success);
- }
- .relation-axis.role {
- fill: #7d5fff;
- }
- .asset-group rect {
- fill: rgba(247, 250, 255, 0.78);
- stroke: #e7ecf6;
- stroke-width: 1;
- }
- .asset-group.phone rect {
- fill: rgba(239, 246, 255, 0.9);
- }
- .asset-group.email rect {
- fill: rgba(246, 242, 255, 0.82);
- }
- .asset-group.domain rect {
- fill: rgba(238, 249, 242, 0.86);
- }
- .asset-group-title {
- fill: var(--accent);
- font-size: 13px;
- font-weight: 820;
- }
- .asset-group.email .asset-group-title {
- fill: #7157e8;
- }
- .asset-group.domain .asset-group-title {
- fill: var(--success);
- }
- .relation-line {
- fill: none;
- stroke-width: 2;
- opacity: 0.72;
- }
- .relation-line.phone {
- stroke: #4b91f1;
- }
- .relation-line.email {
- stroke: #7d5fff;
- }
- .relation-line.domain {
- stroke: #16a36a;
- }
- .relation-line.role {
- stroke: #a7afbd;
- stroke-dasharray: 6 5;
- }
- .relation-line.medium,
- .relation-line.role.medium {
- stroke: var(--warning);
- stroke-width: 2.5;
- opacity: 0.86;
- }
- .relation-line.high,
- .relation-line.role.high {
- stroke: var(--danger);
- stroke-width: 3;
- opacity: 0.95;
- }
- .relation-dot {
- fill: #0a84ff;
- }
- .relation-dot.medium {
- fill: var(--warning);
- }
- .relation-dot.high {
- fill: var(--danger);
- }
- .relation-node rect {
- fill: rgba(255, 255, 255, 0.98);
- stroke: #dfe1e7;
- stroke-width: 1.2;
- transition:
- stroke 0.16s ease,
- stroke-width 0.16s ease,
- fill 0.16s ease;
- }
- .relation-node {
- cursor: pointer;
- }
- .relation-node:hover rect {
- fill: #f8fbff;
- stroke: rgba(0, 113, 227, 0.45);
- stroke-width: 2;
- }
- .relation-node.selected rect {
- stroke: var(--accent);
- stroke-width: 2.4;
- }
- .relation-node .node-mark {
- fill: #7a7d86;
- }
- .relation-node .node-mark.phone {
- fill: #0071e3;
- }
- .relation-node .node-mark.email {
- fill: #7d5fff;
- }
- .relation-node .node-mark.domain {
- fill: #16a36a;
- }
- .relation-node .node-mark.account,
- .relation-node .node-mark.apple {
- fill: #1d1d1f;
- }
- .relation-node .node-mark.google {
- fill: #4285f4;
- }
- .relation-node .node-mark.gemini {
- fill: #7d5fff;
- }
- .relation-node .node-mark.chatgpt,
- .relation-node .node-mark.openai {
- fill: #10a37f;
- }
- .relation-node .node-mark.claude {
- fill: #d97745;
- }
- .relation-node .node-mark.wechat {
- fill: #07c160;
- }
- .relation-node .node-mark.custom {
- fill: #fff;
- stroke: #dfe1e7;
- }
- .node-mark-text {
- fill: #fff;
- font-size: 11px;
- font-weight: 850;
- text-anchor: middle;
- }
- .node-line-icon {
- fill: none;
- stroke: #fff;
- stroke-width: 2;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
- .node-line-dot {
- fill: #fff;
- }
- .asset-node-icon-bg {
- fill: #eef5ff;
- }
- .asset-node-icon-bg.email {
- fill: #f1edff;
- }
- .asset-node-icon-bg.domain {
- fill: #edf9f2;
- }
- .asset-line-icon {
- fill: none;
- stroke-width: 2;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
- path.asset-line-icon.phone {
- fill: #0071e3;
- stroke: #0071e3;
- stroke-width: 1.4;
- }
- .asset-line-icon.email {
- stroke: #7d5fff;
- }
- .asset-line-icon.domain {
- stroke: #16a36a;
- }
- .node-mark-image {
- pointer-events: none;
- filter: brightness(0) invert(1);
- }
- .node-mark-image.custom {
- filter: none;
- }
- .relation-node-title {
- fill: var(--text);
- font-size: 13px;
- font-weight: 780;
- }
- .relation-node-meta {
- fill: var(--muted);
- font-size: 11px;
- font-weight: 620;
- }
- .relation-table-card {
- padding: 14px;
- overflow: hidden;
- }
- .relation-table-card-full {
- width: 100%;
- }
- .relation-table-card .table-wrap {
- width: 100%;
- overflow-x: auto;
- }
- .relation-table-card table {
- min-width: 1080px;
- table-layout: fixed;
- }
- .relation-table-card th,
- .relation-table-card td {
- white-space: normal;
- overflow-wrap: anywhere;
- }
- .relation-table-card th:last-child,
- .relation-table-card td:last-child {
- width: 220px;
- }
- .relation-table-card .inline-actions {
- flex-wrap: nowrap;
- align-items: center;
- }
- .relation-table-card .inline-actions button {
- min-width: 58px;
- white-space: nowrap;
- }
- .binding-details-list {
- display: grid;
- gap: 10px;
- }
- .binding-detail-row {
- display: grid;
- grid-template-columns: minmax(220px, 1fr) minmax(240px, 1.15fr) minmax(320px, 1.2fr) auto;
- gap: 16px;
- align-items: center;
- padding: 14px;
- border: 1px solid var(--line-soft);
- border-radius: 12px;
- background: #fff;
- box-shadow: var(--shadow-soft);
- }
- .binding-detail-resource,
- .binding-detail-account {
- display: grid;
- gap: 6px;
- min-width: 0;
- }
- .binding-detail-meta {
- display: grid;
- grid-template-columns: repeat(4, minmax(72px, auto));
- gap: 10px;
- align-items: center;
- }
- .binding-detail-meta > div {
- display: grid;
- gap: 5px;
- }
- .binding-detail-meta strong {
- color: var(--text);
- font-size: 13px;
- font-weight: 720;
- white-space: nowrap;
- }
- .binding-detail-label {
- color: var(--muted);
- font-size: 11px;
- font-weight: 760;
- }
- .binding-detail-actions {
- justify-content: flex-end;
- }
- .binding-cell-main {
- display: inline-grid;
- grid-template-columns: 34px minmax(0, 1fr);
- gap: 10px;
- align-items: center;
- width: 100%;
- min-width: 0;
- }
- .binding-cell-main > div > strong,
- .binding-cell-main > div > span {
- display: block;
- min-width: 0;
- overflow-wrap: anywhere;
- }
- .binding-cell-main > div > strong {
- color: var(--text);
- font-size: 14px;
- line-height: 1.25;
- max-width: 220px;
- }
- .binding-cell-main > div > span {
- margin-top: 3px;
- color: var(--muted);
- font-size: 12px;
- }
- .resource-mini-icon {
- display: grid;
- place-items: center;
- width: 34px;
- height: 34px;
- border-radius: 10px;
- background: #eef5ff;
- color: var(--accent);
- }
- .binding-cell-main .platform-logo {
- width: 34px;
- height: 34px;
- align-self: center;
- }
- .binding-cell-main .platform-logo img {
- width: 22px;
- height: 22px;
- }
- .resource-mini-icon.email {
- background: #f1edff;
- color: #7d5fff;
- }
- .resource-mini-icon.domain {
- background: #edf9f2;
- color: var(--success);
- }
- .resource-mini-icon.account {
- background: #f2f2f4;
- color: #1d1d1f;
- }
- .resource-mini-icon svg {
- display: block;
- width: 20px;
- height: 20px;
- }
- .resource-mini-icon svg * {
- fill: none;
- stroke: currentColor;
- stroke-width: 2;
- stroke-linecap: round;
- stroke-linejoin: round;
- }
- .resource-mini-icon.phone svg path {
- fill: none;
- stroke: currentColor;
- stroke-width: 2.1;
- }
- .resource-mini-icon.email svg {
- transform: translateY(0.5px);
- }
- .resource-mini-icon.account svg circle {
- fill: currentColor;
- stroke: currentColor;
- }
- .role-badge {
- display: inline-flex;
- align-items: center;
- min-height: 26px;
- padding: 4px 10px;
- border-radius: 999px;
- background: #eef5ff;
- color: var(--accent);
- font-size: 12px;
- font-weight: 760;
- white-space: nowrap;
- }
- .role-badge.recovery {
- background: #edf9f2;
- color: var(--success);
- }
- .role-badge.payment {
- background: #fff6e8;
- color: var(--warning);
- }
- .role-badge.two_factor,
- .role-badge.trusted_phone {
- background: #f1edff;
- color: #7d5fff;
- }
- .table-icon-actions {
- display: flex;
- gap: 8px;
- align-items: center;
- }
- .table-icon-button {
- position: relative;
- display: grid;
- place-items: center;
- width: 34px;
- min-width: 34px;
- height: 34px;
- min-height: 34px;
- padding: 0;
- border-radius: 50%;
- background: #fff;
- border-color: var(--line);
- }
- .table-icon-button::before,
- .table-icon-button::after {
- content: "";
- position: absolute;
- box-sizing: border-box;
- }
- .table-icon-button.view::before {
- width: 18px;
- height: 12px;
- border: 2px solid currentColor;
- border-radius: 50%;
- }
- .table-icon-button.view::after {
- width: 5px;
- height: 5px;
- border-radius: 50%;
- background: currentColor;
- }
- .table-icon-button.edit::before {
- width: 16px;
- height: 3px;
- background: currentColor;
- border-radius: 2px;
- transform: rotate(-35deg);
- }
- .table-icon-button.edit::after {
- right: 9px;
- bottom: 8px;
- width: 9px;
- height: 2px;
- background: currentColor;
- border-radius: 2px;
- }
- .table-icon-button.delete {
- color: var(--danger);
- }
- .table-icon-button.delete::before {
- width: 14px;
- height: 15px;
- border: 2px solid currentColor;
- border-top: 0;
- border-radius: 0 0 3px 3px;
- transform: translateY(2px);
- }
- .table-icon-button.delete::after {
- width: 16px;
- height: 2px;
- background: currentColor;
- border-radius: 2px;
- transform: translateY(-8px);
- }
- .count-badge {
- display: inline-grid;
- place-items: center;
- min-width: 24px;
- min-height: 22px;
- padding: 0 7px;
- border-radius: 999px;
- background: #eef5ff;
- color: var(--accent);
- font-size: 12px;
- vertical-align: middle;
- }
- .relation-inspector {
- position: sticky;
- top: 20px;
- overflow: hidden;
- }
- .inspector-profile,
- .inspector-section {
- padding: 16px;
- border-bottom: 1px solid var(--line-soft);
- }
- .inspector-profile {
- display: grid;
- gap: 12px;
- }
- .inspector-profile h3,
- .inspector-section h4 {
- margin: 0;
- }
- .inspector-profile p {
- margin: 5px 0 8px;
- color: var(--muted);
- overflow-wrap: anywhere;
- }
- .inspector-avatar .platform-chip {
- transform-origin: left center;
- }
- .inspector-list {
- display: grid;
- gap: 8px;
- margin-top: 12px;
- }
- .inspector-item {
- display: grid;
- gap: 4px;
- padding: 10px;
- border: 1px solid var(--line-soft);
- border-radius: 8px;
- background: #fbfbfd;
- }
- .inspector-item.active {
- border-color: rgba(0, 113, 227, 0.45);
- background: #f3f8ff;
- }
- .inspector-item span {
- overflow-wrap: anywhere;
- font-size: 13px;
- }
- .inspector-item strong {
- color: var(--muted);
- font-size: 12px;
- }
- .inspector-meta {
- display: grid;
- grid-template-columns: 86px minmax(0, 1fr);
- gap: 10px;
- margin: 12px 0 0;
- align-items: center;
- }
- .inspector-meta dt {
- color: var(--muted);
- font-size: 12px;
- font-weight: 720;
- }
- .inspector-meta dd {
- margin: 0;
- min-width: 0;
- }
- .risk-list.compact {
- margin-top: 12px;
- }
- table {
- width: 100%;
- border-collapse: collapse;
- min-width: 760px;
- }
- th,
- td {
- padding: 12px 15px;
- border-bottom: 1px solid var(--line-soft);
- text-align: left;
- vertical-align: top;
- font-size: 13px;
- }
- th {
- background: #fbfbfd;
- color: var(--muted);
- font-size: 11px;
- text-transform: uppercase;
- letter-spacing: 0.05em;
- font-weight: 760;
- }
- tbody tr {
- transition: background 0.14s ease;
- }
- tbody tr:hover {
- background: #fbfbfd;
- }
- tr:last-child td {
- border-bottom: 0;
- }
- .accounts-list-view {
- background: #f5f7fa;
- border: 1.2px solid var(--border);
- border-radius: 14px;
- overflow: hidden;
- margin-bottom: 20px;
- }
- .accounts-list-header {
- padding: 12px 16px 0;
- border-bottom: 1px solid var(--border);
- }
- .accounts-list-search {
- display: flex;
- align-items: center;
- gap: 8px;
- padding-bottom: 12px;
- }
- .accounts-list-search svg { flex-shrink: 0; width: 16px; height: 16px; color: var(--muted); }
- .accounts-list-search input {
- flex: 1;
- border: none;
- outline: none;
- font-size: 14px;
- background: transparent;
- color: var(--text);
- }
- .accounts-list-search input::placeholder { color: var(--muted); }
- .accounts-platform-tabs {
- display: flex;
- gap: 6px;
- overflow-x: auto;
- scrollbar-width: none;
- padding-bottom: 12px;
- }
- .accounts-platform-tabs::-webkit-scrollbar { display: none; }
- .accounts-list-items {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
- gap: 10px;
- padding: 16px;
- }
- .account-list-item {
- position: relative;
- display: flex;
- align-items: center;
- gap: 12px;
- padding: 14px 16px;
- border-radius: 14px;
- background: #fff;
- box-shadow: 0 1px 3px rgba(0,0,0,.06), 0 1px 1px rgba(0,0,0,.03);
- cursor: pointer;
- transition: box-shadow 0.18s, transform 0.18s;
- }
- .account-list-item:hover {
- box-shadow: 0 4px 18px rgba(0,0,0,.10);
- transform: translateY(-2px);
- }
- .account-list-item:hover .account-list-item-actions { opacity: 1; }
- .account-list-item.active {
- box-shadow: 0 0 0 2px var(--accent), 0 4px 16px rgba(0,113,227,.1);
- background: #f0f6ff;
- }
- .account-list-item[hidden] { display: none; }
- .account-list-item .platform-logo {
- flex-shrink: 0;
- width: 38px;
- height: 38px;
- border-radius: 11px;
- font-size: 12px;
- }
- .account-list-item-info {
- flex: 1;
- display: flex;
- flex-direction: column;
- gap: 2px;
- min-width: 0;
- }
- .account-list-item-name { font-size: 14px; font-weight: 700; color: var(--text); }
- .account-list-item-id { font-size: 12px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
- .account-list-item-actions {
- position: absolute;
- top: 8px;
- right: 8px;
- display: flex;
- gap: 4px;
- opacity: 0;
- transition: opacity 0.14s;
- }
- .acct-action-btn {
- display: grid;
- place-items: center;
- width: 26px;
- height: 26px;
- border-radius: 8px;
- border: none;
- background: rgba(255,255,255,.92);
- box-shadow: 0 1px 4px rgba(0,0,0,.12);
- color: var(--muted);
- cursor: pointer;
- backdrop-filter: blur(4px);
- transition: background 0.12s, color 0.12s, box-shadow 0.12s;
- }
- .acct-action-btn svg { width: 13px; height: 13px; }
- .assets-card-view {
- background: #f5f7fa;
- border: 1.2px solid var(--border);
- border-radius: 14px;
- overflow: hidden;
- margin-bottom: 20px;
- }
- .assets-card-header {
- padding: 12px 16px 0;
- border-bottom: 1px solid var(--border);
- }
- .assets-card-grid {
- display: grid;
- grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
- gap: 12px;
- padding: 16px;
- }
- .asset-drawer-backdrop {
- position: fixed;
- inset: 0;
- background: rgba(15, 23, 42, 0.16);
- backdrop-filter: blur(3px);
- z-index: 35;
- animation: assetDrawerBackdropIn 0.2s ease-out both;
- }
- .asset-drawer {
- position: fixed;
- top: 0;
- right: 0;
- bottom: 0;
- width: min(460px, calc(100vw - 32px));
- padding: 18px;
- z-index: 36;
- pointer-events: none;
- animation: assetDrawerIn 0.24s cubic-bezier(0.2, 0.8, 0.2, 1) both;
- }
- .asset-drawer-backdrop.closing {
- animation: assetDrawerBackdropOut 0.18s ease-in both;
- }
- .asset-drawer.closing {
- animation: assetDrawerOut 0.2s cubic-bezier(0.4, 0, 1, 1) both;
- }
- .asset-drawer-shell {
- position: relative;
- height: 100%;
- overflow: auto;
- border-radius: 24px;
- background: rgba(250, 250, 252, 0.96);
- border: 1px solid rgba(205, 210, 220, 0.82);
- box-shadow:
- -16px 0 40px rgba(15, 23, 42, 0.1),
- 0 12px 30px rgba(15, 23, 42, 0.08);
- pointer-events: auto;
- }
- @keyframes assetDrawerIn {
- from {
- opacity: 0;
- transform: translateX(28px) scale(0.985);
- }
- to {
- opacity: 1;
- transform: translateX(0) scale(1);
- }
- }
- @keyframes assetDrawerOut {
- from {
- opacity: 1;
- transform: translateX(0) scale(1);
- }
- to {
- opacity: 0;
- transform: translateX(28px) scale(0.985);
- }
- }
- @keyframes assetDrawerBackdropIn {
- from {
- opacity: 0;
- backdrop-filter: blur(0);
- }
- to {
- opacity: 1;
- backdrop-filter: blur(3px);
- }
- }
- @keyframes assetDrawerBackdropOut {
- from {
- opacity: 1;
- backdrop-filter: blur(3px);
- }
- to {
- opacity: 0;
- backdrop-filter: blur(0);
- }
- }
- @media (prefers-reduced-motion: reduce) {
- .asset-drawer,
- .asset-drawer-backdrop,
- .asset-drawer.closing,
- .asset-drawer-backdrop.closing {
- animation-duration: 0.01ms;
- }
- }
- .asset-drawer-close {
- position: absolute;
- top: 16px;
- right: 16px;
- display: grid;
- place-items: center;
- width: 36px;
- height: 36px;
- border: 0;
- border-radius: 50%;
- background: rgba(29, 29, 31, 0.08);
- color: #1d1d1f;
- font-size: 24px;
- line-height: 1;
- z-index: 2;
- }
- .asset-drawer-close:hover {
- background: rgba(29, 29, 31, 0.14);
- }
- .asset-card {
- position: relative;
- display: flex;
- align-items: center;
- gap: 14px;
- min-height: 96px;
- padding: 16px 18px;
- border-radius: 18px;
- background: #fff;
- box-shadow: 0 1px 3px rgba(0,0,0,.06), 0 1px 1px rgba(0,0,0,.03);
- cursor: pointer;
- transition: box-shadow 0.18s, transform 0.18s, background 0.18s;
- }
- .asset-card:hover {
- box-shadow: 0 6px 22px rgba(0,0,0,.09);
- transform: translateY(-2px);
- }
- .asset-card:hover .asset-card-actions {
- opacity: 1;
- }
- .asset-card.active {
- background: #f0f6ff;
- box-shadow: 0 0 0 2px var(--accent), 0 6px 22px rgba(0,113,227,.10);
- }
- .asset-card[hidden] {
- display: none;
- }
- .asset-card-icon {
- flex: 0 0 auto;
- display: grid;
- place-items: center;
- width: 48px;
- height: 48px;
- border-radius: 14px;
- box-shadow: inset 0 1px 0 rgba(255,255,255,.2);
- }
- .asset-card-icon svg {
- width: 24px;
- height: 24px;
- }
- .asset-card-body {
- min-width: 0;
- flex: 1;
- display: grid;
- gap: 4px;
- }
- .asset-card-title {
- font-size: 14px;
- font-weight: 760;
- color: var(--text);
- overflow-wrap: anywhere;
- }
- .asset-card-sub {
- color: var(--muted);
- font-size: 12px;
- line-height: 1.35;
- overflow-wrap: anywhere;
- }
- .asset-card-status {
- margin-top: 2px;
- }
- .asset-card-actions {
- position: absolute;
- top: 10px;
- right: 10px;
- display: flex;
- gap: 4px;
- opacity: 0;
- transition: opacity 0.14s ease;
- }
- .asset-card-empty {
- padding: 24px 16px 28px;
- color: var(--muted);
- font-size: 14px;
- }
- .acct-action-btn:hover { background: #fff; color: var(--text); box-shadow: 0 2px 8px rgba(0,0,0,.16); }
- .acct-action-del:hover { color: var(--danger); }
- .account-list-empty {
- padding: 24px 16px;
- color: var(--muted);
- font-size: 14px;
- text-align: center;
- }
- .pill {
- display: inline-flex;
- align-items: center;
- min-height: 23px;
- padding: 3px 8px;
- border-radius: 999px;
- border: 1px solid var(--line);
- background: var(--panel-soft);
- color: var(--text);
- font-size: 11px;
- font-weight: 760;
- white-space: nowrap;
- }
- .pill.high,
- .pill.critical,
- .pill.locked,
- .pill.suspended,
- .pill.unusable,
- .pill.cannot_receive,
- .pill.cannot_receive_sms,
- .pill.high_risk {
- background: #fff0ee;
- border-color: #f0caca;
- color: var(--danger);
- }
- .pill.medium,
- .pill.appealing,
- .pill.pending_verify,
- .pill.processing {
- background: #fff6e8;
- border-color: #eed0a2;
- color: var(--warning);
- }
- .pill.low,
- .pill.normal,
- .pill.available,
- .pill.active,
- .pill.resolved {
- background: #eef9f1;
- border-color: #c5e8d0;
- color: var(--success);
- }
- .flag-chip {
- display: inline-flex;
- align-items: center;
- gap: 7px;
- max-width: 100%;
- min-height: 25px;
- padding: 3px 9px 3px 5px;
- border: 1px solid #dedfe5;
- border-radius: 999px;
- background: linear-gradient(180deg, #ffffff 0%, #f7f7fa 100%);
- color: var(--text);
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.035);
- font-size: 12px;
- font-weight: 720;
- white-space: nowrap;
- }
- .flag-chip-icon {
- display: grid;
- place-items: center;
- width: 21px;
- height: 21px;
- border-radius: 50%;
- background: #fff;
- box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.06);
- font-size: 14px;
- line-height: 1;
- }
- .platform-chip {
- display: inline-flex;
- align-items: center;
- gap: 8px;
- max-width: 100%;
- min-height: 28px;
- padding: 3px 10px 3px 4px;
- border: 1px solid #dedfe5;
- border-radius: 999px;
- background: linear-gradient(180deg, #ffffff 0%, #f7f7fa 100%);
- color: var(--text);
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.035);
- font-size: 12px;
- font-weight: 740;
- white-space: nowrap;
- }
- .platform-logo {
- position: relative;
- display: grid;
- place-items: center;
- width: 22px;
- height: 22px;
- border-radius: 50%;
- background: #1d1d1f;
- color: #fff;
- font-size: 10px;
- font-weight: 850;
- letter-spacing: 0;
- line-height: 1;
- overflow: hidden;
- }
- .platform-logo img {
- position: absolute;
- inset: 50% auto auto 50%;
- display: block;
- width: 64%;
- height: 64%;
- object-fit: contain;
- filter: brightness(0) invert(1);
- transform: translate(-50%, -50%);
- }
- .platform-logo.wechat img,
- .platform-logo.openai img,
- .platform-logo.chatgpt img,
- .platform-logo.claude img {
- width: 68%;
- height: 68%;
- }
- .platform-logo.openai img,
- .platform-logo.chatgpt img {
- transform: translate(-50%, -50%) translate(0.5px, 0.25px) scale(0.96);
- }
- .platform-logo.wechat img {
- transform: translate(-50%, -50%) translate(0.5px, 0.25px) scale(0.96);
- }
- .platform-logo.claude img {
- transform: translate(-50%, -50%) translate(0.25px, 0.25px) scale(0.92);
- }
- .platform-logo.gemini img {
- transform: translate(-50%, -50%) translate(0.25px, 0.25px) scale(0.94);
- }
- .platform-logo.apple img {
- width: 62%;
- height: 62%;
- transform: translate(-50%, -50%) translate(0.5px, 0.5px);
- }
- .platform-logo.apple {
- background: #1d1d1f;
- }
- .platform-logo.google {
- background: conic-gradient(from 45deg, #4285f4, #34a853, #fbbc05, #ea4335, #4285f4);
- }
- .platform-logo.gemini {
- background: linear-gradient(135deg, #4c8bf5 0%, #9b72f2 52%, #d96570 100%);
- }
- .platform-logo.chatgpt,
- .platform-logo.openai {
- background: #10a37f;
- }
- .platform-logo.claude {
- background: #d97745;
- }
- .platform-logo.wechat {
- background: #07c160;
- font-size: 12px;
- }
- .platform-logo.github {
- background: #24292f;
- }
- .platform-logo.telegram {
- background: #229ed9;
- }
- .platform-logo.qq {
- background: #1d1d1f;
- }
- .platform-logo.x,
- .platform-logo.notion,
- .platform-logo.github,
- .platform-logo.steam,
- .platform-logo.epicgames {
- background: #1d1d1f;
- }
- .platform-logo.facebook {
- background: #1877f2;
- }
- .platform-logo.instagram {
- background: linear-gradient(135deg, #833ab4 0%, #fd1d1d 50%, #fcb045 100%);
- }
- .platform-logo.discord {
- background: #5865f2;
- }
- .platform-logo.slack {
- background: #4a154b;
- }
- .platform-logo.onepassword,
- .platform-logo.microsoft,
- .platform-logo.playstation {
- background: #0078d4;
- }
- .platform-logo.amazon {
- background: #ff9900;
- }
- .platform-logo.cloudflare {
- background: #f38020;
- }
- .platform-logo.paypal {
- background: #003087;
- }
- .platform-logo.stripe {
- background: #635bff;
- }
- .platform-logo.alipay {
- background: #1677ff;
- }
- .platform-logo.tiktok {
- background: #111;
- }
- .platform-logo.youtube,
- .platform-logo.netflix,
- .platform-logo.nintendo {
- background: #e50914;
- }
- .platform-logo.spotify {
- background: #1db954;
- }
- .platform-logo.generic {
- background: #777b86;
- }
- .platform-logo.custom {
- background: #fff;
- color: var(--text);
- border: 1px solid #dfe1e7;
- }
- .platform-logo.custom img {
- width: 76%;
- height: 76%;
- filter: none;
- transform: translate(-50%, -50%);
- }
- .logo-input-row {
- display: grid;
- grid-template-columns: minmax(0, 1fr) auto;
- gap: 10px;
- align-items: center;
- }
- .logo-upload-button {
- display: inline-flex;
- align-items: center;
- justify-content: center;
- min-height: 44px;
- white-space: nowrap;
- cursor: pointer;
- }
- .detail-panel {
- padding: 18px;
- display: grid;
- gap: 14px;
- }
- .detail-panel-drawer {
- min-height: 100%;
- padding: 26px 22px 22px;
- background: transparent;
- border: 0;
- box-shadow: none;
- backdrop-filter: none;
- }
- .detail-panel-drawer > .toolbar {
- display: grid;
- grid-template-columns: 1fr;
- gap: 14px;
- padding-right: 52px;
- }
- .detail-panel-drawer > .toolbar .inline-actions {
- justify-content: flex-start;
- }
- .detail-panel-drawer > .toolbar .inline-actions button {
- min-height: 36px;
- padding: 8px 12px;
- }
- .detail-panel h3 {
- margin: 0;
- font-size: 20px;
- }
- .detail-panel-drawer h3 {
- font-size: 22px;
- line-height: 1.2;
- overflow-wrap: anywhere;
- }
- .detail-grid {
- display: grid;
- grid-template-columns: repeat(3, minmax(160px, 1fr));
- gap: 12px;
- }
- .detail-panel-drawer .detail-grid {
- grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 10px;
- }
- .detail-item {
- padding: 13px;
- background: #fbfbfd;
- border: 1px solid var(--line-soft);
- border-radius: 8px;
- min-width: 0;
- }
- .detail-panel-drawer .detail-item {
- padding: 12px;
- border-radius: 12px;
- background: rgba(255, 255, 255, 0.76);
- }
- .detail-item span {
- display: block;
- margin-bottom: 5px;
- color: var(--muted);
- font-size: 12px;
- font-weight: 720;
- }
- .detail-item strong {
- display: block;
- overflow-wrap: anywhere;
- font-size: 18px;
- line-height: 1.35;
- font-weight: 760;
- }
- .detail-panel-drawer .detail-item strong {
- font-size: 15px;
- }
- .detail-panel-drawer .detail-item span {
- font-size: 11px;
- }
- .detail-panel-drawer .bound-list,
- .detail-panel-drawer .risk-list {
- gap: 8px;
- }
- .detail-panel-drawer .bound-item,
- .detail-panel-drawer .risk-item {
- padding: 12px;
- border-radius: 12px;
- background: rgba(255, 255, 255, 0.76);
- }
- .detail-item strong .pill,
- .detail-item strong .flag-chip,
- .detail-item strong .platform-chip {
- font-size: 12px;
- line-height: 1;
- font-weight: 740;
- vertical-align: middle;
- }
- .detail-item strong .platform-chip,
- .detail-item strong .flag-chip {
- display: inline-flex;
- width: auto;
- max-width: 100%;
- }
- .detail-item strong .platform-logo {
- width: 22px;
- height: 22px;
- font-size: 10px;
- }
- .detail-item strong .flag-chip-icon {
- width: 21px;
- height: 21px;
- font-size: 14px;
- }
- .risk-item,
- .bound-item {
- display: grid;
- gap: 5px;
- padding: 13px;
- background: #fbfbfd;
- border: 1px solid var(--line-soft);
- border-radius: 8px;
- }
- .risk-title {
- display: flex;
- justify-content: space-between;
- gap: 10px;
- align-items: start;
- }
- .empty {
- padding: 38px;
- text-align: center;
- }
- .empty h3 {
- font-size: 20px;
- }
- .empty p {
- margin: 8px auto 0;
- max-width: 520px;
- color: var(--muted);
- line-height: 1.55;
- }
- .dialog {
- width: min(760px, calc(100vw - 28px));
- border: 0;
- border-radius: 8px;
- padding: 0;
- box-shadow: 0 30px 90px rgba(0, 0, 0, 0.22);
- overflow: hidden;
- }
- .dialog::backdrop {
- background: rgba(0, 0, 0, 0.32);
- backdrop-filter: blur(8px);
- }
- .onboarding-dialog {
- width: min(860px, calc(100vw - 28px));
- border: 0;
- border-radius: 18px;
- padding: 0;
- background: transparent;
- box-shadow: 0 30px 90px rgba(0, 0, 0, 0.24);
- overflow: hidden;
- }
- .onboarding-dialog::backdrop {
- background: rgba(0, 0, 0, 0.3);
- backdrop-filter: blur(8px);
- }
- .onboarding-panel {
- background: #fbfbfd;
- }
- .onboarding-head {
- display: flex;
- align-items: start;
- justify-content: space-between;
- gap: 18px;
- padding: 24px;
- background: rgba(255, 255, 255, 0.86);
- border-bottom: 1px solid var(--line-soft);
- }
- .onboarding-head h3 {
- margin-top: 6px;
- font-size: 28px;
- line-height: 1.12;
- }
- .onboarding-steps {
- display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 14px;
- padding: 22px 24px;
- }
- .onboarding-step {
- display: grid;
- grid-template-columns: 34px minmax(0, 1fr);
- gap: 14px;
- padding: 16px;
- border: 1px solid var(--line-soft);
- border-radius: 14px;
- background: #fff;
- box-shadow: var(--shadow-soft);
- }
- .onboarding-step-index {
- display: grid;
- place-items: center;
- width: 34px;
- height: 34px;
- border-radius: 50%;
- background: #eef5ff;
- color: var(--accent);
- font-size: 14px;
- font-weight: 820;
- }
- .onboarding-step h4 {
- margin: 2px 0 7px;
- font-size: 17px;
- line-height: 1.2;
- }
- .onboarding-step p {
- margin: 0 0 14px;
- color: var(--muted);
- font-size: 13px;
- line-height: 1.55;
- }
- .onboarding-step button {
- min-height: 34px;
- padding: 7px 12px;
- font-size: 13px;
- }
- .onboarding-actions {
- display: flex;
- justify-content: flex-end;
- gap: 10px;
- padding: 16px 24px 22px;
- border-top: 1px solid var(--line-soft);
- background: rgba(255, 255, 255, 0.72);
- }
- .guided-tour-layer {
- position: fixed;
- inset: 0;
- z-index: 80;
- pointer-events: none;
- }
- .dialog .guided-tour-layer {
- z-index: 3;
- }
- .guided-tour-layer.dialog-tour {
- position: absolute;
- }
- .guided-tour-scrim {
- position: fixed;
- inset: 0;
- background: rgba(15, 23, 42, 0.18);
- backdrop-filter: blur(1.5px);
- pointer-events: none;
- }
- .guided-tour-layer.dialog-tour .guided-tour-scrim {
- display: none;
- }
- .guided-tour-spotlight {
- position: fixed;
- border: 2px solid var(--accent);
- border-radius: 12px;
- box-shadow:
- 0 0 0 9999px rgba(15, 23, 42, 0.22),
- 0 0 0 7px rgba(0, 113, 227, 0.12),
- 0 12px 34px rgba(0, 113, 227, 0.22);
- pointer-events: none;
- animation: tourPulse 1.4s ease-in-out infinite;
- }
- .guided-tour-layer.dialog-tour .guided-tour-spotlight {
- box-shadow:
- 0 0 0 7px rgba(0, 113, 227, 0.12),
- 0 12px 34px rgba(0, 113, 227, 0.2);
- }
- .guided-tour-cursor {
- position: fixed;
- width: 28px;
- height: 28px;
- pointer-events: none;
- filter: drop-shadow(0 8px 10px rgba(15, 23, 42, 0.22));
- animation: tourCursorTap 1.2s ease-in-out infinite;
- }
- .guided-tour-cursor::before {
- content: "";
- position: absolute;
- left: 4px;
- top: 2px;
- width: 0;
- height: 0;
- border-top: 21px solid #1d1d1f;
- border-right: 13px solid transparent;
- transform: rotate(-18deg);
- }
- .guided-tour-cursor::after {
- content: "";
- position: absolute;
- left: 8px;
- top: 7px;
- width: 8px;
- height: 8px;
- border-radius: 50%;
- background: #fff;
- opacity: 0.95;
- }
- .guided-tour-card {
- position: fixed;
- width: min(320px, calc(100vw - 36px));
- padding: 16px;
- border: 1px solid rgba(207, 210, 220, 0.9);
- border-radius: 16px;
- background: rgba(255, 255, 255, 0.96);
- box-shadow: 0 22px 60px rgba(15, 23, 42, 0.18);
- pointer-events: auto;
- }
- .guided-tour-progress {
- color: var(--accent);
- font-size: 12px;
- font-weight: 820;
- }
- .guided-tour-card h3 {
- margin: 8px 0 8px;
- font-size: 18px;
- line-height: 1.25;
- }
- .guided-tour-card p {
- margin: 0;
- color: var(--muted);
- font-size: 13px;
- line-height: 1.55;
- }
- .guided-tour-actions {
- display: flex;
- align-items: center;
- justify-content: space-between;
- gap: 10px;
- margin-top: 14px;
- }
- .guided-tour-actions button {
- min-height: 34px;
- padding: 7px 12px;
- font-size: 13px;
- }
- .guided-tour-wait {
- color: var(--muted);
- font-size: 12px;
- font-weight: 720;
- }
- @keyframes tourPulse {
- 0%, 100% {
- box-shadow:
- 0 0 0 9999px rgba(15, 23, 42, 0.22),
- 0 0 0 7px rgba(0, 113, 227, 0.12),
- 0 12px 34px rgba(0, 113, 227, 0.22);
- }
- 50% {
- box-shadow:
- 0 0 0 9999px rgba(15, 23, 42, 0.22),
- 0 0 0 11px rgba(0, 113, 227, 0.18),
- 0 16px 42px rgba(0, 113, 227, 0.28);
- }
- }
- .guided-tour-layer.dialog-tour .guided-tour-spotlight {
- animation: tourPulseLight 1.4s ease-in-out infinite;
- }
- @keyframes tourPulseLight {
- 0%, 100% {
- box-shadow:
- 0 0 0 7px rgba(0, 113, 227, 0.12),
- 0 12px 34px rgba(0, 113, 227, 0.2);
- }
- 50% {
- box-shadow:
- 0 0 0 11px rgba(0, 113, 227, 0.18),
- 0 16px 42px rgba(0, 113, 227, 0.26);
- }
- }
- @keyframes tourCursorTap {
- 0%, 100% {
- transform: translate(0, 0) scale(1);
- }
- 50% {
- transform: translate(2px, 2px) scale(0.94);
- }
- }
- .dialog form {
- padding: 0;
- background: #fbfbfd;
- }
- .dialog-head {
- display: flex;
- align-items: start;
- justify-content: space-between;
- gap: 16px;
- padding: 22px 22px 18px;
- margin-bottom: 0;
- background: rgba(255, 255, 255, 0.82);
- border-bottom: 1px solid var(--line-soft);
- }
- .dialog-head h3 {
- font-size: 22px;
- font-weight: 780;
- line-height: 1.15;
- }
- .form-grid {
- display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 15px;
- max-height: min(68vh, 680px);
- overflow: auto;
- padding: 20px 22px 22px;
- background:
- linear-gradient(#fbfbfd 30%, rgba(251, 251, 253, 0)),
- linear-gradient(rgba(251, 251, 253, 0), #fbfbfd 70%) bottom,
- linear-gradient(rgba(0, 0, 0, 0.045), rgba(0, 0, 0, 0)),
- linear-gradient(rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.035)) bottom;
- background-repeat: no-repeat;
- background-size:
- 100% 28px,
- 100% 28px,
- 100% 10px,
- 100% 10px;
- background-attachment: local, local, scroll, scroll;
- }
- .form-field {
- display: grid;
- gap: 7px;
- align-content: start;
- }
- .form-field.full {
- grid-column: 1 / -1;
- }
- .phone-combo {
- display: grid;
- grid-template-columns: minmax(220px, 0.8fr) minmax(220px, 1fr);
- align-items: stretch;
- }
- .phone-combo select,
- .phone-combo input {
- min-height: 42px;
- border: 1px solid #cfd0d6;
- background: var(--panel-solid);
- color: var(--text);
- padding: 9px 11px;
- outline: 0;
- box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.025);
- transition:
- border-color 0.16s ease,
- box-shadow 0.16s ease,
- background 0.16s ease;
- }
- .phone-combo select {
- border-radius: 8px 0 0 8px;
- }
- .phone-combo input {
- margin-left: -1px;
- border-radius: 0 8px 8px 0;
- }
- .phone-combo select:hover,
- .phone-combo input:hover {
- border-color: #b7b8bf;
- }
- .phone-combo select:focus,
- .phone-combo input:focus {
- position: relative;
- z-index: 1;
- border-color: var(--accent);
- background: #fff;
- box-shadow:
- 0 0 0 4px rgba(0, 113, 227, 0.12),
- inset 0 1px 1px rgba(0, 0, 0, 0.02);
- }
- .form-field label {
- display: flex;
- justify-content: space-between;
- gap: 10px;
- font-size: 13px;
- font-weight: 720;
- color: #303034;
- }
- .required-mark {
- align-self: center;
- padding: 2px 6px;
- border-radius: 999px;
- background: #eef5ff;
- color: var(--accent-strong);
- font-size: 10px;
- font-weight: 760;
- }
- .form-field textarea {
- min-height: 94px;
- resize: vertical;
- }
- .field-hint {
- margin-top: 1px;
- font-size: 12px;
- line-height: 1.45;
- }
- .switch-row {
- align-self: end;
- display: flex;
- gap: 11px;
- align-items: center;
- min-height: 42px;
- padding: 9px 11px;
- border: 1px solid var(--line-soft);
- border-radius: 8px;
- background: #fff;
- color: #303034;
- font-size: 13px;
- font-weight: 650;
- cursor: pointer;
- transition:
- border-color 0.16s ease,
- background 0.16s ease,
- box-shadow 0.16s ease;
- }
- .switch-row:hover {
- border-color: #c8c9d0;
- box-shadow: var(--shadow-soft);
- }
- .switch-row input {
- position: absolute;
- opacity: 0;
- pointer-events: none;
- }
- .switch-track {
- position: relative;
- flex: 0 0 auto;
- width: 42px;
- height: 24px;
- border-radius: 999px;
- background: #d7d8dd;
- transition:
- background 0.18s ease,
- box-shadow 0.18s ease;
- }
- .switch-thumb {
- position: absolute;
- top: 2px;
- left: 2px;
- width: 20px;
- height: 20px;
- border-radius: 50%;
- background: #fff;
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.22);
- transition: transform 0.18s ease;
- }
- .switch-row input:checked + .switch-track {
- background: var(--accent);
- }
- .switch-row input:checked + .switch-track .switch-thumb {
- transform: translateX(18px);
- }
- .switch-row input:focus-visible + .switch-track {
- box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.16);
- }
- .binding-sentence {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- gap: 6px 8px;
- padding: 14px 16px;
- margin-bottom: 4px;
- border-radius: 10px;
- background: linear-gradient(135deg, #f0f5ff 0%, #f5f0ff 100%);
- border: 1px solid #dde5f8;
- font-size: 14px;
- line-height: 1.5;
- grid-column: 1 / -1;
- }
- .bs-text {
- color: var(--muted);
- font-weight: 520;
- }
- .bs-chip {
- padding: 3px 10px;
- border-radius: 999px;
- background: rgba(255, 255, 255, 0.88);
- border: 1px solid #c8d6f0;
- color: var(--text);
- font-weight: 700;
- font-size: 13px;
- max-width: 200px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
- }
- .binding-section-label {
- grid-column: 1 / -1;
- font-size: 12px;
- font-weight: 760;
- color: var(--muted);
- text-transform: uppercase;
- letter-spacing: 0.06em;
- margin-top: 4px;
- display: flex;
- align-items: center;
- gap: 8px;
- }
- .binding-section-label .required-mark {
- font-size: 10px;
- }
- .binding-asset-row {
- grid-column: 1 / -1;
- display: flex;
- gap: 10px;
- }
- .binding-asset-row .form-field {
- flex: 1;
- }
- .binding-more {
- grid-column: 1 / -1;
- margin-top: 4px;
- }
- .binding-more summary {
- cursor: pointer;
- font-size: 13px;
- font-weight: 680;
- color: var(--muted);
- padding: 8px 4px;
- border-radius: 6px;
- user-select: none;
- list-style: none;
- display: flex;
- align-items: center;
- gap: 6px;
- }
- .binding-more summary::before {
- content: "▸";
- display: inline-block;
- transition: transform 0.18s;
- font-size: 10px;
- }
- .binding-more[open] summary::before {
- transform: rotate(90deg);
- }
- .binding-more-grid {
- display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 14px;
- padding-top: 10px;
- }
- .binding-more-grid .form-field.full,
- .binding-more-grid textarea {
- grid-column: 1 / -1;
- }
- .sr-only {
- position: absolute;
- width: 1px;
- height: 1px;
- overflow: hidden;
- clip: rect(0 0 0 0);
- white-space: nowrap;
- }
- .asset-type-tabs {
- display: grid;
- grid-template-columns: repeat(4, 1fr);
- gap: 8px;
- margin-bottom: 8px;
- }
- .asset-type-tab {
- display: flex;
- flex-direction: column;
- align-items: center;
- gap: 5px;
- padding: 10px 6px;
- border-radius: 10px;
- border: 1.2px solid var(--border);
- background: var(--bg);
- cursor: pointer;
- font-size: 12px;
- font-weight: 640;
- color: var(--muted);
- transition: border-color 0.12s, background 0.12s, color 0.12s;
- }
- .asset-type-tab svg { width: 18px; height: 18px; }
- .asset-type-tab:hover { border-color: var(--accent); color: var(--accent); background: #f0f5ff; }
- .asset-type-tab.active { border-color: var(--accent); color: var(--accent); background: #eef5ff; font-weight: 760; }
- .asset-picker-list {
- border: 1.2px solid var(--border);
- border-radius: 10px;
- overflow: hidden;
- max-height: 160px;
- overflow-y: auto;
- }
- .asset-item {
- padding: 9px 14px;
- font-size: 13px;
- cursor: pointer;
- color: var(--text);
- border-bottom: 1px solid var(--border);
- transition: background 0.1s;
- }
- .asset-item:last-child { border-bottom: none; }
- .asset-item:hover { background: var(--hover, #f5f5f5); }
- .asset-item.selected { background: #eef5ff; color: var(--accent); font-weight: 680; }
- .asset-item-empty { padding: 12px 14px; color: var(--muted); font-size: 13px; }
- .account-picker {
- border: 1.2px solid var(--border);
- border-radius: 10px;
- overflow: hidden;
- background: var(--bg);
- transition: border-color 0.15s;
- }
- .account-picker:focus-within { border-color: var(--accent); box-shadow: 0 0 0 3px rgba(0,113,227,.1); }
- .account-picker.picker-error { border-color: var(--danger); box-shadow: 0 0 0 3px rgba(255,59,48,.1); }
- .account-picker-search {
- display: flex;
- align-items: center;
- gap: 8px;
- padding: 8px 12px;
- border-bottom: 1px solid var(--border);
- }
- .account-picker-search svg { flex-shrink: 0; width: 15px; height: 15px; color: var(--muted); }
- .account-picker-search input {
- flex: 1;
- border: none;
- outline: none;
- font-size: 13px;
- background: transparent;
- color: var(--text);
- }
- .account-picker-search input::placeholder { color: var(--muted); }
- .account-filter-tabs {
- display: flex;
- gap: 6px;
- padding: 8px 12px;
- border-bottom: 1px solid var(--border);
- overflow-x: auto;
- scrollbar-width: none;
- }
- .account-filter-tabs::-webkit-scrollbar { display: none; }
- .platform-tab {
- flex-shrink: 0;
- padding: 3px 10px;
- border-radius: 999px;
- border: 1px solid var(--border);
- background: transparent;
- font-size: 12px;
- font-weight: 640;
- color: var(--muted);
- cursor: pointer;
- white-space: nowrap;
- transition: border-color 0.12s, background 0.12s, color 0.12s;
- }
- .platform-tab:hover { border-color: var(--accent); color: var(--accent); }
- .platform-tab.active { background: var(--accent); border-color: var(--accent); color: #fff; }
- .account-picker-list {
- max-height: 220px;
- overflow-y: auto;
- }
- .account-item {
- display: flex;
- align-items: center;
- gap: 10px;
- padding: 8px 12px;
- cursor: pointer;
- transition: background 0.1s;
- }
- .account-item:hover { background: var(--hover, #f5f5f5); }
- .account-item.selected { background: #eef5ff; }
- .account-item[hidden] { display: none; }
- .account-item-logo {
- flex-shrink: 0;
- width: 26px;
- height: 26px;
- border-radius: 7px;
- font-size: 9px;
- }
- .account-item-info {
- display: flex;
- flex-direction: column;
- min-width: 0;
- gap: 1px;
- }
- .account-item-platform { font-size: 13px; font-weight: 680; color: var(--text); }
- .account-item-id { font-size: 11px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
- .dialog-actions {
- display: flex;
- justify-content: flex-end;
- gap: 10px;
- margin-top: 0;
- padding: 16px 22px 20px;
- background: rgba(255, 255, 255, 0.9);
- border-top: 1px solid var(--line-soft);
- }
- .toast {
- position: fixed;
- inset: auto;
- top: 22px;
- right: 22px;
- margin: 0;
- max-width: min(420px, calc(100vw - 44px));
- display: grid;
- grid-template-columns: 30px minmax(0, 1fr);
- gap: 10px;
- align-items: center;
- min-height: 54px;
- padding: 10px 14px 10px 11px;
- border-radius: 8px;
- background: rgba(255, 255, 255, 0.94);
- color: var(--text);
- border: 1px solid rgba(0, 0, 0, 0.08);
- box-shadow: 0 18px 46px rgba(0, 0, 0, 0.16);
- backdrop-filter: blur(18px);
- opacity: 0;
- transform: translateY(-12px) scale(0.98);
- pointer-events: none;
- transition:
- opacity 0.2s ease,
- transform 0.2s ease;
- }
- .toast.show {
- opacity: 1;
- transform: translateY(0) scale(1);
- }
- .toast-icon {
- display: grid;
- place-items: center;
- width: 30px;
- height: 30px;
- border-radius: 50%;
- background: #eaf7ee;
- color: var(--success);
- font-size: 11px;
- font-weight: 850;
- }
- .toast.error .toast-icon {
- background: #fff0ee;
- color: var(--danger);
- }
- .toast.warning .toast-icon {
- background: #fff6e8;
- color: var(--warning);
- }
- #toast-message {
- min-width: 0;
- overflow-wrap: anywhere;
- font-size: 14px;
- font-weight: 650;
- line-height: 1.35;
- }
- @media (max-width: 1020px) {
- .app-shell {
- grid-template-columns: 1fr;
- }
- .sidebar {
- position: static;
- height: auto;
- }
- .nav,
- .stats-grid,
- .dashboard-grid {
- grid-template-columns: repeat(2, minmax(0, 1fr));
- }
- .dashboard-hero,
- .dashboard-settings-grid,
- .dashboard-insights-grid {
- grid-template-columns: 1fr;
- }
- .backup-note {
- margin-top: 0;
- }
- .topbar {
- align-items: stretch;
- flex-direction: column;
- }
- .relation-layout,
- .relation-stats {
- grid-template-columns: 1fr;
- overflow-x: visible;
- }
- .relation-inspector {
- position: static;
- }
- .binding-detail-row {
- grid-template-columns: minmax(0, 1fr);
- }
- .binding-detail-meta {
- grid-template-columns: repeat(2, minmax(0, 1fr));
- }
- .binding-detail-actions {
- justify-content: flex-start;
- }
- .relation-hero {
- align-items: stretch;
- flex-direction: column;
- }
- }
- @media (max-width: 680px) {
- .main,
- .sidebar {
- padding: 18px 14px;
- }
- .nav,
- .stats-grid,
- .dashboard-grid,
- .detail-grid,
- .form-grid {
- grid-template-columns: 1fr;
- }
- .dashboard-setting-card,
- .dashboard-panel-card,
- .dashboard-hero-note {
- padding: 20px;
- border-radius: 20px;
- }
- .dashboard-card-value {
- font-size: 40px;
- }
- .dashboard-platform-row,
- .dashboard-recent-item {
- align-items: flex-start;
- flex-direction: column;
- }
- .dashboard-platform-meter {
- min-width: 100%;
- width: 100%;
- }
- .phone-combo {
- grid-template-columns: 1fr;
- }
- .phone-combo select {
- border-radius: 8px 8px 0 0;
- }
- .phone-combo input {
- margin-top: -1px;
- margin-left: 0;
- border-radius: 0 0 8px 8px;
- }
- .onboarding-steps {
- grid-template-columns: 1fr;
- padding: 18px;
- }
- .onboarding-head,
- .onboarding-actions {
- padding-right: 18px;
- padding-left: 18px;
- }
- .onboarding-actions {
- flex-direction: column-reverse;
- }
- .asset-drawer {
- width: 100vw;
- padding: 10px;
- }
- .asset-drawer-shell {
- border-radius: 20px;
- }
- .global-search,
- .global-search input,
- .filter-row input,
- .filter-row select,
- .topbar-actions > label.file-button {
- width: 100%;
- }
- .toolbar {
- align-items: stretch;
- }
- .inline-actions,
- .filter-row,
- .topbar-actions {
- width: 100%;
- }
- }
- @media (max-width: 760px) {
- body {
- overflow-x: hidden;
- background: #f5f5f7;
- }
- .app-shell {
- display: block;
- }
- .sidebar {
- position: sticky;
- top: 0;
- z-index: 25;
- height: auto;
- padding: 12px 12px 10px;
- gap: 12px;
- border-right: 0;
- border-bottom: 1px solid rgba(216, 216, 222, 0.84);
- background: rgba(251, 251, 253, 0.9);
- backdrop-filter: blur(20px);
- }
- .brand {
- gap: 10px;
- }
- .brand-mark {
- width: 34px;
- height: 34px;
- border-radius: 8px;
- font-size: 13px;
- }
- .brand h1 {
- font-size: 17px;
- }
- .brand p {
- font-size: 11px;
- }
- .nav {
- display: flex;
- gap: 8px;
- overflow-x: auto;
- padding-bottom: 2px;
- scrollbar-width: none;
- }
- .nav::-webkit-scrollbar,
- .accounts-platform-tabs::-webkit-scrollbar {
- display: none;
- }
- .nav-group {
- display: none;
- }
- .nav button {
- flex: 0 0 auto;
- width: auto;
- min-height: 38px;
- padding: 7px 11px 7px 8px;
- border-radius: 12px;
- font-size: 13px;
- white-space: nowrap;
- }
- .nav-icon {
- width: 24px;
- height: 24px;
- border-radius: 8px;
- }
- .main {
- padding: 16px 12px 28px;
- }
- .topbar {
- gap: 14px;
- margin-bottom: 18px;
- }
- .topbar h2 {
- font-size: 34px;
- }
- .topbar-actions {
- display: grid;
- grid-template-columns: minmax(0, 1fr) 40px 40px 40px;
- gap: 8px;
- width: 100%;
- align-items: center;
- }
- .global-search {
- grid-column: 1 / -1;
- width: 100%;
- min-height: 42px;
- border-radius: 14px;
- }
- .language-select-wrap {
- grid-column: 1 / 2;
- width: 100%;
- }
- .language-select-wrap select {
- width: 100%;
- border-radius: 14px;
- }
- .global-search input {
- width: 100%;
- min-width: 0;
- }
- .topbar-actions > button,
- .topbar-actions > label.file-button {
- width: auto;
- }
- .topbar-actions > .icon-pill,
- .topbar-actions .topbar-avatar {
- flex: 0 0 auto;
- width: 40px;
- min-width: 40px;
- }
- .topbar-primary {
- grid-column: 1 / 2;
- justify-content: center;
- width: 100%;
- padding: 0 12px;
- border-radius: 14px;
- }
- .topbar-primary span {
- display: inline;
- }
- .icon-pill,
- .topbar-avatar {
- width: 40px;
- height: 40px;
- }
- .account-menu {
- position: fixed;
- top: 112px;
- right: 12px;
- }
- .content {
- gap: 14px;
- }
- .toolbar,
- .filter-row,
- .inline-actions {
- align-items: stretch;
- width: 100%;
- }
- .filter-row input,
- .filter-row select {
- width: 100%;
- }
- .stats-grid,
- .dashboard-grid,
- .dashboard-settings-grid,
- .dashboard-insights-grid,
- .relation-stats,
- .detail-grid,
- .form-grid,
- .binding-more-grid {
- grid-template-columns: 1fr;
- }
- .dashboard-hero,
- .dashboard-setting-card,
- .dashboard-panel-card,
- .dashboard-hero-note,
- .card,
- .topology-card,
- .relationship-board,
- .relation-table-card,
- .relation-inspector,
- .assets-card-view,
- .accounts-list-view {
- border-radius: 16px;
- }
- .dashboard-setting-card,
- .dashboard-panel-card,
- .dashboard-hero-note {
- padding: 18px;
- }
- .dashboard-card-value {
- font-size: 34px;
- }
- .assets-card-grid,
- .accounts-list-items {
- grid-template-columns: 1fr;
- gap: 10px;
- padding: 12px;
- }
- .asset-card,
- .account-list-item {
- min-height: 76px;
- padding: 13px 14px;
- border-radius: 15px;
- }
- .asset-card-icon,
- .account-list-item .platform-logo {
- width: 42px;
- height: 42px;
- border-radius: 12px;
- }
- .asset-card-actions,
- .account-list-item-actions {
- position: static;
- opacity: 1;
- flex: 0 0 auto;
- }
- .asset-card-title,
- .account-list-item-name {
- font-size: 15px;
- }
- .asset-card-sub,
- .account-list-item-id {
- font-size: 12px;
- }
- .relation-hero h3 {
- font-size: 27px;
- }
- .relation-filter {
- justify-content: stretch;
- }
- .relation-layout {
- display: grid;
- grid-template-columns: 1fr;
- overflow-x: visible;
- }
- .relation-main {
- min-width: 0;
- }
- .relationship-board {
- padding: 12px;
- }
- .relationship-board-head {
- display: grid;
- }
- .relation-canvas,
- .topology-stage {
- -webkit-overflow-scrolling: touch;
- }
- .relationship-board > .topology-legend {
- overflow-x: auto;
- flex-wrap: nowrap;
- gap: 14px;
- }
- .binding-detail-row {
- grid-template-columns: 1fr;
- gap: 12px;
- padding: 13px;
- }
- .binding-detail-meta {
- grid-template-columns: repeat(2, minmax(0, 1fr));
- }
- .binding-detail-actions {
- justify-content: flex-start;
- }
- .relation-table-card table {
- min-width: 0;
- }
- .dialog {
- width: calc(100vw - 20px);
- max-height: calc(100dvh - 20px);
- border-radius: 18px;
- }
- .dialog form {
- max-height: calc(100dvh - 20px);
- }
- .dialog-head,
- .dialog-actions {
- padding: 16px;
- }
- .form-grid {
- gap: 12px;
- padding: 16px;
- }
- .phone-combo {
- grid-template-columns: 1fr;
- }
- .phone-combo select {
- border-radius: 8px 8px 0 0;
- }
- .phone-combo input {
- margin-top: -1px;
- margin-left: 0;
- border-radius: 0 0 8px 8px;
- }
- .dialog-actions {
- position: sticky;
- bottom: 0;
- background: rgba(255, 255, 255, 0.94);
- backdrop-filter: blur(14px);
- }
- .dialog-actions button {
- flex: 1;
- }
- .asset-drawer {
- top: auto;
- left: 0;
- right: 0;
- bottom: 0;
- width: 100vw;
- height: min(86dvh, 760px);
- padding: 8px;
- animation-name: assetDrawerUp;
- }
- .asset-drawer.closing {
- animation-name: assetDrawerDown;
- }
- .asset-drawer-shell {
- border-radius: 22px 22px 16px 16px;
- box-shadow: 0 -18px 48px rgba(15, 23, 42, 0.18);
- }
- .detail-panel-drawer {
- padding: 22px 16px 18px;
- }
- .detail-panel-drawer .detail-grid {
- grid-template-columns: 1fr;
- }
- .toast {
- top: 12px;
- right: 12px;
- left: 12px;
- max-width: none;
- }
- .auth-screen {
- padding: 18px;
- }
- .auth-card {
- margin-top: 54px;
- }
- .auth-card h2 {
- margin-bottom: 40px;
- font-size: 34px;
- }
- .auth-field {
- min-height: 74px;
- padding: 14px 54px 10px 20px;
- }
- .auth-field input {
- font-size: 22px;
- }
- .auth-remember {
- margin-top: 38px;
- font-size: 20px;
- }
- .guided-tour-card {
- left: 12px !important;
- right: 12px;
- width: auto;
- }
- }
- @keyframes assetDrawerUp {
- from {
- opacity: 0;
- transform: translateY(28px) scale(0.985);
- }
- to {
- opacity: 1;
- transform: translateY(0) scale(1);
- }
- }
- @keyframes assetDrawerDown {
- from {
- opacity: 1;
- transform: translateY(0) scale(1);
- }
- to {
- opacity: 0;
- transform: translateY(28px) scale(0.985);
- }
- }
- @media (max-width: 420px) {
- .topbar h2 {
- font-size: 30px;
- }
- .topbar-actions {
- grid-template-columns: minmax(0, 1fr) 38px 38px 38px;
- }
- .topbar-primary span {
- display: none;
- }
- .topbar-primary {
- min-width: 0;
- }
- .asset-card,
- .account-list-item {
- gap: 10px;
- }
- .acct-action-btn {
- width: 28px;
- height: 28px;
- }
- .auth-card h2 {
- font-size: 30px;
- }
- }
- /* ── License Gate ──────────────────────────────────────────────────────────── */
- .license-gate {
- position: fixed;
- inset: 0;
- z-index: 70;
- display: grid;
- place-items: center;
- min-height: 100vh;
- background: rgba(245, 245, 247, 0.88);
- backdrop-filter: blur(18px);
- padding: 24px;
- }
- .license-card {
- position: relative;
- width: min(440px, 100%);
- background: var(--panel-solid);
- border: 1px solid var(--line);
- border-radius: 20px;
- padding: 32px;
- box-shadow: 0 24px 60px rgba(0, 0, 0, 0.1);
- display: grid;
- gap: 24px;
- }
- .license-close {
- position: absolute;
- top: 14px;
- right: 14px;
- display: grid;
- place-items: center;
- width: 34px;
- height: 34px;
- min-height: 0;
- padding: 0;
- border: 0;
- border-radius: 50%;
- background: rgba(29, 29, 31, 0.08);
- color: var(--text);
- font-size: 22px;
- line-height: 1;
- box-shadow: none;
- }
- .license-close:hover {
- background: rgba(29, 29, 31, 0.14);
- transform: none;
- box-shadow: none;
- }
- .license-brand {
- display: flex;
- gap: 12px;
- align-items: center;
- }
- .license-brand h1 {
- margin: 0;
- font-size: 19px;
- font-weight: 760;
- }
- .license-brand p {
- margin: 2px 0 0;
- font-size: 12px;
- color: var(--muted);
- }
- .license-tabs {
- display: flex;
- gap: 4px;
- padding: 4px;
- background: var(--panel-soft);
- border-radius: 10px;
- }
- .license-tab {
- flex: 1;
- min-height: 34px;
- border: 0;
- border-radius: 7px;
- background: transparent;
- color: var(--muted);
- font-size: 13px;
- font-weight: 620;
- box-shadow: none;
- transition: background 0.16s, color 0.16s, box-shadow 0.16s;
- }
- .license-tab:hover {
- transform: none;
- color: var(--text);
- }
- .license-tab.active {
- background: var(--panel-solid);
- color: var(--text);
- font-weight: 700;
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.1);
- }
- .license-desc {
- margin: 0 0 14px;
- font-size: 13.5px;
- color: var(--muted);
- line-height: 1.55;
- }
- .license-desc strong {
- color: var(--text);
- }
- .license-form {
- display: grid;
- gap: 10px;
- }
- .license-form input {
- min-height: 44px;
- width: 100%;
- border: 1px solid var(--line);
- border-radius: 10px;
- background: var(--panel-solid);
- color: var(--text);
- padding: 10px 14px;
- font-size: 14px;
- outline: 0;
- transition: border-color 0.16s, box-shadow 0.16s;
- }
- .license-form input:focus {
- border-color: var(--accent);
- box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.12);
- }
- .license-form .primary-button {
- min-height: 44px;
- border-radius: 10px;
- font-size: 14px;
- }
- .license-msg {
- margin: 8px 0 0;
- font-size: 13px;
- line-height: 1.45;
- }
- .license-msg.success {
- color: var(--success);
- }
- .license-msg.error {
- color: var(--danger);
- }
- /* ── Pricing Dialog ────────────────────────────────────────────────────────── */
- .pricing-dialog {
- width: min(960px, calc(100vw - 28px));
- border-radius: 18px;
- }
- .pricing-dialog::backdrop {
- background: rgba(15, 23, 42, 0.4);
- backdrop-filter: blur(6px);
- }
- .pricing-head {
- display: flex;
- align-items: start;
- justify-content: space-between;
- gap: 16px;
- padding: 26px 28px 0;
- background: #fbfbfd;
- }
- .pricing-head h3 {
- margin: 6px 0 6px;
- font-size: 26px;
- font-weight: 780;
- line-height: 1.12;
- }
- .pricing-sub {
- margin: 0;
- color: var(--muted);
- font-size: 14px;
- }
- .pricing-grid {
- display: grid;
- grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: 16px;
- padding: 22px 28px 28px;
- background: #fbfbfd;
- }
- .pricing-card {
- position: relative;
- display: grid;
- gap: 16px;
- align-content: start;
- padding: 26px 24px 22px;
- background: var(--panel-solid);
- border: 1px solid var(--line);
- border-radius: 18px;
- box-shadow: var(--shadow-soft);
- transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s;
- }
- .pricing-card:hover {
- transform: translateY(-2px);
- box-shadow: 0 20px 40px rgba(15, 23, 42, 0.08);
- }
- .pricing-card.is-current {
- border-color: rgba(0, 113, 227, 0.45);
- box-shadow: 0 0 0 3px rgba(0, 113, 227, 0.08);
- }
- .pricing-card-pro {
- background: linear-gradient(160deg, #f8f9ff 0%, #ffffff 60%);
- border-color: rgba(125, 95, 255, 0.32);
- }
- .pricing-card-pro.is-current {
- border-color: rgba(125, 95, 255, 0.6);
- box-shadow: 0 0 0 3px rgba(125, 95, 255, 0.12);
- }
- .pricing-badge {
- position: absolute;
- top: 14px;
- right: 14px;
- padding: 3px 10px;
- border-radius: 999px;
- background: linear-gradient(135deg, #7d5fff 0%, #4c8bf5 100%);
- color: #fff;
- font-size: 11px;
- font-weight: 760;
- letter-spacing: 0.05em;
- text-transform: uppercase;
- box-shadow: 0 6px 14px rgba(125, 95, 255, 0.3);
- }
- .pricing-card header h4 {
- margin: 0 0 10px;
- font-size: 22px;
- font-weight: 780;
- }
- .pricing-price {
- display: flex;
- align-items: baseline;
- gap: 4px;
- margin-bottom: 6px;
- }
- .pricing-currency {
- font-size: 18px;
- font-weight: 700;
- color: var(--text);
- }
- .pricing-amount {
- font-size: 44px;
- font-weight: 800;
- line-height: 1;
- letter-spacing: -0.02em;
- }
- .pricing-period {
- color: var(--muted);
- font-size: 13px;
- font-weight: 620;
- }
- .pricing-desc {
- margin: 0;
- color: var(--muted);
- font-size: 13.5px;
- line-height: 1.45;
- }
- .pricing-cta {
- width: 100%;
- min-height: 44px;
- padding: 11px 16px;
- border-radius: 999px;
- border: 1px solid transparent;
- font-size: 14px;
- font-weight: 700;
- cursor: pointer;
- transition: background 0.16s, color 0.16s, border-color 0.16s, transform 0.16s;
- box-shadow: none;
- }
- .pricing-cta:hover {
- transform: translateY(-1px);
- }
- .pricing-cta-current {
- background: var(--panel-soft);
- color: var(--muted);
- border-color: var(--line);
- cursor: default;
- }
- .pricing-cta-current:hover {
- transform: none;
- }
- .pricing-cta-current:disabled {
- opacity: 1;
- cursor: default;
- }
- .pricing-cta-upgrade {
- background: linear-gradient(135deg, #4c8bf5 0%, #7d5fff 100%);
- color: #fff;
- border-color: transparent;
- box-shadow: 0 10px 22px rgba(76, 139, 245, 0.24);
- }
- .pricing-cta-upgrade:hover {
- box-shadow: 0 14px 28px rgba(76, 139, 245, 0.32);
- }
- .pricing-cta-downgrade {
- background: #fff;
- color: var(--text);
- border-color: var(--line);
- }
- .pricing-cta-downgrade:hover {
- background: var(--panel-soft);
- }
- .pricing-includes {
- margin: 4px 0 0;
- color: var(--text);
- font-size: 13px;
- font-weight: 720;
- }
- .pricing-features {
- list-style: none;
- margin: 0;
- padding: 0;
- display: grid;
- gap: 10px;
- }
- .pricing-features li {
- position: relative;
- padding-left: 24px;
- color: var(--text);
- font-size: 13.5px;
- line-height: 1.5;
- }
- .pricing-features li::before {
- content: "";
- position: absolute;
- left: 0;
- top: 4px;
- width: 16px;
- height: 16px;
- border-radius: 50%;
- background: #e6efff;
- background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5 12l4 4 10-10' fill='none' stroke='%230071e3' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
- background-size: 12px 12px;
- background-repeat: no-repeat;
- background-position: center;
- }
- .pricing-features-pro li::before {
- background: #f1edff;
- background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5 12l4 4 10-10' fill='none' stroke='%237d5fff' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
- background-repeat: no-repeat;
- background-position: center;
- background-size: 12px 12px;
- }
- @media (max-width: 760px) {
- .pricing-grid {
- grid-template-columns: 1fr;
- }
- }
- /* ── Profile Dialog ────────────────────────────────────────────────────────── */
- .profile-dialog {
- width: min(640px, calc(100vw - 28px));
- }
- .profile-body {
- padding: 22px;
- background: #fbfbfd;
- display: grid;
- gap: 18px;
- max-height: 68vh;
- overflow: auto;
- }
- .profile-section {
- background: var(--panel-solid);
- border: 1px solid var(--line);
- border-radius: 14px;
- padding: 16px 18px;
- }
- .profile-section h4 {
- margin: 0 0 12px;
- font-size: 13px;
- font-weight: 720;
- color: var(--muted);
- text-transform: uppercase;
- letter-spacing: 0.06em;
- }
- .profile-grid {
- display: grid;
- grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
- gap: 10px 16px;
- }
- .profile-item {
- display: grid;
- gap: 4px;
- min-width: 0;
- }
- .profile-item span {
- color: var(--muted);
- font-size: 12px;
- font-weight: 620;
- }
- .profile-item strong {
- font-size: 14px;
- font-weight: 700;
- color: var(--text);
- overflow-wrap: anywhere;
- }
- .profile-item .mono {
- font-family: "SF Mono", Menlo, Consolas, monospace;
- font-size: 12.5px;
- font-weight: 600;
- }
|